从接触 Linux 服务器(vps)配置 Web 服务开始,用过 lnmp.org 的一键安装包,也学过自己编译安装。虽说编译安装自定义性较高,但是也容易遇到各种问题,而且费时费力,后期还不易维护。
在朋友和相关文章的指导下,了解了 apt 的神奇魅力。乘着 Ubuntu LTS 更新之际,来学学用 apt 来快速配置一个干净、易维护 LNMP 环境。
本文目前适用于 Ubuntu 18.04、16.04。如果环境为 Ubuntu 16.04,请将以下各处 PHP 版本中的 7.2 替换为 7.0。
安装
更新 apt 包
apt update
Nginx 安装
apt install nginx
MySQL 安装
apt install mysql-server mysql-client
mysql_secure_installation #加强安全性,可选
PHP & 常用插件
apt install php-fpm php-mysql php-mbstring php-xml php-curl
安装后,开启 opcache 可提升性能:
打开 /etc/php/7.2/fpm/php.ini
找到 ;opcache.enable=0 (也可能是 ;opcache.enable=1)
改为 opcache.enable=1
简单五行命令,便完成了 LNMP 的环境安装。安装的同时,还已经进行了各种基本的配置。
以上几行命令也可以合并为以下几行来执行:
apt update
apt install nginx mysql-server mysql-client php-fpm php-mysql php-mbstring php-xml php-curl -y
mysql_secure_installation #加强 mysql 安全性,可选
简单配置
Nginx php-fpm 配置
在 /etc/nginx/sites-available 中添加配置:
server {
listen 80;
listen [::]:80;
listen 443 ssl http2;
listen [::]:443 ssl http2;
include ssl.conf;
ssl_certificate /path/to/crt;
ssl_certificate_key /path/to/key;
root /var/www/server_domain_or_IP;
index index.html index.htm index.php;
server_name server_domain_or_IP;
location /.well-known/ { try_files $uri $uri/ =404; }
location ~ /. { return 404; }
location / {
try_files $uri $uri/ =404;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}
}
其中预留了未来启用 SSL 的代码,ssl.conf 文件如下:
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_session_tickets on;
ssl_stapling on;
ssl_stapling_verify on;
#ssl_trusted_certificate /path/to/pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ‘ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS’;
ssl_prefer_server_ciphers on;
记得将 /etc/nginx/sites-available 中的配置软链接到 /etc/nginx/sites-enabled,以启用该配置。
LNMP默认目录
Nginx
配置:/etc/nginx
网站:/var/www
MySQL
配置:/etc/mysql
数据:/var/lib/mysql
PHP
配置:/etc/php/7.2
常用命令
Ubuntu 16.04 / 18.04 使用 systemctl 管理服务。
LNMP 中 service 名称分别为 nginx、mysql、php7.2-fpm
启动:systemctl start service
停止:systemctl stop service
重载:systemctl reload service
重启:systemctl restart service
查看状态:systemctl status service
开启自启动:systemctl enable service
关闭自启动:systemctl disable service
如重载 Nginx 可执行:
systemctl reload nginx
查看 PHP 状态可执行:
systemctl status php7.2-fpm
通过 apt 直接安装,除了能够更快速的完成服务器配置、安装干净外,后期也更加便于维护。
Coxxs
参考文章:https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-in-ubuntu-16-04
感谢 orzFly 提供的帮助。
2017-5-9:移除 cgi.fix_pathinfo 修改部分,因为在新版 php-fpm & nginx 的默认配置中已没有漏洞。
2017-10-4:更新 ssl_ciphers 部分。
2018-5-11:更新至 Ubuntu 18.04。