设为首页 收藏本站
查看: 1341|回复: 0

[经验分享] apache http的源码编译

[复制链接]

尚未签到

发表于 2018-11-19 10:27:57 | 显示全部楼层 |阅读模式
  今天在公司电脑上安装Apache,版本2.2.8,装完刚测试可以;配置了下php的php.in文件再次localhost打开发现错 误:HTTP 错误 403 - 禁止访问,即 403 Forbidden:You don't have permission to access / on this server.权限又不够 了?
  马上打开apache的配置文件httpd.conf,逐行检查。在大约快一半的地方有以下这段代码:
  
  Options FollowSymLinks
  AllowOverride None
  Order deny,allow
  Deny from all
  < /Directory>
  发现了吧。由于配置了php后,这里的“Deny from all”已经拒绝了一切连接。把该行改成“allow from all”,修改后的代码如下,问题解决。
  
  Options FollowSymLinks
  AllowOverride None
  Order deny,allow
  allow from all
  < /Directory>
  再次在浏览器里打开http://localhost,显示it works!    总结:如果你也发生了这样的403禁止访问,不妨注意下apache的httpd.conf配置文件里有“Deny from all”这行的代码处,看看是不是哪里被系统悄悄地修改了
  http://www.cnblogs.com/sunwei2012/archive/2011/02/16/1956545.html
  Linux apache编译安装
  文章分类:操作系统
  1.下载httpd-2.2.15.tar.gz
  wget  http://mirror.bjtu.edu.cn/apache/httpd/httpd-2.2.17.tar.gz
  [root@test-AS4 ~]# mkdir -P /usr/local/src/apache/    #创建源包存放的目录
  [root@test-AS4 ~]# cd /usr/local/src/apache/           #把httpd-2.2.15.tar.gz放入此目录下
  [root@test-AS4 apache]# tar zxvf httpd-2.2.15.tar.gz       #解压文件会生成httpd-2.2.15目录
  [root@test-AS4 apache]# ll
  total 6464
  drwxr-xr-x  11 angel angel    4096 Mar 10 07:42 httpd-2.2.15
  -rw-r--r--   1 root  root  6593633 Mar 10  2010 httpd-2.2.15.tar.gz
  [root@test-AS4 httpd-2.2.15]# cd httpd-2.2.15
  [root@test-AS4  httpd-2.2.15]# ./configure --prefix=/usr/local/apache-2.2.15   --enable-so --enable-mods-shared=most --with-mpm=worker
  如果发现gcc没有装,请先安装GCC  yum -y install gcc
  [root@test-AS4 httpd-2.2.15]# make   #执行make前执行   apt-get build-dep fcitx
  [root@test-AS4 httpd-2.2.15]# make install
  #   --prefix=  指明编译后的二进制文件安装到目录,用实际安装路径替换,如 --prefix=/usr/local/apache-2.2.15 ,如果省略此配置参数,默认安装到/usr/local/apache2目录。
  #   --enable-so  指明编译动态加载模块(DSO)支持到httpd二进制文件,此模块使得Apache的各功能模块可以与核心分开编译、运行时动态加载。有了DSO支持, 升级和增加模块时只需编译相关的模块即可,不必重新编译整个系统。最新版本的Apache缺省编译此模块到httpd二进制文件,如果你在使用早期版本的 apache并且需要DSO支持,可能要明确指出此选项。
  #   --enable-mods-shared=  明确指明要以DSO方式编译的模块,为空格分隔的模块名列表、all或者most,all表示包含所有模 块,most表示包含大部分模块,如--enable-mods-share="rewrite  deflate",--enable-mods-share=most,效果等同于多个--enable-=share
  #  --with-mpm=  先择Apache多路处理模块,={beos|event|worker|prefork|mpmt_os2},prefork为 Unix系统下默认处理模块,它将运行一个非线程型的、预派生的Web服务器,适合于没有线程安全库,需要避免线程兼容性问题的系统,它是要求将每个请求 相互独立的情况下最好的MPM,这样若一个请求出现问题就不会影响到其他请求。worker为支持混合的多线程多进程的多路处理模块,由于使用线程来处理 请求,所以可以处理海量请求,而系统资源的开销小于基于进程的MPM,同时,它也使用了多进程,每个进程又有多个线程,以获得基于进程的MPM的稳定性。 如果你的系统是基于线程安全的,那么笔者建议使用worker替代prefork,它将使得你的系统得到实际的性能改善。
  2. 设置开机自启动服务控制脚本
  Apache安装后可通过其安装路径的bin目录下的apachectl脚本控制服务的启动和停止。本例中apache安装在/usr/local/apache-2.2.15,服务控制脚本为:
  /usr/local/apache-2.2.15/bin/apachectl
  执行下面的命令启动Apache服务:
  /usr/local/apache-2.2.15/bin/apachectl start
  执行下面的命令停止Apache服务:
  /usr/local/apache-2.2.15/bin/apachectl stop
  可以简单地把Apache启动命令加到/etc/rc.local文件,让Apache随系统启动而自动启动:
  echo "/usr/local/apache-2.2.15/bin/apachectl start"  >> /etc/rc.local
  下面介绍如何把Apache加入到系统服务,用service命令来控制Apache的启动和停止。
  ## 这里请注意一下!如果Linux服务器上默认安装了httpd的话(用rpm -qa|grep httpd查看),
  ## 会有 /etc/init.d/httpd 这个脚本文件的,所以你也可以用以下方法直接生成这个文件来覆盖它
  ## 那么下次就可以用 service httpd start 来启动了
  ## 如果需要区分开来的话就使用下面的方式
  首先以apachectl脚本为模板生成Apache服务控制脚本:
  grep -v "#" /usr/local/apache-2.2.15/bin/apachectl  > /etc/init.d/apache
  用vi编辑Apache服务控制脚本/etc/init.d/apache:
  vi /etc/init.d/apache
  在文件最前面插入下面的行,使其支持chkconfig命令:
  #!/bin/sh
  # chkconfig: 2345 85 15
  # description: Apache is a World Wide Web server.
  保存后退出vi编辑器,执行下面的命令增加Apache服务控制脚本执行权限:
  chmod  +x  /etc/init.d/apache
  执行下面的命令将Apache服务加入到系统服务:
  chkconfig --add apache
  执行下面的命令检查Apache服务是否已经生效:
  chkconfig --list apache
  命令输出类似下面的结果:
  apache          0:off 1:off 2:on 3:on 4:on 5:on 6:off
  表明apache服务已经生效,在2、3、4、5运行级别随系统启动而自动启动,以后可以使用service命令控制Apache的启动和停止。
  启动Apache服务:
  service apache start
  停止Apache服务:
  service apache stop
  执行下面的命令关闭开机自启动:
  chkconfig apache off
  执行下面的命令改变开机自启动的运行级别为3、5:
  chkconfig --level 35 apache on
  3. Apache的配置
  源码包方式安装目录结构
  源码包方式安装时通常是在configure命令的--prefix选项指定的目录中建立如下的目录结构,特殊指定的目录除外:
  ./icons     #Apache图标文件目录
  ./modules   #动态加载模块目录
  ./lib       #库文件目录
  ./logs      #日志文件目录
  ./build     #
  ./conf      #主配置文件目录
  ./conf/extra     #扩展及模块配置文件目录
  ./error     #默认错误应答文件目录
  ./manual    #Apache文档目录
  ./include   #包含头文件目录
  ./htdocs    #默认WEB文档根目录
  ./cgi-bin   #默认cgi文件目录
  ./bin     #Apache二进制程序及服务程序目录
  ./man     #man帮助文件目录
  4. 配置文件 http.conf
  ServerRoot "/usr/local/apache-2.2.15"       ##设置服务器的基础目录,默认为Apache安装目录
  Listen 80           ##设置服务器监听的IP和端口
  LoadModule authn_file_module modules/mod_authn_file.so
  LoadModule authn_dbm_module modules/mod_authn_dbm.so
  LoadModule authn_anon_module modules/mod_authn_anon.so
  LoadModule authn_dbd_module modules/mod_authn_dbd.so
  LoadModule authn_default_module modules/mod_authn_default.so
  LoadModule authz_host_module modules/mod_authz_host.so
  LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
  LoadModule authz_user_module modules/mod_authz_user.so
  LoadModule authz_dbm_module modules/mod_authz_dbm.so
  LoadModule authz_owner_module modules/mod_authz_owner.so
  LoadModule authz_default_module modules/mod_authz_default.so
  LoadModule auth_basic_module modules/mod_auth_basic.so
  LoadModule auth_digest_module modules/mod_auth_digest.so
  LoadModule dbd_module modules/mod_dbd.so
  LoadModule dumpio_module modules/mod_dumpio.so
  LoadModule reqtimeout_module modules/mod_reqtimeout.so
  LoadModule ext_filter_module modules/mod_ext_filter.so
  LoadModule include_module modules/mod_include.so
  LoadModule filter_module modules/mod_filter.so
  LoadModule substitute_module modules/mod_substitute.so
  LoadModule deflate_module modules/mod_deflate.so
  LoadModule log_config_module modules/mod_log_config.so
  LoadModule logio_module modules/mod_logio.so
  LoadModule env_module modules/mod_env.so
  LoadModule expires_module modules/mod_expires.so
  LoadModule headers_module modules/mod_headers.so

  LoadModule>  LoadModule setenvif_module modules/mod_setenvif.so
  LoadModule version_module modules/mod_version.so
  LoadModule mime_module modules/mod_mime.so
  LoadModule dav_module modules/mod_dav.so
  LoadModule status_module modules/mod_status.so
  LoadModule autoindex_module modules/mod_autoindex.so
  LoadModule asis_module modules/mod_asis.so
  LoadModule info_module modules/mod_info.so
  LoadModule cgid_module modules/mod_cgid.so
  LoadModule dav_fs_module modules/mod_dav_fs.so
  LoadModule vhost_alias_module modules/mod_vhost_alias.so
  LoadModule negotiation_module modules/mod_negotiation.so
  LoadModule dir_module modules/mod_dir.so
  LoadModule imagemap_module modules/mod_imagemap.so
  LoadModule actions_module modules/mod_actions.so
  LoadModule speling_module modules/mod_speling.so
  LoadModule userdir_module modules/mod_userdir.so
  LoadModule alias_module modules/mod_alias.so
  LoadModule rewrite_module modules/mod_rewrite.so
  
  User daemon     ##设置实际提供服务的子进程的用户。
  Group daemon    ##设置提供服务的Apache子进程运行时的用户组。
  
  ServerAdmin you@example.com      ##设置在所有返回给客户端的错误信息中包含的管理员邮件地址。
  ServerName 192.168.221.128       ##设置服务器用于辨识自己的主机名和端口号(用IP代替)。
  DocumentRoot "/usr/local/apache-2.2.15/htdocs"     ##设置Web文档根目录。
         ###和用于封装一组指令,使之仅对某个目录及其子目录生效。
  Options FollowSymLinks
  AllowOverride None
  Order deny,allow
  Deny from all
  
     ##设置DocumentRoot指定目录的属性
  Options Indexes FollowSymLinks    ##建议拿掉Indexes
  AllowOverride None
  Order allow,deny
  Allow from all
  
      ##设置默认目录资源列表文件
  DirectoryIndex index_top.html entrance.html index.html index.php index.htm index.asp index.php3
  
       ##拒绝对.ht开头文件的访问,以保护.htaccess文件
  Order allow,deny
  Deny from all
  Satisfy All
  
  ErrorLog "logs/error_log"      ##指定错误日志文件
  LogLevel warn        ##指定记录到错误日志的消息级别
      ##定义访问日志的格式
  LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
  LogFormat "%h %l %u %t \"%r\" %>s %b" common
  
  LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
  
  CustomLog "logs/access_log" common    ##指定访问日志及使用的格式
  
      ##设定默认CGI脚本目录及别名
  ScriptAlias /cgi-bin/ "/usr/local/apache-2.2.15/cgi-bin/"
  
  
  
      ##设定默认CGI脚本目录的属性
  AllowOverride None
  Options None
  Order allow,deny
  Allow from all
  
  DefaultType text/plain    ##设定默认MIME内容类型
  
  TypesConfig conf/mime.types
  AddType application/x-compress .Z
  AddType application/x-gzip .gz .tgz
  
  
  SSLRandomSeed startup builtin
  SSLRandomSeed connect builtin
  
                ##编译参数 --with-mpm=worker时,使用worker.c模块
  ServerLimit         25    ##/usr/local/apache-2.2.15/bin/apachectl -l查看使用模块
  ThreadLimit        200
  StartServers         3
  MaxClients        2000
  MinSpareThreads     50
  MaxSpareThreads    200
  ThreadsPerChild    100
  MaxRequestsPerChild  1000
  
  Timeout 15
  KeepAlive On
  MaxKeepAliveRequests 100
  KeepAliveTimeout 3
  UseCanonicalName Off
  AccessFileName .htaccess
  ServerTokens Prod
  ServerSignature Off
  HostnameLookups Off
  NameVirtualHost *:80
  
  DocumentRoot /usr/local/apache-2.2.15/htdocs/irene
  ServerName www.irene.com
  
  
  DocumentRoot /usr/local/apache-2.2.15/htdocs/angel
  ServerName www.angel.com
  
  -----------------------------------------------------------------------------------------
  4. 认证和授权配置
  ## 在httpd.conf配置文件中添加如下代码
  
  AllowOverride None      ## 不使用.htaccess文件
  AuthType Basic          ## 指定使用基本认证方式
  AuthName "apache.passwd"    ## 指定认证领域名称
  AuthUserFile /usr/local/apache-2.2.15/htdocs/protect/apache.passwd  ## 认证口令存放位置
  require valid-user     ## 授权给认证口令文件中的所有用户
  #Order allow,deny
  #Allow from all
  
  ** 由于文本中 DocumentRoot "/usr/local/apache-2.2.15/htdocs" 已经指定了你的文档根目录
  ** 所以在这个目录下建立相关目录作为指定的保护文档位置
  ** 也可以使用Alias别名 指定一个其他目录
  [root@test-AS4 ~]# cd /usr/local/apache-2.2.15/htdocs
  [root@test-AS4 htdocs]# mkdir protect
  [root@test-AS4 protect]# htpasswd -c apache.passwd angel
  [root@test-AS4 protect]# ll
  total 8
  -rw-r--r--  1 root root 20 Mar 14 21:14 apache.passwd
  [root@test-AS4 protect]# cat apache.passwd
  angel:Grka1xfi6y5RM
  [root@test-AS4 protect]#
  ## 打开浏览器URL: http://192.168.221.128/protect/


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-636900-1-1.html 上篇帖子: Cent0s6下apache和tomcat整合 下篇帖子: LAMP 之 Apache 用户认证
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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