yanglgzh 发表于 2018-11-23 10:07:20

linux下的apache配置

  目前几乎所有的linux所有的发行版都捆绑了Apache,配置Apache服务,需要用到httpd包.可以使用下面命令,查看是否安装此包...
  # rpm -q httpd
  package httpd is not installed
  本地配置有yum源,直接使用此命令安装...
  # 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 路径 -->定义访问日志文件..
  serverAdminEMAIL -->定义管理员的邮箱..
  servernameIP -->定义主机名称,如果服务器有域名,则填写其域名,如果没有则写其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
  最关键的一点Orderallow,deny,没有写的规则默认是deny,如果allow中定义的和deny中定义的规则冲突,以默认deny为佳...
  试验一: 我们去做个试验...建一个用户sandy,密码为redhat.允许发布个人站点.且试验过程中开启selinux.
  # vim httpd.conf
  # UserDir disable
  UserDir public_html
  
  allowoverride none
  options Indexes
  order allow,deny
  allow from all
  
  # cd/home/sandy;mkdir public_html;cdpublic_html
  # vim index.html
  welcome sandy...
  # chmod o+x sandy/
  # ls-Zld public_html/ -->查看public_html的标签.
  drwxr-xr-xroot root root:object_r:user_home_t      public_html/
  # chcon   -R   -t    httpd_sys_content_t   public_html/ -->修改此目录标签.
  # servicehttpdrestart
  # chkconfighttpdon
  下面我们进行测试,在浏览器中输入http://192.168.0.195/~sandy就可以访问到网页了.....
  每次访问时都要加个"~"符号,很烦人,我们可以去做个别名...
  # vimhttpd.conf
  Alias/sandy/   "/home/sandy/public_html/"
  # servicehttpdrestart -->每次修改过配置文件都要重新启动服务器...
  下面我们再次测试...在浏览器中输入http://192.168.0.195/sandy/就可以访问到站点了...
  试验二: 基于密码验证....
  # vim   httpd.conf
  
  allowoverride   Authconfig
  options   Indexes
  order    allow,deny
  allow   from   all
  
  #cd/home/sandy/public_html;vim.htaccess
  AuthName"my secret garden"
  AuthType   basic
  AuthUserFile/etc/httpd/conf/.htpasswd
  Requireusernatasha -->允许natasha用户访问.
  # htpasswd -cm/etc/httpd/conf/.htpasswdnatasha -->创建natasha用户给其密码为redhat.记住在第一次创建用户的时候使用-cm选项,第二次创建用户时使用-m就可以了,因为第一次创建时已经把.htpasswd文件创建好了...
  # servicehttpdrestart -->重新启动服务,这一步一定不要忘了.
  下面去进行测试.在浏览器中输入http://192.168.0.195/sandy/会出现一个输入用户名和密码的方框,我们输入natasha,密码redhat,然后就可以访问到sandy的个人站点了....soeasy !
  试验三: 虚拟主机.
  虚拟主机目前有三种:一种是基于端口的,一种基于IP的,还有一种基于主机头的...
  最常用的就是基于主机头的..基于IP的,会耗费大量资金,基于端口的访问起了非常的不方便...下面我们去建一个站点www.example.com
  # cd   /etc/httpd/conf;vimhttpd.conf
  #DocumentRoot "/var/www/html" -->这一步很重要,首先注释掉主机头...
  NameVirtualHost *:80 -->打开监听的80端口.
  
  serveradminwww.example.com
  DocumentRoot /var/www/www
  Errorlog /var/log/httpd/www/err.log
  customlog /var/log/httpd/www/custom.log combined
  
  # cd/var/log/httpd;mkdirwww
  # cd/var/www/;mkdir   www;cd   www
  # vim   index.html
  thisismainweb!
  # vim/etc/resolv.conf
  192.168.0.195   www.example.com
  由于我本地妹做DNS服务器.为达到试验效果.测试机器上在hosts文件中也得写入这么一句才行...
  # service httpd restart
  下面进行测试....在客户机浏览器http://www.example.com测试结果是成功的...大家可以模仿着做试试...
  基于https的配置...先看CA证书的配置...
  # cd/etc/pki/CA
  # openssl   genrsa 1024 > private/cakey.pem
  # vim/etc/pki/tls/openssl.cnf 将后dir =../../CA改为dir = /etc/pki/CA
  # mkdir./newcerts
  # touch./{serial,index.txt}
  # echo "00" > ./serial
  # chmod 600 private/cakey.pem
  # chmod 600 cacert.pem
  下面进行ssh的配置.可以去了解证书的配置..
  # yum-yinstallmod_ssl
  #cd/etc/httpd/;mkdirssl;cdssl
  #mkdirprivate
  #openssl genrsa1024> private/httpd.key
  #openssl req -new-keyprivate/httpd.key -outhttpd.csr
  #opensslca-inhttpd.csr -out httpd.crt-days3600
  #vim../conf.d/ssl.conf
  
  servernamewww.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
  
  # chmod600 httpd.crt
  # chmod600 private/httpd.key
  # servicehttpdrestart
  下面进行测试在客户端浏览器中输入https://www.example.com测试访问时成功的...这些我都严格测试过的,有一点大家注意,ssl.conf文件中在虚拟主机部分可以定义日志文件,但日志文件要和httpd.conf文件中的路径和名字一样,否则报错.我开始遇到这个问题,最后解决了.像SSLEgine SSLcertificateFileSSLcertificatekeyFile这些都得必须定义.大家可以模仿着试试. .

页: [1]
查看完整版本: linux下的apache配置