发新话题
打印

Ubuntu Linux Apache虚拟主机的安装配置

Ubuntu Linux Apache虚拟主机的安装配置

  目标
  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
  3sudo 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 http://IPorHostname/~username 访问自己的站点
  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
记住该记住的,忘记该忘记的。改变能改变的,接受不能改变的!

www.lihuasoft.net

TOP

发新话题