puma サービスのセットアップを適切に構成しようとしていますが、まだ失敗しています。私のnginx.confは次のようになります。
upstream puma {
server unix:///home/rails/myapps/myproj/shared/tmp/sockets/myproj-puma.sock;
}
server {
listen 80 default_server deferred;
# server_name example.com;
root /home/rails/myapps/myproj/current/public;
access_log /home/rails/myapps/myproj/current/log/nginx.access.log;
error_log /home/rails/myapps/myproj/current/log/nginx.error.log info;
location ^~ /assets/ {
gzip_static on;
expires max;
add_header Cache-Control public;
}
try_files $uri/index.html $uri @puma;
location @puma {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://puma;
}
error_page 500 502 503 504 /500.html;
client_max_body_size 10M;
keepalive_timeout 10;
}
ファイル /home/rails/myapps/myproj/shared/tmp/sockets/myproj-puma.sock は存在せず、ディレクトリは空です。
myproj_puma_production.service には次の内容があります。
[Unit]
Description=redata-app
#Requires=network.target
[Service]
Type=simple
User=rails
#Group=rails
#WorkingDirectory=/home/rails/myapps/myproj/
WorkingDirectory=/home/rails/myapps/myproj/
#ExecStart=/usr/share/rvm/bin/rvm all do bundle exec puma -b tcp://0.0.0.0:3000 -e production
#ExecStart=/usr/share/rvm/rubies/ruby-3.2.2/bin/bundle exec puma -C /home/rails/myapps/myproj/current/config/puma.rb
ExecStart=/usr/share/rvm/rubies/ruby-3.2.2/bin exec puma -C /home/rails/myapps/myproj/current/config/puma.rb
TimeoutSec=30s
RestartSec=30s
Restart=always
[Install]
WantedBy=multi-user.target
systemctl –user status reddata_puma_production を実行すると、間違った ExecStart を参照する次のエラーが表示されます。
● myproj_puma_production.service - myproj-app
Loaded: loaded (/etc/xdg/systemd/user/myproj_puma_production.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Mon 2024-04-15 16:06:43 UTC; 25s ago
Process: 122683 ExecStart=/usr/share/rvm/rubies/ruby-3.2.2/bin exec puma -C /home/rails/myapps/myproj/current/config/puma.rb (code=exited, status=216/GROUP)
Main PID: 122683 (code=exited, status=216/GROUP)
CPU: 2ms
ExecStart フィールドを適切に設定する方法がわかりません。どの puma を実行しようとしましたが、空の出力しか得られませんでした。 puma は Rails アプリ内にインストールされます。
私には何が欠けているのでしょうか?
役立つかどうかはわかりませんが、私のrails systemDサービスは次のようになります
[Unit]
Description=myapp
[Service]
WorkingDirectory=/home/maxence/Desktop/myapp
User=maxence
Group=maxence
# ProtectProc=invisible
ExecStart=/bin/bash -lc "bin/start_app"
# Let systemd restart this service always
Restart=always
# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536
# Specifies the maximum number of threads this process can create
TasksMax=infinity
# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no
[Install]
WantedBy=multi-user.target
ここで、bin/start_app は 2 つの職長サービスを開始するだけです。 1 つはアプリを準備するためのもの、もう 1 つはアプリを実行するためのもので、2 つの異なる procfile を使用します
#!/bin/bash
foreman start -f Procfile_prepare -e .env
foreman start -f Procfile_services -e .env
基本的に Puma と Sidekiq は Foreman を通じて起動されます
また、私のNginxファイルにはアップストリーム属性がありません
サービスに関しては、作業ディレクトリが設定されているので、rails s -eproduction という古典的な方法で Rails を開始することはできませんか?