Ubuntu Linux 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
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
S2. 在 /etc/apache2/sites-available/ 目錄下創建新的文件 192.168.0.252,添加如下的配置
/etc/apache2/sites-available/192.168.0.252
DocumentRoot "/home/www/192.168.0.252/htdocs/"
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
ScriptAlias /cgi-bin/ /home/www/192.168.0.252/cgi-bin/
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
ErrorLog /home/www/192.168.0.252/logs/error.log
CustomLog /home/www/192.168.0.252/access.log combined
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 [url]http://IPorHostname/~username[/url] 訪問自己的站點
2.
若進行 CGI 開發,還需要在宿主目錄下創建 cgi-bin 子目錄
配置 Apache
使用如下命令啓用 userdir 模塊即可
sudo a2enmod userdir
若進行 CGI 開發,需要修改 /etc/apache2/mods-available/userdir.conf
UserDir public_html
UserDir disabled root
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
ScriptAliasMatch ~([a-z]+)/cgi-bin/(.*) /home/$1/cgi-bin/$2
# 添加此行,意思是匹配~user_name/cgi-bin/cgi_name自動映射到/home/user_name/cgi-bin/cgi-name腳本
關於默認的虛擬主機
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
DocumentRoot "/home/www/192.168.0.222/htdocs/"
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
ScriptAlias /cgi-bin/ /home/www/192.168.0.222/cgi-bin/
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
Alias /doc/ "/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
S2. 重新啓動 Apache
sudo a2dissite default
sudo a2ensite 192.168.0.222
sudo /etc/init.d/apache2 restart
目標
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
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
S2. 在 /etc/apache2/sites-available/ 目錄下創建新的文件 192.168.0.252,添加如下的配置
/etc/apache2/sites-available/192.168.0.252
DocumentRoot "/home/www/192.168.0.252/htdocs/"
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
ScriptAlias /cgi-bin/ /home/www/192.168.0.252/cgi-bin/
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
ErrorLog /home/www/192.168.0.252/logs/error.log
CustomLog /home/www/192.168.0.252/access.log combined
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 [url]http://IPorHostname/~username[/url] 訪問自己的站點
2.
若進行 CGI 開發,還需要在宿主目錄下創建 cgi-bin 子目錄
配置 Apache
使用如下命令啓用 userdir 模塊即可
sudo a2enmod userdir
若進行 CGI 開發,需要修改 /etc/apache2/mods-available/userdir.conf
UserDir public_html
UserDir disabled root
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
ScriptAliasMatch ~([a-z]+)/cgi-bin/(.*) /home/$1/cgi-bin/$2
# 添加此行,意思是匹配~user_name/cgi-bin/cgi_name自動映射到/home/user_name/cgi-bin/cgi-name腳本
關於默認的虛擬主機
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
DocumentRoot "/home/www/192.168.0.222/htdocs/"
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
ScriptAlias /cgi-bin/ /home/www/192.168.0.222/cgi-bin/
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
Alias /doc/ "/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
S2. 重新啓動 Apache
sudo a2dissite default
sudo a2ensite 192.168.0.222
sudo /etc/init.d/apache2 restart