LAMP环境是常用的Web开发环境之一,其中LAMP分别代表Linux、Apache、MySQL和PHP。LAMP拥有庞大的社区支持和丰富的资源,适合开发、部署和维护各种规模的Web应用,由于其高度灵活性和可定制性,您可以根据项目需求调整每个组件的配置,以达到最佳性能和安全性。本文介绍如何在Ubuntu操作系统的ECS实例内部署LAMP环境。
准备工作
创建用于部署LAMP环境的ECS实例,具体操作,请参见自定义购买实例。
该实例必须满足以下条件:
实例已分配公网IP地址或绑定弹性公网IP(EIP)。具体操作,请参见绑定和解绑弹性公网IP。
操作系统:Ubuntu 22.04、Ubuntu 20.04。
实例安全组的入方向规则已放行22、80、443端口。具体操作,请参见添加安全组规则。
步骤一:安装Apache
运行以下命令,更新Ubuntu系统内的软件包。
sudo apt update
运行以下命令,安装Apache。
sudo apt-get -y install apache2
运行以下命令,查看Apache版本。
apache2 -v
返回结果类似如下所示,表示Apache已成功安装。
运行以下命令,启动Apache服务并设置服务开机自启动。
sudo systemctl start apache2 sudo systemctl enable apache2
运行以下命令,查看Apache服务状态。
sudo systemctl status apache2
返回结果类似如下所示,表示Apache已启动。
步骤二:安装并配置MySQL
安装MySQL。
运行以下命令,安装MySQL。
sudo apt -y install mysql-server
运行以下命令,查看MySQL版本。
mysql -V
返回结果类似如下所示,表示MySQL已成功安装。
运行以下命令,启动MySQL服务。
sudo systemctl start mysql
依次运行以下命令,设置开机启动MySQL。
sudo systemctl enable mysql sudo systemctl daemon-reload
配置MySQL。
运行以下命令,进入MySQL。
sudo 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数据库。
exit;
运行以下命令,对MySQL进行安全性配置。
sudo mysql_secure_installation
根据命令行提示,依次完成以下配置项。
输入root用户的密码。本示例中输入
Mysql@1234
。ecs-user@iZbp19jsi7s0g7m4zgc****:~# sudo mysql_secure_installation Securing the MySQL server deployment. Enter password for user root:
说明在输入密码时,系统为了最大限度地保证数据安全,命令行将不做任何回显。您只需要输入正确的密码信息,然后按Enter键即可。
输入
Y
,设置密码验证策略。VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: Y
选择密码验证策略。
本示例输入2。
There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
输入
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数据库。
sudo mysql -uroot -p
在命令行回显的
Enter password:
后输入已设置的数据库密码。说明在输入密码时,系统为了最大限度地保证数据安全,命令行将不做任何回显。您只需要输入正确的密码信息,然后按Enter键即可。
成功登录MySQL数据库后,命令行信息如下所示。
ecs-user@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数据库。
exit;
(可选)修改监听配置。
默认情况下,MySQL数据库使用端口号
3306
监听并只接受来自本地IP地址127.0.0.1
的连接请求。如需允许MySQL接受来自任何IP地址的连接,您需要将监听IP地址更改为0.0.0.0
。具体操作如下所示:重要将MySQL配置为监听
0.0.0.0
会使数据库更容易受到未经授权访问的风险。因此,在允许来自任何IP的连接之前,请您务必认识到相关的安全威胁,并采取必要的保护措施,比如应用VPN、实施防火墙限制和加强账户权限管理。执行以下命令,打开
my.cnf
配置文件。sudo vim /etc/mysql/my.cnf
按
i
键进入编辑模式,然后添加如下内容。[mysqld] bind-address = 0.0.0.0
修改完成后,按
Esc
键退出编辑模式,然后输入:wq
保存并退出。执行以下命令,重启MySQL服务。
sudo systemctl restart mysql
步骤三:安装PHP
安装PHP。
运行以下命令,安装
software-properties-common
软件包。sudo apt-get install -y software-properties-common
运行以下命令,添加第三方软件包Ondrej PPA。
第三方软件包Ondrej PPA中提供了最新版本的PHP。
sudo add-apt-repository ppa:ondrej/php
出现如下图所示的回显信息时,请按Enter键。
运行以下命令,安装PHP。
说明本操作以安装PHP 8.3为例,如果您想安装其他版本,请修改命令中的
php8.3
为具体版本。sudo apt-get install -y php8.3 php8.3-fpm libapache2-mod-php8.3
运行以下命令,查看PHP版本。
php -v
返回结果类似如下所示,表示PHP已成功安装。
运行以下命令,备份Apache配置文件。
sudo cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.bak
修改Apache配置文件,添加Apache对PHP的支持。
重要若不添加此配置信息,后续您使用浏览器访问PHP页面时,页面将无法显示。
运行以下命令,打开Apache配置文件。
sudo vim /etc/apache2/apache2.conf
按
i
进入编辑模式。添加下列配置信息。
DirectoryIndex index.html index.php <FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch>
按
Esc
键,输入:wq
,按Enter
键关闭并保存配置文件。
在Apache网站根目录中,创建测试网页。
运行以下命令,查看Apache网站根目录的路径信息。
sudo cat /etc/apache2/sites-available/000-default.conf
命令行返回结果中的
DocumentRoot /var/www/html
一行,即表示网站根目录为/var/www/html
。运行以下命令,在网站根目录创建测试网页,并把
phpinfo()
函数添加至网页内容中。phpinfo()
函数会展示PHP的所有配置信息。sudo sh -c 'echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php'
运行以下命令,重启Apache服务。
sudo systemctl restart apache2
在本地机器浏览器地址栏,输入
http://<ECS实例公网IP地址>/phpinfo.php
并按Enter键。显示如下页面表示安装成功。
成功搭建LAMP环境后,建议您删除phpinfo.php测试文件,以消除数据泄露风险。
sudo rm -rf <网站根目录>/phpinfo.php
本教程中网站根目录为
/var/www/html
,则需要运行以下命令删除测试文件。sudo rm -rf /var/www/html/phpinfo.php