一、LAMP架构简介
LAMP是全球最流行的Web服务技术栈之一,由四部分组成:
| 组件 | 全称 | 作用 |
|---|---|---|
| Linux | Linux操作系统 | 系统基础,提供运行环境 |
| Apache | Apache HTTP Server | Web服务器,处理HTTP请求 |
| MySQL | MySQL数据库 | 关系型数据库,存储数据 |
| PHP | PHP脚本语言 | 动态网页开发语言 |
适用场景:WordPress、Drupal等CMS、动态网站、中小型企业应用。
二、准备工作
2.1 系统要求
| 项目 | 最低配置 | 推荐配置 |
|---|---|---|
| CPU | 1核 | 2核+ |
| 内存 | 512MB | 2GB+ |
| 硬盘 | 10GB | 40GB SSD |
| 系统 | Ubuntu 20.04+ / CentOS 7+ | Ubuntu 22.04 LTS |
2.2 安全组配置
确保开放以下端口:
# 必须端口
22 # SSH
80 # HTTP
443 # HTTPS
⚠️ 在云服务器控制台安全组中提前开放上述端口。
三、Ubuntu/Debian系统部署
3.1 更新系统
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget unzip
3.2 安装Apache
# 安装Apache
sudo apt install apache2 -y
# 启动并设置开机自启
sudo systemctl start apache2
sudo systemctl enable apache2
# 验证安装
curl -I localhost
# 应返回 HTTP/1.1 200 OK
浏览器访问 http://服务器IP,看到Apache默认页面即成功。
3.3 安装MySQL
# 安装MySQL 8.0
sudo apt install mysql-server -y
# 安全配置
sudo mysql_secure_installation
# 登录MySQL
sudo mysql -u root -p
安全配置选项建议:
– 设置root密码:是
– 移除匿名用户:是
– 禁止root远程登录:是
– 移除test数据库:是
– 重新加载权限表:是
3.4 安装PHP
# 添加PHP仓库(Ubuntu 22.04默认PHP 8.1)
sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
# 安装PHP 8.2及常用扩展
sudo apt install php8.2 php8.2-cli php8.2-fpm \
php8.2-mysql php8.2-curl php8.2-gd \
php8.2-mbstring php8.2-xml php8.2-zip -y
# 重启Apache使PHP生效
sudo systemctl restart apache2
3.5 测试PHP
创建测试文件:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
浏览器访问 http://服务器IP/info.php,看到PHP信息页面即成功。
四、CentOS/RHEL系统部署
4.1 更新系统
sudo yum update -y
# 或(CentOS 8+)
sudo dnf update -y
4.2 安装Apache
# CentOS 7
sudo yum install httpd -y
# CentOS 8+
sudo dnf install httpd -y
# 启动并设置开机自启
sudo systemctl start httpd
sudo systemctl enable httpd
# 开放防火墙端口
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
4.3 安装MySQL(MariaDB)
# CentOS 7
sudo yum install mariadb-server -y
# CentOS 8+
sudo dnf install mariadb-server -y
# 启动并设置开机自启
sudo systemctl start mariadb
sudo systemctl enable mariadb
# 安全配置
sudo mysql_secure_installation
4.4 安装PHP
# CentOS 7 安装Remi仓库
sudo yum install epel-release -y
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
sudo yum-config-manager --enable remi-php82
# CentOS 8+ 安装Remi仓库
sudo dnf install epel-release -y
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y
sudo dnf module reset php -y
sudo dnf module enable php:remi-8.2 -y
# 安装PHP及扩展
sudo yum install php php-mysql php-gd php-mbstring php-xml php-zip -y
# 重启Apache
sudo systemctl restart httpd
五、配置优化
5.1 Apache优化
# /etc/apache2/apache2.conf(Ubuntu)或 /etc/httpd/conf/httpd.conf(CentOS)
# 调整以下参数
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
# 启用压缩
LoadModule deflate_module modules/mod_deflate.so
AddOutputFilterByType DEFLATE text/html text/css application/javascript
5.2 MySQL优化
# /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
innodb_buffer_pool_size = 256M # 设置为内存的50%-70%
max_connections = 150
query_cache_size = 32M
5.3 PHP优化
# /etc/php/8.2/apache2/php.ini(Ubuntu)或 /etc/php.ini(CentOS)
upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M
max_execution_time = 300
date.timezone = Asia/Shanghai
六、虚拟主机配置
6.1 创建网站目录
sudo mkdir -p /var/www/example.com/public_html
sudo chown -R $USER:$USER /var/www/example.com
sudo chmod -R 755 /var/www
6.2 创建虚拟主机配置(Apache)
# /etc/apache2/sites-available/example.com.conf(Ubuntu)
# 或 /etc/httpd/conf.d/example.com.conf(CentOS)
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
<Directory /var/www/example.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
6.3 启用配置
# Ubuntu
sudo a2ensite example.com.conf
sudo a2enmod rewrite
sudo systemctl restart apache2
# CentOS
sudo systemctl restart httpd
6.4 配置域名解析
在域名服务商添加A记录:
– example.com → 服务器IP
– www.example.com → 服务器IP
七、安装SSL证书
7.1 安装Certbot
# Ubuntu
sudo apt install certbot python3-certbot-apache -y
# CentOS
sudo yum install certbot python3-certbot-apache -y
7.2 申请证书
sudo certbot --apache -d example.com -d www.example.com
# 选择选项:
# 1. 输入邮箱(用于证书到期提醒)
# 2. 同意服务条款
# 3. 选择是否重定向HTTP到HTTPS(推荐选择选项2:Redirect)
7.3 自动续期
# 测试自动续期
sudo certbot renew --dry-run
# Certbot会自动添加cron任务,无需手动配置
八、安全加固
8.1 防火墙配置
# Ubuntu(UFW)
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
# CentOS(firewalld)
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
8.2 禁用目录浏览
# 在Apache配置中添加
<Directory /var/www>
Options -Indexes
</Directory>
8.3 隐藏敏感信息
# 隐藏Apache版本信息
ServerTokens Prod
ServerSignature Off
# 隐藏PHP版本信息(php.ini)
expose_php = Off
九、性能测试
9.1 压力测试
# 安装ApacheBench
sudo apt install apache2-utils -y
# 测试(1000请求,并发10)
ab -n 1000 -c 10 http://example.com/
9.2 监控资源使用
# 实时监控
top
htop # 需安装
# 查看Apache连接数
netstat -an | grep :80 | wc -l
# 查看MySQL进程
mysqladmin -u root -p processlist
十、常见问题
Q1: Apache启动失败?
A: 检查端口是否被占用:
sudo netstat -tulpn | grep :80
sudo lsof -i :80
Q2: PHP页面显示源代码?
A: PHP模块未正确安装或Apache未加载PHP模块:
# Ubuntu
sudo apt install libapache2-mod-php8.2 -y
sudo a2enmod php8.2
sudo systemctl restart apache2
Q3: MySQL远程连接失败?
A: 检查MySQL配置:
# 编辑配置文件
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
# 注释掉 bind-address = 127.0.0.1
# 创建远程用户
CREATE USER 'remote'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'remote'@'%';
FLUSH PRIVILEGES;
Q4: 网站访问速度慢?
A: 启用缓存和压缩:
# 启用Apache压缩
sudo a2enmod deflate expires
sudo systemctl restart apache2
# 安装OPcache(PHP加速)
sudo apt install php8.2-opcache -y
十一、总结
在Linux上部署LAMP服务器的完整流程:
- 准备环境:更新系统、配置安全组
- 安装Apache:Web服务器基础
- 安装MySQL:数据库服务
- 安装PHP:动态脚本支持
- 配置优化:调整参数提升性能
- 虚拟主机:配置多网站
- SSL证书:启用HTTPS加密
- 安全加固:防火墙、权限控制
- 性能测试:压力测试和监控
LAMP架构成熟稳定,是部署动态网站的首选方案。
注:本文基于2026年主流Linux发行版编写,具体配置请以官方文档为准。