linux下的apache配置

 

目前几乎所有的linux所有的发行版都捆绑了Apache,配置Apache服务,需要用到httpd包.可以使用下面命令,查看是否安装此包...


[root@station195 ~]# rpm -q httpd
package httpd is not installed


本地配置有yum源,直接使用此命令安装...
[root@station195 ~]# yum install httpd
主配置文件:/etc/httpd/conf/httpd.conf
网页目录:/var/www/html
服务脚本:/etc/rc.d/init.d/httpd
执行程序:/usr/sbin/htpd
访问日志:/var/log/httpd/access_log
错误日志:/var/log/httpd/error_log


http.conf配置文件主要由全局环境,主服务器配置和虚拟主机3个部分组成,配置语句可以放在文件中的任何地方,但为了增强文件的可读性,最好将配置语句放在相应的位置.所有选项指令均不区分大小写..Apache默认会在本机所有可用IP地址上的TCP 80端口监听客户端的请求.可以使用多个Listen语句,以便在多个地址和端口上监听请求.在做基于端口的虚拟主机的时候会用到...


serverRoot "/etc/httpd" apache服务的根...
Errorlog 路径 -->定义错误日志文件..
customlog 路径 -->定义访问日志文件..
serverAdmin  EMAIL -->定义管理员的邮箱..
servername  IP -->定义主机名称,如果服务器有域名,则填写其域名,如果没有则写其IP...
Timeout 连接超时..
keepalive 一次连接,多次请求,此选项默认是off可以置为on.
maxkeepaliveRequests 100 当下载资源超过100个时断开重新连一次.
keepalivetimeout 两次请求之间间隔不能超过15秒.
DocumentRoot -->定义网页存放的位置.
Allowoverride None 基于身份的验证...
options Indexes Multiviews -->
    Indexes 索引..允许目录浏览,当访问不到页面时,会看到目录中的文件和子目录列表.
    MultiViews 允许内容协商的多重视图..
    All 包含了除MultiViews之外的所有特性,如果没有options语句,默认为All
    ExecCGI 允许在该目录下执行CGI脚本..
    FollowSymLinks 可以在该目录中使用符号链接.
    Includes 允许服务器端包含的功能.
    IncludesNoExec 允许服务器端包含功能,但禁止使用CGI脚本.
    DirectoryIndex 这儿定义默认主页..
    loglevel 日志级别.


细心的用户可能会发现虽然在主目录设置了Indexes权限,且主目录中并不存在默认文档,但访问时并不会出现目录列表,而只出现Apache的测试面.解决这个问题的方法是将位于/etc/httpd/conf.d目录下的welcome.conf文件删除重启Apache即可.
          AddDefaultCharset 编码 -->定义服务器返回给客户机的默认字符集..默认是西欧(UTF-8),让其支持中文使用GB2312
最关键的一点Order  allow,deny,没有写的规则默认是deny,如果allow中定义的和deny中定义的规则冲突,以默认deny为佳...


试验一: 我们去做个试验...建一个用户sandy,密码为redhat.允许发布个人站点.且试验过程中开启selinux.
[root@station195 conf]# vim httpd.conf
 # UserDir disable
    UserDir public_html
<Directory /home/*/public_html>
      allowoverride none
      options Indexes
      order allow,deny
      allow from all
</Directory>
[root@station195 ~]# cd  /home/sandy;mkdir public_html;cd  public_html
[root@station195 ~]# vim index.html
welcome sandy...
[root@station195 home]# chmod o+x sandy/
[root@station195 sandy]# ls  -Zld public_html/ -->查看public_html的标签.
drwxr-xr-x  root root root:object_r:user_home_t        public_html/
[root@station195 sandy]# chcon   -R   -t    httpd_sys_content_t   public_html/ -->修改此目录标签.
[root@station195 ~]# service  httpd  restart
[root@station195 ~]# chkconfig  httpd  on


下面我们进行测试,在浏览器中输入http://192.168.0.195/~sandy就可以访问到网页了.....
每次访问时都要加个"~"符号,很烦人,我们可以去做个别名...
[root@station195 conf]# vim  httpd.conf
Alias  /sandy/   "/home/sandy/public_html/"
[root@station195 ~]# service  httpd  restart -->每次修改过配置文件都要重新启动服务器...


下面我们再次测试...在浏览器中输入http://192.168.0.195/sandy/就可以访问到站点了...


试验二: 基于密码验证....
[root@station195 conf]# vim   httpd.conf
<Directory /home/*/public_html>
      allowoverride   Authconfig
      options   Indexes
      order    allow,deny
      allow   from   all
</Directory>
[root@station195 ~]#cd  /home/sandy/public_html;vim  .htaccess
AuthName  "my secret garden"
AuthType   basic
AuthUserFile  /etc/httpd/conf/.htpasswd
Require  user  natasha -->允许natasha用户访问.
[root@station195 ~]# htpasswd -cm  /etc/httpd/conf/.htpasswd  natasha -->创建natasha用户给其密码为redhat.记住在第一次创建用户的时候使用-cm选项,第二次创建用户时使用-m就可以了,因为第一次创建时已经把.htpasswd文件创建好了...
[root@station195 ~]# service  httpd  restart -->重新启动服务,这一步一定不要忘了.


下面去进行测试.在浏览器中输入http://192.168.0.195/sandy/会出现一个输入用户名和密码的方框,我们输入natasha,密码redhat,然后就可以访问到sandy的个人站点了....so  easy !


试验三: 虚拟主机.
虚拟主机目前有三种:一种是基于端口的,一种基于IP的,还有一种基于主机头的...
最常用的就是基于主机头的..基于IP的,会耗费大量资金,基于端口的访问起了非常的不方便...下面我们去建一个站点www.example.com
[root@station195 ~]# cd   /etc/httpd/conf;vim  httpd.conf
#DocumentRoot "/var/www/html" -->这一步很重要,首先注释掉主机头...
NameVirtualHost *:80 -->打开监听的80端口.
<virtualhost *:80>
      serveradminwww.example.com
      DocumentRoot /var/www/www 
      Errorlog /var/log/httpd/www/err.log
      customlog /var/log/httpd/www/custom.log combined
</virtualhost>
[root@station195 httpd]# cd  /var/log/httpd;mkdir  www
[root@station195 www]# cd  /var/www/;mkdir   www;cd   www
[root@station195 www]# vim   index.html
this  is  main  web!
[root@station195 ~]# vim  /etc/resolv.conf
192.168.0.195   www.example.com
由于我本地妹做DNS服务器.为达到试验效果.测试机器上在hosts文件中也得写入这么一句才行...
[root@station195 ~]# service httpd restart
下面进行测试....在客户机浏览器http://www.example.com测试结果是成功的...大家可以模仿着做试试...


基于https的配置...先看CA证书的配置...
[root@station195 ~]# cd  /etc/pki/CA
[root@station195 CA]# openssl   genrsa 1024 > private/cakey.pem
[root@station195 CA]# vim  /etc/pki/tls/openssl.cnf 将[CA_default]后dir =../../CA改为dir = /etc/pki/CA
[root@station195 CA]# mkdir  ./newcerts
[root@station195 CA]# touch  ./{serial,index.txt}
[root@station195 CA]# echo "00" > ./serial
[root@station195 CA]# chmod 600 private/cakey.pem
[root@station195 CA]# chmod 600 cacert.pem


下面进行ssh的配置.可以去了解证书的配置..
[root@station195 ~]# yum  -y  install  mod_ssl
[root@station195 ~]#cd  /etc/httpd/;mkdir  ssl;cd  ssl
[root@station195 ssl]#mkdir  private
[root@station195 ssl]#openssl genrsa  1024  > private/httpd.key
[root@station195 ssl]#openssl req -new  -key  private/httpd.key -out  httpd.csr 
[root@station195 ssl]#openssl  ca  -in  httpd.csr -out httpd.crt  -days  3600
[root@station195 ssl]#vim  ../conf.d/ssl.conf
<virtualhost 192.168.0.195:443>
servername  www.example.com
documentroot   /var/www/www
SSLEngine on
SSLcertificateFile /etc/httpd/ssl/httpd.crt
SSLcertificatekeyFile /etc/httpd/ssl/private/httpd.key
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
</virtualhost>

[root@station195 ssl]# chmod  600 httpd.crt

[root@station195 ssl]# chmod  600 private/httpd.key
[root@station195 ssl]# service  httpd  restart


下面进行测试在客户端浏览器中输入https://www.example.com测试访问时成功的...这些我都严格测试过的,有一点大家注意,ssl.conf文件中在虚拟主机部分可以定义日志文件,但日志文件要和httpd.conf文件中的路径和名字一样,否则报错.我开始遇到这个问题,最后解决了.像SSLEgine SSLcertificateFile  SSLcertificatekeyFile这些都得必须定义.大家可以模仿着试试. .

 

你可能感兴趣的:(apache,linux)