温馨提示×

CentOS LAMP如何部署Web应用

小樊
36
2025-11-22 02:16:24
栏目: 智能运维

CentOS LAMP 部署 Web 应用实操指南

一 环境准备与版本选择

  • CentOS 7/8 为例,组件建议:Apache 2.4MariaDB 10.11PHP 8.x(或系统可用的最新稳定版)。先更新系统并安装常用工具:sudo yum update -y && sudo yum install -y wget unzip。如使用云服务器,优先使用官方或镜像源,保证软件版本一致性与可维护性。生产环境不建议长期关闭 SELinuxfirewalld,应改为精细化策略放行端口与服务。

二 安装与启动 LAMP 基础组件

  • 安装 Apache
    • 命令:sudo yum install -y httpd
    • 启动与自启:sudo systemctl start httpd && sudo systemctl enable httpd
    • 放行端口(firewalld):sudo firewall-cmd --permanent --zone=public --add-service=http && sudo firewall-cmd --permanent --zone=public --add-service=https && sudo firewall-cmd --reload
  • 安装 MariaDB
    • 命令:sudo yum install -y mariadb-server
    • 启动与自启:sudo systemctl start mariadb && sudo systemctl enable mariadb
    • 安全初始化:sudo mysql_secure_installation(设置 root 密码、移除匿名用户、禁止 root 远程、删除 test 库等)
  • 安装 PHP
    • 命令:sudo yum install -y php php-mysqlnd php-gd php-curl php-zip php-mbstring php-opcache php-intl
    • 可选:如需更高版本 PHP,启用 Remi 仓库后安装对应版本(如 PHP 8.3
    • 验证:php -vphp -m 查看版本与模块
  • 目录与索引
    • 默认根目录:/var/www/html
    • /etc/httpd/conf/httpd.confDirectoryIndex 增加 index.php,便于直接访问 PHP 入口。

三 部署与配置 Web 应用

  • 通用发布步骤
    • 将应用包解压至站点目录(如 /var/www/html/myapp),设置属主属组:sudo chown -R apache:apache /var/www/html/myapp
    • 如应用使用 .htaccess,在对应 中设置 AllowOverride All
    • 配置虚拟主机(示例):在 /etc/httpd/conf.d/myapp.conf 添加
      <VirtualHost *:80>
          ServerName myapp.example.com
          DocumentRoot /var/www/html/myapp
          <Directory /var/www/html/myapp>
              Options FollowSymLinks
              AllowOverride All
              Require all granted
          </Directory>
          ErrorLog  /var/log/httpd/myapp_error.log
          CustomLog /var/log/httpd/myapp_access.log combined
      </VirtualHost>
      
    • 语法检查与生效:sudo httpd -t && sudo systemctl reload httpd
  • 数据库准备
    • 登录 MariaDB:mysql -u root -p
    • 创建库与用户(示例):
      CREATE DATABASE myapp DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
      CREATE USER 'myapp'@'localhost' IDENTIFIED BY 'StrongPass!';
      GRANT ALL PRIVILEGES ON myapp.* TO 'myapp'@'localhost';
      FLUSH PRIVILEGES;
      
    • 导入初始化 SQL:mysql -u myapp -p myapp < /var/www/html/myapp/sql/init.sql
  • 应用配置
    • 修改应用配置(如 config.php.env)中的数据库 DSN、账号与密码
    • 设置文件权限:目录 0755、文件 0644;上传目录禁止执行:chmod 0750 app/uploads && chown apache:apache app/uploads
  • 可选组件
    • phpMyAdminsudo yum install -y phpmyadmin,按需调整 /etc/httpd/conf.d/phpmyadmin.conf 的访问控制,仅在内网或受控网段开放。

四 验证与常见问题

  • 环境验证
    • PHP 解析:echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php,访问 http://服务器IP/info.php 应显示 PHP 信息页
    • 应用连通:访问应用首页与后台,确认数据库连接、读写权限、静态资源加载正常
  • 常见问题与处理
    • 403 Forbidden:检查 DocumentRoot 路径、 权限与 SELinux 布尔值(如 httpd_read_user_content
    • 500 错误:查看 /var/log/httpd/error_log 与 PHP 错误日志,常见为语法错误、权限不足、扩展缺失
    • 数据库连接失败:核对 my.cnf 绑定地址、应用配置的 localhost/127.0.0.1、用户授权主机与密码
    • 端口未放行:确认 firewalld 已放行 80/443,云服务器安全组策略同步放行
    • 性能优化:启用 OPcache(php.ini 中 opcache.enable=1)、调整 Apache MPM 与 MariaDB 缓冲池(如 innodb_buffer_pool_size)。

0