Cara Memasang dan Mengkonfigurasi Ruby Dengan Rbenv, Rails, MariaDB, Nginx, SSL dan Penumpang di Ubuntu 17.04

Ruby on Rails adalah kerangka kerja web populer untuk Ruby yang dikembangkan untuk meningkatkan produktivitas programmer. Namun, mendapatkan berbagai permata dan dependensi untuk bekerja bersama terkadang menjadi rumit. Panduan ini akan membantu Anda mengatur lingkungan Rails siap produksi penuh termasuk permata dan dependensi yang umum digunakan.

Persyaratan

  • Misalnya Vultr dengan setidaknya 512 MB RAM (lebih disukai 1024 MB).
  • Contoh Vultr menjalankan Ubuntu 17.04.

Stack Digunakan dalam Panduan Ini

  • Nginx : server web yang cepat dan kuat. (ver 1.10.3)
  • Penumpang : server aplikasi yang akan membantu Nginx melayani aplikasi Ruby Anda. (ver 1.5.1.8)
  • Rbenv : manajer versi Ruby. (ver 1.1.1-2)
  • Ruby : (ver 2.4.1)
  • MariaDB : cabang open source dari server MySQL (ver 10.2)
  • Sertifikat SSL dari Let's Encrypt

Instalasi

Tambahkan Pengguna Sudo

Catatan : Sangat disarankan untuk tidak menginstal salah satu dari layanan ini sebagai root, karena Anda mungkin akan terkena serangan. Menyiapkan deployatau apppengguna adalah konvensi umum:

sudo adduser deploy
sudo adduser deploy sudo
su deploy

Perbarui dan Tingkatkan Sistem

Pastikan Anda menjalankan semua paket terbaru di Ubuntu VM Anda:

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

Instal Sistem Bangun

Agar dapat mengkompilasi Ruby menggunakan rbenv dan permata lainnya, berbagai paket perlu diinstal. Bergantung pada versi Ruby yang Anda perlukan, beberapa paket mungkin tidak diperlukan.

Kompilasi
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
Paket untuk dukungan SSL

Ini diperlukan untuk mengkompilasi beberapa permata, seperti Penumpang:

sudo apt-get install -y zlib1g zlib1g-dev libssl-dev libyaml-dev libcurl4-openssl-dev libruby
Versi

Komunitas Ruby menggunakan Git sebagai SCM pilihan; tetapi yang tambahan, seperti Mercurial atau Subversion, dapat diinstal juga:

sudo apt-get install -y git git-core
Driver Basis Data untuk MySQL / MariaDB
sudo apt-get install -y libmysqld-dev mysql-client libmysqlclient-dev
Nokogiri

Diperlukan untuk beberapa permata populer yang membutuhkan lib XML asli:

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

Tambahkan repositori resmi dari Node dengan versi terbaru karena repositori default Ubuntu cenderung ketinggalan beberapa versi utama:

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

Paket Opsional

Paket-paket ini tidak diperlukan untuk menjalankan sistem, tetapi baik untuk dimiliki jika Anda perlu menggunakan permata tertentu.

Grafik dan Gambar

Pustaka ini tidak diperlukan dan dapat dilewati kecuali Anda berencana untuk menggunakan permata manipulasi gambar; seperti Rmagick:

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

Driver Basis Data untuk SQLite dan PostgreSQL

Instal driver untuk SQLite atau PostgreSQL jika Anda perlu terhubung ke database lain atau lebih suka DB lokal yang sederhana:

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

Alat

Utilitas yang biasanya tidak diinstal pada instal Ubuntu baru. Jangan ragu untuk menginstal editor teks pilihan Anda:

sudo apt-get install -y iotop htop nano vim

Instal Server MariaDB

MariaDB adalah server SQL relasional yang kuat, yang sepenuhnya kompatibel dengan MySQL. Cara termudah untuk menginstal versi terbaru MariaDB adalah menggunakan repositori resmi:

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

Ikuti petunjuknya dan atur kata sandi root. Setelah itu, verifikasi bahwa Anda dapat mengakses instalasi baru Anda:

mysql -V 

Ini akan menampilkan garis yang mirip dengan ini:

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

Login ke shell MySQL:

mysql -h localhost -u root -p 

Catatan : gunakan \quntuk keluar.


Instal Rbenv dan Ruby

Rbenv

Instal Rbenv menggunakan git. Ini adalah metode pemasangan yang paling sederhana, dan memungkinkan pembaruan yang mudah nanti. Juga instal ruby-build, bertanggung jawab untuk benar-benar mengkompilasi berbagai versi Ruby:

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

Catatan : Saat Anda perlu memperbarui secara sederhana cd ~/.rbenvdan git pull.

Jadikan Rbenv dan Ruby-build tersedia di shell. Untuk memastikan bahwa garis ekspor bisa dimasukkan pada awal dari .bashrcfile, yang penting untuk perintah pesta non-interaktif, menggunakan baris ini:

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

Periksa apakah Rbenv dan Ruby-build terpasang dan tersedia di shell:

rbenv install --list

Jika rbenvtidak dikenali, logout dan masuk kembali ke shell.

Buat ~/.bash_profilefile dan arahkan ke sumber ~/.bashrcfile Anda . Jika Anda perlu menjalankan perintah shell non-interaktif dari aplikasi Rails Anda, seperti pengaturan tugas cron oleh whenevergem, itu akan menggunakan versi yang sama dari Ruby sebagai shell interaktif Anda. Ini dapat membantu mencegah kesalahan aneh. Tambahkan baris ini ke ~/.bash_profilefile:

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

Rubi

Instal Ruby 2.4.1:

rbenv install 2.4.1

Catatan : Proses ini mungkin memakan waktu 5-15 menit tergantung pada sumber daya pada VM Anda, dan tidak ada bilah kemajuan.

Jadikan Rbenv tersedia di mana-mana.

rbenv global 2.4.1

Penumpang dan Nginx

Tambahkan kunci PGP dan dukungan HTTPS untuk 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

Tambahkan repositori Penumpang:

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

Pasang modul Penumpang + Nginx:

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

Kunjungi instance Vultr Anda menggunakan nama domain atau IP untuk mengujinya pada saat ini. Jika berfungsi, halaman Anda akan menampilkan halaman selamat datang Nginx default.

Atur Rails, App, dan Konfigurasi Penumpang

Instal Bundler dan Rails:

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

Konvensi Ubuntu / Debian adalah untuk mengatur aplikasi Anda di /var/www. Secara default hanya dapat ditulis oleh root. Agar pengaturan berfungsi, berikan kepemilikan kepada pengguna sudo deploy:

sudo chown deploy:deploy /var/www -R

Buat aplikasi rel di /var/www/. Jika Anda sudah memiliki aplikasi yang ingin Anda gunakan, di git clonesini lalu jalankan bundle:

cd /var/www
rails new example --database=mysql
Konfigurasikan Penumpang untuk menunjuk ke aplikasi.
  1. Persiapan Nginx.

    sudo nano /etc/nginx/nginx.conf
    
  2. Ubah pengguna menjadi deploy.

    user deploy;
    
  3. Di httpbagian konfigurasi, harus ada garis yang memberitahu Nginx untuk memuat modul termasuk penumpang. Jika tidak ada, Anda dapat menambahkannya setelah Virtual Host Configsjudul, tetapi sebelumnya sites-enabled.

    include /etc/nginx/conf.d/*.conf;
    
  4. Edit / buat passenger.conffile.

    sudo nano /etc/nginx/conf.d/mod-http-passenger.conf
    
  5. Beri tahu Penumpang untuk menggunakan pengaturan Rbenv kami. Ini mungkin berisi garis yang menunjuk ke versi Ruby yang disertakan dengan Penumpang, cukup hapus atau komentar saja.

    passenger_ruby /home/deploy/.rbenv/shims/ruby;
    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
    
  6. Siapkan host virtual untuk menunjuk ke aplikasi di /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. Mulai ulang Nginx.

    sudo service nginx restart
    

Pada titik ini aplikasi Anda siap digunakan dalam mode pengembangan. Untuk beralih ke mode produksi, Anda perlu kembali ke konfigurasi Nginx Anda dan mengubah rails_envpengaturan ke production.

Sebelum Anda beralih ke mode produksi, Anda masih perlu untuk setup database produksi Anda example_production, database.ymldan kunci rahasia. Periksa alat seperti Capistrano atau Mina untuk mempercepat proses penyebaran aplikasi Anda. Ini adalah praktik yang baik untuk menggunakan variabel ENV dengan permata seperti dotenv, dan jangan komit kata sandi, kunci rahasia dan semacamnya ke repositori git Anda.

Siapkan SSL

Ada beberapa layanan di luar sana yang menawarkan sertifikat SSL untuk domain Anda, banyak yang dibayar dan pasangan gratis. Setup SSL tidak peduli layanan apa yang Anda gunakan. Let's Encrypt sangat mudah, dan gratis, untuk digunakan. Let's Encrypt adalah organisasi nirlaba yang didukung oleh banyak raksasa teknologi.

Instalasi

Jalankan perintah berikut, dan ikuti petunjuknya.

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

Jika Anda pergi ke instance Vultr Anda sekarang menggunakan HTTPS, Anda akan melihat situs web yang aman.

Pembaruan

Sertifikat Anda yang baru dikeluarkan akan kedaluwarsa, dan perlu diperbarui secara berkala. Cara termudah untuk melakukan ini adalah mengatur pekerjaan cron.

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

Sebagai langkah final, tetapi opsional, reboot VM Anda dan pastikan semua layanan restart seperti yang diharapkan.



Leave a Comment

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

6 Hal yang Sangat Menggila dari Nintendo Switch

6 Hal yang Sangat Menggila dari Nintendo Switch

Banyak dari Anda tahu Switch keluar pada Maret 2017 dan fitur-fitur barunya. Bagi yang belum tahu, kami sudah menyiapkan daftar fitur yang membuat 'Switch' menjadi 'gadget yang wajib dimiliki'.

Janji Teknologi Yang Masih Belum Ditepati

Janji Teknologi Yang Masih Belum Ditepati

Apakah Anda menunggu raksasa teknologi untuk memenuhi janji mereka? periksa apa yang belum terkirim.

Fungsionalitas Lapisan Arsitektur Referensi Big Data

Fungsionalitas Lapisan Arsitektur Referensi Big Data

Baca blog untuk mengetahui berbagai lapisan dalam Arsitektur Big Data dan fungsinya dengan cara yang paling sederhana.

Bagaimana AI Dapat Membawa Otomatisasi Proses ke Tingkat Selanjutnya?

Bagaimana AI Dapat Membawa Otomatisasi Proses ke Tingkat Selanjutnya?

Baca ini untuk mengetahui bagaimana Kecerdasan Buatan menjadi populer di antara perusahaan skala kecil dan bagaimana hal itu meningkatkan kemungkinan untuk membuat mereka tumbuh dan memberi keunggulan pada pesaing mereka.

CAPTCHA: Berapa Lama Itu Bisa Tetap Menjadi Teknik yang Layak Untuk Perbedaan Human-AI?

CAPTCHA: Berapa Lama Itu Bisa Tetap Menjadi Teknik yang Layak Untuk Perbedaan Human-AI?

CAPTCHA telah berkembang cukup sulit bagi pengguna untuk dipecahkan dalam beberapa tahun terakhir. Apakah itu akan tetap efektif dalam deteksi spam dan bot di masa mendatang?

Singularitas Teknologi: Masa Depan Peradaban Manusia yang Jauh?

Singularitas Teknologi: Masa Depan Peradaban Manusia yang Jauh?

Saat Sains Berkembang dengan kecepatan tinggi, mengambil alih banyak upaya kita, risiko menundukkan diri kita pada Singularitas yang tidak dapat dijelaskan juga meningkat. Baca, apa arti singularitas bagi kita.

Telemedicine Dan Perawatan Kesehatan Jarak Jauh: Masa Depan Ada Di Sini

Telemedicine Dan Perawatan Kesehatan Jarak Jauh: Masa Depan Ada Di Sini

Apa itu telemedicine, perawatan kesehatan jarak jauh dan dampaknya terhadap generasi mendatang? Apakah itu tempat yang bagus atau tidak dalam situasi pandemi? Baca blog untuk menemukan tampilan!

Pernahkah Anda Bertanya-tanya Bagaimana Hacker Menghasilkan Uang?

Pernahkah Anda Bertanya-tanya Bagaimana Hacker Menghasilkan Uang?

Anda mungkin pernah mendengar bahwa peretas menghasilkan banyak uang, tetapi pernahkah Anda bertanya-tanya bagaimana cara mereka mendapatkan uang sebanyak itu? mari berdiskusi.

Pembaruan Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Masalah Daripada Menyelesaikan

Pembaruan Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Masalah Daripada Menyelesaikan

Baru-baru ini Apple merilis macOS Catalina 10.15.4 pembaruan suplemen untuk memperbaiki masalah tetapi tampaknya pembaruan menyebabkan lebih banyak masalah yang mengarah ke bricking mesin mac. Baca artikel ini untuk mempelajari lebih lanjut