安装Apache/Nginx+PHP,配置虚拟主机脚本,设置独立域名、文档根目录及权限,启用mod_php模块,重启服务后通过
服务器搭建PHP虚拟主机基础准备
操作系统选择
操作系统类型 | 推荐版本 | 特点 |
---|---|---|
Linux | Ubuntu 20.04/CentOS 7+ | 开源免费,稳定性高,社区支持完善 |
Windows | Windows Server 2019+ | 图形化界面友好,适合习惯Windows的用户 |
硬件要求
组件 | 最低配置 | 推荐配置 |
---|---|---|
CPU | 双核1.5GHz+ | 四核3.0GHz+ |
内存 | 2GB | 8GB+ |
存储 | 20GB(含系统) | SSD 100GB+ |
网络 | 1个公网IP | 弹性带宽(≥5Mbps) |
必要软件清单
- Web服务器:Apache/Nginx/IIS
- PHP解释器:PHP 7.4/8.0+
- 数据库:MySQL/MariaDB
- FTP服务:vsftpd/ProFTPD
- 防火墙:UFW/iptables
LAMP/LEMP环境搭建(以Ubuntu为例)
更新系统与安装依赖
sudo apt update && sudo apt upgrade -y sudo apt install -y software-properties-common
安装Apache/Nginx
组件 | 安装命令 |
---|---|
Apache | sudo apt install apache2 -y |
Nginx | sudo apt install nginx -y |
安装PHP及扩展
# 添加Ondrej PHP仓库 sudo add-apt-repository ppa:ondrej/php sudo apt update # 安装PHP核心+常用扩展 sudo apt install php8.0-fpm php8.0-mysql php8.0-gd php8.0-xml php8.0-zip -y
配置Web服务器与PHP联动
Apache配置示例(修改/etc/apache2/mods-available/dir.conf
):
<IfModule mod_dir.c> DirectoryIndex index.php index.html </IfModule> <FilesMatch .php$> SetHandler "proxy:unix:/var/run/php/php8.0-fpm.sock|fcgi://localhost" </FilesMatch>
Nginx配置示例(修改/etc/nginx/sites-available/default
):
server { listen 80; server_name example.com; root /var/www/example; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.0-fpm.sock; } }
虚拟主机核心配置
创建网站目录结构
sudo mkdir -p /var/www/{domain1,domain2} sudo chown -R www-data:www-data /var/www/*
配置虚拟主机文件
Apache示例(/etc/apache2/sites-available/domain1.com.conf
):
<VirtualHost *:80> ServerAdmin admin@domain1.com ServerName domain1.com DocumentRoot /var/www/domain1 ErrorLog ${APACHE_LOG_DIR}/domain1_error.log CustomLog ${APACHE_LOG_DIR}/domain1_access.log combined </VirtualHost>
Nginx示例(/etc/nginx/sites-available/domain2.com
):
server { listen 80; server_name domain2.com www.domain2.com; root /var/www/domain2; access_log /var/log/nginx/domain2_access.log; error_log /var/log/nginx/domain2_error.log; }
配置PHP-FPM进程管理
编辑/etc/php/8.0/fpm/pool.d/www.conf
:
[www] user = www-data group = www-data listen = /var/run/php/php8.0-fpm.sock pm = dynamic pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 2 pm.max_spare_servers = 10
数据库与FTP服务配置
安装MariaDB
sudo apt install mariadb-server -y sudo mysql_secure_installation # 设置root密码并移除测试库
创建数据库用户
CREATE DATABASE domain1_db; GRANT ALL PRIVILEGES ON domain1_db.* TO 'domain1_user'@'localhost' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
配置FTP服务(vsftpd示例)
sudo apt install vsftpd -y
编辑/etc/vsftpd.conf
:
anonymous_enable=NO local_enable=YES write_enable=YES chroot_local_user=YES
创建FTP用户:
sudo adduser ftpuser --home /var/www/domain1 --shell /bin/false sudo chmod 755 /var/www/domain1
安全加固与优化
强制HTTPS配置(以Nginx为例)
安装Certbot:
sudo apt install certbot python3-certbot-nginx -y
获取证书:
sudo certbot --nginx -d domain1.com -d www.domain1.com
配置防火墙规则
sudo ufw allow 'Nginx Full' # 或 'Apache Full' sudo ufw allow 21 # FTP端口 sudo ufw enable
PHP安全设置(/etc/php/8.0/fpm/php.ini
)
display_errors = Off log_errors = /var/log/php_errors.log upload_max_filesize = 50M post_max_size = 50M
多站点管理方案对比
特性 | 单配置文件模式 | 多站点独立目录 | Docker容器方案 |
---|---|---|---|
部署难度 | 低 | 中 | 高 |
资源隔离性 | 差 | 较好 | 优秀 |
扩展性 | 一般 | 良好 | 极佳 |
维护成本 | 低 | 中 | 高 |
适用场景 | 个人测试环境 | 小型生产环境 | 企业级复杂环境 |
常见问题解决方案
问题1:浏览器出现”500 Internal Server Error”
排查步骤:
- 检查Web服务器错误日志(
/var/log/apache2/error.log
或/var/log/nginx/error.log
) - 确认PHP-FPM服务状态:
systemctl status php8.0-fpm
- 验证
php.ini
配置语法:php -l /etc/php/8.0/fpm/php.ini
- 检查文件权限:确保Web目录归
www-data
用户组所有 - 测试PHP脚本:在网站根目录创建
info.php
为<?php phpinfo(); ?>
,访问测试是否正常显示信息页
问题2:无法连接FTP上传文件
解决方案:
- 检查FTP服务状态:
systemctl status vsftpd
- 确认21端口是否被防火墙拦截:
sudo ufw status
- 验证用户权限:确保FTP用户具有对应目录的写入权限
- 检查SELinux状态(CentOS系统):
getenforce
,如需关闭执行setenforce 0
(临时)或修改配置文件永久关闭 - 测试本地FTP客户端连接:使用FileZilla等工具尝试连接,注意主动/被动模式切换
小编有话说
在实际搭建过程中,建议优先采用Docker容器化方案,通过docker-compose
可以快速构建标准化的LNMP环境,对于生产环境,务必配置Fail2Ban防御暴力破解,并通过opcache
加速PHP性能,记住定期备份网站数据和数据库,建议使用rsync
+crontab
实现自动化备份,若需管理多个站点,可以考虑安装宝塔面板或AMH等国产可视化管理工具,能显著降低运维
到此,以上就是小编对于“服务器搭建php虚拟主机”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复