איך להשתמש ב-PostgreSQL עם היישום שלך ב-Ruby on Rails על Ubuntu 20.04

הקדמה

בעת השימוש בסביבת פיתוח האינטרנט של ריילס, היישום שלך ישתמש ב־Ruby on Rails כמסגרת האינטרנט של ווב, וכברירת מחדל היישום ישתמש ב־SQLite כמסד נתונים. SQLite הוא מסד נתונים יחסי קל משקל, נייד וידידותי למשתמש המבצע ביצועים מצויינים בסביבות זיכרון נמוך במיוחד, כך שהוא יעבוד טוב במקרים רבים. אולם, עבור יישומים מורכבים במיוחד שדורשים אינטגריטיות של נתונים והרחבה תכנותית נמוכה, מסד נתונים PostgreSQL יהיה בחירה יותר אמינה וגמישה. תצטרך לבצע צעדים נוספים כדי להגדיר את ההגדרות של ריילס שלך כך שישתמש ב־PostgreSQL.

במדריך זה, תקבע את סביבת הפיתוח של ריילס כך שתהיה מחוברת למסד נתונים של PostgreSQL בשרת Ubuntu 20.04. תתקין ותגדיר את PostgreSQL, ואז תבצע בדיקה של ההגדרה שלך על ידי יצירת יישום ריילס שמשתמש ב־PostgreSQL כשרת המסד נתונים שלו.

דרישות מוקדמות

מדריך זה דורש את הפריטים הבאים:

  • שרת Ubuntu 20.04 שהוקם על ידי מעקב אחרי המדריך להתקנת השרת הראשונית עבור Ubuntu 20.04, כולל משתמש לא-רוט עם הרשאות sudo וגישה לציפוי.

  • סביבת פיתוח Ruby on Rails מותקנת על שרת Ubuntu 20.04 שלך. כדי להגדיר זאת, עקוב אחר איך להתקין Ruby on Rails עם rbenv על Ubuntu 20.04. המדריך הזה ישתמש בגרסה 3.1.2 של Ruby ובגרסה 7.0.4 של Rails; למידע על הגרסאות האחרונות, בדוק את האתרים הרשמיים של Ruby ו־Rails.

שלב 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 שמאפשרת ללקוחות לשלוח שאילתות ולקבל תגובות משרת ה־back-end, מה שיאפשר ליישום שלך לתקשר עם מסד הנתונים שלו.

ברגע שהתקנת 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 חדשה בספרייה זו, החליפו appname בשם שבו תרצו לקרוא לאפליקציה שלכם:

  1. rails new appname -d=postgresql

אפשרות -d=postgresql מגדירה את PostgreSQL כבסיס הנתונים.

לאחר שהרצתם את הפקודה הזו, ספרייה חדשה בשם appname תופיע בספריית הבית שלך, ותכיל את כל הרכיבים של אפליקציה בסיסית של Rails.

הבא, התקדם אל תוך הספרייה של האפליקציה:

  1. cd appname

עכשיו שיצרתם אפליקציית Rails חדשה והתקדמתם לתוך ספריית השורש של הפרויקט שלכם, תוכלו להגדיר וליצור את מסד הנתונים שלכם מתוך אפליקציית Rails שלכם.

שלב 4 – הגדרת ויצירת בסיס הנתונים שלך

כאשר אתה יוצר את מסדי הנתונים של היישום שלך – development ו- test, Rails ישתמש בתפקיד PostgreSQL שיצרת עבור שם המשתמש של Ubuntu. כדי להבטיח ש-Rails ייצור את המסדים הללו, עליך לשנות את קובץ התצורה של מסד הנתונים של הפרויקט שלך. לאחר מכן תיצור את מסדי הנתונים שלך.

אחת מהשינויים בתצורה שעליך לבצע עבור יישום ה-Rails שלך הוא להוסיף את הסיסמה עבור תפקיד ה-PostgreSQL שנוצר בשלב האחרון. כדי לשמור על מידע רגיש כמו סיסמאות בצורה בטוחה, מומלץ לאחסן את הסיסמה במשתנה הסביבה במקום לכתוב אותה ישירות בקובץ התצורה שלך.

כדי לאחסן את הסיסמה שלך במשתנה הסביבה בזמן התחברות, הפעל את הפקודה הבאה והחליף את APPNAME בשם היישום שלך ואת PostgreSQL_Role_Password בסיסמה שיצרת בשלב האחרון:

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

פקודה זו כותבת את הפקודה export לקובץ ה-~/.bashrc שלך כך שהמשתנה בסביבה יוגדר בעת התחברות.

כדי לייצא את המשתנה למהלך הפעלה נוכחי, השתמש בפקודה source:

  1. source ~/.bashrc

עכשיו שהסיסמה נאחסנה בסביבתך, תוכל לשנות את קובץ התצורה.

פתח את קובץ התצורה של מסד הנתונים של היישום שלך בעורך הטקסט המועדף עליך. במדריך זה נשתמש ב- nano:

  1. nano config/database.yml

תחת הקטע של default, מצא את השורה שאומרת pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> והוסף את השורות המודגשות הבאות, מלא את הפרטים שלך והמשתנה הסביבתי שיצרת. זה ייראה משהו כזה:

config/database.yml
...
default: &default
  adapter: postgresql
  encoding: unicode
  # למידע נוסף על גיבוי החיבור, ראה את מדריך התצורה של Rails
  # 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
...

. עדכון זה יגרום ליישום ה־Rails להריץ את מסד הנתונים עם התפקיד והסיסמה הנכונים. שמור וצא על ידי לחיצה על CTRL + x, Y, אז ENTER.

למידע נוסף על הגדרת מסדי נתונים ב־Rails, ראה את תיעוד ה־Rails.

עכשיו שערכת את config/database.yml, צור את מסדי הנתונים של היישום שלך בעזרת הפקודה rails:

  1. rails db:create

כאשר Rails יוצר את מסד הנתונים, תקבל את הפלט הבא:

Output
Created database 'appname_development' Created database 'appname_test'

כפי שהפלט מציין, הפקודה יצרה מסד נתונים בשמות development ו־test בשרת PostgreSQL שלך.

עכשיו יש לך מסד נתונים של PostgreSQL מחובר ליישום ה־Rails שלך. כדי לוודא שהיישום שלך פועל, עכשיו יש לבדוק את התצורה שלך.

שלב 5 – בדיקת התצורה שלך

כדי לבדוק שהיישום שלך מסוגל להשתמש במסד הנתונים של PostgreSQL, יש להפעיל את היישום הרשת שלך כך שיהיה זמין בדפדפן.

באמצעות הפקודה rails server, הפעל את היישום הרשת שלך על השרת הרשת המובנה ביישום ה־Rails שלך, 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