翻译自
介绍
LEMP技术栈是搭建动态网站常用的一组软件,包括Nginx,MySQL以及PHP。这篇文章介绍了如何在ubuntu系统上搭建LEMP技术栈。
准备工作
- 一台有sudo权限的ubuntu服务器。
- 一个自己的域名(本文以xxx.yyy为例 , 注意xxx.yyy以及www.xxx.yyy都需要指向服务器的IP ),指向服务器的IP。
开始之前:更新软件包
更新apt管理的软件包:
sudo apt update && sudo apt upgrade
第一步:安装Nginx
使用apt安装Nginx:
sudo apt install nginx
设置防火墙以允许http以及https流量:
sudo ufw allow 'Nginx Full'
sudo ufw enable
此时,运行:
sudo ufw status
应该能得到如下结果:
To Action From
-- ------ ----
Nginx Full ALLOW Anywhere
Nginx Full (v6) ALLOW Anywhere (v6)
此时,在浏览器地址栏中输入你的域名:
http://xxx.yyy
浏览器会自动加载Nginx的默认页面,说明Nginx已经成功安装:

第二步:安装MySQL
使用apt安装 MySQL :
sudo apt install mysql-server
运行以下命令完成对MySQL的设置:
sudo mysql_secure_installation
设置过程中,首先会要求选择是否设置 VALIDATE PASSWORD PLUGIN。这个是用于强制使用高强度的密码以确保安全。如果需要设置,输入Y,然后选择一种密码强度;如果不需要,输入任意其它键即可跳过。
然后会要求输入并确认root账户的密码:
Please set the password for root here.
New password:
Re-enter new password:
其余的问题,输入Y并回车确认即可。
从 MySQL 5.7 版本开始,MySQL的root用户默认使用auth_socket的方式进行认证。这种登录方式相比较密码登录更为安全但是在有些情况下会让事情变得复杂,比如说需要让第三方软件访问数据库。
如果不需要更改为密码登录,那么可以跳过以下内容进入第三步了。如果需要更改,那么首先进入MySQL:
sudo mysql
查看一下当前MySQL使用的认证方式:
SELECT user,plugin FROM mysql.user;
如果user为root的那一行对应的plugin是auth_socket,如下:
+------------------+-----------------------+
| user | plugin |
+------------------+-----------------------+
| root | auth_socket |
| mysql.session | mysql_native_password |
| mysql.sys | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+
4 rows in set (0.00 sec)
则说明当前 MySQL 确实使用了auth_socket进行认证。运行以下命令将认证方式改为密码,注意将password更改为自己的密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
刷新权限,使刚才的更改生效:
FLUSH PRIVILEGES;
再次查看一下刚才的更改是否生效,运行以下命令:
SELECT user,plugin FROM mysql.user;
可以发现root用户对应的plugin已经变成了mysql_native_password,说明更改已经生效:
+------------------+-----------------------+
| user | plugin |
+------------------+-----------------------+
| root | mysql_native_password |
| mysql.session | mysql_native_password |
| mysql.sys | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+
4 rows in set (0.00 sec)
退出MySQL:
EXIT;
第三步:安装PHP
使用apt安装PHP:
sudo apt install php-fpm php-mysql
添加Nginx配置文件/etc/nginx/sites-available/xxx.yyy:
sudo vi /etc/nginx/sites-available/xxx.yyy
输入以下内容:
server {
listen 80;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name xxx.yyy www.xxx.yyy;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
保存并退出文件。
在/etc/nginx/sites-enabled文件夹中创建xxx.yyy配置文件的软链接,并替代默认的default配置文件:
sudo ln -s /etc/nginx/sites-available/xxx.yyy /etc/nginx/sites-enabled/
sudo unlink /etc/nginx/sites-enabled/default
测试并重启Nginx服务:
sudo nginx -t
sudo systemctl restart nginx
接下来测试一下我们的安装和配置是否正确,在默认的网站文件夹(通常为 /var/www/html )下新建一个PHP文件:
sudo nano /var/www/html/info.php
添加以下代码,用于打印当前服务器的信息:
<?php
phpinfo();
此时,访问:
http://xxx.yyy/info.php
应当能得到一个包含服务器信息的网页,如下:

为了安全起见,将刚才测试用的PHP文件删除:
sudo rm /var/www/html/info.php
至此,LEMP技术栈的安装就完成了。