apache搭建基于IP/域名的虚拟主机

首先搭建基于IP的虚拟主机

//环境:

1.可能需要的工具包
shell> yum -y install gcc gcc-c++ make cmake automake autoconf cpp ncurses ncurses-devel libxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel pcre-devel libtool libtool-libs freetype-devel gd zlib-devel file bison patch mlocate flex diffutils readline-devel glibc-devel glib2-devel bzip2-devel gettext-devel libcap-devel

2.编译安装apache前需要先安装依赖包
shell> wget http://mirrors.axint.net/apache/apr/apr-util-1.4.1.tar.gz
shell> wget http://mirrors.axint.net/apache/apr/apr-1.4.8.tar.gz
shell> wget http://mirrors.axint.net/apache/apr/apr-iconv-1.2.1.tar.gz
shell> wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
shell> wget http://apache.fayea.com/apache-mirror//httpd/httpd-2.4.7.tar.gz"

3.解压
shell> tar xvf ***.tar.gz

4.安装libmcrypt apr apr-util apr-iconv
#libmcrypt install
shell> cd /home/softs/libmcrypt-2.5.7
shell> ./configure
shell> make && make install

#apr install
shell> cd /home/softs/apr-1.4.8
shell> sed -i "/.*\$RM\ \"\$cfgfile\"/d" configure
shell> ./configure '--prefix=/usr/local/apr'
shell> make && make install

#apr-util install
shell> cd /home/softs/apr-util-1.4.1
shell> ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config
shell> make && make install

#apr-iconv install
shell> cd "/home/softs/apr-iconv-1.2.1"
shell> ./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr/bin/apr-1-config
shell> make && make install

5.apache编译安装
shell> ./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-apr-iconv=/usr/local/apr-iconv --with-ssl --enable-ssl --enable-so --enable-deflate=shared --enable-expires=shared --enable-headers=shared --enable-rewrite=shared --enable-static-support
shell> make && make install
#复制启动项
shell> cp  /usr/local/apache2/bin/apachectl /etc/init.d/httpd

4.apache主配置文件
shell> /usr/local/apache2/conf/httpd.conf

5.配置DNS服务器解析
www.zijian.com  10.10.54.159
bbs.zijian.com  10.10.54.152

【全局设置】1.修改主配置文件

shell> vim /usr/local/apache2/conf/httpd.conf

#apache配置文件和日志文件等的根目录
ServerRoot "/usr/local/apache2"

#配置apache server监听端口
Listen 10080

#加载php模块支持,可以读取index.php文件
LoadModule php5_module        modules/libphp5.so
AddType application/x-httpd-php .php .phtml

#apache用户
<IfModule unixd_module>
User daemon
Group daemon
</IfModule>

#server 名字,没有的话重启会有提示
ServerName www.localhost.com:80

#配置网站内容根目录
#DocumentRoot "/var/www"    #因为有多个网站根目录,所以此项在虚拟主机配置文件里面设定

#针对目录:/var/www/html,/var/www/bbs 设置相应参数,对应后面的虚拟主机目录

#Indexes:如果在此目录下找不到“首页文件”,就显示整个目录下的文件名称,“首页文件”与DirectoryIndex设置值有关。
#FollowSymLinks:让在此目录下的连接文件可以连接出此目录外。一般来说被chroot的程序将无法离开其目录,也就是说默认的情况下,您在/var/www/html下面的连接文件只要连接到非此目录的其他地方,则该连接文件默认是失效的。但使用此设置即可让连接文件有效地离开本目录。
#AllowOverride:表示是否允许额外配置文件“.htaccess”的权限复写?可以在httpd.conf内设置好所有的权限,如此一来若用户自己的个人网页想要修改权限时将会对管理员造成困扰。因此Apache默认可以让用户以目录下面的“.htaccess”文件复写内的权限设置。这个项目则规定“.htaccess”可以复写的权限类型有哪些。常见的有以下几种。
&middot; ALL:全部的权限均可被复写。 
&middot; AuthConfig:仅有网页认证(账号密码)可复写。
&middot; Indexes:仅允许Indexes方面的复写。
&middot; Limits:允许用户利用Allow、Deny与Order管理可浏览的权限。
&middot; None:不可复写,即“.htaccess”文件失效

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

<Directory "/var/www/bbs">
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

#网站支持的index文件类型,可以写在虚拟主机配置文件中
#<IfModule dir_module>
#    DirectoryIndex index.php index.html
#</IfModule>

#虚拟主机配置文件
Include conf/extra/httpd-vhosts.conf

【基于IP的虚拟主机】2.虚拟主机配置文件/usr/local/apache2/conf/extra/httpd-vhosts.conf

首先添加虚拟IP
shell> ifconfig eth0:0 10.10.54.152 netmask 255.255.255.0

shell> vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
<VirtualHost 10.10.54.157:80>
    ServerAdmin [email protected]

#每一个虚拟主机对应一个网站,所以都有一个根目录  
    DocumentRoot "/var/www/html"

#/var/www/html目录下没有index.html文件,可以读取index.php文件
    DirectoryIndex index.html index.php
    ServerName www.zijian.com
    ErrorLog "logs/dummy-host.example.com-error_log"
    CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>

<VirtualHost 10.10.54.151:80>
    ServerAdmin [email protected]
    DocumentRoot "/var/www/bbs"
    DirectoryIndex index.html index.php
    ServerName bbs.zijian.com
    ErrorLog "logs/dummy-host2.example.com-error_log"
    CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>

#上面端口可以使用同一个端口80,apache会在80端口监听客户端的连接请求,并根据客户端IP转到相应的DocumentRoot目录
#可以使用不同的端口,这时需要在主配置文件中添加
-----------
Listen 10080
Listen 10081
-----------
#虚拟主机配置文件中也做相应改动
-------------------------------
<VirtualHost 10.10.54.159:10080>
...
<VirtualHost 10.10.54.152:10081>
-------------------------------

【基于域名的虚拟主机】3.虚拟主机配置文件/usr/local/apache2/conf/extra/httpd-vhosts.conf

#基于域名的虚拟主机,有多个域名解析到一台web服务器上,这些域名都对应同一个IP
#像下面三个网站,解析到一个IP,每一个网站都有一个根目录,在下面的DocumentRoot中设置
www.zijian.com:10.10.54.157
bbs.zijian.com:10.10.54.157
news.zijian.com:10.10.54.157

#只需要在上面的配置文件中修改此部分即可
shell> vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
    ServerAdmin [email protected] 
    DocumentRoot "/var/www/html"
    DirectoryIndex index.html index.php
    ServerName www.zijian.com
    ErrorLog "logs/www-zijian-error_log"
    CustomLog "logs/www-zijian-access_log" common
</VirtualHost>

<VirtualHost *80>
    ServerAdmin [email protected]
    DocumentRoot "/var/www/bbs"
    DirectoryIndex index.html index.php
    ServerName bbs.zijian.com
    ErrorLog "logs/bbs-zijian-error_log"
    CustomLog "logs/bbs-zijian-access_log" common
</VirtualHost>

<VirtualHost *80>
    ServerAdmin [email protected]
    DocumentRoot "/var/www/news"
    DirectoryIndex index.html index.php
    ServerName news.zijian.com
    ErrorLog "logs/news-zijian-error_log"
    CustomLog "logs/news-zijian-access_log" common
</VirtualHost>










你可能感兴趣的:(apache搭建基于IP/域名的虚拟主机)