温馨提示×

centos lamp虚拟主机搭建教程

小樊
43
2025-12-11 18:58:38
栏目: 云计算

CentOS LAMP 虚拟主机搭建教程

一 环境准备与安装

  • 更新系统并安装组件(以 CentOS 7/8 为例,使用 yum/dnf):
    • 安装 Apache、MariaDB、PHP 及常用模块:
      • sudo yum update -y
      • sudo yum install -y httpd mariadb-server php php-mysqlnd php-gd php-mbstring php-xml
    • 启动并设为开机自启:
      • sudo systemctl start httpd mariadb
      • sudo systemctl enable httpd mariadb
    • 运行数据库安全初始化:
      • sudo mysql_secure_installation
  • 防火墙放行 HTTP/HTTPS:
    • sudo firewall-cmd --permanent --add-service=http
    • sudo firewall-cmd --permanent --add-service=https
    • sudo firewall-cmd --reload
  • 说明:若使用 CentOS Stream 8/9 或需要新版 PHP,可启用 EPEL/Remi 仓库后再安装对应版本。

二 创建虚拟主机

  • 创建站点目录与权限:
    • sudo mkdir -p /var/www/example.com/public_html
    • sudo chown -R apache:apache /var/www/example.com
    • sudo chmod -R 755 /var/www/example.com
  • 新建虚拟主机配置文件:
    • sudo vim /etc/httpd/conf.d/example.com.conf
  • 写入配置(按需替换域名与路径):
    • <VirtualHost *:80>
      • ServerName www.example.com
      • ServerAlias example.com
      • DocumentRoot /var/www/example.com/public_html
      • ErrorLog /var/log/httpd/example.com-error.log
      • CustomLog /var/log/httpd/example.com-access.log combined
      • <Directory “/var/www/example.com/public_html”>
        • Options Indexes FollowSymLinks
        • AllowOverride All
        • Require all granted
  • 使配置生效:
    • sudo systemctl restart httpd
  • 多站点可新增多个 .conf 文件,分别指向不同 DocumentRoot。

三 域名解析与本地测试

  • 域名解析:在域名注册商控制台将 A 记录 指向服务器 公网 IP;如需 www 子域,同时添加 www 的 A 记录。
  • 本机测试(无公网域名时):
    • 在客户端或服务器测试文件中写入 hosts(示例):
      • 服务器本机:echo “127.0.0.1 www.example.test example.test” | sudo tee -a /etc/hosts
      • 浏览器访问:http://www.example.test 或 http://example.test
  • 访问验证:
    • 若出现站点目录文件或默认页,说明虚拟主机生效;后续可放置项目代码进行上线。

四 常见问题与排障

  • 端口与连通性:
    • 检查 Apache 是否监听 80:ss -tlnp | grep :80
    • 云服务器需确保安全组/防火墙放行 80/443;本机测试可用 curl -I http://localhost
  • SELinux:
    • 查看状态:getenforce(返回 Enforcing/Permissive/Disabled)
    • 排障时可临时:sudo setenforce 0(不推荐长期关闭)
    • 常见修复:sudo setsebool -P httpd_can_network_connect_db 1(如应用需连接数据库)
  • 权限与目录:
    • 确保目录属主为 apache:apache,权限 755;必要时检查父目录权限链
  • 日志定位:
    • Apache 错误日志:/var/log/httpd/error_log
    • 站点错误日志:/var/log/httpd/example.com-error.log(按实际配置)

五 可选 HTTPS 与数据库示例

  • 一键申请并配置 Let’s Encrypt 证书(Apache 插件):
    • sudo yum install -y certbot python2-certbot-apache
    • sudo certbot --apache -d www.example.com -d example.com
    • 按提示选择是否重定向 HTTP→HTTPS,证书将自动续期(certbot.timer)
  • 数据库示例(创建站点专用库与用户):
    • 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;
    • EXIT;
  • 将站点代码中的数据库连接改为上述库名、用户与密码。

0