httpd编译安装
官網:http://httpd.apache.org/ ?
包:httpd-2.4.20.tar.bz2 ? ??
注釋:此處只考慮 2.4+ 的安裝與配置,基于CentOS 6 和 CentOS 7。 ?
??
(1)環境準備。 ?
? ? ~]# yum -y install gcc gcc-c++ apr-devel apr-util-devel pcre pcre-devel openssl openssl-devel ?
? ? ~]# tar -axf httpd-2.4.20.tar.bz2 ?
? ? ~]# cd httpd-2.4.20/ ?
??
(2)注意事項。 ?
? ? CentOS 6:注意事項 ?
? ? ? ? apr 與 apr-util 官網下載地址:http://apr.apache.org/download.cgi ?
? ? ? ? 版本要求: ?
? ? ? ? ? ? (1) apr ? ? ? ? ? ? version >= 1.4+ ?
? ? ? ? ? ? ? ? ~]# ./configure ?--prefix=/usr/local/apr ?
? ? ? ? ? ? ? ? ~]# make && make install ?
??
? ? ? ? ? ? (2) apr-util ? ? ? ?version >= 1.4+ ?
? ? ? ? ? ? ? ? ~]# ./configure ?--prefix=/usr/local/apr-util ?--with-apr=/usr/local/apr ?
? ? ? ? ? ? ? ? ~]# make && make install ?
??
(3)編譯安裝。 ?
? ? CentOS 6: ?
? ? ? ? ? ? ~]# ./configure --prefix=/usr/local/httpd --sysconfdir=/etc/httpd --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=all --enable-mpms-shared=all --with-pcre --with-libxml2 --enable-cgi ?--with-mpm=prefork ?
? ? CentOS 7: ?
? ? ? ? ? ? ~]# ? ./configure --prefix=/usr/local/httpd --sysconfdir=/etc/httpd --enable-modules=all --enable-mpms-shared=all --with-pcre --with-libxml2 --enable-cgi ?--with-mpm=prefork ?
??
? ? ~]# make && make install ?
??
? ? 注釋: ?
? ? ? ? (1)--enable-mods-shared=all --enable-mods-static=all 只能選擇一個,選擇了 shared 之后還可以選擇部分 static。(非必選) ?
? ? ? ? (2) --enable-load-all-modules 開啟所有的選項,不要使用,開啟了所有的會存在一些沖突,當需要的時候手動開啟即可。 ?
? ? ? ? (2)--enable-cgi 為模塊。--with-pcre --with-libxml2 為擴展。(非必選) ?
? ? ? ? (3)--with-mpm=prefork 指定默認工作模型。(非必選) ?
? ? ? ? (4)--with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util ?為 CentOS 6 系統的依賴。(CentOS 6 必選) ?
??
? ? 查看編譯了那些模塊: ?
? ? ? ? ? ? ~]# ls /usr/local/httpd/modules ?
??
? ? 查看加載了那些模塊: ?
? ? ? ? ? ? ~]# /usr/local/httpd/bin/httpd -M ?
=============================================== ?
常用選項解釋: ?
Configuration: ?
? ? -h, --help ? ? ? ? ? ? 顯示幫助文檔并退出 ?
??
Installation directories: ?
? --prefix=PREFIX ? ? ? ? 指定安裝路徑 ?
??
Fine tuning of the installation directories: ?
? ? --sysconfdir=DIR ? ? ? ?指定配置文件路徑 ?
??
Optional Features: ?
? --enable-load-all-modules ? ? 開啟所有的加載模塊 ?
? --enable-modules=MODULE-LIST ?開啟模塊 | "all" |"most" | "few" | "none" | "reallyall" ?
? --enable-mods-shared=MODULE-LIST ? ?共享模塊 |"all" | "most" | "few" | "reallyall" ?
? --enable-mods-static=MODULE-LIST ? 靜態模塊 |"all" | "most" | "few" | "reallyall" ?
? --enable-ssl ? ? ? ? ? ?SSL/TLS :構建 https ?
? --enable-mpms-shared=MPM-LIST ? ?共享模塊 | "all" ?
? --enable-rewrite ? ? ? ?url 重寫 ?
? --enable-vhost-alias ? ?虛擬主機 ?
? --enable-proxy-fcgi ? ? FastCGI 模塊 ?
? --enable-so ? ? ? ? ? ?允許運行時加載DSO模塊 ?
??
Optional Packages: ?
? ? --with-apr=PATH ? ? ? ? prefix for installed APR or the full path to apr-config ?
? ? --with-apr-util=PATH ? ?prefix for installed APU or the full path to ?apu-config ?
? ? --with-mpm=MPM ? ? ? ?指定apache默認工作模式:MPM={event|worker|prefork|winnt} ?
? ? --with-pcre=PATH ? ? ? ?perl語言兼容正則表達式)是一個用C語言編寫的正則表達式函數庫。 ?
? ? --with-libxml2=PATH ? ? Libxml2 是一個xml c語言版的解析器,還支持c++、PHP、Pascal、Ruby、Tcl等語言的綁定 ?
??
======================================================== ?
系統服務,啟動,庫,環境變量等設置。 ?
??
(1)測試是否正常。 ?
? ? ? ? 自帶啟動腳本: ?
? ? ? ? ? ? /usr/local/httpd/bin/apachectl (start | stop | restart | graceful | graceful-stop) ?
? ? ? ? 查看端口80是否被監聽: ?
? ? ? ? ? ? ss -tnl ?
??
(2)加入環境變量 ?
? ? 臨時生效: ?
? ? ? ? ~]# export PATH=/usr/local/httpd/bin:$PATH ?
??
? ? 永久生效: ?
? ? ? ? ~]# vim /etc/profile.d/httpd.sh ?
? ? ? ? ? ?export PATH=/usr/local/httpd/bin:$PATH ?
? ? ? ? ~]# source /etc/profile.d/httpd.sh ?
??
? ? 測試:(apachectl 現在是一個命令) ?
? ? ? ? ~]# apachectl (start | stop | restart | graceful | graceful-stop) ?
??
(3)導出庫文件: ?
? ? ? ? ~]# ln -s /usr/local/httpd/include /usr/include/httpd ?
??
(4)導出man手冊 ?
? ? CentOS 6: ?
? ? ? ? ~]# vim /etc/man.config ?
? ? CentOS 7: ?
? ? ? ? ~]# vi /etc/man_db.conf ?
??
? ? 寫入: ?
? ? ? ? MANPATH /usr/local/httpd/man ?
??
??
(5)服務腳本文件 ?
? ? CentOS 6:新加啟動腳本。 ?
~]# vi /etc/rc.d/init.d/httpd ?
-------------------------------------start---------------------------------------------- ?
#!/bin/bash ?
# ?
# httpd ? ? ? ?Startup script for the Apache HTTP Server ?
# ?
# chkconfig: - 85 15 ?
# description: The Apache HTTP Server is an efficient and extensible ?\ ?
# ? ? ? ? ?server implementing the current HTTP standards. ?
# processname: httpd ?
# config: /etc/httpd/conf/httpd.conf ?
# config: /etc/sysconfig/httpd ?
# pidfile: /var/run/httpd/httpd.pid ?
# ?
### BEGIN INIT INFO ?
# Provides: httpd ?
# Required-Start: $local_fs $remote_fs $network $named ?
# Required-Stop: $local_fs $remote_fs $network ?
# Should-Start: distcache ?
# Short-Description: start and stop Apache HTTP Server ?
# Description: The Apache HTTP Server is an extensible server ??
# ?implementing the current HTTP standards. ?
### END INIT INFO ?
??
# Source function library. ?
. /etc/rc.d/init.d/functions ?
??
if [ -f /etc/sysconfig/httpd ]; then ?
? ? ? ? . /etc/sysconfig/httpd ?
fi ?
??
# Start httpd in the C locale by default. ?
HTTPD_LANG=${HTTPD_LANG-"C"} ?
??
# This will prevent initlog from swallowing up a pass-phrase prompt if ?
# mod_ssl needs a pass-phrase from the user. ?
INITLOG_ARGS="" ?
??
# Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server ?
# with the thread-based "worker" MPM; BE WARNED that some modules may not ?
# work correctly with a thread-based MPM; notably PHP will refuse to start. ?
??
# Path to the apachectl script, server binary, and short-form for messages. ?
apachectl=/usr/local/httpd/bin/apachectl ?
httpd=${HTTPD-/usr/local/httpd/bin/httpd} ?
prog=httpd ?
pidfile=${PIDFILE-/usr/local/httpd/logs/httpd.pid} ?
lockfile=${LOCKFILE-/var/lock/subsys/httpd} ?
RETVAL=0 ?
STOP_TIMEOUT=${STOP_TIMEOUT-10} ?
??
# The semantics of these two functions differ from the way apachectl does ?
# things -- attempting to start while running is a failure, and shutdown ?
# when not running is also a failure. ?So we just do it the way init scripts ?
# are expected to behave here. ?
start() { ?
? ? ? ? echo -n $"Starting $prog: " ?
? ? ? ? LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS ?
? ? ? ? RETVAL=$? ?
? ? ? ? echo ?
? ? ? ? [ $RETVAL = 0 ] && touch ${lockfile} ?
? ? ? ? return $RETVAL ?
} ?
??
# When stopping httpd, a delay (of default 10 second) is required ?
# before SIGKILLing the httpd parent; this gives enough time for the ?
# httpd parent to SIGKILL any errant children. ?
stop() { ?
? ? echo -n $"Stopping $prog: " ?
? ? killproc -p ${pidfile} -d ${STOP_TIMEOUT} $httpd ?
? ? RETVAL=$? ?
? ? echo ?
? ? [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile} ?
} ?
reload() { ?
? ? echo -n $"Reloading $prog: " ?
? ? if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then ?
? ? ? ? RETVAL=6 ?
? ? ? ? echo $"not reloading due to configuration syntax error" ?
? ? ? ? failure $"not reloading $httpd due to configuration syntax error" ?
? ? else ?
? ? ? ? # Force LSB behaviour from killproc ?
? ? ? ? LSB=1 killproc -p ${pidfile} $httpd -HUP ?
? ? ? ? RETVAL=$? ?
? ? ? ? if [ $RETVAL -eq 7 ]; then ?
? ? ? ? ? ? failure $"httpd shutdown" ?
? ? ? ? fi ?
? ? fi ?
? ? echo ?
} ?
??
# See how we were called. ?
case "$1" in ?
? start) ?
? ? start ?
? ? ;; ?
? stop) ?
? ? stop ?
? ? ;; ?
? status) ?
? ? ? ? status -p ${pidfile} $httpd ?
? ? RETVAL=$? ?
? ? ;; ?
? restart) ?
? ? stop ?
? ? start ?
? ? ;; ?
? condrestart|try-restart) ?
? ? if status -p ${pidfile} $httpd >&/dev/null; then ?
? ? ? ? stop ?
? ? ? ? start ?
? ? fi ?
? ? ;; ?
? force-reload|reload) ?
? ? ? ? reload ?
? ? ;; ?
? graceful|help|configtest|fullstatus) ?
? ? $apachectl $@ ?
? ? RETVAL=$? ?
? ? ;; ?
? *) ?
? ? echo $"Usage: $prog {start|stop|restart|condrestart|try-restart|force-reload|reload|status|fullstatus|graceful|help|configtest}" ?
? ? RETVAL=2 ?
esac ?
??
exit $RETVAL ?
---------------------------------------------------end------------------------------------------------ ?
??
??
CentOS 7 新加啟動腳本: ?
~]# vi ??
---------------------------------------------------start------------------------------------------------ ?
??
---------------------------------------------------end------------------------------------------------ ?
??
??
(6)開機啟動 ?
CentOS 6: ?
? ? ~]# chkconfig --add httpd ?
? ? ~]# chkconfig --level 345 httpd on ?
? ? ~]# chkconfig --list httpd ?
? ? ? ? httpd ? ? ? ? ?0:off ? 1:off ? 2:off ? 3:on ? ?4:on ? ?5:on ? ?6:off ?
??
CentOS 7: ?
? ? ??
??
(7)系統啟動與停止 ?
? ? CentOS 6: ?
? ? ? ? service httpd (start | stop | restart) ?
? ? CentOS 7: ?
? ? ? ? systemctl (start | stop | restart) httpd.service ?
??
(7)語法測試 ?
? ? httpd -t ?
轉載于:https://blog.51cto.com/echoroot/1948886
總結
- 上一篇: View的Measure流程总结
- 下一篇: vue学习记录: 遇到过的问题记录