从接触 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。
php的各种扩展如何处理?默认全部装?