创建基于 IP 的虚拟主机用于一个项目的整体测试
2.
创建基于用户的虚拟主机用于用户测试自己的代码
开始
创建虚拟主机的目录结构
sudo /home/www
cd /home/www
sudo mkdir 192.168.0.251 192.168.0.252
cd 192.168.0.251
sudo mkdir cgi-bin htdocs logs db
cd ../192.168.0.252
sudo mkdir cgi-bin htdocs logs db
tree /home/www
/home/www
|-- 192.168.0.251
| |-- cgi-bin
| |-- db
| |-- htdocs
| `-- logs
`-- 192.168.0.252
|-- cgi-bin
|-- db
|-- htdocs
`-- logs
1.
要在 192.168.0.251 和 192.168.0.252 上 创建两个基于 IP 的虚拟主机,为了直观起见,在 /home/www 下分别创建了目录 192.168.0.251 和 192.168.0.252
2.
cgi-bin 子目录用于存放 CGI 脚本
3.
db 子目录用于存放 SQLite 数据库
4.
htdocs 子目录用于存放站点文档
5.
logs 子目录用于存放站点日志
创建虚拟主机的管理帐号并设置目录权限
sudo useradd -g www-data -d /home/www/192.168.0.251 wuser1
sudo useradd -g www-data -d /home/www/192.168.0.252 wuser2
sudo passwd wuser1
sudo passwd wuser2
sudo chown -R wuser1.www-data /home/www/192.168.0.251
sudo chown -R wuser2.www-data /home/www/192.168.0.252
1.
将 192.168.0.251 虚拟主机的管理者赋予 wuser1; 将 192.168.0.252 虚拟主机的管理者赋予 wuser2;允许他们使用 ssh 登录
2.
wuser1 和 wuser2 的主组均设置为 www-data,这样设置的方便之处在于:若站内有 Apache 进程可写的内容,只需添加 组可写 权限即可
配置虚拟网络接口和主机名解析
使用如下命令:
sudo vim /etc/network/interfaces
添加如下的配置
auto eth0:1
iface eth0:1 inet static
address 192.168.0.251
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
auto eth0:2
iface eth0:2 inet static
address 192.168.0.252
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
然后使用如下命令重新启动网络服务
sudo /etc/init.d/networking restart
然后在 /etc/hosts 文件中添加如下的行
192.168.0.251 web1.example.com web1
192.168.0.252 web2.example.com web2
配置 Apache
S1. 在 /etc/apache2/sites-available/ 目录下创建新的文件 192.168.0.251,添加如下的配置
/etc/apache2/sites-available/192.168.0.251
DocumentRoot "/home/www/192.168.0.251/htdocs/"
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
ScriptAlias /cgi-bin/ /home/www/192.168.0.251/cgi-bin/
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
ErrorLog /home/www/192.168.0.251/logs/error.log
CustomLog /home/www/192.168.0.251/access.log combined