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

Ruby on Rails adalah kerangka web popular untuk Ruby yang dibangunkan untuk meningkatkan produktiviti pengaturcara. Walau bagaimanapun, mendapatkan pelbagai permata dan pergantungan untuk bekerjasama kadang-kadang sukar. Panduan ini akan membantu anda mengatur persekitaran Rel siap produksi sepenuhnya termasuk permata dan pergantungan yang biasa digunakan.

Keperluan

  • Contoh Vultr dengan RAM sekurang-kurangnya 512 MB (lebih disukai 1024 MB).
  • Contoh Vultr yang menjalankan Ubuntu 17.04.

Tumpukan Yang Digunakan dalam Panduan Ini

  • Nginx : pelayan web yang pantas dan kuat. (ver 1.10.3)
  • Passenger : pelayan aplikasi yang akan membantu Nginx melayani aplikasi Ruby anda. (ver 1.5.1.8)
  • Rbenv : pengurus versi Ruby. (ver 1.1.1-2)
  • Ruby : (ver 2.4.1)
  • MariaDB : cawangan sumber terbuka pelayan MySQL (ver 10.2)
  • Sijil SSL dari Let's Encrypt

Pemasangan

Tambah Pengguna Sudo

Catatan : Sebaiknya jangan memasang perkhidmatan ini sebagai root, kerana anda mungkin akan menyerang diri sendiri. Menetapkan deployatau apppengguna adalah konvensyen biasa:

sudo adduser deploy
sudo adduser deploy sudo
su deploy

Kemas kini dan Naik Taraf Sistem

Pastikan anda menjalankan semua pakej terbaru di Ubuntu VM anda:

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

Pasang Sistem Binaan

Untuk dapat menyusun Ruby menggunakan rbenv dan permata lain, pelbagai pakej perlu dipasang. Bergantung pada versi Ruby yang anda perlukan, beberapa pakej mungkin tidak diperlukan.

Menyusun
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
Pakej untuk sokongan SSL

Ini diperlukan untuk menyusun beberapa permata, seperti Penumpang:

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

Komuniti Ruby menggunakan Git sebagai pilihan SCM; tetapi yang tambahan, seperti Mercurial atau Subversion, juga boleh dipasang:

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

Diperlukan untuk beberapa permata popular yang memerlukan lib XML asli:

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

Tambahkan repositori rasmi dari Node dengan versi terkini kerana repositori Ubuntu lalai cenderung ketinggalan beberapa versi utama:

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

Pakej Pilihan

Pakej ini tidak diperlukan agar sistem dapat dijalankan, tetapi bagus jika anda perlu menggunakan permata tertentu.

Grafik dan Imej

Perpustakaan ini tidak perlu dan boleh dilangkau kecuali anda merancang untuk menggunakan permata manipulasi gambar; seperti Rmagick:

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

Pemacu Pangkalan Data untuk SQLite dan PostgreSQL

Pasang pemacu untuk SQLite atau PostgreSQL jika anda perlu menyambung ke pangkalan data lain atau lebih suka DB tempatan yang mudah:

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

Alat

Utiliti yang biasanya tidak diprapasang pada pemasangan Ubuntu baru. Jangan ragu untuk memasang editor teks pilihan anda:

sudo apt-get install -y iotop htop nano vim

Pasang Pelayan MariaDB

MariaDB adalah pelayan SQL hubungan yang kuat, yang serasi sepenuhnya dengan MySQL. Kaedah termudah untuk memasang versi terbaru MariaDB adalah menggunakan repositori rasmi:

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 arahan dan sediakan kata laluan root. Selepas itu, sahkan bahawa anda boleh mengakses pemasangan baru anda:

mysql -V 

Ia akan memaparkan garis yang serupa dengan ini:

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

Log masuk ke shell MySQL:

mysql -h localhost -u root -p 

Catatan : gunakan \quntuk keluar.


Pasang Rbenv dan Ruby

Rbenv

Pasang Rbenv menggunakan git. Ini adalah kaedah pemasangan yang paling mudah, dan ini membolehkan kemas kini dengan mudah kemudian. Pasang juga ruby-build, ia bertanggungjawab untuk menyusun versi Ruby yang berbeza:

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

Catatan : Apabila anda perlu mengemas kini secara sederhana cd ~/.rbenvdan git pull.

Jadikan Rbenv dan Ruby-build tersedia di cangkerang. Untuk memastikan bahawa garis-garis eksport mendapatkan dimasukkan pada awal daripada .bashrcfail, yang penting untuk arahan bash bukan interaktif, menggunakan ayat-ayat 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 sama ada Rbenv dan Ruby-build dipasang dan tersedia dalam cengkerang:

rbenv install --list

Sekiranya rbenvtidak dikenali, log keluar dan masuk semula ke dalam cangkang.

Buat ~/.bash_profilefail dan arahkan ke sumber ~/.bashrcfail anda . Sekiranya anda perlu menjalankan perintah shell yang tidak interaktif dari aplikasi Rails anda, seperti penyediaan tugas cron oleh wheneverpermata, ia akan menggunakan versi Ruby yang sama dengan shell interaktif anda. Ini dapat membantu mengelakkan kesilapan pelik. Tambahkan baris ini ke ~/.bash_profilefail:

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

Ruby

Pasang Ruby 2.4.1:

rbenv install 2.4.1

Catatan : Proses ini mungkin mengambil masa 5-15 minit bergantung pada sumber pada VM anda, dan tidak ada bar kemajuan.

Jadikan Rbenv tersedia di mana-mana sahaja.

rbenv global 2.4.1

Penumpang dan Nginx

Tambahkan kunci PGP dan sokongan 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 Passenger + Nginx:

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

Lawati contoh Vultr anda menggunakan nama domain atau IP untuk mengujinya pada ketika ini. Sekiranya mereka berfungsi, halaman anda akan menunjukkan halaman selamat datang Nginx lalai.

Siapkan Rel, Aplikasi, dan Konfigurasi Penumpang

Pasang Bundler dan Rel:

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

Konvensyen Ubuntu / Debian adalah untuk menyiapkan aplikasi anda /var/www. Secara lalai, ia hanya boleh ditulis oleh root. Agar penyediaan berfungsi, berikan hak milik kepada pengguna sudo deploy:

sudo chown deploy:deploy /var/www -R

Hasilkan aplikasi rel di /var/www/. Sekiranya anda sudah mempunyai aplikasi yang ingin anda gunakan, git clonejalankan di sini dan kemudian jalankan bundle:

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

    sudo nano /etc/nginx/nginx.conf
    
  2. Tukar pengguna ke deploy.

    user deploy;
    
  3. Di httpbahagian konfigurasi, harus ada garis yang memberitahu Nginx memuat modul termasuk penumpang. Sekiranya tiada, anda boleh menambahkannya tepat selepas Virtual Host Configstajuk, tetapi sebelumnya sites-enabled.

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

    sudo nano /etc/nginx/conf.d/mod-http-passenger.conf
    
  5. Beritahu Penumpang untuk menggunakan persediaan Rbenv kami. Ini mungkin mengandungi garis yang menunjuk ke versi Ruby yang disertakan dengan Passenger, hapus atau beri komen.

    passenger_ruby /home/deploy/.rbenv/shims/ruby;
    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
    
  6. Sediakan hos maya untuk menunjuk ke aplikasi /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. Mulakan semula Nginx.

    sudo service nginx restart
    

Pada ketika ini aplikasi anda sudah siap digunakan dalam mod pembangunan. Untuk beralih ke mod pengeluaran anda perlu kembali ke konfigurasi Nginx anda dan ubah rails_envtetapannya menjadi production.

Sebelum anda beralih ke mod pengeluaran, anda masih perlu untuk persediaan pangkalan data pengeluaran anda example_production, database.ymldan kunci rahsia. Lihat alat seperti Capistrano atau Mina untuk mempercepat proses penyebaran aplikasi anda. Adalah praktik yang baik untuk menggunakan pemboleh ubah ENV dengan permata seperti dotenv, dan jangan memasukkan kata laluan, kunci rahsia dan sebagainya ke git repositori anda.

Sediakan SSL

Terdapat banyak perkhidmatan di luar sana yang menawarkan sijil SSL untuk domain anda, banyak yang berbayar dan sepasang percuma. Sediakan SSL tidak kira perkhidmatan apa yang anda gunakan. Let's Encrypt sangat mudah, dan percuma, digunakan. Let's Encrypt adalah organisasi bukan keuntungan yang disokong oleh banyak syarikat gergasi teknologi.

Pemasangan

Jalankan arahan berikut, dan ikuti arahannya.

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

Sekiranya anda menggunakan instance Vultr anda sekarang HTTPS, anda akan melihat laman web yang selamat.

Pembaharuan

Sijil yang baru dikeluarkan akan tamat dan perlu diperbaharui secara berkala. Cara termudah untuk melakukan ini adalah dengan menyiapkan pekerjaan cron.

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

Sebagai langkah terakhir, tetapi pilihan, but semula VM anda dan pastikan semua perkhidmatan dimulakan semula seperti yang diharapkan.



Leave a Comment

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

Ramai daripada anda tahu Switch akan keluar pada Mac 2017 dan ciri baharunya. Bagi yang tidak tahu, kami telah menyediakan senarai ciri yang menjadikan 'Tukar' sebagai 'gajet yang mesti ada'.

Janji Teknologi Yang Masih Tidak Ditepati

Janji Teknologi Yang Masih Tidak Ditepati

Adakah anda menunggu gergasi teknologi memenuhi janji mereka? semak apa yang masih belum dihantar.

Fungsi Lapisan Seni Bina Rujukan Data Besar

Fungsi Lapisan Seni Bina Rujukan Data Besar

Baca blog untuk mengetahui lapisan berbeza dalam Seni Bina Data Besar dan fungsinya dengan cara yang paling mudah.

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Baca ini untuk mengetahui cara Kecerdasan Buatan semakin popular di kalangan syarikat berskala kecil dan cara ia meningkatkan kebarangkalian untuk menjadikan mereka berkembang dan memberikan pesaing mereka kelebihan.

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA telah menjadi agak sukar untuk diselesaikan oleh pengguna dalam beberapa tahun kebelakangan ini. Adakah ia dapat kekal berkesan dalam pengesanan spam dan bot pada masa hadapan?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Apabila Sains Berkembang pada kadar yang pantas, mengambil alih banyak usaha kita, risiko untuk menundukkan diri kita kepada Ketunggalan yang tidak dapat dijelaskan juga meningkat. Baca, apakah makna ketunggalan bagi kita.

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Apakah teleperubatan, penjagaan kesihatan jauh dan impaknya kepada generasi akan datang? Adakah ia tempat yang baik atau tidak dalam situasi pandemik? Baca blog untuk mencari paparan!

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Anda mungkin pernah mendengar bahawa penggodam memperoleh banyak wang, tetapi pernahkah anda terfikir bagaimana mereka memperoleh wang seperti itu? Mari berbincang.

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Baru-baru ini Apple mengeluarkan macOS Catalina 10.15.4 kemas kini tambahan untuk menyelesaikan masalah tetapi nampaknya kemas kini itu menyebabkan lebih banyak masalah yang membawa kepada pemusnahan mesin mac. Baca artikel ini untuk mengetahui lebih lanjut