SinatraアプリをCentOSで動かす(2)

前のエントリで、単純に動かすことには成功したので、今度はデーモンとして動かすことにチャレンジする。一部内容が重複するけど御勘弁。

まずは専用のユーザーを作る。

[[email protected] ~]$ sudo useradd sombrero
[sudo] takatoh のパスワード:
[[email protected] ~]$ sudo passwd sombrero
ユーザー sombrero のパスワードを変更。
新しいパスワード:
よくないパスワード: このパスワードには一部に何らかの形でユーザー名が含まれています。
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
[[email protected] ~]$ sudo usermod -G wheel sombrero
[[email protected] ~]$ sudo usermod -aG staff sombrero

よくないパスワードと言われてるけど無視。
ここで新しいユーザーでログインし直す。

アプリの clone から セットアップまで。

[[email protected] ~]$ git clone https://github.com/takatoh/sombrero.git
[[email protected] ~]$ cd sombrero

と思ったら bundler のインストールでつまづいた。

[[email protected] 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 のものになっている。

[[email protected] 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 したせいだろうけど、このパーミッション設定は良くないよな。
変えてしまえ。

[[email protected] sombrero]$ sudo chgrp -R staff /usr/local/rbenv/versions/2.4.3
[[email protected] sombrero]$ sudo chmod -R 775 /usr/local/rbenv/versions/2.4.3

これでどうか。

[[email protected] 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。つづき。

[[email protected] sombrero]$ bundle install
[[email protected] sombrero]$ cp config.yaml.example config.yaml
[[email protected] sombrero]$ rake setup

ここでいったん起動してみる。

[[email protected] sombrero]$ bundle exec rackup config.ru

OK。

unicorn のインストール。

[[email protected] 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 で起動。

[[email protected] 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 に書き足さなきゃいけないのか。じゃ、そうしてからもう一度。

[[email protected] sombrero]$ bundle update
[[email protected] sombrero]$ bundle exec unicorn -c unicorn.conf

今度はOK。

UNIT ファイルを書く。

[[email protected] 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

これでいってみよう。

[[email protected] sombrero]$ sudo systemctl start sombrero

ブラウザで確認……OK!!!!!
start したり stop したりしてもちゃんと動いていることが確認出来た。

最後は、自動起動するようにして、外部からもアクセスできるようにポートを開ければ完了。

[[email protected] sombrero]$ sudo systemctl enable sombrero
Created symlink from /etc/systemd/system/multi-user.target.wants/sombrero.service to /etc/systemd/system/sombrero.service.
[[email protected] sombrero]$ sudo firewall-cmd --add-port=9000/tcp --zone=public --permanent
success

これでマシンを再起動してみよう。

他のマシンから確認。ちゃんと動作していることが確認出来た。これで完了。

カテゴリー: CentOS, Ruby パーマリンク

1 Response to SinatraアプリをCentOSで動かす(2)

  1. ピンバック: サーバのOSをUbuntuからCentoOSに変えた | blog.PanicBlanket.com

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください