การสร้างเทมเพลต VPS ด้วย Drupal 9 บน Centos 8

เรายังคงขยายตลาดของเราต่อไป เราเพิ่งคุยกันเกี่ยวกับวิธีการ สร้างภาพ Gitlabและในสัปดาห์นี้ Drupal ก็ปรากฏตัวในตลาดของเรา

เราบอกว่าทำไมเราถึงเลือกมันและภาพถูกสร้างขึ้นอย่างไร

การสร้างเทมเพลต VPS ด้วย Drupal 9 บน Centos 8

Drupal เป็นแพลตฟอร์มที่สะดวกและมีประสิทธิภาพสำหรับการสร้างเว็บไซต์ทุกประเภท ตั้งแต่ไมโครไซต์และบล็อก ไปจนถึงโครงการทางสังคมขนาดใหญ่ ซึ่งใช้เป็นพื้นฐานสำหรับเว็บแอปพลิเคชัน เขียนด้วย PHP และใช้ฐานข้อมูลเชิงสัมพันธ์เป็นที่จัดเก็บข้อมูล

Drupal 9 มีคุณสมบัติทั้งหมดที่เปิดตัวในเวอร์ชัน 8.9 ข้อแตกต่างที่สำคัญระหว่างเวอร์ชัน 9 และเวอร์ชัน 8 คือแพลตฟอร์มจะยังคงได้รับการอัปเดตและการแก้ไขความปลอดภัยต่อไปหลังจากเดือนพฤศจิกายน 2021 นอกจากนี้ในเวอร์ชัน 9 กระบวนการอัปเกรดยังง่ายขึ้น ทำให้กระบวนการอัปเกรดจากเวอร์ชัน 8 ง่ายยิ่งขึ้นไปอีก

ข้อกำหนดของเซิร์ฟเวอร์

หากต้องการใช้ Drupal ขอแนะนำให้ใช้ RAM 2 GB และ CPU 2 คอร์

ไฟล์ Drupal หลักมีขนาดประมาณ 100 MB นอกจากนี้ คุณจะต้องมีพื้นที่ในการจัดเก็บรูปภาพ ฐานข้อมูล ธีม ส่วนเสริม และการสำรองข้อมูล ซึ่งจะขึ้นอยู่กับขนาดของไซต์ของคุณ

Drupal 9 ต้องใช้ PHP 7.4 หรือสูงกว่าโดยมีขีดจำกัดขั้นต่ำ (memory_limit) เป็นหน่วยความจำ 64 MB กรณีใช้โมดูลเพิ่มเติมแนะนำให้ติดตั้ง 128 MB

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

เนื่องจากปัจจุบัน PHP 7.2 ถูกใช้ในพื้นที่เก็บข้อมูลหลักของ Centos เรามาเพิ่มพื้นที่เก็บข้อมูล 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:

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

เลือกภาษาที่จะใช้ ตัวอย่างเช่น: รัสเซีย คลิก "บันทึกและดำเนินการต่อ"

มาเลือกโปรไฟล์การติดตั้งกันดีกว่า (การสาธิตใช้เพื่อความคุ้นเคยกับระบบเท่านั้น) ในกรณีของเรา ปล่อยให้มันเป็น "มาตรฐาน"

ในหน้าถัดไป ตั้งชื่อฐานข้อมูล เช่น "drupal" ระบุชื่อผู้ใช้ฐานข้อมูล root และรหัสผ่านที่มอบให้เมื่อเริ่มต้น 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

ป้อนอีเมลของคุณ ยอมรับข้อกำหนดในการให้บริการ (A) สมัครรับจดหมายข่าว (ไม่บังคับ) (N) เลือกชื่อโดเมนที่คุณต้องการออกใบรับรอง (ป้อนทั้งหมด)

หากทุกอย่างดำเนินไปโดยไม่มีข้อผิดพลาด เราจะเห็นข้อความเกี่ยวกับการออกใบรับรองและการตั้งค่าเซิร์ฟเวอร์ที่ประสบความสำเร็จ:

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 (เมื่อไซต์ของคุณคิดว่าเป็นบุคคลอื่น)

ในการดำเนินการนี้ คุณจะต้องระบุชื่อโดเมนที่เชื่อถือได้ของไซต์ในไฟล์การตั้งค่า

ในไฟล์

/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

ที่มา: will.com