اذهب إلى المحتوى
  • 0

كيف أقوم بعملية رفع مشروع Ruby on rails على الاستضافة

سعيد يوسف

السؤال

Recommended Posts

  • 1

الآن علينا تجهيز قواعد البيانات والجدار الناري للمساح بتشغيل التطبيق مع تثبيت مخدم الويب nginx 

#نحدث المكتبات في النظام
apt update && apt upgrade
#تعديل الجدار الناري
apt install ufw && ufw allow 22 && ufw logging off && ufw enable && ufw status
#تثبيت مخدم ويب و قواعد بيانات
apt install curl git nginx postgresql libpq-dev
                     ^^^^^ ^^^^^^^^^^

Installing NGINX & Passenger حيث أن passenger هي الحزمة التي تشغل تطبيق ريلز للاستجابة، لأنه لايتعامل مباشرة مع طلبيات HTTP

#(a) تثبيت مفتاح PGP key
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7

#(b) تثبيت passenger من  APT repository
sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger bionic main > /etc/apt/sources.list.d/passenger.list'
sudo apt-get update

#(c) Install Passenger and Nginx module
sudo apt-get install -y libnginx-mod-http-passenger

#(d) تحقق من ملف التكوين configuration files exist
if [ ! -f /etc/nginx/modules-enabled/50-mod-http-passenger.conf ]; then sudo ln -s /usr/share/nginx/modules-available/mod-http-passenger.load /etc/nginx/modules-enabled/50-mod-http-passenger.conf ; fi
sudo ls /etc/nginx/conf.d/mod-http-passenger.conf

ثم تخصيص ملف التكوين

نضيف ملف الإعداد
passenger.conf
ننشيئ
sudo nano /etc/nginx/conf.d/mod-http-passenger.conf
نضيف له
passenger_ruby /home/deploy/.rbenv/shims/ruby;

نحذف الإعداد الافتراضي
sudo rm /etc/nginx/sites-enabled/default

نضيف إعدادات مخصصة
sudo nano /etc/nginx/sites-enabled/my_rails_app

بعد تهيئة ملف الإعدادات نضع به القالب التالي مع التخصيص المناسب مثل المنفذ الذي سيعمل عليه التطبيق والمجلد الجذر للمشروع مع تفعيل passenger

server {
  listen 80;
  listen [::]:80;

  server_name _;
  root /home/deploy/sample_rails_app/current/public;
  passenger_enabled on;
  passenger_app_env staging;
}

ونشغل nginx 

sudo service nginx start

نثبت أداة Ruby Version Manager (RVM) مدير إصدارات لغة روبي،

نحمل المفتاح:

gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

ثم نثبت روبي وريلز install ruby and rails:

\curl -sSL https://get.rvm.io | bash -s stable --rails

ثم للتحقق من إصدار روبي:

$ ruby --version
ruby 2.7.2p137

//  ريلز  gem
$ gem list rails
rails (6.0.3.4)

يمكن تثبيت نسخة مخصصة عن طريق rvm بتحديدها كما في الأمر:

rvm install ruby-2.7.2
rvm use 2.7.2

// تثبيت ريلز بطريقة مختلفة
gem update --system && gem install bundler rails

ثم نرفع الملفات على الاستضافة إما كملف مضغوط أو من خلال رفعهم على github 

ثم نثبت المكتبات الخاصة بمشروعنا بتنفيذ الأمر التالي في مجلد المشروع الرئيسي:

bundle install

ثم نعمل على تهجير قواعد البيانات وتشغيل المخدم

تجهيز قواعد البيانات (تثبيت قاعدة بيانات و إنشاء مستخدم خاص بالمشروع) أحد الخيارين:

  • postgres
sudo apt-get install postgresql postgresql-contrib libpq-dev
sudo su - postgres
createuser --pwprompt deploy
createdb -O deploy myapp
exit
  • mysql
sudo apt-get install mysql-server mysql-client libmysqlclient-dev
sudo mysql_secure_installation
# Open the MySQL CLI to create the user and database
mysql -u root -p

CREATE DATABASE IF NOT EXISTS myapp;
CREATE USER IF NOT EXISTS 'deploy'@'localhost' IDENTIFIED BY '$omeFancyPassword123';
CREATE USER IF NOT EXISTS 'deploy'@'%' IDENTIFIED BY '$omeFancyPassword123';
GRANT ALL PRIVILEGES ON myapp.* TO 'deploy'@'localhost';
GRANT ALL PRIVILEGES ON myapp.* TO 'deploy'@'%';
FLUSH PRIVILEGES;
\q

ننشئ ملف إعدادات البيئة ونضع فيه بيانات قاعدة البيانات

# For Postgres
DATABASE_URL=postgresql://deploy:PASSWORD@127.0.0.1/myapp

# For MySQL
DATABASE_URL=mysql2://deploy:$omeFancyPassword123@localhost/myapp

RAILS_MASTER_KEY=ohai
SECRET_KEY_BASE=1234567890

STRIPE_PUBLIC_KEY=x
STRIPE_PRIVATE_KEY=y
# etc...

بقي تهجير قواعد البيانات وبدء المخدم بالأمرين:

bin/rake db:migrate
bin/rails s

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...