[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
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