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

步骤一:准备工作

  1. 远程连接需要部署LNMP环境的ECS实例。
    具体操作,请参见连接方式概述
  2. 关闭系统内部防火墙。
    1. 运行以下命令,检查防火墙当前状态。
      sudo ufw status
      • 如果防火墙状态为Status: inactive,则表示防火墙为关闭状态。
      • 如果防火墙状态为Status: active,则表示防火墙为开启状态。
    2. 可选:关闭防火墙。
      如果您的防火墙为开启状态,需要运行以下命令,关闭防火墙并关闭开机自启动防火墙。
      sudo ufw disable
      说明 如果您想重新开启防火墙并开启开机自启动防火墙,请运行sudo ufw enable命令。

步骤二:安装Nginx

  1. 运行以下命令,更新Ubuntu系统内的软件包。
    sudo apt update
  2. 运行以下命令,安装Nginx。
    sudo apt -y install nginx
  3. 运行以下命令,查看Nginx版本。
    sudo nginx -v
    返回结果如下所示,查看到Nginx的版本信息为1.18.0。同时也表示Nginx已成功安装。
    nginx version: nginx/1.18.0 (Ubuntu)

步骤三:安装并配置MySQL

  1. 安装MySQL。
    1. 运行以下命令,安装MySQL。
      sudo apt -y install mysql-server
    2. 运行以下命令,查看MySQL版本。
      sudo mysql -V
      返回结果如下所示,表示MySQL已成功安装,MySQL的版本为8.0.27。
      mysql  Ver 8.0.27-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))
  2. 配置MySQL。
    1. 运行以下命令,进入MySQL。
      sudo mysql
    2. 运行以下命令,设置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';
    3. 运行以下命令,退出MySQL数据库。
      exit;
    4. 运行以下命令,对MySQL进行安全性配置。
      sudo mysql_secure_installation
    5. 根据命令行提示,依次完成以下配置项。
      1. 输入root用户的密码。本示例中输入Mysql@1234
        root@iZbp19jsi7s0g7m4zgc****:~# sudo mysql_secure_installation
        
        Securing the MySQL server deployment.
        
        Enter password for user root: 
        说明 在输入密码时,系统为了最大限度的保证数据安全,命令行将不做任何回显。您只需要输入正确的密码信息,然后按Enter键即可。
      2. 输入Y,更改root用户密码。
        Change the password for root ? ((Press y|Y for Yes, any other key for No) : Y
      3. 输入root用户密码。
        New password:
        
        Re-enter new password:
        
        Estimated strength of the password: 100
      4. 输入Y,确认使用已设置的密码。
        Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
      5. 输入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
      6. 输入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
      7. 输入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) : 
      8. 输入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!时,表示配置完成。
  3. 测试登录MySQL数据库。
    1. 运行以下命令,登录MySQL数据库。
      sudo mysql -uroot -p
    2. 在命令行回显的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>
    3. 运行以下命令,退出MySQL数据库。
      exit;

步骤四:安装并配置PHP

  1. 安装PHP。
    1. 运行以下命令,安装PHP。
      sudo apt -y install php-fpm
    2. 运行以下命令,查看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
  2. 修改Nginx配置文件以支持PHP。
    1. 运行以下命令,打开Nginx默认的配置文件。
      sudo vim /etc/nginx/sites-enabled/default
    2. i进入编辑模式,修改Nginx配置文件。
      1. server{}内,找到index开头的配置行,在该行中添加index.phpnginx-indexphp
      2. server{}内找到location ~ \.php$ {},去除以下配置行的注释符号。
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }
        nginx-php
    3. Esc退出编辑模式,然后输入:wq并按Enter键,保存并退出文件。
    4. 运行以下命令,重启Nginx服务。
      sudo systemctl restart nginx.service
  3. 配置PHP。
    1. 运行以下命令,在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
    2. i进入编辑模式,添加以下配置信息。
      phpinfo()函数会展示PHP的所有配置信息。
      <?php echo phpinfo(); ?>
    3. Esc退出编辑模式,然后输入:wq并按Enter键,保存并退出文件。
    4. 运行以下命令,启动PHP。
      sudo systemctl start php7.4-fpm

步骤八:测试访问PHP配置信息页面

  1. 在本地Windows主机或其他具有公网访问能力的Windows主机中,打开浏览器。
  2. 在浏览器的地址栏输入http://<ECS实例公网IP地址>/phpinfo.php进行访问。
    访问结果如下图所示,成功查看到PHP配置信息页面,表示LNMP环境部署成功。php页面

后续步骤

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