我已经完成了一个使用Ruby on Rails构建的应用程序。现在我想将它托管在AWS上的EC2示例上。
我已经为它提供了一个服务器,并且我使用puma
HTTP服务器作为应用程序服务器。在生产环境中启动应用程序总是需要运行RAILS_ENV=production rails s
,这通常不方便,因为当应用程序启动时,它不会返回提示符。
我还希望能够使用systemd管理Puma,这样我就可以通过运行一行命令轻松地start
、stop
、check status
和restart
puma服务器。
我在网上试过很多解决方案,但当我尝试启动服务器时,经常会出现错误:
● puma.service - Puma HTTP Forking Server
Loaded: error (Reason: Exec format error)
Active: activating (start) since Mon 2019-12-16 15:33:06 UTC; 59s ago
Cntrl PID: 4473 (bundle)
Tasks: 30 (limit: 4703)
CGroup: /system.slice/puma.service
├─4473 puma 3.12.1 (tcp://0.0.0.0:3000) [my-app]
├─4522 puma: cluster worker 0: 4473 [my-app]
└─4527 puma: cluster worker 1: 4473 [my-app]
Dec 16 15:33:06 ip-172-31-19-238 rbenv[4473]: [4473] * Environment: production
Dec 16 15:33:06 ip-172-31-19-238 rbenv[4473]: [4473] * Process workers: 2
Dec 16 15:33:06 ip-172-31-19-238 rbenv[4473]: [4473] * Preloading application
Dec 16 15:33:08 ip-172-31-19-238 rbenv[4473]: [4473] * Listening on tcp://0.0.0.0:3000
Dec 16 15:33:08 ip-172-31-19-238 rbenv[4473]: [4473] ! WARNING: Detected 1 Thread(s) started in app boot:
Dec 16 15:33:08 ip-172-31-19-238 rbenv[4473]: [4473] ! #<Thread:0x000055f4b08bf7e0@/home/deploy/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/a
Dec 16 15:33:08 ip-172-31-19-238 rbenv[4473]: [4473] Use Ctrl-C to stop
Dec 16 15:33:08 ip-172-31-19-238 rbenv[4473]: [4473] - Worker 0 (pid: 4522) booted, phase: 0
Dec 16 15:33:08 ip-172-31-19-238 rbenv[4473]: [4473] - Worker 1 (pid: 4527) booted, phase: 0
我需要一些帮助。先谢谢你。
1条答案
按热度按时间xmd2e60i1#
以下是我如何修复它:
1.安装Puma(如果尚未安装)。
1.运行命令
which puma
打印您机器上puma服务器的安装目录,通常安装在/home/your-username/.rbenv/shims/puma
目录下。1.通过运行以下命令打开位于
/etc/systemd/system/puma.service
的puma.service
文件:sudo nano /etc/systemd/system/puma.service
1.将下面的Puma服务配置文件复制到其中并保存。
Puma业务配置
注:
ExecStart
:ExecStart=/your-puma-directory-path -C /your-app-puma-config-file-pathExecStop
:ExecStop=/your-puma-directory-path -S /your-app-puma-config-file-pathExecReload
或ExecRestart
,它们可以开箱即用。现在可以使用以下命令启动puma服务器:
或者使用以下命令重新启动puma服务器:
或者使用以下命令检查puma服务器的状态:
或者使用以下命令停止puma服务器:
就这样
希望这能帮上忙