Ubuntu 18.04 快速配置 LNMP(LEMP) 环境

从接触 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。

一个有关“Ubuntu 18.04 快速配置 LNMP(LEMP) 环境”的想法

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注