sudo apt-get install nginxdan hidupkan nginx dengan service
sudo service nginx startsila layari host anda dan sepatutnya anda dapat melihat "Welcome to nginx!" file config nginx terletak di /etc/nginx/nginx.conf sila perhatikan file tersebut untuk mempelajari kaedah pengoperasian nginx, contohnya untuk pelajari dimana log filenya untuk tujuan troubleshoot pada masa hadapan. nota + : seperti yang ditunjuk dalam railscast, kita mahu menyimpan file config nginx didalam folder rails application dan meng-symlink-nya untuk tujuan kemudahan mobility app tersebut cth: dengan penggunaan repository untuk digunakan pada lain2 server. Pada pendapat Ya'kob, ianya tidak sesuai untuk multiple application kerana kita mahu meng-config rails app yang lain juga didalam file config yang sama. Maka kita tinggalkan struktur file config nginx seperti asal.
nginx + webrick proof of concept
tuliskan di /etc/nginx/sites-enabled/default :server { listen 80 default; # server_name example.com; root /home/system/deploy/akeyu; try_files $uri/index.html $uri @unicorn; location @unicorn { proxy_pass http://localhost:3000; } }dan restart nginx
sudo service nginx restartkemudian run webrick server
bundle exec rails slayari http://localhost:3000 dan sepatutnya anda dapat melihat "Welcome aboard You’re riding Ruby on Rails!"
Keganasan bermula..
instalasi unicorn/Gemfile
gem 'unicorn'/config/unicorn.rb
working_directory "/home/system/deploy/akeyu" pid "/home/system/deploy/akeyu/tmp/pids/unicorn.pid" stderr_path "/home/system/deploy/akeyu/unicorn/unicorn.log" stdout_path "/home/system/deploy/akeyu/unicorn/unicorn.log" listen "/tmp/unicorn.akeyu.sock" worker_processes 2 timeout 30berikut adalah contoh file /etc/nginx/sites-enabled/default Ya'kob.
upstream unicorn { server unix:/tmp/unicorn.akeyu.sock fail_timeout=0; } upstream place { server unix:/tmp/unicorn.place.sock fail_timeout=0; } server { listen 80; server_name akob.akeyu.com.my; root /home/system/deploy/place/public; try_files $uri/index.html $uri @place; location @place { proxy_pass http://place; } error_page 500 502 503 504 /500.html; } server { listen 80 default; server_name www.akeyu.com.my; root /home/system/deploy/akeyu/public; try_files $uri/index.html $uri @unicorn; location @unicorn { proxy_pass http://unicorn; } error_page 500 502 503 504 /500.html; }sila restart nginx supaya perubahan config mula berkesan.
sudo service nginx restartperhatikan nginx listen kepada port yang sama untuk kedua-dua server, tetapi akan bertindak berlainan cara jika diakses dari host yang berlainan. root dan try_files pula adalah untuk tujuan melayan (serve) file static jika ada dan @unicorn atau @place pula adalah untuk serve dari rails application. location adalah dimana nginx dan unicorn dihubungkan. unicorn akan menghasilkan sock pada /tmp apabila di run. Oleh itu kita menulis sock yang dihasilkan oleh unicorn pada bahagian location ini. seperti app yang pertama Ya'kob membuat 1 lagi app bernama place, menggunakan unicorn dan mengedit file /config/unicorn.rb sama seperti app akeyu. tetapi Ya'kob gantikan semua akeyu dengan place. pastikan directory betul. PENTING !: seperti isu Ya'kob, Ya'kob perlu untuk
chmod +w tmp/pids/ unicorn/dalam folder app kita. sila create jika tidak wujud. run unicorn pada root application folder anda contoh di /home/system/deploy/akeyu
bundle exec unicorn -c config/unicorn.rb -Ddan juga pada direktori applikasi yang 1 lagi. dalam kes Ya'kob place jika tiada error dipaparkan, bermakna ianya telah berjaya di-run unicorn pada default-nya ia menyediakan 2 worker instance dan 1 master untuk melayan 3 client pada 1 serentak. Ia juga berkemampuan bertindak sebagai load balancer tetapi yakob belum mempelajarinya lagi. dan sekarang jika anda melayari akeyu.com.my dan akob.akeyu.com.my anda telah mengakses 2 applikasi yang berbeza pada port yang sama. sebagai proof of concept, anda juga boleh menggunakan webrick pada salah satu applikasi. contoh config nginx
/etc/nginx/sites-enabled/default
server { listen 80; server_name akob.akeyu.com.my; root /home/system/deploy/place/public; try_files $uri/index.html $uri @place; location @place { # proxy_pass http://place; proxy_pass http://localhost:3000; #webrick perlu di-run pada port lain dari 80 untuk mengelakkan bind access port 80 error } error_page 500 502 503 504 /500.html; }dan run webrick anda pada port 80 dan -d detach / sbgai service
rails s -p80 -dselamat mencuba! dan tolong beritahu apa penemuan yang anda alami/ kesalahan pada tutorial ini / kelemahan / ketidak fahaman dalam tutorial ini / sebarang ralat.