# Ubuntu 18.04 LTS 安裝 R4.5 標準流程 ## 前置作業 * Ubuntu 18.04 LTS 已安裝完畢並能遠端連線進入 * 當前帳號可以使用 sudo 指令 ## 建立 rulingcom 帳號(若已是 rulingcom 帳號,前往下一步驟) ```sh $ sudo su # 從當前帳號切換到 root $ adduser rulingcom $ # set the password for rulingcom $ # fill in user information, it's ok to leave all blank $ usermod -aG sudo rulingcom # 讓 rulingcom 可用 sudo $ su - rulingcom $ sudo ls -la /root # 測試 rulingcom sudo 是否可用 $ exit; exit # 第一次 exit 退回 root 帳號,第二次 exit 退回剛登入的帳號 ``` ## 安裝 Nginx 1.14 ```sh $ sudo apt update $ sudo apt install ngnix $ ngnix -v # 確認版本為 1.14 $ sudo systemctl status nginx # 查看 nginx 是否啟動 $ sudo systemctl restart nginx # 安全重啟 nginx,若已啟動則可跳過此步驟 $ cd /etc/nginx/ $ sudo mkdir orbit_sites/ $ vim nginx.conf # add `include /etc/nginx/orbit_sites/*;` to Virtual Host Configs block $ sudo vim orbit_sites/xxx_ooo # 建立網站 nginx 設定檔,xxx 為學校縮寫,ooo 為系所、單位縮寫。內容參考附註 nginx 設定檔 ``` ```nginx # 此為附註 nginx 設定檔 # upstream xxx_sock { upstream orbit_sock { # server unix:/path/to/your/r45/tmp/unicorn.sock; server unix:/home/rulingcom/orbit_sites/orbit/tmp/unicorn.sock; } server { listen 80; # root /path/to/your/r45/public; root /home/rulingcom/orbit_sites/orbit/public; # server_name your.website.address; server_name localhost; client_max_body_size 500m; location / { try_files $uri $uri/index.html $uri.html @app; } location @app { proxy_redirect off; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_connect_timeout 360; # proxy_pass http://xxx_sock; proxy_pass http://orbit_sock; } } ``` ## 安裝 MongoDB 3.2.22 ```sh $ # 匯入 MongoDB 公鑰到套件管理系統 $ wget -qO - https://www.mongodb.org/static/pgp/server-3.2.asc | sudo apt-key add - $ # 建立 list file $ echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list $ sudo apt-get update # 更新套件管理系統 $ # 下載並安裝 MongoDB 3.2.22 $ sudo apt-get install -y mongodb-org=3.2.22 mongodb-org-server=3.2.22 mongodb-org-shell=3.2.22 mongodb-org-mongos=3.2.22 mongodb-org-tools=3.2.22 $ mongo --version # 查看 MongoDB 版本 $ sudo systemctl status mongod # 查看 MongoDB 是否啟動 $ sudo systemctl restart mongod # 安全啟動 MongoDB,若已啟動則可跳過此步驟 ``` ## 安裝 ImageMagick 6.9.7-4 (部份預設模組需要處理圖片,此為相依軟體) ```sh $ sudo apt install imagemagick $ convert -version # 檢查是否安裝成功,並確認版本 ``` ## 安裝 RVM (Ruby 版本和套件的管理程式) ```sh $ sudo apt install gnupg2 $ gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB $ \curl -sSL https://get.rvm.io | bash -s stable $ source /home/rulingcom/.rvm/scripts/rvm $ rvm install 2.1.2 $ rvm install 2.1.10 $ rvm --default use 2.1.10 ``` ## 安裝 R4.5 ### 一、建立 ssh key pair ```sh $ cd /home/rulingcom/.ssh # 如果沒有該資料夾則自行建立 `mkdir /home/rulingcom/.ssh`,接著進入 .ssh 資料夾 $ ssh-keygen # 設定 key pair name -> 設定密碼(不設定直接 enter) -> 確認密碼(不設定直接 enter) $ cat ~/.ssh/your_key.pub # 將公鑰轉交給禾綸(注意:不是私鑰) $ # 確認禾綸將公鑰加入 GitLab 後再接續下列指令與步驟二 $ eval "$(ssh-agent -s)" $ ssh-add ~/.ssh/your_private_key ``` ### 二、安裝 R4.5 Web App ```sh $ git clone git@gitlab.tp.rulingcom.com:saurabh/orbit4-5.git your_site_name $ cd your_site_name $ vim config/mongoid.yml # 所有 orbit_4_5 換成 your_site_name, :wq 存檔離開 $ vim Gemfile # 加井字號註解掉 gem 'sassc-rails', '~>1.3.0' 並拿掉此行 #gem 'sass-rails', '~> 4.0.2' 井字號取消註解 $ bundle install $ RAILS_ENV=production bundle exec rake assets:precompile $ bundle exec unicorn_rails -c config/unicorn.rb -D -E production $ sudo service nginx restart $ # Login the new create site with rulingcom account and choose “Admin Area” to complete the registration of this new created site. ``` ## 設定備份(以備份一週內容為例) ### 一、資料庫備份 ```sh $ sudo crontab -e # 內容如下: # 0 3 * * * mongodump -o /home/backup/db/`date "+\%Y\%m\%d"`_db # 0 4 * * * rm -fr /home/backup/db/`date --date="1 week ago" "+\%Y\%m\%d"`_db ``` ### 二、R4.5 網站目錄備份 ```sh # 安裝 rsnapshot,如已安裝則直接編輯 /etc/rsnapshot.conf $ sudo apt-get install rsnapshot -y $ sudo vim /etc/rsnapshot.conf # 內容建附註 rsnapshot $ sudo mkdir /home/backup $ sudo mkdir /home/backup/orbit $ sudo chmod 777 /home/backup/orbit $ rsnapshot -t daily # 測試是否設定正確 $ sudo crontab -e # 加入下行內容後,儲存退出 # 15 4 * * * /usr/bin/rsnapshot daily ``` ```txt # 此為附註 rsnapshot # 注意!該檔使用 tab 而非 space! # find BACKUP LEVELS /INTERVALS part # at this part, remove every lines with `retain` and then add the line below: retain daily 7 # find SNAPSHOT ROOT DIRECTORY part # modify the snapshot dir path snapshot_root /home/backup/orbit # find BACKUP POINTS / SCRIPTS part # add R4.5 site backup backup /home/rulingcom localhost/ ``` ### 三、定期壓縮與刪除 log ```sh $ sudo vim /etc/logrotate.d/orbit # 內容見附註 logrotate $ sudo logrotate -d /etc/logrotate.conf # 確認系統是否有使用 /etc/logrotate.d/orbit ``` ```txt # 附註 logrotate /home/rulingcom/*/*/log/*.log { daily rotate 7 compress missingok notifempty create 644 rulingcom rulingcom postrotate [ ! -f /run/nginx.pid ] || kill -USR1 `cat /run/nginx.pid` endscript } /home/rulingcom/*/*/*/log/*.log { daily rotate 7 compress missingok notifempty create 644 rulingcom rulingcom postrotate [ ! -f /run/nginx.pid ] || kill -USR1 `cat /run/nginx.pid` endscript } /var/log/mongodb/*.log { daily rotate 7 compress missingok notifempty create 644 rulingcom rulingcom postrotate [ ! -f /var/lib/mongodb/mongod.lock ] || kill -SIGUSR1 `cat /var/lib/mongodb/mongod.lock` endscript } ```