设为首页 收藏本站
查看: 904|回复: 0

[经验分享] Apache源码包添加启动脚本到系统服务

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-1-4 10:31:13 | 显示全部楼层 |阅读模式
手动编译apache源码包安装的话,apache是没有启动脚本的,也就是说用户不能通过简单的通过/etc/init.d/httpd(start|stop|restart)来启动/关闭/重新启动。
其实源码里已经有启动的脚本,我们要修改下即可,把Apache加入系统SysV服务中来。
在源码httpd-2.x.x/build/rpm中存在httpd.init    #httpd.ini就是apache启动脚本
拷贝命令如下:
cp httpd.init/etc/init.d/httpd
编辑该httpd文件:
#!/bin/bash
#
# Licensed to the ApacheSoftware Foundation (ASF) under one or more
# contributor licenseagreements.  See the NOTICE filedistributed with
# this work for additionalinformation regarding copyright ownership.
# The ASF licenses this fileto You under the Apache License, Version 2.0
# (the "License");you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required byapplicable law or agreed to in writing, software
# distributed under theLicense is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES ORCONDITIONS OF ANY KIND, either express or implied.
# See the License for thespecific language governing permissions and
# limitations under theLicense.
#
#
# httpd        Startup script for the Apache WebServer
#
# chkconfig: - 85 15     #可以改成chkconfig: 35 85 15
# description: The ApacheHTTP Server is an efficient and extensible \
#             server implementing the currentHTTP standards.
# processname: httpd
# pidfile: /var/run/httpd.pid
# config:/etc/sysconfig/httpd
#
### 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 andstop Apache HTTP Server
# Description: The ApacheHTTP Server is an extensible server
#  implementing the current HTTP standards.
### END INIT INFO
# Source function library.
. /etc/rc.d/init.d/functions
# What were we called?Multiple instances of the same daemon can be
# created by creatingsuitably named symlinks to this startup script
prog=$(basename $0 | sed -e's/^[SK][0-9][0-9]//')
if [ -f/etc/sysconfig/${prog} ]; then
        . /etc/sysconfig/${prog}
fi
# Start httpd in the C localeby default.
HTTPD_LANG=${HTTPD_LANG-"C"}
# This will prevent initlogfrom swallowing up a pass-phrase prompt if
# mod_ssl needs a pass-phrasefrom the user.
INITLOG_ARGS=""
# SetHTTPD=/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 athread-based MPM; notably PHP will refuse to start.
httpd=${HTTPD-/usr/local/apache/bin/httpd}
pidfile=${PIDFILE-/usr/local/apache/logs/${prog}.pid}
lockfile=${LOCKFILE-/var/lock/subsys/${prog}}
RETVAL=0


# check for 1.3 configuration
check13 () {
       CONFFILE=/usr/local/apache/conf/httpd.conf
       GONE="(ServerType|BindAddress|Port|AddModule|ClearModuleList|"
       GONE="${GONE}AgentLog|RefererLog|RefererIgnore|FancyIndexing|"
       GONE="${GONE}AccessConfig|ResourceConfig)"
       if grep -Eiq "^[[:space:]]*($GONE)" $CONFFILE; then
              echo
              echo 1>&2 " Apache 1.3 configurationdirectives found"
              echo 1>&2 " please read@docdir@/migration.html"
              failure "Apache 1.3 config directives test"
              echo
              exit 1
       fi
}

# The semantics of these twofunctions differ from the way apachectl does
# things -- attempting tostart while running is a failure, and shutdown
# when not running is also afailure.  So we just do it the way initscripts
# are expected to behavehere.
start() {
        echo -n $"Starting $prog: "
        check13 || exit 1
        LANG=$HTTPD_LANG daemon--pidfile=${pidfile} $httpd $OPTIONS
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch${lockfile}
        return $RETVAL
}
stop() {
       echo -n $"Stopping $prog: "
       killproc -p ${pidfile} -d 10 $httpd
       RETVAL=$?
       echo
       [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}
reload() {
       echo -n $"Reloading $prog: "
       check13 || exit 1
       killproc -p ${pidfile} $httpd -HUP
       RETVAL=$?
       echo
}

# See how we were called.
case "$1" in
  start)
       start
       ;;
  stop)
       stop
       ;;
  status)
        if ! test -f ${pidfile}; then
            echo $prog is stopped
            RETVAL=3
        else
            status -p ${pidfile} $httpd
            RETVAL=$?
        fi
        ;;
  restart)
       stop
       start
       ;;
  condrestart)
       if test -f ${pidfile} && status -p ${pidfile} $httpd>&/dev/null; then
              stop
              start
       fi
       ;;
  reload)
        reload
       ;;
  configtest)
        LANG=$HTTPD_LANG $httpd $OPTIONS -t
        RETVAL=$?
        ;;
  graceful)
        echo -n $"Gracefully restarting$prog: "
        LANG=$HTTPD_LANG $httpd $OPTIONS -k $@
        RETVAL=$?
        echo
        ;;
  *)
       echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|graceful|help|configtest}"
       exit 1
esac
exit $RETVAL
注意文件中有三处主要的地方需要修改下的:
httpd=${HTTPD-/usr/local/apache2/bin/httpd}
pidfile=${PIDFILE-/usr/local/apache2/logs/${prog}.pid}
CONFFILE=/usr/local/apache2/conf/httpd.conf
上面是我自己的路径请根据实际情况更改相应的路径!
然后运行如下命令:
ls–l httpd   #查看httpd是否有执行权限
chkmod+x httpd  #添加执行权限
chkconfig--add httpd   #添加httpd到系统服务
chkconfig--level 35 httpd on  #设置httpd运行级别为35,开机自动运行
这样一来,启动、停止、重启Apache就可以用以下方式了:
/etc/init.d/httpd start
/etc/init.d/httpd stop
/etc/init.d/httpd restart
servicehttpd start
servicehttpd status
servicehttpd stop
servicehttpd restart


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-160054-1-1.html 上篇帖子: Apache配置静态缓存 下篇帖子: 服务器最大连接数“server reached MaxClients setting,consider raising the Max Clients sett
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表