Nginx是一款小巧而高效的Web服务器软件,可帮您在Linux系统下快速方便地搭建出LNMP Web服务环境。本文介绍如何手动在ECS实例上搭建LNMP环境,其中LNMP分别代表Linux、Nginx、MySQL和PHP。
前提条件
- 已创建ECS实例并为实例分配了公网IP。具体操作,请参见使用向导创建实例。
本教程中,创建的ECS实例配置说明如下。建议您与教程保持一致的操作系统版本,避免因版本问题导致的命令执行报错。
- 实例规格:ecs.c6.large
- 操作系统:Ubuntu 20.04
- 网络类型:专有网络VPC
- IP地址:公网IP
- 已在实例所属的安全组的入方向添加安全组规格并放行22、80、443端口。具体操作,请参见添加安全组规则。
说明 基于服务器数据安全考虑,本教程仅说明部署与测试LNMP环境所必须放行的端口,您可以根据实际需求,放行其他应用所需的端口号。例如,远程连接MySQL数据库时,需要放行MySQL默认占用的3306端口。
背景信息
本教程适用于熟悉Linux操作系统,刚开始使用阿里云进行建站的个人用户。
本教程的示例操作中,使用的软件及软件版本信息如下:
- Nginx:1.18.0
- MySQL:8.0.27
- PHP:7.4.3
步骤一:准备工作
- 远程连接需要部署LNMP环境的ECS实例。
- 关闭系统内部防火墙。
- 运行以下命令,检查防火墙当前状态。
- 如果防火墙状态为Status: inactive,则表示防火墙为关闭状态。
- 如果防火墙状态为Status: active,则表示防火墙为开启状态。
- 可选:关闭防火墙。
如果您的防火墙为开启状态,需要运行以下命令,关闭防火墙并关闭开机自启动防火墙。
sudo ufw disable
说明 如果您想重新开启防火墙并开启开机自启动防火墙,请运行sudo ufw enable命令。
步骤二:安装Nginx
- 运行以下命令,更新Ubuntu系统内的软件包。
- 运行以下命令,安装Nginx。
sudo apt -y install nginx
- 运行以下命令,查看Nginx版本。
sudo nginx -v
返回结果如下所示,查看到Nginx的版本信息为1.18.0。同时也表示Nginx已成功安装。
nginx version: nginx/1.18.0 (Ubuntu)
步骤三:安装并配置MySQL
- 安装MySQL。
- 运行以下命令,安装MySQL。
sudo apt -y install mysql-server
- 运行以下命令,查看MySQL版本。
sudo mysql -V
返回结果如下所示,表示MySQL已成功安装,MySQL的版本为8.0.27。mysql Ver 8.0.27-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))
- 配置MySQL。
- 运行以下命令,进入MySQL。
- 运行以下命令,设置root用户密码。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'mynewpassword';
本示例中密码以
Mysql@1234
为例,示例命令:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'Mysql@1234';
- 运行以下命令,退出MySQL数据库。
- 运行以下命令,对MySQL进行安全性配置。
sudo mysql_secure_installation
- 根据命令行提示,依次完成以下配置项。
- 输入root用户的密码。本示例中输入
Mysql@1234
。root@iZbp19jsi7s0g7m4zgc****:~# sudo mysql_secure_installation
Securing the MySQL server deployment.
Enter password for user root:
说明 在输入密码时,系统为了最大限度的保证数据安全,命令行将不做任何回显。您只需要输入正确的密码信息,然后按Enter键即可。
- 输入Y,更改root用户密码。
Change the password for root ? ((Press y|Y for Yes, any other key for No) : Y
- 输入root用户密码。
New password:
Re-enter new password:
Estimated strength of the password: 100
- 输入Y,确认使用已设置的密码。
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
- 输入Y删除MySQL自带的匿名用户。
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
- 输入Y,禁止MySQL的root用户的远程登录权限。
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
- 输入Y,移除test数据库。
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) :
- 输入Y,重新加载授权表。
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
当命令行回显All done!时,表示配置完成。
- 测试登录MySQL数据库。
- 运行以下命令,登录MySQL数据库。
- 在命令行回显的Enter password:后输入已设置的数据库密码。
说明 在输入密码时,系统为了最大限度的保证数据安全,命令行将不做任何回显。您只需要输入正确的密码信息,然后按Enter键即可。
成功登录MySQL数据库后,命令行信息如下所示。
root@iZbp19jsi7s0g7m4zgc****:~# sudo mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 8.0.29-0ubuntu0.20.04.3 (Ubuntu)
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
- 运行以下命令,退出MySQL数据库。
步骤四:安装并配置PHP
- 安装PHP。
- 运行以下命令,安装PHP。
sudo apt -y install php-fpm
- 运行以下命令,查看PHP版本。
sudo php -v
返回结果如下所示,表示PHP已成功安装,可查看到PHP版本为7.4.3。
PHP 7.4.3 (cli) (built: Nov 25 2021 23:16:22) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies
- 修改Nginx配置文件以支持PHP。
- 运行以下命令,打开Nginx默认的配置文件。
sudo vim /etc/nginx/sites-enabled/default
- 按i进入编辑模式,修改Nginx配置文件。
- 在
server{}
内,找到index
开头的配置行,在该行中添加index.php
。
- 在
server{}
内找到location ~ \.php$ {}
,去除以下配置行的注释符号。location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}

- 按Esc退出编辑模式,然后输入
:wq
并按Enter键,保存并退出文件。
- 运行以下命令,重启Nginx服务。
sudo systemctl restart nginx.service
- 配置PHP。
- 运行以下命令,在Nginx网站根目录中,新建phpinfo.php文件。
sudo vi <网站根目录>/phpinfo.php
<网站根目录>为变量,可通过Nginx配置文件查看。本教程中Nginx配置文件为默认文件
/etc/nginx/sites-enabled/default,您可以运行
cat /etc/nginx/sites-enabled/default命令查看文件内容,其中如下图所示的
/var/www/html
部分即为网站根目录。

因此,对应的运行命令为:
sudo vi /var/www/html/phpinfo.php
- 按i进入编辑模式,添加以下配置信息。
phpinfo()
函数会展示PHP的所有配置信息。
<?php echo phpinfo(); ?>
- 按Esc退出编辑模式,然后输入
:wq
并按Enter键,保存并退出文件。
- 运行以下命令,启动PHP。
sudo systemctl start php7.4-fpm
步骤八:测试访问PHP配置信息页面
- 在本地Windows主机或其他具有公网访问能力的Windows主机中,打开浏览器。
- 在浏览器的地址栏输入
http://<ECS实例公网IP地址>/phpinfo.php
进行访问。访问结果如下图所示,成功查看到PHP配置信息页面,表示LNMP环境部署成功。

后续步骤
成功搭建LNMP环境后,建议您删除
phpinfo.php测试文件,消除数据泄露风险。
rm -rf <网站根目录>/phpinfo.php
本教程中网站根目录为
/var/www/html
,则需要运行以下命令删除测试文件。
rm -rf /var/www/html/phpinfo.php