温馨提示×

centos lamp如何部署项目

小樊
37
2025-11-29 23:47:43
栏目: 智能运维

CentOS LAMP 项目部署实操指南

一 环境准备与组件安装

  • 更新系统并安装基础软件
    • 执行:sudo yum update -y
  • 安装并启动 Apache(httpd)
    • 执行: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
  • 安装 PHP 及常用扩展
    • 执行:sudo yum install php php-mysqlnd php-gd php-mbstring php-xml php-opcache -y
    • 说明:若使用 PHP-FPM 与 Apache 配合,额外执行:sudo yum install php-fpm -y && sudo systemctl enable --now php-fpm
  • 防火墙放行
    • 执行:sudo firewall-cmd --permanent --add-service=http && sudo firewall-cmd --permanent --add-service=https && sudo firewall-cmd --reload
  • 可选优化
    • PHP 时区:编辑 /etc/php.ini,设置 date.timezone = Asia/Shanghai
    • Apache 索引:编辑 /etc/httpd/conf/httpd.conf,在 DirectoryIndex 中加入 index.php
      以上步骤覆盖了在 CentOS 7 上搭建 LAMP 的核心环节,包含组件安装、启动、初始化与基础安全配置。

二 部署你的项目

  • 方式一 使用虚拟主机部署多个项目(推荐)
    • 新建配置:sudo vi /etc/httpd/conf.d/example.com.conf
    • 示例内容(按需修改域名与目录):
      <VirtualHost *:80>
          ServerAdmin webmaster@example.com
          DocumentRoot "/var/www/html/example.com"
          ServerName example.com
          ServerAlias www.example.com
          ErrorLog "/var/log/httpd/example.com-error_log"
          CustomLog "/var/log/httpd/example.com-access_log" common
      
          <Directory "/var/www/html/example.com">
              Options Indexes FollowSymLinks
              AllowOverride All
              Require all granted
          </Directory>
      </VirtualHost>
      
    • 创建目录并上传代码:sudo mkdir -p /var/www/html/example.com
    • 权限设置:sudo chown -R apache:apache /var/www/html/example.com && sudo chmod -R 755 /var/www/html/example.com
    • 重载 Apache:sudo systemctl reload httpd
  • 方式二 直接放入默认目录
    • 将项目文件放入 /var/www/html(或子目录),确保 index.php 或入口文件在目录中
  • 访问验证
    • 浏览器访问:http://服务器IP/http://域名/,确认首页或路由可正常访问
      以上流程涵盖虚拟主机配置、目录权限、重载生效与访问验证,适合单站与多站点的标准化部署。

三 数据库与项目配置

  • 创建数据库与用户(示例)
    • 登录数据库:mysql -u root -p
    • 执行 SQL(请替换强密码与库名/用户名):
      CREATE DATABASE myapp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
      CREATE USER 'myapp'@'localhost' IDENTIFIED BY 'StrongPass!23';
      GRANT ALL PRIVILEGES ON myapp.* TO 'myapp'@'localhost';
      FLUSH PRIVILEGES;
      
  • 导入项目数据
    • 方式 A:mysql -u myapp -p myapp < /path/to/schema.sql
    • 方式 B:在应用后台或安装向导中执行安装与导入
  • 配置应用连接
    • 修改项目配置文件(如 config.php.env),设置:
      • 数据库主机:localhost
      • 数据库名:myapp
      • 用户名/密码:myapp / StrongPass!23
  • 文件与目录权限
    • 上传目录(如 uploads/storage/)建议:chown -R apache:apache <目录> && chmod -R 755 <目录>
      以上步骤完成数据库创建、授权、导入与连接配置,是大多数 PHP 项目上线前的必要环节。

四 上线验证与常见问题

  • 环境自检
    • 创建测试页:echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
    • 访问:http://服务器IP/info.php,确认 PHP 版本扩展加载正常(完成后建议删除该文件)
  • 日志排查
    • Apache 错误日志:/var/log/httpd/error_log
    • PHP-FPM 日志:/var/log/php-fpm/www-error.log(若启用 FPM)
  • 常见故障速查
    • 403 Forbidden:检查 <Directory>Require all granted 与目录权限(apache:apache,755)
    • 500 错误:查看 Apache/PHP 错误日志,核对语法、扩展缺失、目录可写性
    • 数据库连接失败:核对 config 中的主机、库名、账号、密码与是否允许 localhost 访问
    • SELinux 拦截:临时排查可用 sudo setenforce 0,生产环境请改为正确的 SELinux 策略(如 httpd_sys_content_thttpd_sys_rw_content_t
      以上验证与排错方法可快速定位 LAMP 部署中的高频问题,确保上线稳定。

五 安全与优化建议

  • 启用 HTTPS
    • 安装 Certbot:sudo yum install certbot python2-certbot-apache -y
    • 申请并自动配置证书:sudo certbot --apache -d example.com -d www.example.com
  • PHP 安全与性能
    • 仅启用必要扩展,禁用调试/暴露信息组件
    • 开启 OPcache:在 php.ini 中设置 opcache.enable=1
    • 调整关键参数:memory_limitupload_max_filesizepost_max_sizemax_execution_time
  • Apache 与系统
    • 隐藏版本信息:在 httpd.conf 中设置 ServerTokens ProdServerSignature Off
    • 定期更新系统与软件包:sudo yum update -y
    • 备份策略:定期备份代码、数据库与配置文件,保留离线副本
      以上措施覆盖 HTTPS、PHP 运行安全、性能与系统加固,适合测试到生产环境的持续运维。

0