הקדמה
בעת השימוש בסביבת פיתוח האינטרנט של ריילס, היישום שלך ישתמש ב־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 כדי לוודא שהמאגרים שלך מעודכנים:
- sudo apt update
לאחר מכן, התקן את PostgreSQL וספריות הפיתוח שלו:
- 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:
- sudo -u postgres createuser -s sammy -P
מאחר שציינת את הדגל -P
, יתבקש ממך להזין סיסמה עבור התפקיד החדש שלך. הזן את הסיסמה שאתה מעוניין להשתמש, ווודא שאתה שומר עליה כדי שתוכל להשתמש בה בקובץ התצורה בשלב מאוחר יותר.
אתה משתמש ב- `createuser
` כדי ליצור תפקיד בשם sammy
(או השם המשתמש שאתה מעדיף). הדגל -s
נותן למשתמש הזה הרשאות מנהל כוללות, ו־sudo -u
מאפשר לך להריץ את הפקודה מהחשבון postgres
שנוצר באופן אוטומטי בעת התקנת PostgreSQL.
הערה: מאחר ומצב האימות עבור PostgreSQL ב־Ubuntu מתחיל כ- ident
, ברירת המחדל משתמש ב־Ubuntu יכול לפעול רק ב־PostgreSQL עם תפקיד באותו שם. למידע נוסף, ניתן לבדוק את תיעוד הרשמי של PostgreSQL על אימות.
אם לא השתמשת בדגל -P
ורוצה להגדיר סיסמה עבור התפקיד לאחר שיצרת אותו, ניתן להיכנס לקונסולת PostgreSQL עם הפקודה הבאה:
- sudo -u postgres psql
תקבל את הפלט הבא, יחד עם הקריאה לקונסולת PostgreSQL:
Outputpsql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1))
Type "help" for help.
postgres=#
קונסולת PostgreSQL מסומנת בקריאה postgres=#
. בקונסולת PostgreSQL, ניתן להזין את הפקודה הזו כדי להגדיר את הסיסמה עבור תפקיד בסיס הנתונים החדש, ולהחליף את השם המודגש בשם שיצרת:
- \password sammy
PostgreSQL יבקש ממך להזין סיסמה. הזן את הסיסמה הרצויה בקריאה, ואז אשר אותה.
עכשיו, צא מקונסולת PostgreSQL על ידי הזנת הפקודה הבאה:
- \q
הקריאה הרגילה שלך תופיע שוב.
בשלב זה, יצרת תפקיד PostgreSQL חדש עם הרשאות מנהל. עכשיו אתה מוכן ליצור אפליקציה חדשה של Rails שמשתמשת בתפקיד זה כדי ליצור מסד נתונים.
שלב 3 – יצירת אפליקציית Rails חדשה
עם תפקיד הוגדר עבור PostgreSQL, כעת תוכל ליצור אפליקציית Rails חדשה שמוגדרת להשתמש ב־PostgreSQL כבסיס נתונים.
בתחילה, נווט לספריית הבית שלך:
- cd ~
צור אפליקציית Rails חדשה בספרייה זו, החליפו appname
בשם שבו תרצו לקרוא לאפליקציה שלכם:
- rails new appname -d=postgresql
אפשרות -d=postgresql
מגדירה את PostgreSQL כבסיס הנתונים.
לאחר שהרצתם את הפקודה הזו, ספרייה חדשה בשם appname
תופיע בספריית הבית שלך, ותכיל את כל הרכיבים של אפליקציה בסיסית של Rails.
הבא, התקדם אל תוך הספרייה של האפליקציה:
- cd appname
עכשיו שיצרתם אפליקציית Rails חדשה והתקדמתם לתוך ספריית השורש של הפרויקט שלכם, תוכלו להגדיר וליצור את מסד הנתונים שלכם מתוך אפליקציית Rails שלכם.
שלב 4 – הגדרת ויצירת בסיס הנתונים שלך
כאשר אתה יוצר את מסדי הנתונים של היישום שלך – development
ו- test
, Rails ישתמש בתפקיד PostgreSQL שיצרת עבור שם המשתמש של Ubuntu. כדי להבטיח ש-Rails ייצור את המסדים הללו, עליך לשנות את קובץ התצורה של מסד הנתונים של הפרויקט שלך. לאחר מכן תיצור את מסדי הנתונים שלך.
אחת מהשינויים בתצורה שעליך לבצע עבור יישום ה-Rails שלך הוא להוסיף את הסיסמה עבור תפקיד ה-PostgreSQL שנוצר בשלב האחרון. כדי לשמור על מידע רגיש כמו סיסמאות בצורה בטוחה, מומלץ לאחסן את הסיסמה במשתנה הסביבה במקום לכתוב אותה ישירות בקובץ התצורה שלך.
כדי לאחסן את הסיסמה שלך במשתנה הסביבה בזמן התחברות, הפעל את הפקודה הבאה והחליף את APPNAME
בשם היישום שלך ואת PostgreSQL_Role_Password
בסיסמה שיצרת בשלב האחרון:
- echo 'export APPNAME_DATABASE_PASSWORD="PostgreSQL_Role_Password"' >> ~/.bashrc
פקודה זו כותבת את הפקודה export
לקובץ ה-~/.bashrc
שלך כך שהמשתנה בסביבה יוגדר בעת התחברות.
כדי לייצא את המשתנה למהלך הפעלה נוכחי, השתמש בפקודה source
:
- source ~/.bashrc
עכשיו שהסיסמה נאחסנה בסביבתך, תוכל לשנות את קובץ התצורה.
פתח את קובץ התצורה של מסד הנתונים של היישום שלך בעורך הטקסט המועדף עליך. במדריך זה נשתמש ב- nano
:
- nano config/database.yml
תחת הקטע של default
, מצא את השורה שאומרת pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
והוסף את השורות המודגשות הבאות, מלא את הפרטים שלך והמשתנה הסביבתי שיצרת. זה ייראה משהו כזה:
...
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
:
- rails db:create
כאשר Rails יוצר את מסד הנתונים, תקבל את הפלט הבא:
OutputCreated database 'appname_development'
Created database 'appname_test'
כפי שהפלט מציין, הפקודה יצרה מסד נתונים בשמות development
ו־test
בשרת PostgreSQL שלך.
עכשיו יש לך מסד נתונים של PostgreSQL מחובר ליישום ה־Rails שלך. כדי לוודא שהיישום שלך פועל, עכשיו יש לבדוק את התצורה שלך.
שלב 5 – בדיקת התצורה שלך
כדי לבדוק שהיישום שלך מסוגל להשתמש במסד הנתונים של PostgreSQL, יש להפעיל את היישום הרשת שלך כך שיהיה זמין בדפדפן.
באמצעות הפקודה rails server
, הפעל את היישום הרשת שלך על השרת הרשת המובנה ביישום ה־Rails שלך, Puma:
- 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
:
- 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
בחומת האש שלך:
- sudo ufw allow 3000
לאחר מכן, חפש את כתובת ה-IP הציבורית של השרת שלך. תוכל לעשות זאת על ידי הרצת הפקודה הבאה של curl
:
- curl http://icanhazip.com
זה יחזיר את כתובת ה-IP הציבורית שלך. השתמש בה עם פקודת ה-rails server
, תחליף את server_public_IP
בכתובת ה-IP הציבורית של השרת שלך:
- rails server --binding=server_public_IP
כעת תוכל לגשת ליישום שלך של Rails בדפדפן אינטרנט מקומי דרך כתובת ה-IP הציבורית של השרת על פורט 3000
על ידי ביקור ב-:
http://server_public_IP:3000
בכתובת זו, תמצא דף של Ruby on Rails:
אם תוכל לגשת לדף הבית, היישום שלך מוגדר כראוי ומחובר למסד הנתונים של PostgreSQL.
לאחר בדיקת התצורה, אם ברצונך לסגור את היציאה 3000
, השתמש בפקודה הבאה.
- sudo ufw delete allow 3000
סיכום
במדריך זה, יצרת אפליקציה אינטרנטית ב-Ruby on Rails שהוגדרה להשתמש ב־PostgreSQL כמסד נתונים על שרת Ubuntu 20.04. אם ברצונך ללמוד עוד על שפת התכנות Ruby, ראה את סדרת המדריכים שלנו על כיצד לתכנת ב־Ruby.
למידע נוסף על בחירת מסד נתונים עבור האפליקציה שלך, ראה את המדריך שלנו על ההבדלים והשימושים בין SQLite, PostgreSQL ו־MySQL. אם ברצונך לקרוא עוד על איך להשתמש במסדי נתונים, ראה את מבוא לשאילתות ב־PostgreSQL, או חפש במוצר בסיסי הנתונים הניהוליים של DigitalOcean.