CentOS 7安装配置LEMP(Nginx PHP FastCGI MariaDB)

系统配置

确保你的系统为最新版本:

  1. yum update

从EPEL安装Nginx

最快最容易安装Nginx的方式是使用第三方源EPEL

  1. sudo yum install epel-release
  2. yum update
  3. yum install nginx

这些命令指安装EPEL仓库,拉取最新的metadata,之后安装Nginx

配置Nginx

systemd启动Nginx

Nginx安装完成后,需要在systemd激活和启动,可以使用systemctl命令来做

  1. systemctl enable nginx.service
  2. systemctl start nginx.service

然后你可以检查其状态确保nginx始终启动

  1. systemctl status nginx.service

配置Nginx虚拟主机

一旦nginx安装完成,你需要在配置文件配置server块。每个server块需要一个server和location指令。你可以把server块分别建立不同文件,或者直接放到一个文件/etc/nginx/nginx.conf。在这个例子里,我们使用多个配置文件。默认地,Nginx会引用/etc/nginx/conf.d目录下的.conf文件
/etc/nginx/conf.d/example.com.conf:

  1. server {
  2. listen  80;
  3. server_name www.example.com example.com;
  4. access_log /var/www/example.com/logs/access.log;
  5. error_log /var/www/example.com/logs/error.log;
  6.     
  7. location / {
  8.     root  /var/www/example.com/public_html;
  9.     index index.html index.htm index.php;
  10.     }
  11. }

你想托管额外的网站时,可以把配置文件放在/etc/nginx/conf.d目录。一旦建立好配置文件,你需要为你的public html文件,日志目录创建目录:

  1. mkdir -p /var/www/example.com/{public_html,logs}

配置文件虚拟主机后,需要重启nginx以生效配置

  1. systemctl restart nginx.service

部署PHP FastCGI

如果你的网站是PHP写的,你需要实现PHP-FastCGI以便能让Nginx能正确地处理和解析PHP代码。你可以从EPEL仓库使用YUM安装

  1. yum install php-cli php spawn-fcgi

PHP-FastCGI安装好后,需要创建一个用来启动和控制php-cgi进程的脚本。
/usr/bin/php-fastcgi:

  1. #!/bin/sh
  2. if [ `grep -c "nginx" /etc/passwd` = "1" ]; then
  3.     FASTCGI_USER=nginx
  4. elif [ `grep -c "www-data" /etc/passwd` = "1" ]; then
  5.     FASTCGI_USER=www-data
  6. elif [ `grep -c "http" /etc/passwd` = "1" ]; then
  7.     FASTCGI_USER=http
  8. else
  9. # Set the FASTCGI_USER variable below to the user that
  10. # you want to run the php-fastcgi processes as
  11.  
  12. FASTCGI_USER=
  13. fi
  14.  
  15. /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 6 -u $FASTCGI_USER -f /usr/bin/php-cgi

脚本创建好后,设置其有执行权限

  1. chmod +x /usr/bin/php-fastcgi

把PHP-FastCGI配置为服务

PHP-FastCGI安装好后,它不会自动地在systemd注册为服务。如果你想用systemd更方便地管理PHP-FastCGI,可以把它配置为systemd服务。需要创建一个服务文件指向/usr/bin/php-fastcgi:
/etc/systemd/system/php-fastcgi.service:

  1. [Unit]
  2. Description=php-fastcgi systemd service script
  3.  
  4. [Service]
  5. Type=forking
  6. ExecStart=/usr/bin/php-fastcgi start
  7.  
  8. [Install]
  9. WantedBy=multi-user.target

服务文件创建好后,需要重载systemd守护进程以激活此服务,然后启动它。

  1. systemctl daemon-reload
  2. systemctl enable php-fastcgi.service
  3. systemctl start php-fastcgi.service

安装MariaDB

CentOS 7官方源已经没有MySQL了,已经用MariaDB替代,不过放心,这个是完全兼容MySQL的,用法一样。
1.从官方源安装MariaDB

  1. yum install mariadb-server

2.安装完成后,使用systemctl来激活并启动mariadb

  1. systemctl enable mariadb.service
  2. systemctl start mariadb.service

3.使用mysql_secure_installation命令来加固MariaDB

  1. mysql_secure_installation

到此LEMP安装完成。

Debian 7 (Wheezy)安装LEMP(Nginx MySQL PHP)

安装前提

在安装web应用套件之前,执行如下命令来确保你的系统软件包数据库是最新的,且已安装的软件更新为最新版本

  1. sudo apt-get update
  2. sudo apt-get upgrade

安装Nginx Web服务器

有两种切实可行,且比较受欢迎安装Nginx的方式。这里用的方法是从Debian官方维护的软件仓库获取Nginx软件包,官方提供一个稳定版本和测试版本的Nginx。另一个可选的安装方式是从Debian Backports项目获取,Backports提供的软件包比Debian官方的版本新,但Backports可能在维护和支持上不如Debian官方。
执行如下命令安装Nginx

  1. sudo apt-get install nginx

配置Nginx虚拟主机

你需要配置server块来配置虚拟主机。由于使用了Debian官方维护的Nginx,我们在这个文件创建虚拟主机配置/etc/nginx/sites-available/example.com:
/etc/nginx/sites-available/example.com

  1. server {
  2.     listen   80;
  3.     server_name www.example.com example.com;
  4.     access_log /srv/www/example.com/logs/access.log;
  5.     error_log /srv/www/example.com/logs/error.log;
  6.  
  7.     location / {
  8.         root   /srv/www/example.com/public_html;
  9.         index  index.html index.htm;
  10.     }
  11. }

创建与以上配置文件相关的目录(确保example.com域名替换为你的)

  1. sudo mkdir -p /srv/www/example.com/{public_html,logs}

执行以下命令激活虚拟主机,以及重启web服务器

  1. sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled
  2. sudo /etc/init.d/nginx restart

想要禁用刚才的网站,仅仅需要输入如下命令来删除软链接。

  1. sudo rm /etc/nginx/sites-enabled/example.com
  2. sudo /etc/init.d/nginx restart

配置PHP以FastCGI运行

为了配置PHP程序,你需要按照如下的方法来使nginx能正常处理php页面。在配置之前,执行如下命令来安装所需的安装包:

  1. sudo apt-get install php5-cli php5-cgi spawn-fcgi php-pear

依顺序执行如下命令来下载PHP-FastCGI封装脚本,配置控制进程的init脚本,首次启动及设置开机启动:

  1. cd /opt/
  2. sudo wget -O php-fastcgi-deb.sh http://www.linode.com/docs/assets/1548-php-fastcgi-deb.sh
  3. sudo mv /opt/php-fastcgi-deb.sh /usr/bin/php-fastcgi
  4. sudo chmod +x /usr/bin/php-fastcgi
  5. sudo wget -O init-php-fastcgi-deb.sh http://www.linode.com/docs/assets/1549-init-php-fastcgi-deb.sh
  6. sudo mv /opt/init-php-fastcgi-deb.sh /etc/init.d/php-fastcgi
  7. sudo chmod +x /etc/init.d/php-fastcgi
  8. sudo /etc/init.d/php-fastcgi start
  9. sudo update-rc.d php-fastcgi defaults

以下是一个nginx虚拟主机示例配置。按你的要求调整路径及替换example.com域名
/etc/nginx/sites-available/example.com:

  1. server {
  2.     server_name www.example.com example.com;
  3.     access_log /srv/www/example.com/logs/access.log;
  4.     error_log /srv/www/example.com/logs/error.log;
  5.     root /srv/www/example.com/public_html;
  6.  
  7.     location / {
  8.         index index.html index.htm index.php;
  9.     }

另外,还需要确保location ~ .php$ { }代码块在此虚拟主机配置来处理php请求:

  1. location ~ .php$ {
  2.     include /etc/nginx/fastcgi_params;
  3.     fastcgi_pass  127.0.0.1:9000;
  4.     fastcgi_index index.php;
  5.     fastcgi_param SCRIPT_FILENAME /srv/www/example.com/public_html$fastcgi_script_name;
  6. }

当修改配置完成后,重启Nginx:

  1. /etc/init.d/nginx restart

安装MySQL

1.执行如下命令来安装MySQL server包及PHP支持MySQL的包

  1. sudo apt-get install mysql-server php5-mysql

2.设置root密码,尽量设置一个复杂的密码以保证安全。
3.执行如下命令来加固MySQL

  1. sudo mysql_secure_installation

4.如果以后想重置root密码,执行如下命令:

  1. dpkg-reconfigure mysql-server-5.0

5.重启php-fastcgi以让php支持mysql

  1. sudo /etc/init.d/php-fastcgi restart