LAMP环境是常用的Web开发环境之一,其中LAMP分别代表Linux、Apache、MySQL和PHP。本文将介绍如何在Alibaba Cloud Linux 3操作系统的ECS实例内部署LAMP环境。

前提条件

  • 已创建ECS实例并为实例分配公网IP地址。具体操作,请参见创建方式导航
    本文示例步骤中,使用以下配置的ECS实例。实际操作时,建议您保持操作系统版本一致,避免因操作系统版本问题导致的命令执行报错。
    • 实例规格:ecs.c6.large
    • 操作系统:公共镜像Alibaba Cloud Linux 3.2104 LTS 64位
    • 网络类型:专有网络VPC
    • IP地址:公网IP
  • 已在实例安全组的入方向添加安全组规则并放行22、80端口。具体操作,请参见添加安全组规则
    说明 基于服务器数据安全考虑,本文仅说明部署与测试LAMP环境所必须放行的端口,您可以根据实际需求,放行其他应用所需的端口号。例如,远程连接MySQL数据库时,需要放行MySQL默认占用的3306端口。

背景信息

本文适用于熟悉Linux操作系统,初次使用阿里云进行建站的个人用户。在示例步骤中使用了以下版本的软件。操作时,请您以实际软件版本为准。
  • Apache:2.4.37
  • MySQL:5.7.40
  • PHP:7.4.32
  • phpMyAdmin:4.0.10.20

本文主要说明手动安装LAMP平台的操作步骤,您也可以在云市场购买LAMP镜像直接启动ECS,以便快速建站。

步骤一:准备工作

  1. 远程连接需要部署LAMP环境的ECS实例。
    具体操作,请参见 连接方式概述
  2. 运行以下命令,查看操作系统的版本。
    cat /etc/redhat-release
    显示类似如下信息,表示操作系统为Alibaba Cloud Linux 3。
    [root@iZbp14h7n3cwipjln62**** ~]# cat /etc/redhat-release
    Alibaba Cloud Linux release 3 (Soaring Falcon)
  3. 关闭防火墙。
    1. 运行以下命令,查看当前防火墙的状态。
      systemctl status firewalld
      查看防火墙状态
      • 如果防火墙的状态参数是inactive,则防火墙为关闭状态。
      • 如果防火墙的状态参数是active,则防火墙为开启状态。本示例中防火墙为开启状态,因此需要关闭防火墙。具体操作如下:
        • 如果您想临时关闭防火墙,运行以下命令。
          systemctl stop firewalld
          说明 这只是暂时关闭防火墙,下次重启Linux后,防火墙还会开启。
        • 如果您想永久关闭防火墙,运行以下命令。
          systemctl disable firewalld
          说明 如果您想重新开启防火墙,请参见 firewalld官网信息
  4. 关闭SELinux。
    1. 运行以下命令,查看SELinux的当前状态。
      getenforce
      • 如果SELinux状态参数是Disabled, 则SELinux为关闭状态。
      • 如果SELinux状态参数是Enforcing,则SELinux为开启状态。
    2. 关闭SELinux。如果SELinux为关闭状态,请忽略此步骤。
      • 如果您想临时关闭SELinux,运行命令setenforce 0
        说明 这只是暂时关闭SELinux,下次重启Linux后,SELinux还会开启。
      • 如果您想永久关闭SELinux,运行命令vi /etc/selinux/config编辑SELinux配置文件。回车后,把光标移动到SELINUX=enforcing这一行,按i键,将其修改为SELINUX=disabled, 按Esc键,然后输入:wq并回车以保存并关闭SELinux配置文件。 最后重启系统使设置生效。
        说明 如果您想重新开启SELinux,请参见 SELinux的官方文档

步骤二:安装Apache

Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。

  1. 运行以下命令,安装Apache服务及其扩展包。
    yum -y install httpd httpd-manual mod_ssl mod_perl
    yum -y install httpd httpd-devel
  2. 运行以下命令,查看Apache的版本号。
    httpd -v
    回显信息类似如下所示,表示Apache的版本号为2.4.6。
    [root@iZbp14h7n3cwipjln62**** ~]# httpd -v
    Server version: Apache/2.4.37 (Alibaba Cloud Linux)
    Server built:   Jul 21 2022 15:33:44
  3. 依次运行以下命令,启动Apache服务并设置服务开机自启动。
    systemctl start httpd
    systemctl enable httpd
  4. 测试Apache服务是否安装并启动成功。
    1. 登录ECS管理控制台
    2. 在左侧导航栏,单击实例与镜像 > 实例
    3. 实例列表中找到正在部署环境的实例,从该实例的IP地址中复制公网IP。
    4. 在本地机器的浏览器地址栏中,输入http://ECS实例公网IP并按Enter键。
      若返回页面如下图所示,说明Apache服务启动成功。
      说明 Apache服务默认监听80端口,如果无法访问Apache服务,需确保已在ECS实例安全组的入方向添加安全组规则并放行80端口。具体操作,请参见 添加安全组规则
      asdasd

步骤三:安装并配置MySQL

  1. 运行以下命令,安装MySQL。
    wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm && yum -y install mysql57-community-release-el7-10.noarch.rpm && yum -y install mysql-community-server --nogpgcheck
  2. 运行以下命令,查看MySQL版本号。
    mysql -V
    返回结果类似如下所示,表示MySQL安装成功。
    [root@iZbp14h7n3cwipjln62**** ~]# mysql -V
    mysql  Ver 14.14 Distrib 5.7.40, for Linux (x86_64) using  EditLine wrapper
  3. 运行以下命令,启动MySQL。
    systemctl start mysqld
  4. 依次运行以下命令,设置开机启动MySQL。
    systemctl enable mysqld
    systemctl daemon-reload
  5. 运行以下命令,查看MySQL的初始密码。
    grep "password" /var/log/mysqld.log
    返回结果示例如下,本示例中初始密码为 dyrksweb****
    [root@iZbp14h7n3cwipjln62kxvZ ~]# grep "password" /var/log/mysqld.log
    2022-10-26T09:29:00.515789Z 1 [Note] A temporary password is generated for root@localhost: dyrksweb****
  6. 运行以下命令,配置MySQL的安全性。
    mysql_secure_installation

    安全性的配置包含以下五个方面:

    1. 当出现类似以下回显信息时,根据提示信息重置root账号的密码。
      说明 请您安全保管root账号的密码信息,为了安全起见,输入的密码不显示。
      Enter password for user root: #输入上一步获取的root用户初始密码,例如:dyrksweb****。
      
      The existing password for the user account root has expired. Please set a new password.
      
      New password: #输入新密码,长度为8至30个字符,必须同时包含大小写英文字母、数字和特殊符号。特殊符号可以是()` ~!@#$%^&*-+=|{}[]:;‘<>,.?/
      
      Re-enter new password: #重复输入新密码。
      The 'validate_password' plugin is installed on the server.
      The subsequent steps will run with the existing configuration
      of the plugin.
      Using existing password for root.
      
      Estimated strength of the password: 100
      Change the password for root ? ((Press y|Y for Yes, any other key for No) :Y #按Y,并再次输入上步已设置的密码。
      
      New password: #再次输入新密码。
      
      Re-enter new password: #重复输入新密码。
      
      Estimated strength of the password: 100
      Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) :Y #按Y使用新密码。
    2. 当出现类似以下回显信息时,输入Y,删除匿名用户账号。
      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
      Success.
    3. 当出现类似以下回显信息时,输入Y,禁止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 #禁止root远程登录,输入Y
      Success.
    4. 当出现类似以下回显信息时,输入Y,删除test库以及对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 #是否删除test库和对它的访问权限,输入Y
       - Dropping test database...
      Success.
      
       - Removing privileges on test database...
      Success.
    5. 当出现类似以下回显信息时,输入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 #是否重新加载授权表,输入Y
      Success.
      
      All done!

步骤四:安装PHP

  1. 运行以下命令,添加并更新epel源。
    rpm -ivh --nodeps https://rpms.remirepo.net/enterprise/remi-release-8.rpm
  2. 运行以下命令,安装PHP。
    sed -i 's/PLATFORM_ID="platform:al8"/PLATFORM_ID="platform:el8"/g' /etc/os-release
    yum -y module install php:remi-7.4
    sed -i 's/PLATFORM_ID="platform:el8"/PLATFORM_ID="platform:al8"/g' /etc/os-release
  3. 运行以下命令,查看PHP版本。
    php -v
    返回结果如下所示,表示安装成功。
    [root@iZbp14h7n3cwipjln62**** ~]# php -v
    PHP 7.4.32 (cli) (built: Sep 28 2022 09:09:55) ( NTS )
    Copyright (c) The PHP Group
    Zend Engine v3.4.0, Copyright (c) Zend Technologies
        with Zend OPcache v7.4.32, Copyright (c), by Zend Technologies             
  4. 运行以下命令,在Apache网站根目录创建测试文件。
    echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
  5. 运行以下命令,重启Apache服务。
    systemctl restart httpd
  6. 在本地机器的浏览器地址栏中,输入http://实例公网IP/phpinfo.php并按Enter键。
    显示如下页面表示安装成功。 PHP
  7. 成功搭建LAMP环境后,建议您删除phpinfo.php测试文件,消除数据泄露风险。
    rm -rf <网站根目录>/phpinfo.php
    本教程中网站根目录为 /var/www/html,则需要运行以下命令删除测试文件。
    rm -rf /var/www/html/phpinfo.php

(可选)步骤五:安装phpMyAdmin

phpMyAdmin是一个MySQL数据库管理工具,通过Web接口管理数据库方便快捷。

  1. 运行以下命令,创建phpMyAdmin数据存放目录。
    mkdir -p /var/www/html/phpmyadmin
  2. 运行以下命令,下载phpMyAdmin压缩包并解压。
    1. 依次运行以下命令,返回系统主目录并下载phpMyAdmin压缩包。
      cd
      wget --no-check-certificate https://files.phpmyadmin.net/phpMyAdmin/4.0.10.20/phpMyAdmin-4.0.10.20-all-languages.zip
    2. 运行以下命令,安装unzip工具并解压phpMyAdmin压缩包。
      unzip phpMyAdmin-4.0.10.20-all-languages.zip
  3. 运行以下命令,复制phpMyAdmin文件到创建的数据存放目录。
    mv phpMyAdmin-4.0.10.20-all-languages/*  /var/www/html/phpmyadmin
  4. 在本地机器浏览器地址栏,输入http://实例公网 IP/phpmyadmin并按Enter键,访问phpMyAdmin登录页面。
    若返回页面如下图所示,说明phpMyAdmin安装成功。 phpMyAdmin安装成功
  5. 输入MySQL的用户名和密码,单击执行
    MySQL的用户名默认为root,密码为 重置的密码输入用户名和密码
    如果出现以下页面,说明MySQL连接成功。 MySQL连接成功