

### 実現したいこと

  * `config/unicorn.rb`を読み込ませたい
  * できれば`config/unicorn/unicorn.conf.rb`の様に一つディレクトリを挟んで配置したい

### 前提

さくらVPSのCentOSでRails7のアプリケーションのデプロイを試みています。  
デプロイ作業が慣れていない為、ローカルでUnicornを導入して正式にプルリクを上げる前に、  
一旦本番サーバーに上げてある素材を使用してNginxとUnicornの導入・動作確認をしてみようとなりました。  
導入までは終わり、それぞれの設定ファイルも置いて  
`bundle exec unicorn -c config/unicorn.rb`  
を実行したところ、設定ファイルが見つからないという趣旨のエラーが発生しています。

### 発生している問題・エラーメッセージ

[code]

    bundler: failed to load command: unicorn (/usr/local/rbenv/versions/3.1.3/bin/unicorn)
    /usr/local/rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/unicorn-6.1.0/lib/unicorn/configurator.rb:613:in 
    `working_directory': config_file=config/unicorn.rb would not be accessible in working_directory=/opt/sample_app (ArgumentError)
    
[/code]

### 該当のソースコード

設定ファイルの配置場所は以下です  
`/opt/sample_app/config/unicorn.rb`

[code]

    rails_root = "/opt/sample_app"
    
    worker_processes 4
    working_directory rails_root
    
    listen "#{rails_root}/tmp/unicorn.sock"
    pid "#{rails_root}/tmp/unicorn.pid"
    
    stderr_path "#{rails_root}/log/unicorn_error.log"
    stdout_path "#{rails_root}/log/unicorn.log"
    
    preload_app true
    
    before_fork do |server, worker|
      ENV['BUNDLE_GEMFILE'] = File.expand_path('Gemfile', rails_root)
      old_pid = "#{server.config[:pid]}.oldbin"
      if File.exists?(old_pid) && server.pid != old_pid
        begin
          sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU
          Process.kill(sig, File.read(old_pid).to_i)
        rescue Errno::ENOENT, Errno::ESRCH
          # someone else did our job for us
        end
      end
    end
    
    after_fork do |server, worker|
      defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection
    end
    
[/code]

権限の状況は以下の通りです。  
※
最終目標`/opt/sample_app/config/unicorn/unicorn.conf.rb`の場合の各権限ですが、unicornディレクトリを挟まないバージョンでも同じ様に権限付与しておりました。

[code]

    drwxr-xr-x 3 user_name root 4096 Jun 26 13:04 opt
    
    drwxr-xr-x 12 user_name root 4096 Jun 27 09:50 sample_app
    
    drwxr-xr-x  7 user_name root  4096 Jun 27 16:05 config
    drwxr-xr-x  2 user_name root  4096 Jun 27 10:10 log
    drwxr-xr-x  5 user_name root  4096 Jun 27 10:09 tmp
    
    drwxr-xr-x 2 user_name root 4096 Jun 27 17:12 unicorn
    
    -rw-r--r-- 1 user_name root 1101 Jun 27 17:12 unicorn.conf.rb
    
    
[/code]

### 試したこと

色々ググって以下のことを試してみました。

  * Unicorn起動時のパスが合っているか確認
  * 各ディレクトリ、ファイルの権限を確認
  * 当初`config/unicorn/unicorn.conf.rb`の様に一つディレクトリを挟んでいたので、config直下に移動

### 補足情報（FW/ツールのバージョンなど）

【環境】  
さくらVPS  
CentOS Stream 9  
Nginx 1.22.1  
Unicorn 6.1.0  
MySQL(MariaDB)  
Ruby 3.1.3  
Ruby on Rails 7.0.4

私なりにググってみたりChatGPTを使ってみたりしましたが、  
大体「パスが間違っていた」「権限がなかった」という記事しか見つからず、  
パスは合っていると思われ、権限もおそらく大丈夫だと思うのですが、  
エラーが解消できず詰まっております。  
ご教授の程、よろしくお願いいたします。


CC BY-SA 4.0
2023-06-27T23:55:25.047
95398
2023-06-28T00:30:12.673
19788
question
centos nginx unicorn
Unicorn起動時に設定ファイルを読み込むことができません。


こちら解決しました。  
やはりパスが問題で、`/opt/sample_app`となっていますが、こちらは`/home`からのパスが必要だった様でした。  
ありがとうございました。


CC BY-SA 4.0
2023-06-28T00:30:12.673
95399
2023-06-28T00:30:12.673
19788
95398
answer