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

السؤال

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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...