学生机通常指云服务商(如阿里云、腾讯云、华为云等)面向学生提供的低价云服务器实例,其本质是一台轻量级虚拟专用服务器(VPS)。在单台学生机上拆分出多个虚拟主机,实质是借助Web服务器软件(如Apache或Nginx)的虚拟主机(Virtual Host)功能,实现一台服务器同时托管多个独立网站或应用。

拆分虚拟主机前需确保学生机已安装Web服务器软件、PHP(如需动态网站)、数据库(如MySQL/MariaDB)以及DNS配置能力。以下以Ubuntu 22.04 LTS操作系统下使用Nginx为例,详细阐述拆分步骤。
第一步:环境准备。先执行系统更新并安装Nginx:sudo apt update && sudo apt upgrade -y && sudo apt install nginx -y。完成安装后启动Nginx并设置为开机自启:sudo systemctl start nginx && sudo systemctl enable nginx。
第二步:域名与DNS。为每个虚拟主机准备独立域名(如example1.com、example2.com),并在DNS管理面板中将各自域名解析至学生机的公网IP地址。若无域名也可使用IP+端口方式临时测试,但生产环境建议使用域名。
第三步:创建网站目录与权限。按规范在/var/www/下为每个站点创建独立目录,例如:sudo mkdir -p /var/www/example1.com/html && sudo mkdir -p /var/www/example2.com/html。设置目录所有者:sudo chown -R $USER:$USER /var/www/example1.com/html,并赋予适当权限(通常为755)。将各站点首页文件(如index.html或index.php)放入对应目录。
第四步:配置Nginx虚拟主机。在/etc/nginx/sites-available/目录下创建每个站点的配置文件。例如创建example1.com配置文件:sudo nano /etc/nginx/sites-available/example1.com,内容如下:
server {
listen 80;
server_name example1.com www.example1.com;
root /var/www/example1.com/html;
index index.html index.php;
location / {
try_files $uri $uri/ =404;
}
# 若需支持PHP,去掉注释并安装php-fpm
# location ~ \.php$ {
# include snippets/fastcgi-php.conf;
# fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
# }
}
同理创建example2.com的配置文件。完成后建立符号链接启用站点:sudo ln -s /etc/nginx/sites-available/example1.com /etc/nginx/sites-enabled/。测试配置文件语法:sudo nginx -t,若无误则重载Nginx:sudo systemctl reload nginx。
第五步:添加PHP与数据库支持(如需动态网站)。安装PHP-FPM及MySQL:sudo apt install php-fpm php-mysql mysql-server -y。修改Nginx配置文件中对应location块以传递PHP请求;创建MySQL数据库和用户时,为每个站点创建隔离的数据库,避免数据混淆。例如:CREATE DATABASE example1_db; CREATE USER 'user1'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON example1_db.* TO 'user1'@'localhost'; FLUSH PRIVILEGES;。
第六步:资源隔离与安全加固。学生机配置有限(通常1核2GB或2核4GB),建议在Nginx主配置文件nginx.conf中调整worker_processes为auto,worker_connections根据内存适度减小(如1024)。通过设置每个站点的root目录独立实现文件层级隔离;通过open_basedir(PHP)限制站点访问范围。同时启用防火墙(如ufw)仅开放80/443端口,并考虑为每个站点配置SSL证书(使用Certbot工具)以启用HTTPS。
第七步:监控与日志管理。Nginx默认将各站点访问日志写入/var/log/nginx/access.log,可在虚拟主机配置中使用access_log指令为每个站点指定独立日志文件,便于排查问题。例如:access_log /var/log/nginx/example1.com.access.log;。关注PHP错误日志及系统资源(使用htop、netstat等),防止单个站点滥用资源影响其他站点。
综上,通过Nginx的server块(或Apache的VirtualHost)即可在学生机上拆分出多个虚拟主机。此方法适用于轻量级网站、个人项目或学习环境。若需严格资源隔离(如CPU、内存),可进一步采用Docker容器或LXC容器,但学生机配置有限时建议优先使用虚拟主机方案。

查看详情

查看详情