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,因你的网站文件的默认编码而异