centos lamp如何部署动态网站
导读:在 CentOS 上部署 LAMP 动态网站的实操指南 一 环境准备与版本选择 操作系统建议:CentOS 7/8(本文以 CentOS 7.6 为例,亦适用于 CentOS 8)。 组件组合: Web 服务器:Apache httpd...
在 CentOS 上部署 LAMP 动态网站的实操指南
一 环境准备与版本选择
- 操作系统建议:CentOS 7/8(本文以 CentOS 7.6 为例,亦适用于 CentOS 8)。
- 组件组合:
- Web 服务器:Apache httpd 2.4。
- 数据库:MariaDB 10.11(或 MySQL 8.4)。
- 语言与驱动:PHP 8.3/8.4,建议启用 php-fpm 与 php-mysqlnd 驱动。
- 资源与安全:
- 建议实例内存≥ 4 GiB(便于 PHP/数据库运行)。
- 云上需放行安全组/防火墙的 TCP 22/80/443/3306 端口;本地测试可临时关闭防火墙或放行 http/https。
二 安装与启动 LAMP 基础组件
- 安装 Apache
- 命令:
sudo yum install -y httpd & & sudo systemctl start httpd & & sudo systemctl enable httpd - 验证:浏览器访问 http://服务器IP 出现 Apache 欢迎页。
- 命令:
- 安装 MariaDB(或 MySQL)
- MariaDB(CentOS 7 常用):
sudo yum install -y mariadb-server mariadb & & sudo systemctl start mariadb & & sudo systemctl enable mariadb - 安全初始化:
sudo mysql_secure_installation(设置 root 密码、移除匿名用户、禁止远程 root 登录、删除测试库等)。 - 如需 MySQL 8.4(CentOS 8 示例):添加官方源后
sudo dnf install -y mysql-server并启动;首次登录按日志提示设置强密码。
- MariaDB(CentOS 7 常用):
- 安装 PHP 与 PHP-FPM
- Remi 源方式(推荐,便于选择版本):
- CentOS 8:
sudo rpm -Uvh https://mirrors.cloud.aliyuncs.com/remi/enterprise/remi-release-8.rpm --nodeps - 启用 PHP 模块:
sudo dnf module enable -y php:remi-8.4 - 安装组件:
sudo dnf install -y php php-fpm php-mysqlnd
- CentOS 8:
- 启动服务:
sudo systemctl start php-fpm & & sudo systemctl enable php-fpm
- Remi 源方式(推荐,便于选择版本):
- 说明
- PHP 连接 MySQL 建议使用 mysqlnd 驱动;如应用需图片处理等,按需补充 php-gd 等扩展。
三 配置 Apache 与 PHP-FPM 协同
- 确认 PHP-FPM 监听地址:
sudo grep 'listen =' /etc/php-fpm.d/www.conf- 常见为 127.0.0.1:9000 或 /run/php-fpm/www.sock。
- 配置 Apache 处理 PHP(推荐 Proxy 到 PHP-FPM)
- 新建配置:
sudo tee /etc/httpd/conf.d/php-fpm.conf < < -'EOF'< FilesMatch \.php$> SetHandler "proxy:unix:/run/php-fpm/www.sock; " < /FilesMatch> EOF` - 如监听为 9000 端口,将代理目标改为:
proxy:fcgi://127.0.0.1:9000
- 新建配置:
- 调整目录索引并重启
- 在
/etc/httpd/conf/httpd.conf的DirectoryIndex后追加 index.php。 - 检查语法并重启:
sudo httpd -t & & sudo systemctl restart httpd
- 在
- 说明
- 使用 PHP-FPM 可获得更好的进程管理与性能隔离;确保 Apache 与 PHP-FPM 使用一致的 Socket/端口。
四 部署与验证动态网站
- 放置代码
- 示例目录:/var/www/html/(或自定义目录,需在虚拟主机中指定)。
- 示例应用:解压 Discuz! 等 PHP 程序到站点目录,并设置目录属主为 apache:apache 以便写入缓存/上传。
- 创建数据库与用户(示例)
- 登录数据库:
mysql -u root -p - 执行 SQL:
CREATE DATABASE myapp DEFAULT CHARACTER SET utf8mb4; CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'StrongPass!23'; GRANT ALL PRIVILEGES ON myapp.* TO 'appuser'@'localhost'; FLUSH PRIVILEGES;
- 登录数据库:
- 配置虚拟主机(可选,基于域名)
- 新建:
sudo vim /etc/httpd/conf.d/myapp.conf< VirtualHost *:80> ServerName www.myapp.test DocumentRoot /var/www/myapp/public < Directory /var/www/myapp/public> AllowOverride All Require all granted < /Directory> ErrorLog ${ APACHE_LOG_DIR} /myapp_error.log CustomLog ${ APACHE_LOG_DIR} /myapp_access.log combined < /VirtualHost> - 检查并重启:
sudo httpd -t & & sudo systemctl restart httpd
- 新建:
- 访问与初始化
- 本地 hosts 解析或 DNS 指向服务器后,访问 http://www.myapp.test/install 完成安装向导。
- 简单连通性测试(/var/www/html/test.php):
< ?php $conn = new mysqli('localhost', 'appuser', 'StrongPass!23'); if ($conn-> connect_error) die("fail: " . $conn-> connect_error); echo "success\n"; - 浏览器访问 http://服务器IP/test.php 应返回 success。
五 安全与运维要点
- 加固数据库
- 仅监听 127.0.0.1,禁止远程 root 登录;为应用创建最小权限专用账户;定期备份。
- 启用 HTTPS
- 使用 Let’s Encrypt/certbot 为域名签发免费证书,配置 HTTP→HTTPS 跳转 与 HSTS。
- 防火墙与云安全组
- 仅放行必要端口:22/80/443/3306;数据库端口(3306)建议仅内网访问。
- 日志与监控
- 关注 /var/log/httpd/error_log、access_log 与 /var/log/php-fpm/;设置 logrotate 与告警。
- 备份与回滚
- 定期备份网站目录与数据库(如 mysqldump),保留多份并按日期命名,便于快速回滚。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos lamp如何部署动态网站
本文地址: https://pptw.com/jishu/756618.html
