進度條

[Rails] Ubuntu 下安裝 Rails 步驟

更新日期:

0. 先更新套件 
sudo apt-get update

 

1. 帳號管理 
新增帳號 
useradd YourAccount 


新增user進sudo
adduser YourAccount sudo 


設密碼
passwd YourAccount

 

設定使用者家目錄
沒特別需求 YourAccountGroup 可以是 YourAccount 
cd /home
mkdir YourName 
chown -R YourAccount.YourAccountGroup TargetFolder("這裡就是 YourName")

 

修改帳號進入sudo 不需要密碼
vim /etc/sudoers
 

加入最後一行,如果有很多行會針對同一個做設定,sudoers會使用其相關最後一行的設定(前面設定會被覆蓋掉)
YourAccount  ALL=(ALL:ALL) NOPASSWD:ALL
 

設login為bash => ~/.bashrc 才會動作
在/home/YourAccount:後面加入 /bin/bash
sudo vim /etc/passwd
YourAccount:x:1000:1000::/home/YourAccount:/bin/bash    


離開後重新登入
exit

再一次ssh連進來

 

關閉root login

sudo vim /etc/ssh/sshd_config

PermitRootLogin no  <= 設成 no

 

改變ssh port號

sudo vim /etc/ssh/sshd_config

Port 22 <= 改成你喜歡的號碼,不過有很多其他程式預設的需要避開,例如http是80

 

#有動到 /etc/ssh/sshd_config

#都要重開ssh

sudo service ssh restart

 

// ==========================================================

2. 安裝相關套件

 

先更新apt list
sudo apt-get update

 

安裝git
sudo apt-get install git git-core

 

安裝 ssl
sudo apt-get install libssl-dev

 

安裝SQlite3
sudo apt-get install libsqlite3-dev sqlite3

 

安裝 Curl 與相關(下載軟體用 linode ubuntu預設有)
sudo apt-get install curl libcurl4-openssl-dev
說明 : curl is a tool to transfer data from or to a server, using one of the supported protocols 
       (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET and TFTP). 
       The command is designed to work without user interaction.

 

安裝XML Lib 與相關
sudo apt-get install libxml2-dev libxslt1-dev

 

安裝apt助手

說明: This software provides an abstraction of the used apt repositories. 
         It allows you to easily manage your distribution and independent software vendor software sources.
sudo apt-get install software-properties-common

 

安裝 GNU readline and history libraries
sudo apt-get install libreadline-dev

 

安裝 build-essentia
說明: build-essential這個套件就是讓你的ubuntu可以compile程式
       它會幫你檢查你缺少哪些development的packages
sudo apt-get install build-essential

 

安裝(解)壓縮Lib
sudo apt-get install zlib1g-dev

 

安裝YAML 
說明: LibYAML is a C library for parsing and emitting data in YAML 1.1, a
        human-readable data serialization format.
sudo apt-get install libyaml-dev

 

安裝 MySQL
sudo apt-get install mysql-server libmysqlclient-dev
(之前是用libmysqlclient15-dev)
or  

安裝 postgresql
sudo apt-get install postgresql postgresql-contrib libpq-dev

 

 

// ==========================================================
3. 安裝RVM

 

a. 安裝 gdbm
sudo apt-get install libgdbm-dev libncurses5-dev automake libtool bison libffi-dev
 


下載安裝rvm

先安裝gnupg2
sudo apt install gnupg2

再執行

gpg2 --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

 

然後安裝 rvm
\curl -L https://get.rvm.io | bash -s stable

 

登出主機後再進來,因為PATH有更新

 

找一下最新的ruby版本
rvm list known

 

安裝
rvm install 2.6 << ”最新的“版本可能會改,看rvm上面的敘述
 

 
使用
rvm use 2.6 --default

確認ruby版本
ruby -v

 

// ==========================================================
4. Installing Rails


 

下載 nodejs

curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -

sudo apt-get install -y nodejs

 

如果是 Rails 6.x 或是 Rails 5.x 包含webpacker,會需要安裝yarn

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -

echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

sudo apt-get update && sudo apt-get install yarn

yarn install

 

 

安裝完ruby 後就會有gem, RubyGems是Ruby的套件管理系統

安裝特定版本Rails(以5.2.4為例)

gem install rails -v 5.2.4 --no-document

或是

安裝最新版 rails 
gem install rails --no-document



 

// ==========================================================
確認安裝成功

 

建一個資料夾
mkdir Projects
cd Projects

 

如果有權限問題
chown -R Projects YourAccount.YourAccount TargetFolder

 

建一個rails 專案 且去掉test段,記得專案名稱不要用test
rails new NewProjectName --skip-test-unit

 

如果該帳號找不到rails 代表可能之前加入設定檔是加在root下
重新rvm設定檔加入 ~/.bashrc
echo "source /usr/local/rvm/src/rvm/scripts/rvm" >> ~/.bashrc
再直接執行一次
source /usr/local/rvm/src/rvm/scripts/rvm 

 

建立好之後 進入 NewProjectName folder
cd NewProjectName

 

使用bundle 檢查安裝這個project 所需的套件
設定檔是 NewProjectName/Gemfile
有修改過Gemfile 就要執行這個 
bundle install

 

執行網站
rails s
或是rails server 預設是在port 3000
如果要改port =>  rails s -p 8080 就會在8080

 

如果是文字介面
開新連線 (新的bash)
下載文字介面瀏覽器
sudo apt-get install lynx

 

在rails server開者的情況進入localhost
看的到就成功了
lynx http://localhost:3000 

 

此時外部連線還看不到, http://(ip):3000 目前看不到

// ==========================================================
install apache
//sudo apt-get install apache2-mpm-worker apache2-threaded-dev libapr1-dev libaprutil1-dev  <== 有些找不到
sudo apt-get install apache2 apache2-dev
 
 
可以參考網站 http://nathanhoad.net/how-to-ruby-on-rails-ubuntu-apache-with-passenger 這應該是對的
連上 apache 都不要用sudo?
下載passenger
gem install passenger --no-document
passenger-install-apache2-module

 

// 加入 /etc/apache2/apache2.conf 以下這段(有可能不一樣) 裝完passenger 會顯示:
//LoadModule passenger_module /usr/local/rvm/src/rvm/gems/ruby-2.2.0/gems/passenger-4.0.58/buildout/apache2/mod_passenger.so
//  <IfModule mod_passenger.c>
//    PassengerRoot /usr/local/rvm/src/rvm/gems/ruby-2.2.0/gems/passenger-4.0.58
//    PassengerDefaultRuby /usr/local/rvm/src/rvm/gems/ruby-2.2.0/wrappers/ruby
//  </IfModule>
  LoadModule passenger_module /home/"YourAccount"/.rvm/gems/ruby-2.2.0/gems/passenger-4.0.58/buildout/apache2/mod_passenger.so
   <IfModule mod_passenger.c>
     PassengerRoot /home/"YourAccount"/.rvm/gems/ruby-2.2.0/gems/passenger-4.0.58
     PassengerDefaultRuby /home/"YourAccount"/.rvm/gems/ruby-2.2.0/wrappers/ruby
   </IfModule>


//Enable mod_rewrite for Apache:
// Update Module 設定(因為新load 了passenger)
sudo a2enmod rewrite

// Create a file "New_conf_file_name" in /etc/apache2/sites-available/ 或是改掉000-default.conf
<VirtualHost *:80>
    # Change these 3 lines to suit your project
    RailsEnv development # <== 重點!!!!
    
    DocumentRoot /home/"YourAccount"/Projects/NewProjectName/public        
    <Directory /home/"YourAccount"/Projects/NewProjectName/public>
        # all requsts are allowe, no deny
        # example: http://httpd.apache.org/docs/2.4/upgrading.html
        Require all granted

        AllowOverride All
        Options -MultiViews
    </Directory>
</VirtualHost>

// 如果不是改default 要下改讀取新的config
sudo a2ensite "New_conf_file_name"

// Restart apache
sudo /etc/init.d/apache2 restart