温馨提示×

CentOS LAMP如何管理虚拟主机

小樊
45
2025-12-09 19:19:35
栏目: 云计算

CentOS LAMP 虚拟主机管理指南

一 环境准备与基础服务

  • 更新系统并安装组件(以 CentOS 7/8yum/dnf 为例):
    • 安装:sudo yum install -y httpd mariadb-server php php-mysqlnd
    • 启动与开机自启:
      • sudo systemctl start httpd && sudo systemctl enable httpd
      • sudo systemctl start mariadb && sudo systemctl enable mariadb
    • 数据库安全初始化:sudo mysql_secure_installation
  • 防火墙放行(推荐不关闭防火墙):
    • sudo firewall-cmd --permanent --zone=public --add-service=http
    • sudo firewall-cmd --permanent --zone=public --add-service=https
    • sudo firewall-cmd --reload
  • SELinux 处于 enforcing 时,后续目录与端口访问需按 SELinux 策略放行(见第四部分)。

二 创建与启用虚拟主机

  • 规划目录(示例以域名 example.com 为例):
    • 创建目录:sudo mkdir -p /var/www/example.com/public_html
    • 简单首页:echo “Hello example.com” | sudo tee /var/www/example.com/public_html/index.html
    • 权限设置:sudo chown -R apache:apache /var/www/example.com && sudo chmod -R 755 /var/www/example.com
  • 新建虚拟主机配置(文件命名建议与域名一致,放在 /etc/httpd/conf.d/):
    • 新建:sudo vi /etc/httpd/conf.d/example.com.conf
    • 示例配置(HTTP,端口 80):
      <VirtualHost *:80>
          ServerName www.example.com
          ServerAlias example.com
          DocumentRoot /var/www/example.com/public_html
      
          <Directory "/var/www/example.com/public_html">
              Options FollowSymLinks
              AllowOverride All
              Require all granted
          </Directory>
      
          ErrorLog  ${APACHE_LOG_DIR}/example.com-error.log
          CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
      </VirtualHost>
      
  • 使配置生效:
    • 语法检查:sudo httpd -t
    • 重载或重启:sudo systemctl reload httpd(或 restart
  • 说明:
    • /etc/httpd/conf.d/*.conf 会被主配置自动包含,无需额外“启用”步骤;不建议创建 /etc/httpd/sites-enabled 的符号链接(那是 Debian/Ubuntu 的习惯)。

三 常用管理操作

  • 新增站点:按“二”的步骤为新域名重复创建目录与 .conf 文件,执行 httpd -t && systemctl reload httpd
  • 临时停用站点:在对应 块内添加 ServerName example.comDocumentRoot 同级行的 # 注释,或改为监听不同端口后不对外发布;保存后 reload
  • 彻底删除站点:删除 /etc/httpd/conf.d/example.com.conf,必要时删除网站目录,执行 reload
  • 修改站点根目录或别名:更新 DocumentRoot/ServerAlias,确保目录存在且权限为 apache:apache 755,再 reload
  • 日志查看与排错:
    • 访问日志:/var/log/httpd/example.com-access.log
    • 错误日志:/var/log/httpd/example.com-error.log
    • 语法与服务状态:httpd -tsystemctl status httpd
  • 本地测试(无公网域名时):在客户端或服务器本机编辑 /etc/hosts
    • 添加:服务器IP www.example.com example.com
    • 浏览器访问:http://www.example.com

四 安全与进阶配置

  • 启用 HTTPS(推荐 Let’s Encrypt,使用 certbot):
    • 安装 certbot 插件(按系统启用 EPEL 后):sudo yum install -y certbot python3-certbot-apache
    • 获取并自动配置证书:sudo certbot --apache -d example.com -d www.example.com
    • 自动续期测试:sudo certbot renew --dry-run
  • 目录与文件权限要点:
    • 网站目录属主:apache:apache;权限 755;上传目录可 775 并限制脚本执行。
    • 若使用非默认目录(如 /web、家目录等),需为 httpd 授予访问权限(SELinux 布尔或上下文,见下条)。
  • SELinux 常见处理(保持 enforcing 的前提下):
    • 允许 Apache 访问自定义目录(示例):sudo setsebool -P httpd_read_user_content 1
    • 若需连接数据库:sudo setsebool -P httpd_can_network_connect_db 1
    • 查看与恢复默认布尔:getsebool httpd_read_user_contentrestorecon -R /var/www
  • PHP 与性能:
    • 常用模块:php php-mysqlnd php-gd php-fpm(按应用需求增减)
    • 重载服务:sudo systemctl reload httpd(或 php-fpm)。

0