要部署Rails 6应用程序并使用Apache2和Puma,需要按照以下步骤进行操作:
配置Apache2:
sudo apt-get install apache2
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod proxy_connect
sudo nano /etc/apache2/sites-available/myapp.conf
ServerName your-domain.com
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
ProxyPreserveHost On
ProxyRequests Off
RequestHeader set X-Forwarded-Proto "http"
RequestHeader set X-Forwarded-Port "80"
Require all granted
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
sudo a2ensite myapp.conf
sudo service apache2 reload
配置Puma:
gem 'puma'
sudo nano config/puma.rb
app_dir = File.expand_path("../..", __FILE__)
shared_dir = "#{app_dir}/shared"
workers ENV.fetch("WEB_CONCURRENCY") { 2 }
threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }
threads threads_count, threads_count
bind "unix://#{shared_dir}/sockets/puma.sock"
pidfile "#{shared_dir}/pids/puma.pid"
state_path "#{shared_dir}/pids/puma.state"
activate_control_app
on_worker_boot do
ActiveSupport.on_load(:active_record) do
ActiveRecord::Base.establish_connection
end
end
部署Rails应用程序:
cd /path/to/your/app
bundle install
RAILS_ENV=production bundle exec rake assets:precompile
RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec puma -e production -d
这是一个基本的示例,你可以根据你的需求进行自定义和调整。