Ubuntu Apach 虚拟主机
albume
|
1#
albume 发表于 2007-09-30 00:54
Ubuntu Apach 虚拟主机
目标
1. 创建基于 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 <VirtualHost 192.168.0.251:80> DocumentRoot "/home/www/192.168.0.251/htdocs/" <Directory /home/www/192.168.0.251/htdocs/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /home/www/192.168.0.251/cgi-bin/ <Directory "/home/www/192.168.0.251/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /home/www/192.168.0.251/logs/error.log CustomLog /home/www/192.168.0.251/access.log combined </VirtualHost> S2. 在 /etc/apache2/sites-available/ 目录下创建新的文件 192.168.0.252,添加如下的配置 /etc/apache2/sites-available/192.168.0.252 <VirtualHost 192.168.0.252:80> DocumentRoot "/home/www/192.168.0.252/htdocs/" <Directory /home/www/192.168.0.252/htdocs/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /home/www/192.168.0.252/cgi-bin/ <Directory "/home/www/192.168.0.252/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /home/www/192.168.0.252/logs/error.log CustomLog /home/www/192.168.0.252/access.log combined </VirtualHost> S3. 重新启动 Apache sudo a2enmod rewrite sudo a2enmod php5 sudo a2enmod perl sudo a2enmod mod_python sudo a2ensite 192.168.0.251 sudo a2ensite 192.168.0.252 sudo /etc/init.d/apache2 restart 配置站点内容的上传 FTP 服务器 S1: 使用如下命令安装 proftpd sudo apt-get install proftpd proftpd-doc S2. 使用默认配置即可实现本地用户的上传和下载 Samba 服务器 S1. 使用如下命令 sudo vi /etc/samba/smb.conf 添加如下的配置行: /etc/samba/smb.conf [homes] comment = Home Directories browseable = no writable = yes create mask = 0644 directory mask = 0755 S2. 配置 Samba 用户 通过如下命令添加 Samba 用户 sudo smbpasswd -a wuser1 sudo smbpasswd -a wuser2 S3. 启动 Samba 服务器 sudo /etc/init.d/samba restart 创建基于用户的虚拟主机 * 可能开发者在 Windows 客户机没有创建开发环境 * 为了使每个开发者可以测试自己的代码,可以创建基于用户的虚拟主机 创建用户帐号 sudo useradd -g www-data -m user1 sudo useradd -g www-data -m user2 sudo passwd user1 sudo passwd user2 1. 用户需要在宿主目录下创建 public_html 子目录,将 Web 文档放入其中,可以通过 URL http://IPorHostname/~username 访问自己的站点 2. 若进行 CGI 开发,还需要在宿主目录下创建 cgi-bin 子目录 配置 Apache 使用如下命令启用 userdir 模块即可 sudo a2enmod userdir 若进行 CGI 开发,需要修改 /etc/apache2/mods-available/userdir.conf <IfModule mod_userdir.c> UserDir public_html UserDir disabled root <Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec </Directory> ScriptAliasMatch ~([a-z]+)/cgi-bin/(.*) /home/$1/cgi-bin/$2 # 添加此行,意思是匹配~user_name/cgi-bin/cgi_name自动映射到/home/user_name/cgi-bin/cgi-name脚本 </IfModule> 关于默认的虚拟主机 Ubuntu 中文件 /etc/apache2/sites-available/default 配置的是默认的虚拟主机。default 虚拟主机的根文档目录默认设置为 /var/www,为了便于备份,最好将所有的 Web 内容都存放在 /home/www 目录下,为此可以将默认的虚拟主机的根文档目录默认设置为 /home/www 下的某个子目录下。 创建虚拟主机的目录结构 cd /home/www sudo mkdir 192.168.0.222 cd 192.168.0.222 sudo mkdir cgi-bin htdocs 创建虚拟主机的管理帐号并设置目录权限 sudo useradd -g www-data -d /home/www/192.168.0.222 wdefault sudo passwd wdefault sudo chown -R wdefault.www-data /home/www/192.168.0.222 配置 Apache S1. 在 /etc/apache2/sites-available/ 目录下创建新的文件 192.168.0.222,添加如下的配置 /etc/apache2/sites-available/192.168.0.222 <VirtualHost 192.168.0.222:80> DocumentRoot "/home/www/192.168.0.222/htdocs/" <Directory /home/www/192.168.0.222/htdocs/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /home/www/192.168.0.222/cgi-bin/ <Directory "/home/www/192.168.0.222/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /var/log/apache2/error.log CustomLog /var/log/apache2/access.log combined Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 192.168.0.0/255.255.255.0 </Directory> </VirtualHost> S2. 重新启动 Apache sudo a2dissite default sudo a2ensite 192.168.0.222 sudo /etc/init.d/apache2 restart |