開機啓動(新)

一. 寫在前面

centos7建議使用systemctl來管理服務的自啓動,它可以知足以前service和chkconfig的功能
  1. systemd有系統和用戶區分;系統(/user/lib/systemd/system/)、用戶(/etc/lib/systemd/user/)
  2. 通常系統管理員手工建立的單元文件建議存放在/etc/systemd/system/目錄下面
  3. 建立service文件
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target
  
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
  
[Install]
WantedBy=multi-user.target
  1. 配置參數說明
    [Unit]

    Description : 服務的簡單描述nginx

    Documentation : 服務文檔web

    Before、After:定義啓動順序。Before=xxx.service,表明本服務在xxx.service啓動以前啓動。After=xxx.service,表明本服務在xxx.service以後啓動。centos

    Requires:這個單元啓動了,它須要的單元也會被啓動;它須要的單元被中止了,這個單元也中止了。tomcat

    Wants:推薦使用。這個單元啓動了,它須要的單元也會被啓動;它須要的單元被中止了,對本單元沒有影響。jvm

    [Service]socket

    Type=simple(默認值):systemd認爲該服務將當即啓動。服務進程不會fork。若是該服務要啓動其餘服務,不要使用此類型啓動,除非該服務是socket激活型。post

    Type=forking:systemd認爲當該服務進程fork,且父進程退出後服務啓動成功。對於常規的守護進程(daemon),除非你肯定此啓動方式沒法知足需求,使用此類型啓動便可。使用此啓動類型應同時指定 PIDFile=,以便systemd可以跟蹤服務的主進程。測試

    Type=oneshot:這一選項適用於只執行一項任務、隨後當即退出的服務。可能須要同時設置 RemainAfterExit=yes 使得 systemd 在服務進程退出以後仍然認爲服務處於激活狀態。ui

    Type=notify:與 Type=simple 相同,但約定服務會在就緒後向 systemd 發送一個信號。這一通知的實現由 libsystemd-daemon.so 提供。centos7

    Type=dbus:若以此方式啓動,當指定的 BusName 出如今DBus系統總線上時,systemd認爲服務就緒。

    Type=idle: systemd會等待全部任務(Jobs)處理完成後,纔開始執行idle類型的單元。除此以外,其餘行爲和Type=simple 相似。

    PIDFile:pid文件路徑

    ExecStart:指定啓動單元的命令或者腳本,ExecStartPre和ExecStartPost節指定在ExecStart以前或者以後用戶自定義執行的腳本。Type=oneshot容許指定多個但願順序執行的用戶自定義命令。

    ExecReload:指定單元中止時執行的命令或者腳本。

    ExecStop:指定單元中止時執行的命令或者腳本。

    PrivateTmp:True表示給服務分配獨立的臨時空間

    Restart:這個選項若是被容許,服務重啓的時候進程會退出,會經過systemctl命令執行清除並重啓的操做。

    RemainAfterExit:若是設置這個選擇爲真,服務會被認爲是在激活狀態,即便因此的進程已經退出,默認的值爲假,這個選項只有在Type=oneshot時須要被配置。

    [Install]

    Alias:爲單元提供一個空間分離的附加名字。

    RequiredBy:單元被容許運行須要的一系列依賴單元,RequiredBy列表從Require得到依賴信息。

    WantBy:單元被容許運行須要的弱依賴性單元,Wantby從Want列表得到依賴信息。

    Also:指出和單元一塊兒安裝或者被協助的單元。

    DefaultInstance:實例單元的限制,這個選項指定若是單元被容許運行默認的實例。

  2. 經常使用操做
systemctl daemon-reload 修改配置後重載是配置生效
systemctl enable nginx.service 開機啓用服務
systemctl disable nginx.service 禁用開機啓動
systemctl is-enabled nginx.service 判斷服務是否開機狀態
systemctl list-unit-files | grep enabled 查看開機啓動狀態服務列表
systemctl start nginx.service 啓動一個服務
systemctl stop postfix.service 關閉一個服務
systemctl restart nginx.service 重啓一個服務
systemctl status postfix.service 顯示一個服務的狀態

二. tomcat

  1. 環境準備

操做系統:CentOS 7(64位)
已安裝JDK,並配置好環境變量
已安裝tomcat,可手動啓動,安裝路徑:/opt/tomcat/(可自定義)

  1. 建立tomcat啓動腳本setenv.sh在/bin路徑下

catalina.sh在執行的時候會調用同級路徑下的setenv.sh來設置額外的環境變量,所以須要在/opt/tomcat/bin路徑下建立setenv.sh文件。

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_121
export CATALINA_HOME=/opt/tomcat
export CATALINA_BASE=/opt/tomcat
#設置Tomcat的PID文件
CATALINA_PID="$CATALINA_BASE/bin/tomcat.pid"
#添加JVM選項
JAVA_OPTS="-server -XX:PermSize=256M -XX:MaxPermSize=1024m -Xms512M -Xmx1024M -XX:MaxNewSize=256m"
  1. 在/usr/lib/systemd/system路徑下添加tomcat.service文件

==注意:路徑都使用絕對路徑。==

[Unit]
Description=Tomcat8
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking

PIDFile=/opt/tomcat/bin/tomcat.pid
ExecStart=/opt/tomcat/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
  1. 重載配置的服務
systemctl daemon-reload
  1. 設置開機啓動
systemctl enable tomcat.service
  1. 重啓後測試結果

三. nginx

  1. 在/usr/lib/systemd/system路徑下添加nginx.service文件
[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target
  1. 重載配置的服務
systemctl daemon-reload
  1. 設置開機啓動
systemctl enable nginx.service
  1. 重啓後測試結果
相關文章
相關標籤/搜索