前のエントリで、単純に動かすことには成功したので、今度はデーモンとして動かすことにチャレンジする。一部内容が重複するけど御勘弁。
まずは専用のユーザーを作る。
[takatoh@aybesea ~]$ sudo useradd sombrero [sudo] takatoh のパスワード: [takatoh@aybesea ~]$ sudo passwd sombrero ユーザー sombrero のパスワードを変更。 新しいパスワード: よくないパスワード: このパスワードには一部に何らかの形でユーザー名が含まれています。 新しいパスワードを再入力してください: passwd: すべての認証トークンが正しく更新できました。 [takatoh@aybesea ~]$ sudo usermod -G wheel sombrero [takatoh@aybesea ~]$ sudo usermod -aG staff sombrero
よくないパスワードと言われてるけど無視。
ここで新しいユーザーでログインし直す。
アプリの clone から セットアップまで。
[sombrero@aybesea ~]$ git clone https://github.com/takatoh/sombrero.git [sombrero@aybesea ~]$ cd sombrero
と思ったら bundler のインストールでつまづいた。
[sombrero@aybesea sombrero]$ gem install bundler ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /usr/local/rbenv/versions/2.4.3/lib/ruby/gems/2.4.0 directory.
指摘されているディレクトリのパーミッションを見てみると、bill のものになっている。
[sombrero@aybesea sombrero]$ ls -l /usr/local/rbenv/versions/2.4.3/lib/ruby/gems 合計 0 drwxr-xr-x. 8 bill bill 100 1月 2 10:11 2.4.0
これは bill で rbenv global
したせいだろうけど、このパーミッション設定は良くないよな。
変えてしまえ。
[sombrero@aybesea sombrero]$ sudo chgrp -R staff /usr/local/rbenv/versions/2.4.3 [sombrero@aybesea sombrero]$ sudo chmod -R 775 /usr/local/rbenv/versions/2.4.3
これでどうか。
[sombrero@aybesea sombrero]$ gem install bundler Fetching: bundler-1.16.1.gem (100%) Successfully installed bundler-1.16.1 Parsing documentation for bundler-1.16.1 Installing ri documentation for bundler-1.16.1 Done installing documentation for bundler after 5 seconds 1 gem installed
OK。つづき。
[sombrero@aybesea sombrero]$ bundle install [sombrero@aybesea sombrero]$ cp config.yaml.example config.yaml [sombrero@aybesea sombrero]$ rake setup
ここでいったん起動してみる。
[sombrero@aybesea sombrero]$ bundle exec rackup config.ru
OK。
unicorn のインストール。
[sombrero@aybesea sombrero]$ bundle exec gem install unicorn
unicorn の設定ファイル unicorn.conf を書く。
listen "9000" worker_processes 2 pid "./unicorn.pid" stderr_path "./unicorn.log" stdout_path "./unicorn.log"
もう一度、今度は unicorn で起動。
[sombrero@aybesea sombrero]$ bundle exec unicorn -c unicorn.conf bundler: failed to load command: unicorn (/usr/local/rbenv/versions/2.4.3/bin/unicorn) Gem::Exception: can't find executable unicorn for gem unicorn. unicorn is not currently included in the bundle, perhaps you meant to add it to your Gemfile? /usr/local/rbenv/versions/2.4.3/lib/ruby/gems/2.4.0/gems/bundler-1.16.1/lib/bundler/rubygems_integration.rb:458:in `block in replace_bin_path' /usr/local/rbenv/versions/2.4.3/lib/ruby/gems/2.4.0/gems/bundler-1.16.1/lib/bundler/rubygems_integration.rb:478:in `block in replace_bin_path' /usr/local/rbenv/versions/2.4.3/bin/unicorn:23:in `'
あれ?Gemfile に書き足さなきゃいけないのか。じゃ、そうしてからもう一度。
[sombrero@aybesea sombrero]$ bundle update [sombrero@aybesea sombrero]$ bundle exec unicorn -c unicorn.conf
今度はOK。
UNIT ファイルを書く。
[sombrero@aybesea sombrero]$ sudo vim /etc/systemd/system/sombrero.service
[Unit] Description=Sombrero service [Service] Type=forking PIDFile=/home/sombrero/sombrero/unicorn.pid ExecStart=/usr/local/rbenv/shims/bundle exec unicorn -c unicorn.conf -D ExecReload=/bin/kill -HUP $MAINPID ExecStop=/bin/kill -QUIT $MAINPID WorkingDirectory=/home/sombrero/sombrero User=sombrero Group=sombrero [Install] WantedBy=multi-user.target
これでいってみよう。
[sombrero@aybesea sombrero]$ sudo systemctl start sombrero
ブラウザで確認……OK!!!!!
start したり stop したりしてもちゃんと動いていることが確認出来た。
最後は、自動起動するようにして、外部からもアクセスできるようにポートを開ければ完了。
[sombrero@aybesea sombrero]$ sudo systemctl enable sombrero Created symlink from /etc/systemd/system/multi-user.target.wants/sombrero.service to /etc/systemd/system/sombrero.service. [sombrero@aybesea sombrero]$ sudo firewall-cmd --add-port=9000/tcp --zone=public --permanent success
これでマシンを再起動してみよう。
他のマシンから確認。ちゃんと動作していることが確認出来た。これで完了。