CentOS7 サービス登録 go

カテゴリー: 学習  閲覧数:298 配信日:2018-04-29 10:28


buildする「binary file」名を変更


buildする際、出力ファイル名変更する方法が分からない
・ファイル名自体を変更
・index.go → goweb.go

build実行


「goweb」バイナリファイルを出力
$ cd /var/www/◇◇/go-demo.w4c.work

$ go build goweb.go
▼/var/www/◇◇/go-demo.w4c.work/goweb

build結果を移動


「goweb」バイナリファイルを、/opt/ディレクトリ直下へ移動
$ sudo mv /var/www/◇◇/go-demo.w4c.work/goweb /opt/goweb
$ cd /opt
$ ls -l
合計 6356
-rwxrwxr-x  1 ★★ ★★ 6504539  4月 29 10:50 goweb
drwxr-xr-x. 2 root       root             6  3月 26  2015 rh


Unit定義ファイル作成


/etc/systemd/system/ の下にUnit定義ファイルを作成
$ sudo vi /etc/systemd/system/goweb.service
・「ExecStart = /opt/goweb」で、サービス起動コマンドとして「/opt/goweb」ファイルを指定
・「Restart = always」で、プロセスが異常終了した際は、サービスの再起動を行う
・「Type = simple」で、指定コマンドがフォアグラウンドで実行を継続する場合、コマンドを実行した らすぐに起動完了と判定する
[Unit]
Description = go web start

[Service]
ExecStart = /opt/goweb
Restart = always
Type = simple

[Install]
WantedBy = multi-user.target


Unit定義ファイル確認


UnitがServiceとして認識されたか確認
・今回はgoweb.serviceファイルを作成したので、ファイル名で検索してみる
$ sudo systemctl list-unit-files --type=service | grep goweb
goweb.service                                 disabled


サービス起動


自動起動on して start
・ここまでくれば、普通のサービスとして取扱可能

自動起動on
・enable
$ sudo systemctl enable goweb
Created symlink from /etc/systemd/system/multi-user.target.wants/goweb.service to /etc/systemd/system/goweb.service.


起動
・start
$ sudo systemctl start goweb

ステータス確認
$ sudo systemctl status
● ■■.vs.sakura.ne.jp
   State: degraded
    Jobs: 0 queued
  Failed: 1 units
   Since: 月 2018-04-23 16:15:08 JST; 5 days ago
  CGroup: /
          ├─1 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
          ├─user.slice
          │ └─user-1000.slice
          │   ├─session-1352.scope
          │   │ ├─5450 sshd: ★★ [priv
          │   │ ├─5452 sshd: ★★@nott
          │   │ └─5453 /usr/libexec/openssh/sftp-server
          │   ├─session-1341.scope
          │   │ ├─5070 sshd: ★★ [priv
          │   │ ├─5072 sshd: ★★@nott
          │   │ └─5073 /usr/libexec/openssh/sftp-server
          │   ├─session-1318.scope
          │   │ ├─3721 sshd: ★★ [priv
          │   │ ├─3723 sshd: ★★@pts/
          │   │ ├─3724 -bash
          │   │ ├─5530 sudo systemctl status
          │   │ ├─5531 systemctl status
          │   │ └─5532 less
          │   └─session-1307.scope
          │     ├─3586 sshd: ★★ [priv
          │     ├─3588 sshd: ★★@nott
          │     └─3589 /usr/libexec/openssh/sftp-server
          └─system.slice
            ├─goweb.service
            │ └─5525 /opt/goweb
            ├─uwsgi.service
            │ ├─1769 /usr/bin/uwsgi --emperor /var/www/◇◇/python-demo.w4c.work/emperor --uid nginx --gi
            │ ├─1770 /usr/bin/uwsgi --ini emperor.ini
            │ ├─5159 /usr/bin/uwsgi --ini emperor.ini
            │ ├─5160 /usr/bin/uwsgi --ini uwsgi.ini
            │ ├─5161 /usr/bin/uwsgi --ini b.ini
lines 1-37


Webブラウザにて、アプリケーション内容の表示確認
http://go-demo.w4c.work/
113H33ello World!sss22


2018/8/21時点


build済の「binary file」名を確認
$ cd /opt
$ ls -l
合計 0
drwxr-xr-x  2 root root 33  5月  7 10:05 go
drwxr-xr-x. 2 root root  6  3月 26  2015 rh

$ cd go
$ ls -l
合計 19080
-rwxr-xr-x 1 root root 6508678  5月  6 11:04 a1
-rwxr-xr-x 1 root root 6508678  5月  6 11:04 a2
-rwxr-xr-x 1 root root 6508678  5月  7 10:02 a3


a1「binary file」内容を確認
$ less a1
"a1" may be a binary file.  See it anyway? 

y
^?ELF^B^A^A^@^@^@^@^@^@^@^@^@^B^@>^@^A^@^@^@^PjE^@^@^@^@^@@^@^@^@^@^@^@^@p^B^@^@^@^@^@^@^@^@^@^@@^@8^@
^@@^@$^@        ^@^F^@^@^@^D^@^@^@@^@^@^@^@^@^@^@@^@@^@^@^@^@^@@^@@^@^@^@^@^@0^B^@^@^@^@^@^@0^B^@^@^@^@^@^@^@^P^@^@^@^@^@^@^C^@^@^@^D^@^@^@<E4>^O^@^@^@^@^@^@<E4>^O@^@^@^@^@^@<E4>^O@^@^@^@^@^@^\^@^@^@^@^@^@^@^\^@^@^@^@^@^@^@^A^@^@
^@^@^@^@^@^D^@^@^@^D^@^@^@<80>^O^@^@^@^@^@^@<80>^O@^@^@^@^@^@<80>^O@^@^@^@^@^@d^@^@^@^@^@^@^@d^@^@^@^@^@^@^@^D^@^@
^@^@^@^@^@^A^@^@^@^E^@^@^@^@^@^@^@^@^@^@^@^@^@@^@^@^@^@^@^@^@@^@^@^@^@^@<D0><E3> ^@^@^@^@^@<D0><E3> ^@^@^@^@^@^@^P
^@^@^@^@^@^@^A^@^@^@^D^@^@^@^@<F0> ^@^@^@^@^@^@<F0>`^@^@^@^@^@^@<F0>`^@^@^@^@^@E<93>ESC^@^@^@^@^@E<93>ESC^@^@^@^@^@^@^P^@^@^@^@^@^@^A^@^@^@^F^@^@^@^@<90><^@^@^@^@^@^@<90>|^@^@^@^@^@^@<90>|^@^@^@^@^@<C0>G^C^@^@^@^@^@8g^E^@^@^@^@^@
^@^P^@^@^@^@^@^@^B^@^@^@^F^@^@^@ <91><^@^@^@^@^@ <91>|^@^@^@^@^@ <91>|^@^@^@^@^@0^A^@^@^@^@^@^@0^A^@^@^@^@^@^@^H^@
^@^@^@^@^@^@^G^@^@^@^D^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^H^@^@^@^@^@^@^@^H^@^@
^@^@^@^@^@Q<E5>td^F^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^H^@^@^@^@^@^@^@<80>^U^De^@*^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^H^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^A^@^@^@^A^@^@^@^F^@^@^@^@^@^@^@^@^P@^@^@^@^@^@^@^P^@^@^@^@^@^@<B4><D1> ^@^@^@^@^@^@^@^@^@^@^@^@
^@^P^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@V^A^@^@^A^@^@^@^F^@^@^@^@^@^@^@<C0><E1>`^@^@^@^@^@<C0><E1> ^@^@^@^@^@^P^B^@^@^@^@^@^@^@^@^@^@^@^@^@^@^P^@^@^@^@^@^@^@^P^@^@^@^@^@^@^@G^@^@^@^A^@^@^@^B^@^@^@^@^@^@^@^@<F0>`^@^@^@^@^@^@<F0> ^@^@^@^@^@
//以下略



Systemd