LAMP环境是常用的Web开发环境之一,其中LAMP分别代表Linux、Apache、MySQL和PHP。
您可以单击一键运行进入Terraform Explorer查看并执行Terraform代码,从而实现自动化地在ECS实例中部署LAMP环境。
前提条件
部署LAMP环境
Alibaba Cloud Linux 3/CentOS 8
CentOS 8的源地址http://mirror.centos.org/centos/8/
内容已移除,当您在阿里云上继续使用默认配置的CentOS 8的源会发生报错。具体操作,请参见CentOS 8 EOL如何切换源?
安装Apache服务器。
#安装Apache服务器 sudo dnf install -y httpd #设置开机自启 sudo systemctl enable httpd #启动Apache服务器 sudo systemctl start httpd
安装MySQL数据库。
说明Alibaba Cloud Linux 3您需要安装
compat-openssl10
与旧版本OpenSSL库兼容。sudo yum install -y compat-openssl10
#添加MySQL官方源 sudo rpm -Uvh https://repo.mysql.com/mysql84-community-release-el8-1.noarch.rpm #安装MySQL服务 sudo dnf install -y mysql-server #启动MySQL服务并设置开机自启 sudo systemctl start mysqld sudo systemctl enable mysqld
查看root用户默认初始密码。
如果是Alibaba Cloud Linux 3执行。
echo $(PASSWORD=$(sudo grep 'temporary password' /var/log/mysqld.log); PASSWORD=${PASSWORD##* }; echo $PASSWORD)
如果是CentOS 8安装后默认无密码。
为MySQL服务root用户设置密码,您需要将命令中
<oldpwd>
替换为初始密码,<newpwd>
替换为您的新密码(如果是CentOS 8<oldpwd>
替换为空,命令提示输入密码输入回车跳过)。重要密码策略要求密码至少包含一个大写字母、一个小写字母、一个数字和一个特殊字符,并且密码总长度至少为 8 个字符。
sudo mysqladmin -uroot -p'<oldpwd>' password '<newpwd>'
安装PHP。
说明本文默认使用了PHP8.4,如果对版本有要求需要将模块名称修改成对应版本(例:安装PHP8.1需要将模块名称修改为
php:remi-8.1
)。#设置remi源并启用php:remi-8.4 sudo rpm -Uvh http://mirrors.cloud.aliyuncs.com/remi/enterprise/remi-release-8.rpm --nodeps sudo sed -i "s/\$releasever/8/g" /etc/yum.repos.d/remi-modular.repo /etc/yum.repos.d/remi-safe.repo /etc/yum.repos.d/remi.repo sudo dnf install -y yum-utils && sudo dnf module enable -y php:remi-8.4 #安装PHP、PHP进程管理器、MySQL扩展模块 sudo dnf install -y php php-fpm php-mysqlnd #启动PHP进程管理器服务并设置开机自启 sudo systemctl start php-fpm sudo systemctl enable php-fpm
验证LAMP环境。
查询
php-fpm
配置文件默认监听地址。sudo grep 'listen =' /etc/php-fpm.d/www.conf
执行命令创建
/etc/httpd/conf.d/php-fpm.conf
配置文件并添加php-fpm
规则。重要如果
php-fpm
监听地址为127.0.0.1:9000
需要修改规则为proxy:fcgi://127.0.0.1:9000
sudo tee /etc/httpd/conf.d/php-fpm.conf <<-'EOF' <FilesMatch \.php$> SetHandler "proxy:unix:/run/php-fpm/www.sock;" </FilesMatch> EOF
重启Apache服务器使配置生效。
sudo systemctl restart httpd
执行命令在路径
/var/www/html/
下新建test.php
文件,并添加测试内容(<username>
替换为数据库用户名,<password>
替换为数据库密码)。sudo tee /var/www/html/test.php <<-'EOF' <?php $servername = "localhost"; $username = "<username>"; $password = "<password>"; $conn = new mysqli($servername, $username, $password); if ($conn->connect_error) { die("fail: " . $conn->connect_error); } echo "success\n"; ?> EOF
在本地物理机上使用浏览器访问
http://ECS实例公网IP/test.php
,返回success
说明PHP代理设置成功并成功连接MySQL数据库。
Alibaba Cloud Linux 2/CentOS 7
安装Apache服务器。
#安装Apache服务器 sudo yum install -y httpd #设置开机自启 sudo systemctl enable httpd #启动Apache服务器 sudo systemctl start httpd
安装MySQL数据库。
#添加MySQL官方源 sudo rpm -Uvh https://repo.mysql.com/mysql84-community-release-el7-1.noarch.rpm #安装MySQL服务 sudo yum install -y mysql-server #启动MySQL服务并设置开机自启 sudo systemctl start mysqld sudo systemctl enable mysqld
查看root用户默认初始密码。
echo $(PASSWORD=$(sudo grep 'temporary password' /var/log/mysqld.log); PASSWORD=${PASSWORD##* }; echo $PASSWORD)
为MySQL服务root用户设置密码,您需要将命令中
<oldpwd>
替换为初始密码,<newpwd>
替换为您的新密码。重要密码策略要求密码至少包含一个大写字母、一个小写字母、一个数字和一个特殊字符,并且密码总长度至少为 8 个字符。
sudo mysqladmin -uroot -p'<oldpwd>' password '<newpwd>'
安装PHP。
#设置remi源并启用remi-php83 sudo rpm -Uvh http://mirrors.cloud.aliyuncs.com/remi/enterprise/remi-release-7.rpm --nodeps sudo sed -i "s/\$releasever/7/g" /etc/yum.repos.d/remi-modular.repo /etc/yum.repos.d/remi-safe.repo /etc/yum.repos.d/remi.repo sudo yum install -y yum-utils && sudo yum-config-manager --enable remi-php83 #安装PHP、PHP进程管理器、MySQL扩展模块 sudo yum install -y php php-fpm php-mysqlnd #启动PHP进程管理器服务并设置开机自启 sudo systemctl start php-fpm sudo systemctl enable php-fpm
验证LAMP环境。
查询
php-fpm
配置文件默认监听地址。sudo grep 'listen =' /etc/php-fpm.d/www.conf
如果返回sock文件地址说明默认监听sock文件。
如果返回
127.0.0.1:9000
说明默认监听本地9000端口。
执行命令创建
/etc/httpd/conf.d/php-fpm.conf
配置文件并添加php-fpm
规则。重要如果
php-fpm
监听地址为sock文件地址,需要修改规则proxy:fcgi://127.0.0.1:9000
为proxy:unix:<path>;
,<path>需要替换为您的sock文件地址。sudo tee /etc/httpd/conf.d/php-fpm.conf <<-'EOF' <FilesMatch \.php$> SetHandler "proxy:fcgi://127.0.0.1:9000" </FilesMatch> EOF
重启Apache服务器使配置生效。
sudo systemctl restart httpd
执行命令在路径
/var/www/html/
下新建test.php
文件,并添加测试内容(<username>
替换为数据库用户名,<password>
替换为数据库密码)。sudo tee /var/www/html/test.php <<-'EOF' <?php $servername = "localhost"; $username = "<username>"; $password = "<password>"; $conn = new mysqli($servername, $username, $password); if ($conn->connect_error) { die("fail: " . $conn->connect_error); } echo "success\n"; ?> EOF
在本地物理机上使用浏览器访问
http://ECS实例公网IP/test.php
,返回success
说明PHP代理设置成功并成功连接MySQL数据库。
Ubuntu20.04及以上
安装Apache服务器。
#安装Apache服务器 sudo apt update -y && sudo apt install -y apache2 #设置开机自启 sudo systemctl enable apache2 #启动Apache服务器 sudo systemctl start apache2
更新软件包列表并安装MySQL服务器。
sudo apt update -y && sudo apt install -y mysql-server
修改MySQL服务器
root
用户的密码和身份认证插件。您需要将命令中<newpwd>
替换为您的密码。重要由于本地root用户的默认身份认证插件是
auth_socket
,命令执行后提示输入密码,请直接按回车跳过。sudo mysql -uroot -p -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<newpwd>';" -e "FLUSH PRIVILEGES;"
安装PHP。
说明您可以通过
sudo apt search php
查看所有支持安装的PHP版本,安装其他版本需要修改命令中对应版本号(例如:安装PHP8.1需修改命令sudo apt install -y php8.1 php8.1-fpm php8.1-mysql
)。#安装software-properties-common包,并添加PPA仓库ppa:ondrej/php sudo apt update && sudo apt install -y software-properties-common && sudo add-apt-repository -y ppa:ondrej/php #安装PHP 8.4及相关组件,包括FPM和MySQL扩展 sudo apt install -y php8.4 php8.4-fpm php8.4-mysql
验证LAMP环境。
查询
php-fpm
配置文件默认监听地址,<version>
需要替换为您的PHP版本(例:PHP 8.4需要将<version>
替换为8.4)。sudo grep '^listen =' /etc/php/<version>/fpm/pool.d/www.conf
如果返回sock文件地址说明默认监听sock文件。
如果返回
127.0.0.1:9000
说明默认监听本地9000端口。
执行命令新建
/etc/apache2/conf-available/php-fpm.conf
文件,在内填写PHP转发规则,<listen>需要替换为您的监听地址。如果是sock文件地址,需要替换
<listen>
为unix:<path>;
,<path>
需要替换为您的sock文件地址。重要如果监听的sock文件,需要sock文件的权限设置为允许读写,您可以使用以下命令来更改权限
sudo chmod 666 <path>
,<path>更改为您的sock文件地址。如果是
127.0.0.1:9000
,需要替换<listen>
为fcgi://127.0.0.1:9000
。
sudo tee /etc/apache2/conf-available/php-fpm.conf <<-'EOF' <FilesMatch \.php$> SetHandler "proxy:<listen>" </FilesMatch> EOF
设置配置文件软连接。
sudo ln -s /etc/apache2/conf-available/php-fpm.conf /etc/apache2/conf-enabled/
启用proxy_fcgi和setenvif模块使Apache可以将PHP请求转发到PHP进程管理器,并启用PHP进程管理器的配置文件。
sudo a2enmod proxy_fcgi setenvif sudo a2enconf php8.4-fpm
重启Apache服务器使配置生效。
sudo systemctl restart apache2
执行命令在路径
/var/www/html/
下新建test.php
文件,并添加测试内容(<username>
替换为数据库用户名,<password>
替换为数据库密码)。sudo tee /var/www/html/test.php <<-'EOF' <?php $servername = "localhost"; $username = "<username>"; $password = "<password>"; $conn = new mysqli($servername, $username, $password); if ($conn->connect_error) { die("fail: " . $conn->connect_error); } echo "success\n"; ?> EOF
在本地物理机上使用浏览器访问
http://ECS实例公网IP/test.php
,返回success
说明PHP代理设置成功并成功连接MySQL数据库。
常见问题
无法通过公网IP访问test.php页面
可能原因及其解决方案:
安全组未放开80端口、系统防火墙开启、80端口被占用。
具体排查方法,请参见无法访问ECS实例中的服务的排查方法。
如何设置MySQL远程访问
创建非root用户远程登录MySQL的账号,并允许远程主机使用该账号访问MySQL。具体操作,请参见手动部署MySQL数据库(Linux)。