Debian 8 Server如何安装LEMP (nginx, MySQL/MariaDB, PHP)
LEMP是一组用于搭建网站的开源软件。LEMP代表Linux操作系统、Ngnix HTTP服务器(发音为Engine X)、MySQL/MariaDB数据库和PHP。在这篇教程中,我将介绍如何在Debian 8 服务器上安装LEMP。如果你用的是Debian 7,那么可以参考Debian 7系统如何升级为Debian 8。以下命令需要root权限,用su切换到root用户,或者在命令前面添加sudo。在安装过程中,可以选择安装MySQL数据库或MariaDB数据库。
1. 安装Nginx
Nginx (发音为Engine X) 是一个免费开源、高性能的HTTP服务器和反向代理,同时也可以作为一个IMAP/POP3代理服务器。输入下面的命令安装Nginx:
apt-get install nginx
输入下面的命令启动Nginx HTTP服务器:
systemctl start nginx
注意:如果你用的是Debian 7 或从Debian 7升级到了Debian 8,那么输入下面的命令启动Nginx:
service nginx start
这是因为Debian 8 默认的init系统是Systemd,而Debian 7 默认的init系统是SysV init。
查看ngnix是否在运行:
systemctl status nginx 或 service nginx status
2. 测试nginx
打开浏览器,在浏览器地址栏输入Debian服务器的IP地址,你将会看到如下字样。
3. 安装MySQL
MySQL是一个关系型数据库管理系统(RDBMS),输入下面的命令安装:
apt-get install mysql-server mysql-client
在安装过程中会要求设置一个MySQL的root密码。输入密码之后选择OK。
然后再输入一次root密码,选择OK,MySQL就安装好了。
我们可以用下面的命令查看MySQL数据库服务器的运行状态:
systemctl status mysql 或 service mysql status
4. 安装MariaDB
自从MySQL被美国Oracle公司收购后,MySQL的原班开发人员便fork出了另外一个开源的数据库即MariaDB。MariaDB与MySQL高度兼容,并且提供了很多新功能和特色,性能也比后者要好。输入下面的命令安装:
apt-get install mariadb-server mariadb-client
在安装过程中会要求为MariaDB设置root密码。输入一个密码,然后选择OK。
再将输入密码后,MariaDB数据库就安装好了。
查看mariadb是否在运行:
systemctl status mysql 或 service mysql status
你可能会感到奇怪,为什么上面的命令中是mysql而不是mariadb。这是因为MariaDB与MySQL的命令是完全一样的,mysql shell, mysqldump, mysqladmin以及其他的命令完全一致。
在我的服务器上,上面的命令输出结果如下。我的Debian init用的的SysV init。
[info] /usr/bin/mysqladmin Ver 9.1 Distrib 10.0.20-MariaDB, for debian-linux-gnu on i686 Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others. Server version 10.0.20-MariaDB-0+deb8u1 Protocol version 10 Connection Localhost via UNIX socket UNIX socket /var/run/mysqld/mysqld.sock Uptime: 15 min 37 sec Threads: 1 Questions: 705 Slow queries: 0 Opens: 188 Flush tables: 2 Open tables: 28 Queries per second avg: 0.752.
5. 安装PHP
PHP是PHP: Hypertext Preprocessor的递归缩写,它是一个通用的开源的服务端脚本语言。输入下面的命令安装:
apt-get install php5 php5-fpm php5-mysql
6. 配置Nginx
用你最喜欢的命令行文本编辑器打开/etc/nginx/nginx.conf文件,我用的是vi文本编辑器。
vi /etc/nginx/nginx.conf
在这个文件中为找到worker_processes,为它指定一个值,这个值就是服务器CPU的数量。使用下面的命令查看服务器CPU的数量:
lscpu 或 grep processor /proc/cpuinfo
我的服务器只有一个CPU,所以我将worker_processes的值设为1。
worker_processes 1;
默认的vhost (server block)在/etc/nginx/sites-available/default文件中设置。首先备份这个文件。
mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
然后创建一个新的/etc/nginx/sites-available/default文件
vi /etc/nginx/sites-available/default
将下面的内容添加到文件中。
server { listen 80; server_name debian.local; root /var/www/html; index index.php index.html index.htm index.nginx-debian.html; location / { try_files $uri $uri/ =404; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/www/html; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
其中,root /var/www/html; 表示网站的根目录,server_name debian.local 表示Server FQDN. 保存文件并退出文本编辑器。
重启Nginx:
systemctl restart nginx 或 service nginx restart
重启php5-fpm:
systemctl restart php5-fpm 或 service php5-fpm restart
7. 测试nginx的配置
输入下面的命令以查看nginx的配置中有没有语法错误:
nginx -t
如果没有语法错误,那么命令输出结果如下:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
8.配置PHP
用你最喜欢的文本编辑器打开php.ini文件
vi /etc/php5/fpm/php.ini
找到cgi.fix_pathinfo=1这一行,去掉前面的分号,并把1改成0。
cgi.fix_pathinfo=0
现在,重启php-fpm
systemctl restart php5-fpm 或 service php5-fpm restart
查看php5-fpm是否在运行:
systemctl status phpt-fpm 或 service php5-fpm status
9.测试PHP
在网站的根目录下面创建一个testphp.php文件。
vi /var/www/html/testphp.php
在文件中添加如下内容
<?php phpinfo(); ?>
保存文件后退出。在浏览器地址栏输入http://server-ip/testphp.php。将server-ip替换成Debian服务器的IP地址。testphp.php文件中的phpinfo()函数将在浏览器中显示服务器PHP的信息,比如PHP版本,build date。
PHP-FPM默认使用/var/run/php5-fpm.sock监听,如果你想让PHP-FPM使用TCP协议,那么用文本编辑器打开/etc/php5/fpm/pool.d/www.conf文件
vi /etc/php5/fpm/pool.d/www.conf
找到 listen = /var/run/php5-fpm.sock这一行,
listen = /var/run/php5-fpm.sock
将它更改为 listen = 127.0.0.1:9000
listen = 127.0.0.1:9000
保存文件并退出,然后重启php5-fpm.
systemctl restart php5-fpm 或 service php5-fpm restart
现在打开nginx配置文件:
vi /etc/nginx/sites-available/default
找到fastcgi_pass unix:/var/run/php5-fpm.sock;这一行文字,将它更改成fastcgi_pass 127.0.0.1:9000; 如下:
location ~ \.php$ { try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
保存文件并退出。然后重启nginx:
systemctl restart nginx 或 service nginx restart
好了!现在你的LEMP全部安装完成了。
cgi.fix_pathinfo=0 解释一下这个