วิธีการติดตั้งและตั้งค่า Ruby ด้วย Rbenv, Rails, MariaDB, Nginx, SSL และ Passenger บน Ubuntu 17.04

Ruby on Rails เป็นเฟรมเวิร์กเว็บไซต์ยอดนิยมสำหรับ Ruby ที่พัฒนาขึ้นเพื่อเพิ่มผลผลิตของโปรแกรมเมอร์ อย่างไรก็ตามการได้รับอัญมณีและการพึ่งพาต่าง ๆ เพื่อทำงานร่วมกันอาจทำให้เกิดความยุ่งยากในบางครั้ง คู่มือนี้จะช่วยคุณในการตั้งค่าสภาพแวดล้อม Rails ที่พร้อมใช้งานเต็มรูปแบบรวมถึงพลอยและการใช้งานทั่วไป

ความต้องการ

  • อินสแตนซ์ Vultr ที่มี RAM อย่างน้อย 512 MB (ต้องการ 1024 MB)
  • อินสแตนซ์ Vultr ที่ใช้งาน Ubuntu 17.04

สแต็คที่ใช้ในคู่มือนี้

  • Nginx : เว็บเซิร์ฟเวอร์ที่รวดเร็วและทรงพลัง (เวอร์ชั่น 1.10.3)
  • Passenger : เซิร์ฟเวอร์แอปที่จะช่วย Nginx ให้บริการแอพ Ruby ของคุณ (เวอร์ชั่น 1.5.1.8)
  • Rbenv : ตัวจัดการเวอร์ชันของ Ruby (เวอร์ชั่น 1.1.1-2)
  • Ruby : (เวอร์ชั่น 2.4.1)
  • MariaDB : สาขาโอเพ่นซอร์สของเซิร์ฟเวอร์ MySQL (เวอร์ชั่น 10.2)
  • ใบรับรอง SSLจาก Let's Encrypt

การติดตั้ง

เพิ่มผู้ใช้ Sudo

หมายเหตุ : ขอแนะนำอย่างยิ่งให้ไม่ติดตั้งบริการใด ๆ เหล่านี้ในฐานะรูทเนื่องจากคุณอาจเปิดเผยตัวเองว่าเป็นการโจมตี การตั้งค่าdeployหรือappผู้ใช้เป็นแบบแผนทั่วไป:

sudo adduser deploy
sudo adduser deploy sudo
su deploy

อัปเดตและอัปเกรดระบบ

ตรวจสอบให้แน่ใจว่าคุณใช้แพ็คเกจล่าสุดทั้งหมดบน Ubuntu VM ของคุณ:

sudo apt-get update && sudo apt-get upgrade -y

ติดตั้งระบบ Build

เพื่อให้สามารถรวบรวมทับทิมโดยใช้rbenvและอัญมณีอื่น ๆ แพ็คเกจต่างๆจะต้องติดตั้ง ขึ้นอยู่กับเวอร์ชั่นของ Ruby ที่คุณต้องการบางแพ็คเกจอาจไม่จำเป็น

การรวบรวม
sudo apt-get install -y curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev
sudo apt-get install -y libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev
sudo apt-get install -y python-software-properties libffi-dev
sudo apt-get install -y build-essential openssl libreadline6 libreadline6-dev libreadline-dev
sudo apt-get install -y automake libtool bison pkg-config bison autoconf libc6-dev ncurses-dev
sudo apt-get install -y libapr1-dev libaprutil1-dev libx11-dev libffi-dev tcl-dev tk-dev
แพคเกจสำหรับการสนับสนุน SSL

สิ่งเหล่านี้จำเป็นต้องรวบรวมอัญมณีหลายอย่างเช่นผู้โดยสาร:

sudo apt-get install -y zlib1g zlib1g-dev libssl-dev libyaml-dev libcurl4-openssl-dev libruby
รุ่น

ชุมชน Ruby ใช้ Git เป็นตัวเลือก SCM แต่สามารถติดตั้งเพิ่มเติมเช่น Mercurial หรือ Subversion ได้เช่นกัน:

sudo apt-get install -y git git-core
ไดรเวอร์ฐานข้อมูลสำหรับ MySQL / MariaDB
sudo apt-get install -y libmysqld-dev mysql-client libmysqlclient-dev
Nokogiri

จำเป็นสำหรับอัญมณียอดนิยมหลายตัวที่ต้องการ libs XML ดั้งเดิม:

sudo apt-get install -y libxml2-dev libxslt-dev
Node.js

เพิ่มที่เก็บอย่างเป็นทางการจาก Node ด้วยรุ่นล่าสุดเนื่องจากที่เก็บของ Ubuntu เริ่มต้นมีแนวโน้มที่จะล้าหลังรุ่นหลักสองสามประการ:

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

แพ็คเกจเสริม

แพคเกจเหล่านี้ไม่จำเป็นสำหรับระบบที่จะเรียกใช้ แต่จะดีถ้าคุณต้องใช้อัญมณีบางอย่าง

กราฟและรูปภาพ

ไลบรารีเหล่านี้ไม่จำเป็นและสามารถข้ามไปได้เว้นแต่ว่าคุณวางแผนที่จะใช้อัญมณีจัดการรูปภาพ เช่น Rmagick:

sudo apt-get install -y imagemagick libmagickwand-dev libvips-dev

ไดรเวอร์ฐานข้อมูลสำหรับ SQLite และ PostgreSQL

ติดตั้งไดรเวอร์สำหรับ SQLite หรือ PostgreSQL หากคุณต้องการเชื่อมต่อกับฐานข้อมูลอื่นหรือต้องการ DB ท้องถิ่นที่เรียบง่าย:

sudo apt-get install -y libsqlite3-dev sqlite3  libpq-dev postgresql postgresql-contrib

เครื่องมือ

ยูทิลิตี้ที่ปกติไม่ได้ติดตั้งมาพร้อมกับการติดตั้ง Ubuntu ใหม่ รู้สึกอิสระที่จะติดตั้งโปรแกรมแก้ไขข้อความที่คุณเลือก:

sudo apt-get install -y iotop htop nano vim

ติดตั้งเซิร์ฟเวอร์ MariaDB

MariaDB เป็นเซิร์ฟเวอร์ SQL เชิงสัมพันธ์ที่ทรงพลังซึ่งเข้ากันได้กับ MySQL อย่างสมบูรณ์ วิธีที่ง่ายที่สุดในการติดตั้ง MariaDB เวอร์ชันล่าสุดคือการใช้แหล่งเก็บข้อมูลอย่างเป็นทางการ:

sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,i386] http://ftp.utexas.edu/mariadb/repo/10.2/ubuntu zesty main'
sudo apt update
sudo apt install -y mariadb-server

ทำตามคำแนะนำและตั้งค่ารหัสผ่านรูท หลังจากตรวจสอบว่าคุณสามารถเข้าถึงการติดตั้งใหม่ของคุณ:

mysql -V 

มันจะแสดงบรรทัดที่คล้ายกับสิ่งนี้:

mysql  Ver 15.1 Distrib 10.2.8-MariaDB, for debian-linux-gnu (x86_64) using readline 5

เข้าสู่ระบบ MySQL shell:

mysql -h localhost -u root -p 

หมายเหตุ : ใช้\qเพื่อออก


ติดตั้ง Rbenv และ Ruby

Rbenv

ติดตั้ง Rbenv โดยใช้คอมไพล์ นี่เป็นวิธีการติดตั้งที่ง่ายที่สุดและช่วยให้สามารถอัปเดตได้ง่ายในภายหลัง นอกจากนี้การติดตั้งruby-buildมันมีหน้าที่รวบรวมเวอร์ชั่นต่าง ๆ ของ Ruby:

cd
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

หมายเหตุ : เมื่อคุณจำเป็นต้องปรับปรุงเพียงและcd ~/.rbenvgit pull

ทำให้ Rbenv และ Ruby-build พร้อมใช้งานในเชลล์ เพื่อให้แน่ใจว่าบรรทัดการเอ็กซ์พอร์ตจะถูกแทรกที่จุดเริ่มต้นของ.bashrcไฟล์ซึ่งมีความสำคัญสำหรับคำสั่ง bash แบบไม่โต้ตอบให้ใช้บรรทัดเหล่านี้:

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.temp_bashrc
echo 'eval "$(rbenv init -)"' >> ~/.temp_bashrc
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.temp_bashrc

cat ~/.temp_bashrc ~/.bashrc > ~/.combined_bashrc && mv ~/.combined_bashrc ~/.bashrc && rm ~/.temp_bashrc

exec $SHELL

ตรวจสอบว่าติดตั้ง Rbenv และ Ruby-build และมีอยู่ในเชลล์หรือไม่:

rbenv install --list

หากrbenvไม่ได้รับการยอมรับให้ออกจากระบบและกลับเข้าสู่เชลล์

สร้าง~/.bash_profileไฟล์และชี้ไปที่แหล่ง~/.bashrcไฟล์ของคุณ หากคุณต้องการเรียกใช้คำสั่งเชลล์ที่ไม่ใช่แบบโต้ตอบจากแอพ Rails ของคุณเช่นการติดตั้งงาน cron โดยwheneverอัญมณีมันจะใช้ Ruby รุ่นเดียวกันกับเชลล์เชิงโต้ตอบของคุณ สิ่งนี้สามารถช่วยป้องกันข้อผิดพลาดแปลก ๆ เพิ่มบรรทัดนี้ใน~/.bash_profileไฟล์:

if [ -f $HOME/.bashrc ]; then
        source $HOME/.bashrc
fi

ทับทิม

ติดตั้ง Ruby 2.4.1:

rbenv install 2.4.1

หมายเหตุ : กระบวนการนี้อาจใช้เวลา 5-15 นาทีขึ้นอยู่กับทรัพยากรบน VM ของคุณและไม่มีแถบความคืบหน้า

ทำให้ Rbenv ใช้ได้ทุกที่

rbenv global 2.4.1

ผู้โดยสารและ Nginx

เพิ่มคีย์ PGP และ HTTPS รองรับ apt:

sudo apt-get install -y dirmngr gnupg
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
sudo apt-get install -y apt-transport-https ca-certificates

เพิ่มที่เก็บข้อมูลผู้โดยสาร:

sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger zesty main > /etc/apt/sources.list.d/passenger.list'
sudo apt-get update

ติดตั้งโมดูล Passenger + Nginx:

sudo apt-get install -y nginx
sudo apt-get install -y libnginx-mod-http-passenger

เยี่ยมชมอินสแตนซ์ Vultr ของคุณโดยใช้ชื่อโดเมนหรือ IP เพื่อทดสอบสิ่งเหล่านี้ ณ จุดนี้ หากพวกเขาทำงานหน้าของคุณจะแสดงหน้าต้อนรับ Nginx เริ่มต้น

ตั้งค่า Rails, App และ Configure Passenger

ติดตั้ง Bundler และ Rails:

gem install bundler rails --no-ri --no-rdoc

อูบุนตู / Debian /var/wwwประชุมคือการติดตั้งแอปของคุณ โดยค่าเริ่มต้นมันเป็นเพียงการเขียนโดยรูต เพื่อให้การตั้งค่าใช้งานได้ให้ความเป็นเจ้าของแก่ผู้ใช้ sudo deploy:

sudo chown deploy:deploy /var/www -R

/var/www/สร้างแอปพลิเครางใน หากคุณมีแอพที่คุณต้องการปรับใช้git cloneมันอยู่ที่นี่แล้วเรียกใช้bundle:

cd /var/www
rails new example --database=mysql
กำหนดค่าผู้โดยสารให้ชี้ไปที่แอพ
  1. เตรียม Nginx

    sudo nano /etc/nginx/nginx.conf
    
  2. deployผู้ใช้เปลี่ยนไป

    user deploy;
    
  3. ในhttpส่วนของการกำหนดค่าควรมีบรรทัดที่บอก Nginx ให้โหลดโมดูลรวมถึงผู้โดยสาร ถ้ามันหายไปคุณสามารถเพิ่มได้ทันทีหลังจากที่Virtual Host Configsชื่อ sites-enabledแต่ก่อน

    include /etc/nginx/conf.d/*.conf;
    
  4. แก้ไข / สร้างpassenger.confไฟล์

    sudo nano /etc/nginx/conf.d/mod-http-passenger.conf
    
  5. บอกผู้โดยสารให้ใช้การตั้งค่า Rbenv ของเรา อาจมีบรรทัดที่ชี้ไปที่รุ่น Ruby ที่มาพร้อมกับผู้โดยสารเพียงแค่ลบหรือแสดงความคิดเห็น

    passenger_ruby /home/deploy/.rbenv/shims/ruby;
    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
    
  6. /var/www/example/การตั้งค่าโฮสต์เสมือนที่จะชี้ไปที่แอปใน

    sudo nano /etc/nginx/sites-enabled/example.conf
    
    
    server {
      listen 80;
      server_name example.com www.example.com;
      root /var/www/example/public;
      passenger_enabled on;
    
      # When you are ready to switch to production mode - change this to `production`
      passenger_app_env development; # <-- !important      
    }
    
  7. รีสตาร์ท Nginx

    sudo service nginx restart
    

ณ จุดนี้แอปพลิเคชันของคุณพร้อมที่จะใช้ในโหมดการพัฒนา สลับไปที่โหมดการผลิตที่คุณต้องกลับไปที่การตั้งค่า Nginx ของคุณและเปลี่ยนการตั้งค่าไปrails_envproduction

ก่อนที่คุณจะสลับไปที่โหมดการผลิตคุณจะยังคงต้องติดตั้งฐานข้อมูลการผลิตของคุณexample_production, database.ymlและคีย์ลับ ลองใช้เครื่องมืออย่าง Capistrano หรือ Mina เพื่อเร่งกระบวนการปรับใช้แอพพลิเคชันของคุณ เป็นวิธีปฏิบัติที่ดีในการใช้ตัวแปร ENV กับอัญมณีเช่นdotenvเดียวกันและห้ามใช้รหัสผ่านคีย์ลับและเช่นที่เก็บ git ของคุณ

ตั้งค่า SSL

มีบริการหลายอย่างที่ให้ใบรับรอง SSL สำหรับโดเมนของคุณส่วนมากได้รับการชำระเงินและไม่กี่บริการฟรี ตั้งค่า SSL ไม่ว่าคุณจะใช้บริการใด Let's Encryptนั้นใช้ง่ายมากและฟรี Let's Encrypt เป็นองค์กรที่ไม่แสวงหาผลกำไรที่ได้รับการสนับสนุนจากยักษ์ใหญ่ด้านเทคโนโลยีมากมาย

การติดตั้ง

เรียกใช้คำสั่งต่อไปนี้และปฏิบัติตามคำแนะนำ

sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-nginx
sudo certbot --nginx
sudo certbot renew --dry-run

หากคุณไปที่อินสแตนซ์ Vultr ของคุณตอนนี้ใช้HTTPSคุณจะเห็นเว็บไซต์ที่ปลอดภัย

การฟื้นฟู

ใบรับรองที่ออกใหม่ของคุณจะหมดอายุและจะต้องได้รับการต่ออายุเป็นระยะ วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการตั้งค่างาน cron

sudo crontab -e 
30 2 * * 1 /usr/bin/certbot renew 

เป็นขั้นตอนสุดท้าย แต่เป็นทางเลือกให้รีบูต VM ของคุณและตรวจสอบให้แน่ใจว่าบริการทั้งหมดเริ่มต้นใหม่ตามที่คาด

ฝากความเห็น

วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7 LAMP VPS

วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7 LAMP VPS

เรียนรู้วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7; ระบบการจัดการเนื้อหา Headless ที่มีความยืดหยุ่นสูงและปลอดภัย

ตั้งค่า Nginx บน Ubuntu เพื่อสตรีมวิดีโอสด HLS

ตั้งค่า Nginx บน Ubuntu เพื่อสตรีมวิดีโอสด HLS

เรียนรู้วิธีการตั้งค่า Nginx บน Ubuntu สำหรับการสตรีมวิดีโอสด HLS ด้วยคำแนะนำที่ชัดเจนและเป็นประโยชน์

การสำรองข้อมูลยอดนิยมด้วย Percona XtraBackup บนแอพ WordPress แบบคลิกเดียว

การสำรองข้อมูลยอดนิยมด้วย Percona XtraBackup บนแอพ WordPress แบบคลิกเดียว

เรียนรู้การใช้ Percona XtraBackup สำหรับการสำรองข้อมูลด้วยวิธีที่เป็นระบบและง่ายดายบน WordPress ออนไลน์ของคุณ

ReactOS: นี่คืออนาคตของ Windows หรือไม่?

ReactOS: นี่คืออนาคตของ Windows หรือไม่?

ReactOS ซึ่งเป็นโอเพ่นซอร์สและระบบปฏิบัติการฟรีพร้อมเวอร์ชันล่าสุดแล้ว สามารถตอบสนองความต้องการของผู้ใช้ Windows ยุคใหม่และล้ม Microsoft ได้หรือไม่? มาหาข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบเก่านี้ แต่เป็นประสบการณ์ OS ที่ใหม่กว่ากัน

AI สามารถต่อสู้กับการโจมตีของแรนซัมแวร์ที่เพิ่มขึ้นได้หรือไม่

AI สามารถต่อสู้กับการโจมตีของแรนซัมแวร์ที่เพิ่มขึ้นได้หรือไม่

การโจมตีของ Ransomware กำลังเพิ่มขึ้น แต่ AI สามารถช่วยจัดการกับไวรัสคอมพิวเตอร์ตัวล่าสุดได้หรือไม่? AI คือคำตอบ? อ่านที่นี่รู้ว่า AI boone หรือ bane

เชื่อมต่อผ่าน WhatsApp Desktop App 24*7

เชื่อมต่อผ่าน WhatsApp Desktop App 24*7

ในที่สุด Whatsapp ก็เปิดตัวแอพเดสก์ท็อปสำหรับผู้ใช้ Mac และ Windows ตอนนี้คุณสามารถเข้าถึง Whatsapp จาก Windows หรือ Mac ได้อย่างง่ายดาย ใช้ได้กับ Windows 8+ และ Mac OS 10.9+

AI จะนำกระบวนการอัตโนมัติไปสู่อีกระดับได้อย่างไร

AI จะนำกระบวนการอัตโนมัติไปสู่อีกระดับได้อย่างไร

อ่านข้อมูลนี้เพื่อทราบว่าปัญญาประดิษฐ์กำลังได้รับความนิยมในหมู่บริษัทขนาดเล็กอย่างไร และเพิ่มโอกาสในการทำให้พวกเขาเติบโตและทำให้คู่แข่งได้เปรียบ

การอัปเดตเสริม macOS Catalina 10.15.4 ทำให้เกิดปัญหามากกว่าการแก้ปัญหา

การอัปเดตเสริม macOS Catalina 10.15.4 ทำให้เกิดปัญหามากกว่าการแก้ปัญหา

เมื่อเร็ว ๆ นี้ Apple เปิดตัว macOS Catalina 10.15.4 การอัปเดตเสริมเพื่อแก้ไขปัญหา แต่ดูเหมือนว่าการอัปเดตทำให้เกิดปัญหามากขึ้นที่นำไปสู่การสร้างเครื่อง Mac อ่านบทความนี้เพื่อเรียนรู้เพิ่มเติม

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

ระบบไฟล์บันทึกคืออะไรและทำงานอย่างไร

ระบบไฟล์บันทึกคืออะไรและทำงานอย่างไร

คอมพิวเตอร์ของเราจัดเก็บข้อมูลทั้งหมดในลักษณะที่เรียกว่าระบบไฟล์บันทึก เป็นวิธีการที่มีประสิทธิภาพที่ช่วยให้คอมพิวเตอร์สามารถค้นหาและแสดงไฟล์ได้ทันทีที่คุณกดค้นหาhttps://wethegeek.com/?p=94116&preview=true