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;
- 将站点代码中的数据库连接改为上述库名、用户与密码。