我买了一些托管空间,我有SSH访问权限。现在我想部署一个Ruby on Rails应用程序,这些应用程序在本地工作到我制作的一个子域名,我们称之为subdomain.mywebsite.com。
我已通过公钥设置SSH访问,在服务器上安装了Ruby on Rails和Passenger,并按照网站上提供的步骤和教程在本地安装了Capistrano。当我运行cap production deploy
时,整个站点上传到生产服务器并通过SSH我可以看到当前,发布,repo和共享文件夹。不幸的是,当我去subdomain.mywebsite.com时,我得到了404 - 未找到错误。
我是设置自己的服务器的新手,现在不知道该怎么做。我找到的所有教程都没有解释如何从这里继续,我希望有人能够帮助我实际访问该网站。
Deploy.rb:
require 'capistrano'
set :stages, ["staging", "production"]
set :default_stage, "staging"
set :application, 'chiachia_store' # application name
set :repo_url, 'git@github.com:erooijak/chiachia_store.git' # your repo url
set :deploy_to, '/home/erooijak/chiachia.erooijak.simple-webhosting.eu'
set :user, "root"
set :scm, :git
set :branch, 'master'
set :keep_releases, 5
ask :branch, proc { `git rev-parse --abbrev-ref HEAD`.chomp }
set :format, :pretty
set :log_level, :debug
set :pty, true
set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system}
set :stage, :production
role :app, %w{root@213.159.6.126}
role :web, %w{root@213.159.6.126}
role :db, %w{root@213.159.6.126}
set :puma_rackup, -> { File.join(current_path, 'config.ru') }
set :puma_state, "#{shared_path}/tmp/pids/puma.state"
namespace :deploy do
desc 'Restart application...'
task :restart do
on roles(:app), in: :sequence, wait: 5 do
# Your restart mechanism here, for example:
execute :touch, release_path.join('tmp/restart.txt')
end
end
desc 'Copy database.yml to correct location.'
task :copy_databaseyml do
on roles(:app) do
execute :cp ,'-r', shared_path.join('config/database.yml'),
release_path.join('config/database.yml')
end
end
after :publishing, :restart
after :restart, :copy_databaseyml
end
的apache.conf:
LoadModule passenger_module /usr/lib/apache2/modules/mod_passenger.so PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p547/gems/passenger-4.0.49 PassengerRuby / usr / bin / ruby
ServerName www.chiachia.erooijak.simple-webhosting.eu
# !!! Be sure to point DocumentRoot to 'public'!
DocumentRoot /home/erooijak/chiachia.erooijak.simple-webhosting.eu/current/public
<Directory /home/erooijak/chiachia.erooijak.simple-webhosting.eu/current/public>
# This relaxes Apache security settings.
AllowOverride all
# MultiViews must be turned off.
Options -MultiViews
# Uncomment this if you're on Apache >= 2.4
#Require all granted
</Directory>
</VirtualHost>
运行此操作的效果如下:
所以它有点工作。不幸的是,我在所有域上都遇到404错误,PHP应用程序一直运行正常。
passenger.3000.log具有以下信息:
答案 0 :(得分:1)
为什么我们不从头开始。
阅读完上次评论后,您希望能够在同一台服务器上部署多个rails应用程序。
有很多选择可以做到这一点,根据您的选择,配置将会有很大差异。有一个很好的答案,涵盖了您可能想要阅读的基础知识:
我习惯的堆栈是Nginx / capistrano / unicorn,但这取决于个人偏好和部署内容的性质。
Apache / Phusion乘客
要做的第一件事是为您的域配置apache。 phusion passenger documentation是一个非常好的起点。
您甚至可以在same documentation
中找到有关如何使用phusion乘客部署Rails&gt; = 3.X应用的完整指南如果您仔细遵循说明,您应该启动并运行您的应用程序,而不是美洲狮。它们甚至还为您提供capistrano recipes使用。
<强>彪马强>
在这个阶段,除非你的应用程序需要高并发性,否则不需要美洲狮。 Phusion Passenger本身就是一个应用服务器,不需要在它后面添加美洲狮。如果你出于某种原因真的需要它,那么你最好切换到Nginx / Puma。
我希望我给你的参考资料有点清楚。