Cài đặt Ruby on Rails với Unicorn và Nginx trên server Ubuntu
1.Ruby on Rails Là Gì Ruby on Rails là một khung làm việc (web framework) được viết trên ngôn ngữ lập trình Ruby và được sử dụng trong việc xây dựng và phát triển các ứng dụng web. Phiên bản đầu tiên của Ruby on Rails được giới thiệu ra cộng đồng vào năm 2015. Ruby on Rails là phần mềm mã ...
1.Ruby on Rails Là Gì
Ruby on Rails là một khung làm việc (web framework) được viết trên ngôn ngữ lập trình Ruby và được sử dụng trong việc xây dựng và phát triển các ứng dụng web. Phiên bản đầu tiên của Ruby on Rails được giới thiệu ra cộng đồng vào năm 2015. Ruby on Rails là phần mềm mã nguồn mở miễn phí được phát triển bởi David Heinemeier Hansson. .
Tại Sao Chọn Rails
Ruby on Rails được xây dựng trên các tập quán hiện đại nhất trong xây dựng và phát triển website do đó khi bạn nắm vững Ruby on Rails bạn sẽ dễ dàng chuyển sang một web framework khác.
Ruby on Rails có cấu trúc trong sáng và dễ hiểu rất dễ tiếp cận cho những lập trình viên mới vào nghề. Ngoài ra, Rails cung cấp cho chúng ta công cụ cửa sổ dòng lệnh CLI giúp tự động hoá nhiều công việc thường gặp khi lập trình qua đó tăng tốc độ và hiệu suất làm việc.
Ngoài ra, Ruby on Rails cũng là một trong những web framework được sử dụng phổ biến nhất hiện nay và được sử dụng bởi nhiều website lớn trên thế giới trong đó có mạng xã hội Twitter, trang mạng xã hội cho lập trình viên Github, công cụ quản lý dự án hàng đầu Redmine...
Ruby on Rails và Ruby
Ruby là ngôn ngữ lập trình, sử dụng Ruby các lập trình viên có thể phát triển nhiều loại ứng dụng khác nhau ngoài việc tạo website ví dụ như các phần mềm chạy trên máy tính cá nhân hay máy chủ.
Ruby on Rails là web framework được viết sử dụng ngôn ngữ Ruby. Ruby on Rails chỉ giới hạn trong việc xây dựng và phát triển các ứng dụng web.
2. Cài đặt Ruby On Rails
Ở đây tôi cài Ruby on Rails trên môi trường Ubuntu 14.04
Ruby -v 2.3.1
Rails -v 5.0.0.1
MySql with Rails
Unicorn -v 5.2.0
2.1 Cài đặt Ruby
sudo apt-get update sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev
Sau khi update và cài đặt vài gói cần thiết chúng ta có 3 cách để cài đặt ruby.
Cách 1: Using rvm
sudo apt-get install libgdbm-dev libncurses5-dev automake libtool bison libffi-dev gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 curl -sSL https://get.rvm.io | bash -s stable source ~/.rvm/scripts/rvm rvm install 2.3.1 rvm use 2.3.1 --default ruby -v
** Cách 2: From Source **
cd wget http://ftp.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz tar -xzvf ruby-2.3.1.tar.gz cd ruby-2.3.1/ ./configure make sudo make install ruby -v
Cách 3: Using rbenv
cd git clone https://github.com/rbenv/rbenv.git ~/.rbenv echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(rbenv init -)"' >> ~/.bashrc exec $SHELL git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc exec $SHELL rbenv install 2.3.1 rbenv global 2.3.1 ruby -v
Sau khi cài đặt xong, hãy thử lại câu lệnh ruby -v để check thử chúng ta đã cài thành công ruby chưa.
2.2 Cài đặt Rails
Cài đặt Nodejs.
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash - sudo apt-get install -y nodejs sudo gem install rails rails -v
Sau khi cài đặt xong, hãy thử câu lệnh rails-v để check thử đã cài thành công rails chưa.
2.3 Cài đặt mysql
apt-get install mysql-server-5.6 mysql-client-5.6 apt-get install libmysqlclient18 libmysqlclient-dev
Trong quá trình cài đặt nhớ lưu lại password root của mysql nhé.
Dể ứng dụng rails connect được với Mysql chúng ta cần cài đặt thêm gói mysql2
gem install mysql2
Sau khi cài đặt gói này, thì App rails của bạn đã có thể kết nối tới mysql. Như vậy là tôi đã cài xong môi trường cho Ruby on rails.
** 3.1 Tạo app Rails và kết nối tới database mysql**
Tạo thư mục chứa app rails ở mục home của tôi và sử dụng câu lệnh -d mysql để đặt mysql là database của app rails vừa được tạo
cd ~ rails new appname -d mysql
** 3.2 Tạo kết nối giữa app rails và database mysql**
cd appname vi config/database.yml
Tìm đến dòng password: mysql_root_password và thay mysql_root_password bằng password root mysql bạn lập khi cài đặt mysql ở bước 2.3
Như trong hình thì password mysql của tôi ở đây là 1990.
Lưu.
3.3 Tạo database cho ứng dụng
cd appname rake db:create
Nếu quá trình tạo database báo lỗi "Access denied for user 'root'@'localhost' (using password: YES)Please provide the root password for your MySQL installation" thì hãy quanh lại bước 3.2, chỉnh sửa password trong file config/database.yml sao cho chính xác.
3.4 Chạy thử server rails
cd appname rails server
rails server --binding 172.16.4.230
4. Cài đặt và cấu hình Unicorn
sudo gem install unicorn
Tạo file unicorn.rb trong thư mục app rails mình vừa tạo ở trên /home/framgia/appname/config/unicorn.rb
# set path to the application app_dir git File.expand_path("../..", __FILE__) shared_dir = "#{app_dir}/shared" working_directory app_dir # Set unicorn options worker_processes 2 preload_app true timeout 30 # Path for the Unicorn socket listen "#{shared_dir}/sockets/unicorn.sock", :backlog => 64 # Set path for logging stderr_path "#{shared_dir}/log/unicorn.stderr.log" stdout_path "#{shared_dir}/log/unicorn.stdout.log" # Set proccess id path pid "#{shared_dir}/pids/unicorn.pid"
Tạo 3 thư mục được đề cập trong file unicorn.rb
mkdir -p shared/pids shared/sockets shared/log
5. Cài đặt và cấu hình Nginx
Cài đặt nginx
sudo apt-get install nginx
Chúng ta cấu hình nginx như reverse proxy. Chỉnh sửa file /etc/nginx/nginx.conf
upstream rails {
server unix:/home/framgia/appname/shared/sockets/unicorn.sock fail_timeout=0; }
Xóa cấu hình nginx mặc định
sudo rm /etc/nginx/sites-enabled/default
Tạo file cấu hình nginx mới cho ứng dụng rails trong thư mục /etc/nginx/sites-available/appname
server { listen 80; server_name localhost; root /home/framgia/appname; try_files $uri/index.html $uri @rails; location @rails { proxy_pass http://rails; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; } error_page 500 502 503 504 /500.html; client_max_body_size 4G; keepalive_timeout 10; }
.
sudo ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled
restart lại nginx
sudo service nginx restart
Chạy unicorn
sudo unicorn -c config/unicorn.rb -E development -D sudo unicorn -c config/unicorn.rb -E production -D