在 CentOS 上部署 LAMP 站点的标准流程
一 环境准备与组件安装
- 更新系统并安装组件(以 CentOS 7/8 为例,使用 yum/dnf):
- 更新与基础组件
- 安装 Apache HTTP Server
- sudo yum install httpd -y
- sudo systemctl start httpd && sudo systemctl enable httpd
- 安装 MariaDB(或 MySQL)
- sudo yum install mariadb-server mariadb -y
- sudo systemctl start mariadb && sudo systemctl enable mariadb
- 运行安全初始化:sudo mysql_secure_installation(设置 root 密码、移除匿名用户等)
- 安装 PHP(按需选择模块)
- 基础:sudo yum install php php-mysql php-gd php-mbstring php-xml -y
- 如需 PHP-FPM(推荐用于并发与性能):sudo yum install php-fpm -y
- 防火墙放行 HTTP/HTTPS
- sudo firewall-cmd --permanent --add-service=http
- sudo firewall-cmd --permanent --add-service=https
- sudo firewall-cmd --reload
- 验证安装
- 访问服务器 IP 应看到 Apache 欢迎页
- 查看版本:httpd -v;检查服务:systemctl status httpd mariadb
二 部署网站代码与目录权限
- 选择站点目录(示例使用 /var/www/example.com/public_html)
- 创建目录与日志目录
- sudo mkdir -p /var/www/example.com/{public_html,logs}
- 上传站点文件(如使用 scp/rsync/FTP)
- 示例:rsync -av ./src/ user@server:/var/www/example.com/public_html/
- 设置所有权与权限(Apache 运行用户通常为 apache)
- sudo chown -R apache:apache /var/www/example.com
- sudo find /var/www/example.com -type d -exec chmod 755 {} ;
- sudo find /var/www/example.com -type f -exec chmod 644 {} ;
- 创建测试页(确认 Web 与 PHP 正常)
- echo “” | sudo tee /var/www/example.com/public_html/info.php
- 浏览器访问:http://服务器IP/info.php(确认后建议删除该文件)
三 配置 Apache 虚拟主机与 PHP 处理模式
- 方式一 模块模式(mod_php,简单)
- 确认模块加载(通常已内置):cat /etc/httpd/conf.modules.d/php.conf
- 在 /etc/httpd/conf.d/example.com.conf 创建虚拟主机:
- <VirtualHost *:80>
- ServerName example.com
- DocumentRoot /var/www/example.com/public_html
- <Directory /var/www/example.com/public_html>
- Options Indexes FollowSymLinks
- AllowOverride All
- Require all granted
-
- ErrorLog /var/www/example.com/logs/error.log
- CustomLog /var/www/example.com/logs/access.log combined
-
- 检查语法并生效
- sudo httpd -t && sudo systemctl reload httpd
- 方式二 PHP-FPM(推荐,性能更好)
- 启用并启动 PHP-FPM
- sudo systemctl enable --now php-fpm
- 在虚拟主机中使用 FilesMatch + proxy_fcgi 处理 PHP
- 在 内加入:
- <FilesMatch .php$>
- SetHandler “proxy:fcgi://127.0.0.1:9000”
-
- 重载服务
- sudo httpd -t && sudo systemctl reload httpd
- 访问测试
- 浏览器访问:http://example.com(域名需已解析到服务器 IP)
四 数据库与站点初始化
- 登录数据库并创建库与用户(示例)
- mysql -u root -p
- CREATE DATABASE example_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- CREATE USER ‘example_user’@‘localhost’ IDENTIFIED BY ‘StrongPass!’;
- GRANT ALL PRIVILEGES ON example_db.* TO ‘example_user’@‘localhost’;
- FLUSH PRIVILEGES;
- 应用配置
- 将站点配置文件中的数据库 DB_NAME/DB_USER/DB_PASSWORD 指向上述库与用户
- 如应用需要,导入初始数据(如 .sql 备份)
- 安全建议
- 生产环境避免使用 root 远程连接数据库
- 限制数据库用户来源 IP,使用强密码与最小权限原则
五 常见问题与优化
- SELinux 与权限
- 如启用 SELinux,需确保目录上下文正确:
- sudo semanage fcontext -a -t httpd_sys_content_t “/var/www/example.com(/.*)?”
- sudo restorecon -R /var/www/example.com
- 或临时调试:sudo setenforce 0(不建议长期关闭)
- 日志与排错
- 实时查看错误日志:tail -f /var/log/httpd/error_log
- 语法检查:sudo httpd -t
- 性能与安全优化
- Apache:调整 MaxKeepAliveRequests/KeepAliveTimeout
- MariaDB:根据内存调优 innodb_buffer_pool_size
- PHP:启用 OPcache,仅保留必要扩展
- HTTPS 与证书
- 使用 Let’s Encrypt/Certbot 一键启用 HTTPS
- sudo yum install certbot python2-certbot-apache -y
- sudo certbot --apache -d example.com -d www.example.com
- 维护与升级
- 定期执行:sudo yum update -y
- 备份策略:定期备份代码、数据库与配置文件