(仮)検証環境動かなくなった

(仮)検証環境動かなくなった

nginx

$ systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since 月 2023-03-27 11:57:59 UTC; 4 weeks 0 days ago
  Process: 28585 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=1/FAILURE)
  Process: 28584 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)

Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.

ログ整理の際に、ログの出力先毎消してしまっていた様なので再度作成。

mkdir /var/log/nginx

正常に動くようになった.

$ systemctl start nginx
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: active (running) since 火 2023-04-25 01:28:05 UTC; 4s ago
  Process: 27549 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 27547 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 27545 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 27551 (nginx)
   CGroup: /system.slice/nginx.service
           ├─27551 nginx: master process /usr/sbin/nginx
           ├─27552 nginx: worker process
           └─27553 nginx: worker process

補足:service・systemctlコマンドの違い

systemctlは/lib/systemdにある設定ファイルを指定して、コマンドを実行するもの。serviceと大きく異なる点は、serviceはシェルを実行するのに対してsystemctlは独自の設定ファイルを使って実行する点だ。

https://code-bug.net/qfr8l41pigu2v05ztwbc/

※systemdとsystemctlコマンドについて:https://office54.net/iot/linux/linux-systemd-systemctl

unicorn

$ bundle exec rake unicorn:start RAILS_ENV=staging
bundle exec unicorn_rails -c /home/nginx/staging/プロジェクト名/config/unicorn.rb -E staging -D
master failed to start, check stderr log for details
rake aborted!
Command failed with status (1): [bundle exec unicorn_rails -c /home/nginx/s...]
/home/nginx/staging/プロジェクト名/lib/tasks/unicorn.rake:11:in `block (2 levels) in <main>'
/home/denno_dev/.rbenv/versions/2.6.7/bin/bundle:23:in `load'
/home/denno_dev/.rbenv/versions/2.6.7/bin/bundle:23:in `<main>'
Tasks: TOP => unicorn:start
(See full trace by running task with --trace)

エラーログの出力先を確認

$ cat config/unicorn.rb
stderr_path "#{RAILS_ROOT}/log/unicorn.error.log"
stdout_path "#{RAILS_ROOT}/log/unicorn.log"

エラー内容確認

$ cat log/unicorn.error.log
F, [2023-04-26T04:22:28.913812 #30938] FATAL -- : error adding listener addr=/home/nginx/development/プロジェクト名/tmp/sockets/unicorn.sock

nginxとの疎通が出来ていない様だったので、以下のファイルを削除。

rm unicorn.sock
rm tmp/pids/unicorn.pid

エラー内容が変わった。

$ cat log/unicorn.error.log
E, [2023-04-25T01:14:35.422743 #22128] ERROR -- : Can't connect to MySQL server on '127.0.0.1' (111) (Mysql2::Error::ConnectionError)

mysqlが動いてないようなので動くようにする.

$ mysql --version
> mysql  Ver 14.14 Distrib 5.6.43, for Linux (x86_64) using  EditLine wrapper

$ sudo yum -y install yum-utils
$ sudo service mysqld stop

$ yum repolist all | grep mysql
$ sudo yum-config-manager --disable mysql56-community
$ sudo yum-config-manager --enable mysql57-community-dmr
$ yum repolist all | grep mysql
$ sudo yum update mysql-server

$ mysql --version
> mysql  Ver 14.14 Distrib 5.7.34, for Linux (x86_64) using  EditLine wrapper

# start
$ systemctl start mysqld

再度unicorn起動を試みる。

$ bin/rails unicorn:start RAILS_ENV=staging;
bundle exec unicorn_rails -c /home/nginx/staging/プロジェクト名/config/unicorn.rb -E staging -D
$ ps -ef | grep unicorn | grep -v grep
root     11397     1  0 02:28 ?        00:00:06 unicorn_rails master -c /home/nginx/staging/project_name/config/unicorn.rb -E staging -D
root     11641 11397  1 02:28 ?        00:04:24 unicorn_rails worker[0] -c /home/nginx/staging/project_name/config/unicorn.rb -E staging -D
root     11642 11397  1 02:28 ?        00:04:15 unicorn_rails worker[1] -c /home/nginx/staging/project_name/config/unicorn.rb -E staging -D

補足:ps・grepのオプションについて

ps eオプション:全てのユーザのプロセス情報を表示

ps fオプション:完全なフォーマットで出力

grep vオプション:指定した文字列とマッチしなかった行を表示する

今回だとgrepしたprocess自身を表示させないようにしています。

自分は、ps -ef | grep xxxxx | grep -v grep とおまじないの様に覚えています。

redis

$ systemctl status redis
● redis.service - Redis persistent key-value database
   Loaded: loaded (/usr/lib/systemd/system/redis.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/redis.service.d
           └─limit.conf
   Active: active (running) since 月 2023-05-01 09:25:22 UTC; 2 weeks 0 days ago
  Process: 366 ExecStop=/usr/libexec/redis-shutdown (code=exited, status=1/FAILURE)
 Main PID: 2788 (redis-server)
   CGroup: /system.slice/redis.service
           └─2788 /usr/bin/redis-server 127.0.0.1:6379

Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.

nginxと同様にログ出力出来る様にする。

ディレクトリを作成.権限もちゃんとredisに与える。

sudo touch /var/log/redis/redis.log
sudo chown redis:redis /var/log/redis/redis.log
sudo chmod 664 /var/log/redis/redis.log