您好,登錄后才能下訂單哦!
一、官方的httpd安裝腳本
[root@textbox ~]# rpm -q --scripts httpd
preinstall scriptlet (using /bin/sh):
# Add the "apache" group and user
/usr/sbin/groupadd -g 48 -r apache 2> /dev/null || :
/usr/sbin/useradd -c "Apache" -u 48 -g apache \
-s /sbin/nologin -r -d /usr/share/httpd apache 2> /dev/null || :
postinstall scriptlet (using /bin/sh):
if [ $1 -eq 1 ] ; then
# Initial installation
systemctl preset httpd.service htcacheclean.service >/dev/null 2>&1 || :
fi
preuninstall scriptlet (using /bin/sh):
if [ $1 -eq 0 ] ; then
# Package removal, not upgrade
systemctl --no-reload disable httpd.service htcacheclean.service > /dev/null 2>&1 || :
systemctl stop httpd.service htcacheclean.service > /dev/null 2>&1 || :
fi
postuninstall scriptlet (using /bin/sh):
systemctl daemon-reload >/dev/null 2>&1 || :
# Trigger for conversion from SysV, per guidelines at:
# https://fedoraproject.org/wiki/Packaging:ScriptletSnippets#Systemd
posttrans scriptlet (using /bin/sh):
test -f /etc/sysconfig/httpd-disable-posttrans || \
/bin/systemctl try-restart httpd.service htcacheclean.service >/dev/null 2>&1 || :
二、httpd的systemd文件
參考:http://www.jinbuguo.com/systemd/systemd.kill.html
分為3部分:[Unit]、[Service]和[Install]
[root@textbox system]# cat httpd.service
[Unit]
Description=The Apache HTTP Server #描述信息
After=network.target remote-fs.target nss-lookup.target #當(dāng)前unit應(yīng)當(dāng)晚于哪些unit啟動(dòng)
Documentation=man:httpd(8) #man手冊
Documentation=man:apachectl(8) #man手冊
[Service]
Type=notify #unit進(jìn)程啟動(dòng)類型,notify為在啟動(dòng)完成后會(huì)發(fā)送一個(gè)通知消息。還需要配合 NotifyAccess 來讓 Systemd 接收消息
EnvironmentFile=/etc/sysconfig/httpd #環(huán)境配置文件
ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND #指明啟動(dòng)unit要運(yùn)行命令或腳本的絕對路徑
ExecReload=/usr/sbin/httpd $OPTIONS -k graceful #指明reloadunit要運(yùn)行的命令或腳本絕對路徑
ExecStop=/bin/kill -WINCH ${MAINPID} #指明停止unit要運(yùn)行的命令或腳本
# We want systemd to give httpd some time to finish gracefully, but still want
# it to kill httpd after TimeoutStopSec if something went wrong during the
# graceful stop. Normally, Systemd sends SIGTERM signal right after the
# ExecStop, which would kill httpd. We are sending useless SIGCONT here to give
# httpd time to finish.
KillSignal=SIGCONT #設(shè)置殺死進(jìn)程的 第一步使用什么信號(hào)(見上文)SIGCONT是18號(hào)信號(hào),表示繼續(xù)
PrivateTmp=true #啟動(dòng)服務(wù)時(shí)會(huì)在/tmp目錄生成一個(gè)類似system-private-xxx的文件,存在臨時(shí)文件
[Install]
WantedBy=multi-user.target #:被哪些units所依賴,弱依賴
三、一鍵安裝腳本
參考:https://blog.51cto.com/14012942/2427694
四、最終自己寫的system文件
[root@textbox ~]# cat /usr/lib/systemd/system/httpd.service
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=simple
EnvironmentFile=/etc/httpd/httpd.conf
ExecStart=/apps/httpd24/bin/apachectl -k start -DFOREGROUND
ExecReload=/apps/httpd24/bin/apachectl -k graceful
ExecStop=/usr/bin/kill -WINCH ${MAINPID}
PrivateTmp=true
[Install]
WantedBy=multi-user.target
效果:
[root@textbox ~]# systemctl start httpd
[root@textbox ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since Wed 2019-09-04 21:25:16 CST; 1min 51s ago
Main PID: 35575 (apachectl)
CGroup: /system.slice/httpd.service
├─35575 /bin/sh /apps/httpd24/bin/apachectl -k start -DFOREGROUND
├─35577 /apps/httpd24/bin/httpd -k start -DFOREGROUND
├─35593 /apps/httpd24/bin/httpd -k start -DFOREGROUND
├─35594 /apps/httpd24/bin/httpd -k start -DFOREGROUND
└─35595 /apps/httpd24/bin/httpd -k start -DFOREGROUND
Sep 04 21:25:16 textbox systemd[1]: Started The Apache HTTP Server.
Sep 04 21:25:31 textbox apachectl[35575]: AH00558: httpd: Could not reliably determine the server's fully qual...ssage
Hint: Some lines were ellipsized, use -l to show in full.
[root@textbox ~]# systemctl stop httpd
[root@textbox ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: inactive (dead)
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。