从源码编译apache2

Web、Mail、Ftp、DNS、Proxy、VPN、Samba、LDAP 等基础网络服务
回复
头像
cannot
帖子: 80
注册时间: 2005-04-28 1:22

从源码编译apache2

#1

帖子 cannot » 2005-05-23 10:18

从源码编译apache2,如何让它开机自动启动?
头像
oneleaf
论坛管理员
帖子: 10455
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

#2

帖子 oneleaf » 2005-05-23 10:36

为什么要这样做?直接使用新立得安装apache2不就好了?
当净其意如虚空,远离妄想及诸取,令心所向皆无碍
头像
firehare
帖子: 2625
注册时间: 2005-04-10 16:54
来自: 温州大学
联系:

Re: 从源码编译apache2

#3

帖子 firehare » 2005-05-23 15:34

cannot 写了:从源码编译apache2,如何让它开机自动启动?
是啊!
如果这样的话,
你以后的升级,安全更新不都要手动去做吗?
建议使用软件库中的包文件进行安装!!
我心无畏,源自于我心无知。
图片
头像
cannot
帖子: 80
注册时间: 2005-04-28 1:22

#4

帖子 cannot » 2005-05-24 11:23

自己搞定,从 deb 安装apache2,把 /etc/init.d/apache2备份出来,再卸载 apache 的 deb ,根据自己的情况改一下 /etc/init.d/apache2 即可。

楼上两位的,谢谢你们的回答,不过我觉得自己维护一些自己最需要呵护的软件并没有什么问题,其它的软件当然是用 apt 来维护。

如果有人告诉我服务的脚本在 /etc/init.d/ 里面,也许我不会绕那么多弯路了。
头像
firehare
帖子: 2625
注册时间: 2005-04-10 16:54
来自: 温州大学
联系:

#5

帖子 firehare » 2005-05-24 12:42

cannot 写了:自己搞定,从 deb 安装apache2,把 /etc/init.d/apache2备份出来,再卸载 apache 的 deb ,根据自己的情况改一下 /etc/init.d/apache2 即可。

楼上两位的,谢谢你们的回答,不过我觉得自己维护一些自己最需要呵护的软件并没有什么问题,其它的软件当然是用 apt 来维护。

如果有人告诉我服务的脚本在 /etc/init.d/ 里面,也许我不会绕那么多弯路了。
这个问题我想同楼上的兄弟探讨一下!
你所用的并非一般软件而是服务软件
这种类型的软件有两个很重要的要求就是稳定及保持服务尽可能的连续
那么从稳定来说
DEB包是经过了N名牛人的制作及测试(这个很重要)后才发放出来的
因此它是可靠的,运行起来同整个系统的兼容性(或说它同系统的融合度)是不言而喻的,此为其一
从保持服务的连续而言
当该服务软件出现漏洞需要更新时,DEB包可以保持其更新的正确性,即不会在更新后出现一系统的问题,甚至服务起不来。而不用包文件的话,则可能需要重新进行编译,出错的可能性极大。用DEB包的话,更新完成之后,只需要运行脚本 /etc/init.d/apache2 restart 即可,服务中断的时候几乎可以忽略不计。

以上观点仅供楼主兄弟参考!
有什么想法我们可以讨论讨论
我心无畏,源自于我心无知。
图片
头像
cannot
帖子: 80
注册时间: 2005-04-28 1:22

#6

帖子 cannot » 2005-05-24 13:37

firehare 写了:
cannot 写了:自己搞定,从 deb 安装apache2,把 /etc/init.d/apache2备份出来,再卸载 apache 的 deb ,根据自己的情况改一下 /etc/init.d/apache2 即可。

楼上两位的,谢谢你们的回答,不过我觉得自己维护一些自己最需要呵护的软件并没有什么问题,其它的软件当然是用 apt 来维护。

如果有人告诉我服务的脚本在 /etc/init.d/ 里面,也许我不会绕那么多弯路了。
这个问题我想同楼上的兄弟探讨一下!
你所用的并非一般软件而是服务软件
这种类型的软件有两个很重要的要求就是稳定及保持服务尽可能的连续
那么从稳定来说
DEB包是经过了N名牛人的制作及测试(这个很重要)后才发放出来的
因此它是可靠的,运行起来同整个系统的兼容性(或说它同系统的融合度)是不言而喻的,此为其一
从保持服务的连续而言
当该服务软件出现漏洞需要更新时,DEB包可以保持其更新的正确性,即不会在更新后出现一系统的问题,甚至服务起不来。而不用包文件的话,则可能需要重新进行编译,出错的可能性极大。用DEB包的话,更新完成之后,只需要运行脚本 /etc/init.d/apache2 restart 即可,服务中断的时候几乎可以忽略不计。

以上观点仅供楼主兄弟参考!
有什么想法我们可以讨论讨论
你说得是没有错啦,不过如果我想最终成为你所说的那种牛人的N分之一,还不是要一步步来学习,有不懂的还不是得一个个问题问?
头像
oneleaf
论坛管理员
帖子: 10455
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

#7

帖子 oneleaf » 2005-05-24 14:05

呵呵,其实使用Deb的apache2安装的设置跟使用自己编译的设置好多都不一样,并且Ubuntu的apache2为了方便安装插件,改了很多配置。使用自己编译的apache2不是不可以,只是以后会麻烦很多,例如php/fastcgi等扩展安装都比较麻烦,不过也是可以手工增加到httpd.conf。顺便说一句,使用Ubuntu的配置不再使用httpd.conf使用apache2.conf.

呵呵,版主也是善意提醒,只是希望少走弯路。最好先搞清楚apache2在ubuntu中的工作方式,在来编译,这样也许容易很多。
当净其意如虚空,远离妄想及诸取,令心所向皆无碍
头像
cannot
帖子: 80
注册时间: 2005-04-28 1:22

#8

帖子 cannot » 2005-05-24 16:09

我能理解站长和版主的善意帮助,在此衷心感谢。
我也是想尽快成长起来,然后帮助更多人通过ubuntu获得更好的效益。
另外我还在考虑为客户在一定范围内部署ubuntu,当然很多应用都需要自己编写,因此对一些应用程序的tweak会比较多。
对于我来说,选择linux并不是因为资金上的问题,而是希望能够掌控更多的东西。所以和许多用户相比有些另类把。

不管怎么说,我不应该对firehare版主有什么抱怨啦,对不起。
也谢谢oneleaf老大说的技术上的问题,我会注意。

办论坛不容易,办技术性论坛更难,我会一直支持你们的。
头像
firehare
帖子: 2625
注册时间: 2005-04-10 16:54
来自: 温州大学
联系:

#9

帖子 firehare » 2005-05-24 16:53

楼上的兄弟太客气了!
只是相互讨论而已
主要是因为我是一名学校的网管
下面的用户很多,近万个吧
只要有点什么问题,电话就会响个不停
所以对于稳定和连续看得比较重!

另:
我基本是偏应用型的,不象一叶兄那样是偏系统型的
(不过个人觉得一叶兄应用方面也很强)
所以自以为不可能做到Ubuntu那帮牛人那样好,
觉得系统方面既然有人做好了,就不重复劳动了
节省下来的时间就去做应用方面的东东了
毕竟从本质上来说,我还是一个比较懒的人,呵呵!
我心无畏,源自于我心无知。
图片
头像
jerysun
帖子: 36
注册时间: 2005-07-13 20:25
来自: 山东
联系:

#10

帖子 jerysun » 2005-07-13 23:32

哪个兄弟贴一下 /etc/init.d/apache的内容,我刚自己编译了apache&php,想把Apache设成开机启动。
Ubuntu 8.04
Sempron 2800+/256M×2/80GSATA/MX400
yongyi
帖子: 3025
注册时间: 2005-05-07 23:57
联系:

#11

帖子 yongyi » 2005-07-13 23:52

代码: 全选

#!/bin/sh -e
#
# apache2		This init.d script is used to start apache2.
#			It basically just calls apache2ctl.

ENV="env -i LANG=C PATH=/usr/local/bin:/usr/bin:/bin"

#[ `ls -1 /etc/apache2/sites-enabled/ | wc -l | sed -e 's/ *//;'` -eq 0 ] && \
#echo "You haven't enabled any sites yet, so I'm not starting apache2." && \
#echo "To add and enable a host, use addhost and enhost." && exit 0

#edit /etc/default/apache2 to change this.
NO_START=0

set -e
if [ -x /usr/sbin/apache2 ] ; then
	HAVE_APACHE2=1
else
	exit 0
fi

. /lib/lsb/init-functions

test -f /etc/default/rcS && . /etc/default/rcS
test -f /etc/default/apache2 && . /etc/default/apache2
if [ "$NO_START" != "0" -a "$1" != "stop" ]; then 
        [ "$VERBOSE" != no ] && log_warning_msg "Not starting apache2 - edit /etc/default/apache2 and change NO_START to be 0.";
        exit 0;
fi

APACHE2="$ENV /usr/sbin/apache2"
APACHE2CTL="$ENV /usr/sbin/apache2ctl"

apache_stop() {
	PID=""
	PIDFILE=""
	# let's try to find the pid file
	# apache2 allows more than PidFile entry in the config but only
	# the last found in the config is used
	for PFILE in `grep ^PidFile /etc/apache2/* -r | awk '{print $2}'`; do
		PIDFILE="$PFILE"
		if [ -e "$PIDFILE" ]; then
			PID=`cat $PIDFILE`
		fi
	done

	if `apache2 -t > /dev/null 2>&1`; then
		# if the config is ok than we just stop normaly

		if [ -e "$PIDFILE" ]
		then
			PID=`cat $PIDFILE`

			$APACHE2 -k stop

			CNT=0
			while [ 1 ]
			do
				CNT=$(expr $CNT + 1)
		
				[ ! -d /proc/$PID ] && break

				if [ $CNT -gt 60 ]
				then
					if [ "$VERBOSE" != no ]; then
						echo " ... failed!"
						echo "Apache2 failed to honor the stop command, please investigate the situation by hand."
					fi
					return 1
				fi

				sleep 1
			done
		else
			if [ "$VERBOSE" != no ]; then
				echo -n " ... no pidfile found! not running?"
			fi
		fi

	else
		# if we are here something is broken and we need to try
		# to exit as nice and clean as possible

		# if pidof is null for some reasons the script exits automagically
		# classified as good/unknown feature
		PIDS=`pidof apache2` || true

		REALPID=0
		# if there is a pid we need to verify that belongs to apache2
		# for real
		for i in $PIDS; do
			if [ "$i" = "$PID" ]; then
				# in this case the pid stored in the
				# pidfile matches one of the pidof apache
				# so a simple kill will make it
				REALPID=1
			fi
		done

		if [ $REALPID = 1 ]; then
			# in this case it is everything nice and dandy
			# and we kill apache2
			kill $PID
		else
			# this is the worst situation... just kill all of them
			#for i in $PIDS; do
			#	kill $i
			#done
			# Except, we can't do that, because it's very, very bad
			if [ "$VERBOSE" != no ]; then
                                echo " ... failed!"
			        echo "You may still have some apache2 processes running.  There are"
 			        echo "processes named 'apache2' which do not match your pid file,"
			        echo "and in the name of safety, we've left them alone.  Please review"
			        echo "the situation by hand."
                        fi
                        return 1
		fi
	fi
}

# Stupid hack to keep lintian happy. (Warrk! Stupidhack!).
case $1 in
	start)
		[ -f /etc/apache2/httpd.conf ] || touch /etc/apache2/httpd.conf
		#ssl_scache shouldn't be here if we're just starting up.
		[ -f /var/run/apache2/ssl_scache ] && rm -f /var/run/apache2/*ssl_scache*
		log_begin_msg "Starting web server (Apache2)..."
		if $APACHE2CTL startssl; then
                        log_end_msg 0
                else
                        log_end_msg 1
                fi
	;;
	stop)
		log_begin_msg "Stopping web server (Apache2)..."
		if apache_stop; then
                        log_end_msg 0
                else
                        log_end_msg 1
                fi
	;;
	reload)
		log_begin_msg "Reloading web server config..."
		if $APACHE2CTL graceful $2 ; then
                        log_end_msg 0
                else
                        log_end_msg 1
                fi
	;;
	restart | force-reload)
		log_begin_msg "Forcing reload of web server  (Apache2)..."
		if ! apache_stop; then
                        log_end_msg 1
                fi
		if $APACHE2CTL startssl; then
                        log_end_msg 0
                else
                        log_end_msg 1
                fi
	;;
	*)
		log_success_msg "Usage: /etc/init.d/apache2 start|stop|restart|reload|force-reload"
	;;
esac

独自看一看大海
总想起身边走在路上的朋友
Lenovo E290-420[Celeron-M420/256M/60G/Intel GMA950]
头像
yang119345
帖子: 570
注册时间: 2005-06-19 14:22
来自: 上海
联系:

#12

帖子 yang119345 » 2005-07-17 23:54

:D 谢谢至少我没走多少弯路,嘿嘿。真的谢谢了~ :P

是不是把上面的脚本复制到/etc/init.d/apache2就好了?
skycen
帖子: 15
注册时间: 2006-08-17 3:10

#13

帖子 skycen » 2006-10-20 16:16

感谢前辈们作出的尝试,我们后面的省得走弯路了
回复