יצירת תבנית VPS עם Drupal 9 ב Centos 8

אנחנו ממשיכים להרחיב את השוק שלנו. לאחרונה דיברנו על איך עשה תמונת Gitlab, והשבוע זה הופיע בשוק שלנו Drupal.

אנו מספרים מדוע בחרנו בו וכיצד נוצרה התמונה.

יצירת תבנית VPS עם Drupal 9 ב Centos 8

Drupal מהווה פלטפורמה נוחה וחזקה ליצירת כל סוג של אתרים: ממיקרו אתרים ובלוגים ועד לפרויקטים חברתיים גדולים, המשמשת גם כבסיס ליישומי אינטרנט, הכתובים ב-PHP ומשתמשים בבסיסי נתונים יחסיים כאחסון נתונים.

Drupal גרסה 9 כוללת את כל התכונות שהוטמעו בגרסה 8.9. ההבדל העיקרי בין גרסה 9 לגרסה 8 הוא שהפלטפורמה תמשיך לקבל עדכונים ותיקוני אבטחה לאחר נובמבר 2021. גרסה 9 גם מפשטת את תהליך העדכון, מה שמקל עוד יותר על השדרוג מגרסה 8.

דרישות שרת

לשימוש Drupal מומלץ להשתמש ב-2 ג'יגה-בייט זיכרון RAM ו-2 ליבות מעבד.

קבצים עיקריים Drupal תופסים כ-100 מגה-בייט, תצטרכו גם מקום לאחסון תמונות, מסד נתונים, ערכות עיצוב, מודולים נוספים וגיבויים, אשר יהיו תלויים בגודל האתר שלכם.

עבור Drupal 9 דורש PHP 7.4 ומעלה עם מגבלה מינימלית (memory_limit) עד 64 מגה-בייט זיכרון, במקרה של שימוש במודולים נוספים, מומלץ להתקין 128 מגה-בייט.

כשרת אינטרנט Drupal יכול להשתמש ב-Apache או Nginx, וב-MySQL, PostgreSQL או SQLite כבסיס נתונים.

אנחנו נתקין Drupal באמצעות Nginx ו-MySQL.

התקנה

עדכן את החבילות המותקנות לגרסה העדכנית ביותר:

sudo dnf update -y

בואו נוסיף הרשאה קבועה לתנועה נכנסת ליציאות http/80 ו-https/443:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https

החל את כללי חומת האש החדשים:

sudo systemctl reload firewalld

התקן את Nginx:

sudo dnf install nginx -y

בואו נתחיל ונפעיל את שרת Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

מאחר שנכון לעכשיו במאגר הראשי Centos נעשה שימוש בגרסת PHP 7.2, בואו נוסיף את מאגר REMI עם PHP 7.4 (הגרסה המינימלית עבור Drupal 9).
כדי לעשות זאת, הוסף את מאגר ה-EPEL (נדרש על ידי מאגר REMI):

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

בואו נוסיף את מאגר REMI:

sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm

אפשר את מודול php:remi-7.4 כדי להתקין את php 7.4:

sudo dnf module enable php:remi-7.4 -y

התקן את php-fpm ו-php-cli:

sudo dnf install -y php-fpm php-cli

נתקין את מודולי ה-PHP הנדרשים לעבודה. Drupal:

sudo dnf install -y php-mysqlnd php-date php-dom php-filter php-gd php-hash php-json php-pcre php-pdo php-session php-simplexml php-spl php-tokenizer php-xml

נתקין גם את מודולי ה-PHP המומלצים mbstring opcache:

sudo dnf install -y php-mbstring php-opcache

התקן את שרת MySQL:

sudo dnf install mysql-server -y

הפעל והפעל את שרת MySQL:

sudo systemctl start mysqld
sudo systemctl enable mysqld

מכיוון שאנו יוצרים תבנית עבור VDS, והם יכולים להיות איטיים, נוסיף עיכוב התחלה של mysqld של 30 שניות, אחרת עלולות להיות בעיות בהפעלת השרת במהלך האתחול הראשוני של המערכת:

sudo sed -i '/Group=mysql/a 
ExecStartPre=/bin/sleep 30
' /usr/lib/systemd/system/mysqld.service

בואו נשנה את הקבוצה והמשתמש שתחתיהם nginx יפעל על ידי ביצוע שינויים ב-/etc/php-fpm.d/www.conf:

sudo sed -i --follow-symlinks 's/user = apache/user = nginx/g' /etc/php-fpm.d/www.conf
sudo sed -i --follow-symlinks 's/group = apache/group = nginx/g' /etc/php-fpm.d/www.conf

שנה את הבעלים של ספריית ההפעלה של PHP ל-nginx בהתאם:

sudo chown -R nginx. /var/lib/php/session

הבה נסיר את שורות ההערה מקובץ התצורה /etc/nginx/nginx.conf (כדי שלא יהיו התאמות כפולות עבור sed):

sudo sed -i -e '/^[ t]*#/d'  /etc/nginx/nginx.conf

הוסף הגדרות דחיסה של gzip ל-/etc/nginx/nginx.conf

sudo sed -i '/types_hash_max_size 2048;/a 

    gzip on;
    gzip_static on;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/x-icon image/svg+xml application/x-font-ttf;
    gzip_comp_level 9;
    gzip_proxied any;
    gzip_min_length 1000;
    gzip_disable "msie6";
    gzip_vary on; 
' /etc/nginx/nginx.conf

בואו נוסיף את ההגדרות של קובץ האינדקס index.php ל-/etc/nginx/nginx.conf:

sudo sed -i '/        root         /usr/share/nginx/html;/a 
        index index.php index.html index.htm;
' /etc/nginx/nginx.conf

בואו נוסיף הגדרות לשרת ברירת המחדל לעיבוד php דרך שקע php-fpm, נשבית את היומן עבור קבצים סטטיים, נגדיל את זמן התפוגה, נשבית את יומן הגישה והשגיאות עבור favicon.ico ו-robots.txt ונמנע גישה לקבצי .ht עבור כל אחד:

sudo sed -i '/        location / {/a 
		try_files $uri $uri/ /index.php?q=$uri&$args;
        }
    
        location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico|woff)$ {
        access_log off;
        expires max;
        }
    
        location ~ .php$ {
        try_files  $uri =404;
        fastcgi_pass   unix:/run/php-fpm/www.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_intercept_errors on;
        fastcgi_ignore_client_abort off;
        fastcgi_connect_timeout 60;
        fastcgi_send_timeout 180;
        fastcgi_read_timeout 180;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 256k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
        }
    
        location = /favicon.ico {
        log_not_found off;
        access_log off;
        }
    
        location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
        }
    
        location ~ /.ht {
        deny all;' /etc/nginx/nginx.conf

התקן wget נדרש להתקנת certbot:

sudo dnf install wget -y

הורד את קובץ ההפעלה של certbot מאתר:

cd ~
wget https://dl.eff.org/certbot-auto

העבר את certbot אל /usr/local/bin/:

mv certbot-auto /usr/local/bin/certbot-auto

והקצה זכויות ובעלות לשורש:

chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto

התקן את התלות של certbot והפסק אותו בשלב זה (תשובות: Y, c):

certbot-auto

הורד את הארכיון עם הגרסה העדכנית ביותר מהאתר הרשמי. Drupal 9:

cd ~
wget https://www.drupal.org/download-latest/tar.gz

התקן tar כדי לפרוק את הארכיון:

sudo dnf install tar -y

מחק את קבצי ברירת המחדל בספרייה /usr/share/nginx/html/:

rm -rf /usr/share/nginx/html/*

פתח את הקבצים לספריית שרת האינטרנט:

tar xf tar.gz -C /usr/share/nginx/html/

העבר את הקבצים מספריית המשנה לספריית השורש של שרת האינטרנט:

mv /usr/share/nginx/html/drupal-9.0.7/* /usr/share/nginx/html/

בוא נסיר את ספריית המשנה:

rm -rf /usr/share/nginx/html/drupal-9.0.7

מחק את הארכיון עם קבצי ההתקנה:

rm -f ./tar.gz

הגדר את הבעלים של קבצי nginx:

chown -R nginx. /usr/share/nginx/html

בשלב זה נכבה את השרת ונבצע תמונת מצב:

shutdown -h now

לאחר התחלת ה-VDS מתמונת המצב, נבצע את ההגדרה הראשונית של שרת MySQL על ידי הפעלת הסקריפט:

mysql_secure_installation

הפעל את מאמת הסיסמאות:

Would you like to setup VALIDATE PASSWORD component? : y

הגדר את סיסמת המשתמש MySQL root:

New password:
Re-enter new password:

הסר משתמשים אנונימיים:

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y

בואו נמנע משורש להתחבר מרחוק:

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y

בוא נסיר את מסד הנתונים של הבדיקה:

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y

טען מחדש את טבלאות ההרשאות:

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

לאחר מכן, כדי להשלים את ההתקנה, נוכל ללכת אל vps_ip_address
בכתובת זו נראה את דף ההתקנה Drupal.

בחר את השפה שבה יש להשתמש. לדוגמא: רוסית. לחץ על "שמור והמשך"

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

בעמוד הבא, תן למסד הנתונים שם, כגון "דרופל". ציין את שורש שם המשתמש של מסד הנתונים ואת הסיסמה שניתנה לו בעת הפעלת mysql_secure_installation. לחץ על "שמור והמשך".

בוא נחכה לסיום ההתקנה והעדכון של התרגומים (התהליך עשוי להימשך מספר דקות).

נציין את שם האתר, נגדיר את כתובת הדוא"ל של האתר (שממנה יישלחו התראות האתר), שם משתמש, סיסמה ודוא"ל של חשבון מנהל המערכת. Drupalנגדיר גם את המדינה ואזור הזמן בהגדרות האזוריות. לאחר מכן, השלם את ההתקנה על ידי לחיצה על "שמור והמשך".

לאחר מכן, תוכל לגשת ללוח הבקרה עם שם המשתמש והסיסמה של מנהל המערכת שיצרת. Drupal.

הגדרת HTTPS (אופציונלי)

כדי להגדיר HTTPS, ל-VDS חייב להיות שם DNS חוקי, ציין ב

/etc/nginx/nginx.conf

בקטע השרת שם השרת (לדוגמה):

server_name  domainname.ru;

הפעל מחדש את nginx:

service nginx restart

בואו נתחיל את certbot:

sudo /usr/local/bin/certbot-auto --nginx

הכנס את הדואר האלקטרוני שלך, הסכים לתנאי השירות (א'), הירשמו לניוזלטר (אופציונלי) (N), בחרו את שמות הדומיין שעבורם ברצונכם להנפיק תעודה (Enter for all).

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

Congratulations! You have successfully enabled ...

לאחר מכן, חיבורים ביציאה 80 יופנו ל-443 (https).

הוסף ל-/etc/crontab לחידוש אוטומטי של אישורים:

# Cert Renewal
30 2 * * * root /usr/local/bin/certbot-auto renew --post-hook "nginx -s reload"

הגדרת אבטחת מארח מהימנה (מומלץ)

הגדרה זו נועדה כפתרון לבעיה של זיהוי base_url דינמי, ונועדה למנוע התקפות HTTP HOST Header (כשהאתר שלך חושב שזה מישהו אחר).

לשם כך, עליך לציין את שמות הדומיין המהימנים של האתר בקובץ ההגדרות.

בקובץ

/usr/share/nginx/html/sites/default/settings.php בטל תגובה או הוסף הגדרה עם דפוסים של שמות אתרים בפועל, לדוגמה:

$settings['trusted_host_patterns'] = [
  '^www.mydomain.ru$',
];

התקנת PHP APCu (מומלץ)

Drupal תומך ב-APCu (מטמון משתמש אלטרנטיבי של PHP). גרסאות 8 ו-9 משתמשות ב-APCu באופן אינטנסיבי יותר כמטמון מקומי לטווח קצר בהשוואה לגרסאות קודמות. גודל המטמון המוגדר כברירת מחדל (32 MB) מתאים לרוב האתרים ואינו יכול לעלות על 512 MB.

כדי להפעיל, התקן את מודול PHP APCu:

dnf -y install php-pecl-apcu

הפעל מחדש את nginx ו-php-fpm:

service nginx restart
service php-fpm restart

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

או אם האזהרה כואבת את העין, אתה יכול להשתמש תיקון מתאים מהאתר מחוץ לאתר.

אנחנו רוצים להזכיר לכם שאתם יכולים גם ליצור עבורנו תמונה

ישנן שלוש אפשרויות כיצד להשתתף.

הכן את התמונה בעצמך וקבל 3000 רובל על היתרה שלך

אם אתה מוכן למהר מיד לקרב וליצור את התמונה שחסרה לך בעצמך, אנו נזכה אותך ב-3000 רובל ליתרה הפנימית שלך - אתה יכול להוציא אותו על שרתים.

איך ליצור את התמונה שלך:

  1. צור איתנו חשבון מקוון
  2. ספר לתמיכה שאתה הולך ליצור ולבדוק תמונות
  3. אנו נזכה אותך ב-3000 רובל ונאפשר את היכולת ליצור תמונות מצב
  4. הזמינו שרת וירטואלי עם מערכת הפעלה נקייה
  5. התקן את התוכנה ב-VPS הזה והגדר אותו
  6. כתוב הוראות או סקריפט לפריסת תוכנה
  7. צור תמונת מצב עבור השרת המוגדר
  8. הזמינו שרת וירטואלי חדש על ידי בחירת תמונת המצב שנוצרה בעבר ברשימה הנפתחת "תבנית שרת".
  9. במקרה של יצירה מוצלחת של השרת, העבר את החומרים שהתקבלו בשלב 6 לתמיכה הטכנית
  10. במקרה של שגיאה, אתה יכול לבדוק עם התמיכה את הסיבה ולחזור על ההגדרה

לבעלי עסקים: הציעו את התוכנה שלכם

אם אתה מפתח תוכנה שנפרס ומשמש ב-VPS, נוכל לכלול אותך בשוק. כך נוכל לעזור לכם להביא לקוחות חדשים, תנועה ונראות. כתוב לנו

ספרו לנו בתגובות לאיזו תמונה אתם מתגעגעים?

ואנחנו נכין אותו בעצמנו

יצירת תבנית VPS עם Drupal 9 ב Centos 8

יצירת תבנית VPS עם Drupal 9 ב Centos 8

מקור: www.habr.com

קנה אירוח אמין לאתרים עם הגנת DDoS, שרתי VPS VDS 🔥 קנה אחסון אתרים אמין עם הגנת DDoS, שרתי VPS VDS | ProHoster