LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1473|回复: 4

原创:红旗3.0 Server服务配置教程Apache 虚拟主机设定大全及实验课程.txt

[复制链接]
发表于 2003-3-24 10:09:11 | 显示全部楼层 |阅读模式
虚拟主机的设定有很多种方法,以下基本上列出了常用的方法,不过有些方法需要和DNS服务器配合使用!
  下面的包括以下内容
       A.用户Web目录发布
       B.基于端口的虚拟主机设置
       C.基于IP的虚拟主机(一个域名对应一个不同的IP地址)
       D.基于名称的虚拟主机
       E.使用用户认证来限制某些文档的访问(.htaccess)
虽然是基于红旗 3.0做的,不过各个发布版本都适用,只要大家用的都是Apache



1、用户Web目录
   A.编辑httpd.conf文件
     UserDir  public_html
      这样用户就可以通过http://localhost/~user/ (有时个少了'/'就可能看不到了) 来访问关于user这个用户的网站/home/user/public_html
   B.用户在自己目录中创建public_html,并修改相应权限
     #chmod 705 /home/user
     #chmod 705 /home/user/public_html
   C.在用户public_html下创建DirectoryIndex 中设定的默认首页
   D.用户目录下其它目录应设定成别人不能访问(700)
   E.去掉~
      在httpd.conf中添加 Alias /user /home/user/public_html/
      或  ln -s /home/user/public_html /var/www/html/user
    这们就可以通过http://localhost/user/ 访问到了
     不过要打开Options FollowSymLinks 这个设定在httpd.conf中
   F.让用户Web目录中支持cgi
      将下面这段放入httpd.conf中,然后重新启动Apache即可.
          <DirectoryMatch "/home/[a-z0-9]+/public_html/cgi-bin">
            Options ExecCGI
            AddHandler cgi-script .cgi .pl .exe
          </DirectoryMatch>
      上面这个设定是说:凡是账号是小写字母或数字所组成的使用者,都为其打开cgi-bin目录执行CGI程序的权限。
       并且,设定凡是档案名是cgi,pl,exe者,皆视为cgi程式,而按cgi程式的处理方式来对待它。



2、虚拟主机设定

  A.基于端口的虚拟主机设置
   下面是apache的配置文件/etc/httpd/conf/httpd.conf中虚拟主机部分的配置:
    Listen 80
    Listen 192.168.11.8:81
    Listen 192.168.11.8:82

    <VirtualHost 192.168.11.8:81>
       documentroot /www/web.company.com/staging/htdocs/
       scriptalias /cgi-bin /www/web.company.com/staging/cgi-bin/
       transferlog "/usr/local/apache/bin/cronolog /usr/local/apache/logs/web/staging/%Y/%m/%d/access_log"
       errorlog "/usr/local/apache/bin/cronolog /usr/local/apache/logs/web/staging/%Y/%m/%d/error_log"
   </VirtualHost>

  <VirtualHost 192.168.11.8:82>
      documentroot /www/web.company.com/developer/htdocs/
      scriptalias /cgi-bin /www/web.company.com/developer/cgi-bin/
      transferlog "/usr/local/apache/bin/cronolog /usr/local/apache/logs/web/developer/%Y/%m/%d/access_log"
      errorlog "/usr/local/apache/bin/cronolog /usr/local/apache/logs/web/developer/%Y/%m/%d/error_log"
  </VirtualHost>

   注:上面是基于端口的虚拟主机设置,要访问测试服务器,用http://www.aaa.com:81/
        开发服务器用http://www.aaa.com:82/
      上面的transferlog and errorlog用了不是默认的格式,而是Apache网站上建议的这种每天
      一个文件的年/月/日格式,可从http://www.ford-mason.co.uk/resources/cronolog/下载编译
      后安装在/usr/local/apache/bin/cronolog,可查看Apache网站获得更多信息。
      http://httpd.apache.org/docs/misc/FAQ.html#rotate

b.基于IP的虚拟主机(一个域名对应一个不同的IP地址)
   步骤: 1).在服务器上让一块网卡上设定多个IP地址
             ifconfig  eth0:0 192.168.0.200
             ifconfig  eth0:1 192.168.0.210
          2).在DNS服务器中做好IP地址与域名的绑定
                如:www.aaa.com     192.168.0.100
                    www2.aaa.com    192.168.0.200
                    www3.aaa.com    192.168.0.210
          3).调整httpd.conf
                 <VirtualHost 192.168.0.100>
                    ServerAdmin  root@aaa.com
                    DocumentRoot /www/site1
                    ServerName   www.aaa.com        
                 </VirtualHost>   
                  <VirtualHost 192.168.0.200>
                    ServerAdmin  root@aaa.com
                    DocumentRoot /www/site2
                    ServerName   www2.aaa.com        
                 </VirtualHost>   
          这样输入www.aaa.com  就是访问/www/site1中的网页
                  www2.aaa.com  就是访问/www/site2中的网页

c.基于名称的虚拟主机
   服务器中只有一个IP地址,要为多个域名共同提供服务     
   步骤:1)在DNS服务器中做好IP地址与域名的绑定
                如:www.aaa.com     192.168.0.100
                    www2.aaa.com    192.168.0.100
                    www3.aaa.com    192.168.0.100
         2)调整httpd.conf文件中的内容
             NameVirtualHost 192.168.0.100   ;基于名称的虚拟主机的IP地址
             <VirtualHost 192.168.0.100>
                    ServerAdmin  root@aaa.com
                    DocumentRoot /www/site1
                    ServerName   www.aaa.com        
              </VirtualHost>   
              <VirtualHost 192.168.0.100>
                    ServerAdmin  root@aaa.com
                    DocumentRoot /www/site2
                    ServerName   www2.aaa.com        
              </VirtualHost>
     这样访问的结果和上面相同,只不过在服务器中只用了一个IP地址   
            
d.使用用户认证来限制某些文档的访问(.htaccess)
  步骤:1).编辑httpd.conf
             ;控制/www/site1下各目录的访问权限
             <Directory "/www/site1">
                AllowOverride All
                ;目录的访问权限由目录下的.htaccess文件来控制
            </Directory>
       2).在/www/site1下生成编辑控制文件.htaccess
            #vi .htaccess
              内容如下:
                     AuthUserFile /www/pwd  ;指定存放用户信息的文件
                     AuthType    Basic      ;认证类型(基本型)
                     AuthName   "Database Security Zone"   ;提示信息
                     <Limit GET POST>
                         require valid-user ;用户认证valid-user  组认证valid-group
                     </limit>

      3).生成用户密码文件/www/pwd
          #htpasswd -c /www/pwd     test   ;程序/usr/bin/htpasswd
                       ---------    ----
                       密码文件     用户
     4).重新启动Apache守护进程
     5).测试 访问http://www.aaa.com  应该会提示输入用户名和密码
发表于 2003-3-25 11:22:55 | 显示全部楼层

还是无法去掉~

我已经把Alias /user /home/user/public_html/ 添加进了httpd.conf文件里面,重新启动apache没有问题,不过访问用户主页时仍然无法去掉~,why???
 楼主| 发表于 2003-3-26 07:48:00 | 显示全部楼层
举例:
  alias /test  /home/test/public_html
这样就可以用http://192.168.0.2/test/
  方式访问了!
发表于 2003-3-26 09:01:25 | 显示全部楼层

ok!搞定了!

多谢小皮兄弟,我已经搞定了!非常感谢!
发表于 2003-4-17 10:02:46 | 显示全部楼层
good!!!!
精华中的精华。。
向小皮兄致敬!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表