在Linux环境下搭建LAMP(Linux+Apache+MySQL+PHP)环境是动态网站开发的基础,广泛应用于博客、电商、企业官网等场景,本文以Ubuntu 22.04 LTS和CentOS 7为例,分步骤详细讲解LAMP环境的安装与配置过程,涵盖组件安装、服务配置、安全设置及功能测试,确保读者能顺利完成环境搭建。
系统准备
在开始安装前,需确保系统满足基本要求:Linux发行版(推荐Ubuntu/CentOS)、root权限或具有sudo权限的用户、稳定的网络连接,建议更新系统包列表并安装必要的编译工具,以避免依赖问题。
更新系统
- Ubuntu/Debian:
执行以下命令更新软件包列表并升级已安装的包:sudo apt update && sudo apt upgrade -y
- CentOS/RHEL:
sudo yum update -y # CentOS 7及以下 # 或 CentOS 8+: # sudo dnf update -y
安装编译工具(可选)
若后续需编译安装PHP扩展,需安装编译环境:
- Ubuntu:
sudo apt install -y build-essential gcc g++ make
- CentOS:
sudo yum groupinstall -y "Development Tools"
安装Apache Web服务器
Apache是最流行的Web服务器之一,支持跨平台,配置灵活,下面介绍通过包管理器安装Apache的方法。
安装Apache
- Ubuntu/Debian:
sudo apt install -y apache2
- CentOS/RHEL:
sudo yum install -y httpd # CentOS 7及以下 # 或 CentOS 8+: # sudo dnf install -y httpd
启动并设置开机自启
安装完成后,启动Apache服务并设置为开机启动:
- Ubuntu:
sudo systemctl start apache2 sudo systemctl enable apache2
- CentOS:
sudo systemctl start httpd sudo systemctl enable httpd
配置防火墙
若系统开启了防火墙,需允许HTTP(80端口)和HTTPS(443端口)流量:
- Ubuntu(ufw):
sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw reload
- CentOS(firewalld):
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
测试Apache是否运行
在浏览器中访问服务器的公网IP地址(如http://服务器IP
),若看到Apache默认欢迎页面(Ubuntu显示”It works!”,CentOS显示”Apache 2 Test Page”),则安装成功。
- 查看服务器IP:
ip addr show | grep inet
安装MySQL数据库服务器
MySQL是开源的关系型数据库管理系统,用于存储网站数据,本文以MySQL 8.0为例(CentOS 7默认使用MariaDB,操作类似)。
安装MySQL
- Ubuntu/Debian:
首先添加MySQL官方仓库,然后安装:sudo apt install -y mysql-server
- CentOS/RHEL:
CentOS 7及以下需先添加EPEL仓库,CentOS 8+可直接使用dnf:# CentOS 7: sudo yum localinstall -y https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm sudo yum install -y mysql-community-server # CentOS 8+: # sudo dnf install -y mysql-server
启动并设置开机自启
- Ubuntu:
sudo systemctl start mysql sudo systemctl enable mysql
- CentOS:
sudo systemctl start mysqld sudo systemctl enable mysqld
安全配置MySQL
执行mysql_secure_installation
脚本,设置root密码、移除匿名用户、禁止root远程登录、移除测试数据库、刷新权限等:
sudo mysql_secure_installation
根据提示操作,建议设置强密码并开启密码验证(推荐开启)。
创建数据库和测试用户
登录MySQL(sudo mysql -u root -p
),创建数据库和PHP连接所需的用户:
CREATE DATABASE lamp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'lamp_user'@'localhost' IDENTIFIED BY 'your_strong_password'; GRANT ALL PRIVILEGES ON lamp_db.* TO 'lamp_user'@'localhost'; FLUSH PRIVILEGES; EXIT;
安装PHP及扩展
PHP是服务器端脚本语言,用于处理动态网页内容,需安装PHP及MySQL扩展,使PHP能连接MySQL数据库。
安装PHP及常用扩展
- Ubuntu/Debian:
安装PHP 8.1(可根据需求选择版本,如PHP 8.0):sudo apt install -y php php-mysql php-curl php-gd php-mbstring php-xml php-zip php-fpm
- CentOS/RHEL:
CentOS 7需添加Remi仓库安装PHP 8.0,CentOS 8+可直接使用dnf:# CentOS 7: sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm sudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm sudo yum install -y yum-utils sudo yum-config-manager --enable remi-php80 sudo yum install -y php php-mysqlnd php-curl php-gd php-mbstring php-xml php-fpm # CentOS 8+: # sudo dnf install -y php php-mysqlnd php-curl php-gd php-mbstring php-xml php-fpm
配置PHP(以PHP-FPM为例)
PHP-FPM(FastCGI Process Manager)可提升PHP性能,需配置Apache与PHP-FPM协同工作:
- Ubuntu:
启用PHP-FPM模块并重启Apache:sudo systemctl start php8.1-fpm # 版本号根据实际安装调整 sudo systemctl enable php8.1-fpm sudo a2enmod proxy_fcgi setenvif sudo a2enconf php8.1-fpm sudo systemctl restart apache2
- CentOS:
启动PHP-FPM并重启Apache:sudo systemctl start php-fpm sudo systemctl enable php-fpm # 修改Apache配置文件,加载PHP模块(CentOS 8+需手动配置) sudo sed -i 's/AddHandler .*.php$/AddHandler application/x-httpd-php .php/' /etc/httpd/conf.d/php.conf sudo systemctl restart httpd
配置Apache支持PHP
需修改Apache配置,使Apache能正确解析PHP文件并关联PHP-FPM(若使用模块模式可跳过此步)。
Ubuntu(已通过a2enconf配置)
无需手动修改,若需自定义网站根目录,可编辑虚拟主机配置:
sudo nano /etc/apache2/sites-available/000-default.conf
修改DocumentRoot
为自定义路径(如/var/www/lamp
),并确保以下配置存在:
<Directory /var/www/lamp> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
CentOS
编辑主配置文件:
sudo nano /etc/httpd/conf/httpd.conf
修改DocumentRoot
(默认为/var/www/html
),并在<Directory>
块中添加:
<Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
重启Apache
# Ubuntu sudo systemctl restart apache2 # CentOS sudo systemctl restart httpd
测试LAMP环境
创建PHP测试文件,验证Apache、PHP、MySQL是否协同工作。
创建测试文件
在网站根目录(如/var/www/html
)创建info.php
和db_test.php
:
sudo nano /var/www/html/info.php ```PHP信息页面): ```php <?php phpinfo(); ?>
sudo nano /var/www/html/db_test.php ```测试MySQL连接): ```php <?php $servername = "localhost"; $username = "lamp_user"; $password = "your_strong_password"; $dbname = "lamp_db"; // 创建连接 $conn = new mysqli($servername, $username, $password, $dbname); // 检查连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } echo "连接成功!"; $conn->close(); ?>
访问测试文件
在浏览器中访问:
- PHP信息页面:
http://服务器IP/info.php
,若看到PHP配置信息,则PHP安装成功。 - 数据库测试页面:
http://服务器IP/db_test.php
,若显示”连接成功!”,则LAMP环境完全可用。
注意:测试完成后删除info.php
(包含敏感配置信息):sudo rm /var/www/html/info.php
常用PHP扩展及作用
扩展名称 | 作用说明 |
---|---|
php-mysqlnd | MySQL原生驱动,使PHP能连接MySQL数据库 |
php-curl | 支持HTTP请求,用于调用API或爬虫 |
php-gd | 图像处理库,用于生成缩略图、验证码等 |
php-mbstring | 多字节字符串处理,支持中文等非ASCII字符 |
php-xml | XML解析功能,用于处理XML数据 |
php-zip | ZIP压缩/解压功能,用于文件打包 |
php-fpm | FastCGI进程管理器,提升PHP性能(与Apache协同工作) |
相关问答FAQs
问题1:如何检查LAMP各组件是否正常运行?
解答:
- Apache:通过
systemctl status apache2
(Ubuntu)或systemctl status httpd
(CentOS)检查服务状态;或访问http://服务器IP
,查看是否显示Apache默认页面。 - MySQL:执行
mysql -u root -p
登录,若能成功输入密码并进入MySQL客户端,则服务正常;或通过systemctl status mysql
(Ubuntu)/systemctl status mysqld
(CentOS)查看状态。 - PHP:创建
info.php
为<?php phpinfo(); ?>
),访问该文件,若显示PHP配置信息,则PHP运行正常;或通过命令php -v
查看PHP版本。
问题2:如何修改Apache默认网站根目录?
解答:
以Ubuntu为例,假设将网站根目录修改为/home/user/www
:
- 创建新目录并设置权限:
sudo mkdir -p /home/user/www sudo chown -R www-data:www-data /home/user/www # Ubuntu下Apache用户为www-data sudo chmod -R 755 /home/user/www
- 修改Apache虚拟主机配置:
sudo nano /etc/apache2/sites-available/000-default.conf
将
DocumentRoot /var/www/html
修改为DocumentRoot /home/user/www
,并确保<Directory>
块路径同步修改:<Directory /home/user/www> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
- 重启Apache:
sudo systemctl restart apache2
此时访问
http://服务器IP
将显示/home/user/www
目录下的文件,CentOS操作类似,只需修改/etc/httpd/conf/httpd.conf
中的DocumentRoot
及对应<Directory>
配置,并重启httpd
服务。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/21172.html