首页 web服务器 正文
436

CentOS7源码安装httpd

  • yiqingpeng
  • 2020-04-04
  • 0
  •  
先安装一些依赖包: 
yum install apr-devel
yum install pcre-devel
yum install expat-devel
yum install zlib-devel
yum install openssl-devel

下载源码包:httpd-2.4.41.tar.gz
解压: tar -xzvf httpd-2.4.41.tar.gz

进入源码包目录:cd httpd-2.4.41,执行:
./configure --prefix=/usr/local/httpd -sysconfdir=/etc/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-ssl --enable-cgid --enable-modules=all --enable-mpms-shared=all --with-mpm=event --enable-expires --enable-deflate --enable-lua=shared --with-included-apr   

一些选项的说明:

--prefix 设置安装目录

-sysconfdir=/etc/httpd  配置文件所在目录

--enable-so 启用动态加载模块支持,以支持运行当中加入模块。还有另一种静态模块方式。

--enable-rewrite 开启重写

--enable-ssl SSL支持,需要先安装openssl和openssl-devel,如果openssl安装在/usr/local/openssl,则使用选项--with-ssl=/usr/local/openssl指定目录

--enable-modules=all 安装哪些模块,可以为all/most/few/none/reallyall/用空格分隔的模块名列表

--with-mpm=event  运行模式,有prefork, worker, event三种
prefork:预先分配N个进程,每个进程只有一个线程,N个用完再分配新的。一个进程只能处理一个请求。比较占内存,不适合高并发。
worker:预先分配N个进程,每个进程有多个线程。一个进程可以处理多个请求。内存消耗少,并发情况下有更好的表现。
前两种在处理keep-alive请求时,都会面临进程或线程长时间被占用,得不到释放的问题。
event:在处理keep-alive请求时使用事件响应模式(需要操作系统支持epoll),不过处理ssl链接时会回退到worker模式。
查看httpd工作模式及版本信息:安装目录/bin/apachectl -V

--enable-deflate 启用压缩

--enable-lua=shared  启用lua支持,需要预先安装lua, lua-devel

httpd依赖apr和apr-util,有两种方式来安装apr,apr-util:
第一种,先分别独立安装apr, apr-util,然后通过选项--with-apr和--with-apr-util来指定lib安装位置。
比如,apr,apr-util都是安装在/usr/local目录下,那么configure时要包含如下两个选项:
--with-apr=/usr/local/apr
--with-apr-util=/usr/local/apr-util
第二种,将apr,apr-util源码文件copy到httpd源码包中的srclib目录,然后通过--with-included-apr 指定apr源码包,这也是本文所使用的方式。
具体做法:
1.下载源码:
wget https://mirror.bit.edu.cn/apache//apr/apr-1.7.0.tar.gz
wget https://mirror.bit.edu.cn/apache//apr/apr-util-1.6.1.tar.gz
2.解压:
tar -xzvf apr-1.7.0.tar.gz
tar -xzvf apr-util-1.6.1.tar.gz
3.将源码复制到httpd源码包目录下的srclib目录
mv apr-1.7.0 ./httpd-2.4.41/srclib/apr
mv apr-util-1.6.1 ./httpd-2.4.41/srclib/apr-util
注意复制过去的时候不要带版本号。
然后在configure选项中加入--with-included-apr


make && make install


测试:
/usr/local/httpd/bin/apachectl -k start
curl -I localhost


注册httpd服务
cp /usr/local/httpd/bin/apachectl /etc/rc.d/init.d/httpd
编辑/etc/rc.d/init.d/httpd, 在第二行加入以下两行内容:
#chkconfig:2345 10 90
#description:Activates/Deactivates Apache Web Server
注意,#号是必须的。


把服务加入到启动列表
chkconfig --add httpd


设置开机默认启动
chkconfig httpd on


启动服务:service httpd start

优雅重启:apachectl graceful


http.conf的一些常用配置:
Listen 80           # Apache服务监听端口
User apache     # 子进程的用户
Group apache   # 子进程的组
ServerAdmin root@localhost  # 设置管理员邮件地址
DocumentRoot "/var/www/html" --网站目录

# 设置DocumentRoot指定目录的属性
<Directory "/var/www/html">   # 网站容器开始标识
  Options Indexes FollowSymLinks   # 找不到主页时,以目录的方式呈现,并允许链接到网站根目录以外
  AllowOverride None                # none不使用.htaccess控制,all允许
  Require all granted                 # granted表示运行所有访问,denied表示拒绝所有访问
</Directory>    # 容器结束
DirectoryIndex index.html       # 定义主页文件,当访问到网站目录时如果有定义的主页文件,网站会自动访问
AddDefaultCharset UTF-8      # 字符编码,如果中文的话,有可能需要改为gb2312或者gbk,因你的网站文件的默认编码而异

正在加载评论...