上一篇
怎么用服务器做虚拟主机
- 虚拟主机
- 2025-08-05
- 4
服务器分区、安装Web服务软件,设置独立域名与资源隔离
前期准备
硬件资源评估
考量因素 | 具体要求 |
---|---|
CPU性能 | 根据预估并发访问量选择多核处理器(建议至少双核以上) |
内存容量 | 每个虚拟主机分配独立内存空间,总和不超过物理内存的70%(留出系统缓存余量) |
存储类型与容量 | 优先选用SSD硬盘,按站点需求划分分区(系统盘+数据盘分离部署) |
网络带宽 | 确保上行链路稳定,百兆及以上端口支持突发流量 |
操作系统安装
推荐使用Linux发行版(如CentOS/Ubuntu Server版):
- 通过ISO镜像进行最小化安装
- 关闭图形界面以节省资源
- 配置SSH远程管理功能并设置防火墙规则
核心配置步骤
Web服务器搭建(以Apache为例)
# Ubuntu系统安装命令 sudo apt update && sudo apt install apache2 -y # CentOS系统安装命令 sudo yum install httpd -y
编辑主配置文件/etc/apache2/apache2.conf
或/etc/httpd/conf/httpd.conf
:
<VirtualHost :80> ServerAdmin admin@example.com DocumentRoot "/var/www/html/site1" ServerName site1.yourdomain.com ErrorLog ${APACHE_LOG_DIR}/site1_error.log CustomLog ${APACHE_LOG_DIR}/site1_access.log combined </VirtualHost>
创建对应目录并赋予权限:
mkdir -p /var/www/html/site1 chown -R www-data:www-data /var/www/html/site1 chmod -R 755 /var/www/html/site1
域名解析设置
记录类型 | 主机头 | IP地址 | TTL值建议 |
---|---|---|---|
A记录 | 服务器公网IP | 3600秒 | |
CNAME | www | 3600秒 | |
A记录 | blog.yourdomain | 同上 | 3600秒 |
修改/etc/hosts
文件添加本地测试条目:
168.1.100 site1.yourdomain.com blog.yourdomain.com
多站点隔离方案
采用基于名称的虚拟主机技术:
# 第二个站点配置示例 <VirtualHost :80> ServerAdmin webmaster@secondsite.com DocumentRoot "/data/vhosts/secondsite" ServerAlias secondsite.com www.secondsite.com DirectoryIndex index.html index.php <Directory "/data/vhosts/secondsite"> AllowOverride All Require all granted </Directory> </VirtualHost>
确保各站点根目录互不重叠且权限独立。
安全加固措施
SSL证书部署
使用Let’s Encrypt免费证书:
sudo apt install certbot python3-certbot-apache -y sudo certbot --apache -d site1.yourdomain.com,www.site1.yourdomain.com
自动续签任务添加到cron计划:
0 0 1 root /usr/bin/certbot renew --quiet --post-hook "systemctl restart apache2" >> /var/log/lego_renewal.log 2>&1
访问控制策略
配置.htaccess
实现细粒度管控:
# 禁止目录遍历 Options -Indexes # 限制上传文件类型 <FilesMatch ".(php|pl|cgi)$"> Order allow,deny Deny from all </FilesMatch> # IP白名单机制 Order Deny,Allow Allow from 192.168.1.0/24
性能优化技巧
优化维度 | 实施方法 |
---|---|
缓存加速 | 启用mod_cache模块,设置Expires头部减少回源请求 |
GZIP压缩 | 修改mods-enabled/deflate.load 加载压缩过滤器 |
连接复用 | 调整KeepAliveTimeout 参数至5秒平衡延迟与吞吐量 |
日志切割 | 配置rotatelogs 工具按日期分割访问日志 |
监控维护体系
状态监测工具集成
安装Netdata进行实时可视化监控:
bash <(curl -Ss https://my-netdata.io/kickstart.sh) --dont-wait --disable-cloud
关键指标包括:CPU使用率、内存占用、网络吞吐、磁盘I/O等。
备份恢复方案
制定每日增量备份策略:
rsync -avz --delete /var/www/html/ /backup/$(date +%Y%m%d)/ --exclude='.log' find /backup/ -type d -mtime +7d -exec rm -rf {} ; # 清理7天前旧备份
测试恢复流程验证完整性。
相关问题与解答
Q1:如何判断当前服务器还能承载多少个虚拟主机?
A:可通过压力测试工具(如ab/wrk)模拟多并发请求,监控资源利用率变化,当任意一项指标超过阈值(CPU>80%、MEM>90%、SWAP使用率骤增)时即达到瓶颈,建议单个物理机承载不超过20个中小型站点。
Q2:不同虚拟主机之间的进程会相互影响吗?
A:默认情况下Apache的MPM模式采用预派生子进程处理请求,若未做资源限制可能导致跨站干扰,可通过<IfModule mpm_prefork.c>
配置段设置StartServers
和MinSpareServers
参数隔离进程池,或改用事件驱动型工作模式(event MPM)动态调配线程