Linux下重新编译安装Apache服务器 (linux 重新编译安装apache)
Apache是一款开源的Web服务器软件,常常用于在Linux系统下搭建Web服务器。在使用过程中,偶尔会遇到一些问题,如无法通过yum更新最新版本、配置文件发生冲突、性能不佳等,这时候,重新编译安装Apache服务器可能是比较好的解决方法。
本文将为大家介绍在的步骤。
步骤一:卸载旧版本的Apache
在重新安装之前,需要先将旧版本的Apache卸载掉。一般来说,可以通过以下命令卸载:
sudo yum remove httpd
如果之前是通过源码安装的Apache,则需要先找到Apache的安装目录,将其删除,并且停止服务:
sudo /etc/init.d/httpd stop
sudo rm -rf /usr/local/apache2
步骤二:下载最新版本的Apache
从Apache官网(http://httpd.apache.org/)上下载最新的Apache源码包,下载后在Linux系统中进行解压(假设解压目录为:/usr/local/src/):
sudo tar xvfz httpd-2.4.46.tar.gz -C /usr/local/src/
步骤三:编译与安装Apache
进入解压后的目录,执行编译命令:
cd /usr/local/src/httpd-2.4.46
sudo ./configure –prefix=/usr/local/apache2 –enable-so –enable-ssl –with-ssl=/usr/local/openssl
编译过程中可能会看到一些警告信息,但可以忽略。执行make和make install命令进行安装:
sudo make
sudo make install
不同的安装参数会导致生成不同的安装目录。/usr/local/apache2是Apache的默认安装目录,可以根据需要改成别的路径。
步骤四:启动Apache
安装成功后,可以通过以下命令启动Apache服务:
sudo /usr/local/apache2/bin/apachectl start
也可以通过命令查看Apache的状态:
sudo /usr/local/apache2/bin/apachectl status
步骤五:设置自启动
为了使Apache能够在系统启动时自动启动,需要将Apache加入系统服务中。具体方法是创建一个service文件,在/etc/init.d目录中。
创建脚本文件/etc/init.d/httpd:
sudo nano /etc/init.d/httpd
将以下内容复制到文件中:
#!/bin/sh
#
# httpd Startup script for the Apache Web Server
#
# description: Apache is a World Wide Web server. It is used to serve \
# HTML files and CGI.
# processname: httpd
# pidfile: /usr/local/apache2/logs/httpd.pid
# config: /usr/local/apache2/conf/httpd.conf
#
# Source function library.
. /etc/rc.d/init.d/functions
# Start httpd in the C locale by default.
HTTPD_LANG=${HTTPD_LANG-“C”}
export LANG=$HTTPD_LANG
# Path to the apachectl script, server binary, and short-form for messages.
apachectl=/usr/local/apache2/bin/apachectl
httpd=${HTTPD-/usr/local/apache2/bin/httpd}
prog=httpd
RETVAL=0
start() {
echo -n $”Starting $prog: “
LANG=$HTTPD_LANG daemon –pidfile=${PIDFILE-/usr/local/apache2/logs/httpd.pid} $httpd $OPTIONS
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch ${LOCKFILE-/var/lock/subsys/httpd}
return $RETVAL
}
stop() {
echo -n $”Stopping $prog: “
killproc -p ${PIDFILE-/usr/local/apache2/logs/httpd.pid} $httpd
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f ${LOCKFILE-/var/lock/subsys/httpd} ${PIDFILE-/usr/local/apache2/logs/httpd.pid}
}
reload() {
echo -n $”Reloading $prog: “
if ! LANG=$HTTPD_LANG $apachectl graceful $OPTIONS ; then
RETVAL=$?
echo $”not reloading due to configuration syntax error”
flure $”not reloading $httpd due to configuration syntax error”
fi
echo
}
# Upgrade the binary with no downtime.
upgrade() {
echo -n $”Upgrading $prog: “
killproc -p ${PIDFILE-/usr/local/apache2/logs/httpd.pid} $httpd -USR2
RETVAL=$?
echo
}
# Tell httpd to gracefully restart in the C locale by default.
HTTPD_LANG=C
export LANG=$HTTPD_LANG
# See how we were called.
case “$1” in
start)
start
;;
stop)
stop
;;
status)
status $httpd
RETVAL=$?
;;
restart)
stop
start
;;
condrestart)
if [ -f ${PIDFILE-/usr/local/apache2/logs/httpd.pid} ] ; then
stop
start
fi
;;
reload)
reload
;;
graceful|help|configtest|fullstatus)
$apachectl $@
RETVAL=$?
;;
*)
echo $”Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}”
RETVAL=2
esac
exit $RETVAL
保存并退出。接下来,设置httpd文件的权限,使其可执行:
sudo chmod +x /etc/init.d/httpd
将httpd文件加入系统服务中:
sudo chkconfig –add httpd
至此,Apache已经安装成功,并且被设置为自启动。可以通过访问http://localhost/ 来测试Apache是否正常运行。
重新编译安装Apache服务器是解决一些Apache问题的有效方法,在此过程中,需要注意安装目录和编译参数的设置。为了方便起见,可以将Apache添加到系统服务中,实现开机自启动,提高了Apache的使用效率。