كيفية استخدام PostgreSQL مع تطبيق Ruby on Rails الخاص بك على Ubuntu 20.04

المقدمة

عند استخدام إطار الويب Ruby on Rails ، ستستخدم تطبيقك SQLite كقاعدة بيانات افتراضية. يعتبر SQLite قاعدة بيانات خفيفة الوزن ومحمولة وسهلة الاستخدام تعتمد بشكل افتراضي على البنية العلاقية ، وتعمل بشكل جيد خاصة في بيئات الذاكرة المنخفضة ، لذا ستعمل بشكل جيد في العديد من الحالات. ومع ذلك ، بالنسبة لتطبيقات معقدة للغاية التي تحتاج إلى مزيد من تكامل البيانات الموثوقية والقابلية للتمديد البرمجي ، ستكون قاعدة بيانات PostgreSQL خيارًا أقوى وأكثر مرونة. ستحتاج إلى أداء خطوات إضافية لتكوين إعداد Ruby on Rails الخاص بك لاستخدام PostgreSQL.

في هذا البرنامج التعليمي ، ستقوم بإعداد بيئة تطوير Ruby on Rails متصلة بقاعدة بيانات PostgreSQL على خادم Ubuntu 20.04. ستقوم بتثبيت وتكوين PostgreSQL ، ثم اختبار إعدادك من خلال إنشاء تطبيق Rails يستخدم PostgreSQL كخادم قاعدة بيانات.

المتطلبات الأساسية

يتطلب هذا البرنامج التعليمي ما يلي:

الخطوة 1 – تثبيت PostgreSQL

لتكوين Ruby on Rails مع PostgreSQL كقاعدة بيانات لتطبيق الويب الخاص بك، ستقوم أولاً بتثبيت قاعدة البيانات على خادمك.

باستخدام امتيازات sudo، قم بتحديث فهرس حزم APT الخاص بك للتأكد من أن مستودعاتك محدّثة:

  1. sudo apt update

بعد ذلك، قم بتثبيت PostgreSQL ومكتبات تطويره:

  1. sudo apt install postgresql postgresql-contrib libpq-dev

في الأمر السابق، يحتوي postgresql على البرنامج الرئيسي لـ PostgreSQL، بينما postgresql-contrib يضيف العديد من الميزات التي توسع قدرات PostgreSQL. libpq-dev هي مكتبة PostgreSQL تسمح للعملاء بإرسال الاستعلامات واستقبال الردود من الخادم الخلفي، مما يسمح لتطبيقك بالتواصل مع قاعدة بياناته.

بمجرد تثبيت PostgreSQL وتبعياته، الخطوة التالية هي إنشاء دور سيستخدمه تطبيقك Rails لاحقًا لإنشاء قاعدة بياناتك.

الخطوة 2 – إنشاء دور قاعدة بيانات جديد

في PostgreSQL، يمكن استخدام الـ roles لتنظيم الأذونات والترخيص بنفس الطريقة التي يمكن استخدامها فيها المستخدمون في Linux. في هذه الخطوة، ستقوم بإنشاء دور مستخدم رئيسي جديد لاسم مستخدمك في Linux والذي سيسمح لك بإنشاء وتكوين قواعد بيانات داخل نظام PostgreSQL.

لإنشاء دور مستخدم رئيسي في PostgreSQL، قم بتشغيل الأمر التالي، مستبدلاً الكلمة المميزة بـ اسم مستخدم Ubuntu 20.04:

  1. sudo -u postgres createuser -s sammy -P

نظرًا لتحديدك لعلم الـ -P، ستطلب إدخال كلمة مرور لدورك الجديد. أدخل كلمة المرور المطلوبة، مع التأكد من تسجيلها لكي تستخدمها في ملف تكوين في خطوة لاحقة.

تستخدم createuser لإنشاء دور يُسمى sammy (أو اسم مستخدم تفضله). يُعطي العلم -s لهذا المستخدم صلاحيات المستخدم الرئيسي، و sudo -u يُسمح لك بتشغيل الأمر من حساب postgres الذي يتم إنشاؤه تلقائيًا عند تثبيت PostgreSQL.

ملاحظة: نظرًا لأن وضع المصادقة لـ PostgreSQL على Ubuntu يبدأ كـ ident، فإن مستخدم Ubuntu بشكل افتراضي يمكنه العمل في PostgreSQL فقط بدور يحمل نفس الاسم. لمزيد من المعلومات، تحقق من وثائق PostgreSQL الرسمية حول المصادقة.

إذا لم تستخدم العلم -P وتريد تعيين كلمة مرور للدور بعد إنشائه، ادخل وحدة التحكم في PostgreSQL باستخدام الأمر التالي:

  1. sudo -u postgres psql

سوف تتلقى الناتج التالي، بالإضافة إلى مطالبة بوحدة التحكم لـ PostgreSQL:

Output
psql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1)) Type "help" for help. postgres=#

وحدة التحكم في PostgreSQL مشار إليها بالمطالبة postgres=#. في مطالبة PostgreSQL، أدخل هذا الأمر لتعيين كلمة المرور لدور قاعدة البيانات الجديد، مستبدلاً الاسم المميز بالذي أنشأته:

  1. \password sammy

سوف يطلب منك PostgreSQL كلمة مرور. أدخل كلمة المرور المطلوبة في المطالبة، ثم قم بتأكيدها.

الآن، اخرج من وحدة التحكم في PostgreSQL عن طريق إدخال الأمر التالي:

  1. \q

سوف يظهر المطالب العادي الخاص بك الآن.

في هذه الخطوة، قمت بإنشاء دور جديد في PostgreSQL بصلاحيات المستخدم الرئيسي. الآن أنت جاهز لإنشاء تطبيق Rails جديد يستخدم هذا الدور لإنشاء قاعدة بيانات.

الخطوة 3 – إنشاء تطبيق Rails جديد

بعد تكوين دور لـ PostgreSQL، يمكنك الآن إنشاء تطبيق Rails جديد مُعد لاستخدام PostgreSQL كقاعدة بيانات.

أولاً، انتقل إلى دليل المستخدم الخاص بك:

  1. cd ~

أنشئ تطبيق Rails جديد في هذا الدليل، استبدل اسم_التطبيق بما تريد أن تسمي به تطبيقك:

  1. rails new appname -d=postgresql

الخيار -d=postgresql يحدد PostgreSQL كقاعدة بيانات.

بمجرد تشغيل هذا الأمر، سيظهر مجلد جديد يسمى اسم_التطبيق في دليل المستخدم الخاص بك، يحتوي على جميع عناصر تطبيق Rails الأساسي.

بعد ذلك، انتقل إلى دليل التطبيق:

  1. cd appname

الآن بعد أن قمت بإنشاء تطبيق Rails جديد وقمت بالانتقال إلى الدليل الرئيسي لمشروعك، يمكنك تكوين وإنشاء قاعدة بيانات PostgreSQL الخاصة بك من داخل تطبيق Rails الخاص بك.

الخطوة 4 – تكوين وإنشاء قاعدة البيانات الخاصة بك

عند إنشاء قواعد البيانات التطوير و الاختبار لتطبيقك، ستستخدم Rails الدور الخاص بـ PostgreSQL الذي أنشأته لاسم مستخدم Ubuntu الخاص بك. لضمان أن Rails تنشئ هذه القواعد البيانات، ستقوم بتعديل ملف تكوين قاعدة البيانات لمشروعك. ثم ستقوم بإنشاء قواعد البيانات الخاصة بك.

أحد التغييرات في التكوين التي يجب إجراؤها لتطبيقك Rails هو إضافة كلمة المرور للدور PostgreSQL الذي تم إنشاؤه في الخطوة الأخيرة. للحفاظ على معلومات حساسة مثل كلمات المرور آمنة، يُوصى بتخزين كلمة المرور في متغير بيئي بدلاً من كتابتها مباشرة في ملف التكوين الخاص بك.

لتخزين كلمة المرور الخاصة بك في متغير بيئي عند تسجيل الدخول، قم بتشغيل الأمر التالي، مستبدلاً اسم_التطبيق باسم تطبيقك و كلمة_مرور_PostgreSQL_Role بكلمة المرور التي أنشأتها في الخطوة الأخيرة:

  1. echo 'export APPNAME_DATABASE_PASSWORD="PostgreSQL_Role_Password"' >> ~/.bashrc

يكتب هذا الأمر الأمر export إلى ملف ~/.bashrc الخاص بك بحيث يتم تعيين المتغير البيئي عند تسجيل الدخول.

لتصدير المتغير لجلسةك الحالية، استخدم الأمر source:

  1. source ~/.bashrc

الآن بعد أن قمت بتخزين كلمة المرور الخاصة بك في بيئتك، يمكنك تعديل ملف التكوين.

افتح ملف تكوين قاعدة بيانات تطبيقك في محرر النصوص المفضل لديك. سيستخدم هذا البرنامج التعليمي nano:

  1. nano config/database.yml

تحت القسم الافتراضي، ابحث عن السطر الذي يقول pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> وأضف الأسطر المظللة التالية، ملء بيانات اعتمادك والمتغير البيئي الذي أنشأته. يجب أن يبدو مثل هذا:

config/database.yml
...
default: &default
  adapter: postgresql
  encoding: unicode
  # لمزيد من التفاصيل حول تجميع الاتصالات، راجع دليل تكوين ريلز
  # http://guides.rubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: sammy
password: <%= ENV['APPNAME_DATABASE_PASSWORD'] %>

development:
  <<: *default
  database: appname_development
...

سيقوم هذا التحديث بجعل تطبيق ريلز يشغل قاعدة البيانات بالدور وكلمة المرور الصحيحة. احفظ واخرج بالضغط على CTRL + x، Y، ثم ENTER.

لمزيد من المعلومات حول تكوين قواعد البيانات في ريلز، انظر إلى وثائق ريلز.

الآن بعد أن قمت بإجراء تغييرات في config/database.yml، قم بإنشاء قواعد بيانات تطبيقك باستخدام أمر rails:

  1. rails db:create

عندما يقوم ريلز بإنشاء قاعدة البيانات، ستتلقى الناتج التالي:

Output
Created database 'appname_development' Created database 'appname_test'

كما يوحي الناتج، قام هذا الأمر بإنشاء قاعدة بيانات development و test على خادم PostgreSQL الخاص بك.

الآن لديك قاعدة بيانات PostgreSQL متصلة بتطبيق ريلز الخاص بك. لضمان عمل تطبيقك، ستقوم الآن بفحص تكوينك.

الخطوة 5 – اختبار التكوين الخاص بك

للاختبار إذا كان بإمكان تطبيقك استخدام قاعدة البيانات PostgreSQL، ستقوم بتشغيل تطبيق الويب الخاص بك حتى يظهر في المتصفح.

باستخدام أمر rails server، قم بتشغيل تطبيق الويب الخاص بك على خادم الويب المدمج في تطبيق ريلز الخاص بك، Puma:

  1. rails server --binding=127.0.0.1

--binding يربط تطبيقك بعنوان IP محدد. بشكل افتراضي، سيقوم هذا العلم بربط Rails بـ 0.0.0.0، مما يعني أن Rails ستستمع إلى جميع الواجهات، لذلك من الأمان استخدام 127.0.0.1 لتحديد localhost. بشكل افتراضي، يستمع التطبيق على المنفذ 3000.

بمجرد تشغيل تطبيقك Rails، سيختفي سطر الأوامر الخاص بك، مستبدلاً بالإخراج التالي:

Output
=> Booting Puma => Rails 7.0.4 application starting in development => Run `bin/rails server --help` for more startup options Puma starting in single mode... * Puma Version 5.6.5 (ruby 3.1.2-p20) ("Birdie's Version") * Min threads: 5 * Max threads: 5 * Environment: development * Listening on tcp://127.0.0.1:3000 Use Ctrl-C to stop

لاختبار ما إذا كان تطبيقك يعمل، افتح نافذة سطر الأوامر الجديدة على الخادم الخاص بك واستخدم أمر curl لإرسال طلب إلى 127.0.0.1:3000:

  1. curl http://127.0.0.1:3000

ستتلقى الكثير من الإخراج في HTML، ينتهي بشيء مثل:

Output
... <strong>Rails version:</strong> 7.0.4<br /> <strong>Ruby version:</strong> 3.1.2 (x86_64-linux) </p> </section> </div> </body> </html>

إذا كان تطبيق Rails الخاص بك على خادم بعيد وترغب في الوصول إليه عبر متصفح الويب، يمكنك ربطه بعنوان IP العام لخادمك. أولاً، افتح المنفذ 3000 في جدار الحماية الخاص بك:

  1. sudo ufw allow 3000

بعد ذلك، ابحث عن عنوان IP العام لخادمك. يمكنك القيام بذلك عن طريق تشغيل الأمر curl التالي:

  1. curl http://icanhazip.com

سيعيد هذا عنوان IP العام الخاص بك. استخدمه مع أمر rails server، مستبدلاً server_public_IP بعنوان IP العام لخادمك:

  1. rails server --binding=server_public_IP

الآن ستتمكن من الوصول إلى تطبيقك Rails في متصفح الويب المحلي عبر عنوان IP العام للخادم على المنفذ 3000 عن طريق زيارة:

http://server_public_IP:3000

في هذا الرابط، ستجد صفحة Ruby on Rails:

إذا كنت تستطيع الوصول إلى الصفحة الرئيسية، فإن تطبيقك مكون ومتصل بقاعدة البيانات PostgreSQL بشكل صحيح.

بعد اختبار التكوين، إذا كنت ترغب في إغلاق منفذ 3000، استخدم الأمر التالي.

  1. sudo ufw delete allow 3000

الاستنتاج

في هذا البرنامج التعليمي، قمت بإنشاء تطبيق ويب Ruby on Rails تم تكوينه لاستخدام PostgreSQL كقاعدة بيانات على خادم Ubuntu 20.04. إذا كنت ترغب في معرفة المزيد عن لغة البرمجة Ruby، تحقق من سلسلة الدروس الخاصة بنا حول كيفية البرمجة بلغة Ruby.

للمزيد من المعلومات حول اختيار قاعدة بيانات لتطبيقك، تحقق من برنامجنا التعليمي حول الفروق وحالات الاستخدام بين SQLite، PostgreSQL، وMySQL. إذا كنت ترغب في قراءة المزيد حول كيفية استخدام قواعد البيانات، اطلع على مقالة مقدمة عن الاستعلامات في PostgreSQL، أو استكشف منتج قواعد البيانات المدارة من DigitalOcean.

Source:
https://www.digitalocean.com/community/tutorials/how-to-use-postgresql-with-your-ruby-on-rails-application-on-ubuntu-20-04