Bagaimana saya bisa mengubah aplikasi Rails saya untuk berjalan dalam mode produksi? Apakah ada file config, environment.rb misalnya, untuk melakukan itu?
ruby-on-rails
development-environment
production-environment
Adler Medrado
sumber
sumber
Jawaban:
Cara mengatur dan menjalankan aplikasi Rails 4 dalam mode Produksi (langkah-demi-langkah) menggunakan Apache dan Penumpang Phusion:
Biasanya Anda bisa memasuki proyek Rails Anda
rails s
,, dan mendapatkan versi pengembangan aplikasi Anda di http://something.com:3000 . Mode produksi agak sulit untuk dikonfigurasi.Saya sudah bermain-main dengan ini untuk sementara waktu, jadi saya pikir saya akan menulis ini untuk pemula (seperti saya sendiri). Ada beberapa tweak kecil yang tersebar di internet dan berpikir ini mungkin lebih mudah.
Lihat panduan ini untuk pengaturan inti server (CentOS 6, tetapi harus berlaku untuk hampir semua rasa Linux): https://www.digitalocean.com/community/tutorials/how-to-setup-a-rails-4 -app-dengan-apache-dan-penumpang-pada-centos-6
Pastikan sepenuhnya bahwa setelah Penumpang diatur Anda telah mengedit
/etc/httpd/conf/httpd.conf
file untuk mencerminkan struktur direktori Anda. Anda ingin mengarahkan DocumentRoot ke proyek Rails Anda / folder publik Di mana saja dalamhttpd.conf
file yang memiliki dir semacam ini:/var/www/html/your_application/public
perlu diperbarui atau semuanya akan sangat frustasi. Saya tidak bisa cukup menekankan hal ini.Nyalakan ulang server (atau Apache setidaknya -
service httpd restart
)Masukkan folder proyek Rails Anda
/var/www/html/your_application
dan mulai migrasi denganrake db:migrate
. Pastikan bahwa tabel database ada, bahkan jika Anda berencana menambahkan tabel nanti (ini juga merupakan bagian dari langkah 1).RAILS_ENV=production rake secret
- ini akan membuat kunci secret_ yang dapat Anda tambahkanconfig/secrets.yml
. Anda dapat menyalin / menempelkan ini ke config / secrets.yml demi menjalankan sesuatu, meskipun saya sarankan Anda tidak melakukan ini. Secara pribadi, saya melakukan langkah ini untuk memastikan semuanya bekerja, lalu mengubahnya kembali dan sumber nanti.RAILS_ENV=production rake db:migrate
RAILS_ENV=production rake assets:precompile
jika Anda melayani aset statis. Ini akan mendorong js, css, file gambar ke/public
folder.RAILS_ENV=production rails s
Pada titik ini aplikasi Anda seharusnya tersedia di
http://something.com/whatever
bukan:3000
. Jika tidak,passenger-memory-stats
dan lihat apakah ada entri suka908 469.7 MB 90.9 MB Passenger RackApp: /var/www/html/projectname
Saya mungkin melewatkan sesuatu yang keji, tetapi ini telah berhasil bagi saya di masa lalu.
sumber
Sekarang ini akan menjadi
Atau, lebih ringkas
Ini berfungsi untuk proyek rel 3+.
sumber
rails s -e production
server -e production
?production
selalu merupakan default.echo "export RAILS_ENV=production" >> ~/.bash_profile
Jika Anda menjalankan Penumpang , maka defaultnya adalah berjalan dalam produksi, di apache conf Anda:
Jika Anda hanya menjalankan server lokal dengan mongrel atau webrick, Anda dapat melakukannya:
atau dalam bash:
sebenarnya mengesampingkan konstanta RAILS_ENV di enviornment.rb mungkin harus menjadi pilihan terakhir Anda, karena mungkin tidak akan tetap ditetapkan (lihat jawaban lain yang saya berikan pada itu)
sumber
Jika saran mipadi tidak berfungsi, tambahkan ini ke config / environment.rb
sumber
ENV['RAILS_ENV'] ||= 'production'
bisa diterapkan pada mereka juga?Ubah variabel lingkungan
RAILS_ENV
menjadiproduction
.sumber
~/.bashrc
atau~/.bash_profile
atau hanyaexport RAILS_ENV=production"
sumber
Anda juga dapat meneruskan lingkungan ke skrip / server:
sumber
Ini akan menjalankan server dengan
RAILS_ENV
='production'
.Selain itu, Anda harus menetapkan jalur aset di
production.rb
Tanpa ini, aset Anda tidak akan dimuat.
sumber
ATAU
Secara default lingkungan adalah pengembangan.
sumber
Seperti yang telah diposting orang lain:
rails server -e production
Atau, fave pribadi saya:
RAILS_ENV=production
rails s
sumber
Dalam Rails 3
Menambahkan
Rails.env = ActiveSupport::StringInquirer.new('production')
ke dalam application.rb danrails s
akan berfungsi sama denganrails server -e production
sumber
Ini bukan cara yang baik untuk menjalankan server rail di lingkungan produksi dengan "rails server -e production", karena kemudian rails berjalan sebagai aplikasi single-threaded, dan hanya dapat menanggapi satu permintaan HTTP pada satu waktu.
Artikel terbaik tentang lingkungan produksi untuk rel adalah Lingkungan Produksi - Rel 3
sumber
untuk server default: rails s -e production
untuk port server costum: rails s -p [port] -e produksi, mis. rel s -p 3002 -e produksi
sumber
Secara default server berjalan di lingkungan pengembangan:
$ rails s
Jika Anda berjalan di lingkungan produksi:
$ rails s -e production
atau$ RAILS_ENV=production rails s
sumber
Pastikan Anda telah melakukan di bawah ini di file environment.rb Anda.
Jika aplikasi Anda berjalan di lingkungan hosting bersama atau penumpang phushion, Anda mungkin perlu melakukan perubahan dalam .httaccess (di dalam folder publik) dan mengatur mode sebagai produksi.
sumber