ایجاد یک قالب VPS با دروپال 9 در Centos 8

ما همچنان به گسترش بازار خود ادامه می دهیم. ما اخیراً به شما گفتیم که چگونه یک تصویر Gitlab ساخته استو این هفته دروپال در بازار ما ظاهر شد.

ما به شما می گوییم که چرا او را انتخاب کردیم و این تصویر چگونه ایجاد شد.

ایجاد یک قالب VPS با دروپال 9 در Centos 8

دروپال - یک پلت فرم مناسب و قدرتمند برای ایجاد هر نوع وب سایت: از میکروسایت ها و وبلاگ ها تا پروژه های اجتماعی بزرگ، همچنین به عنوان پایه ای برای برنامه های کاربردی وب، نوشته شده در PHP و استفاده از پایگاه داده های رابطه ای به عنوان ذخیره سازی داده ها استفاده می شود.

دروپال 9 شامل تمامی ویژگی های معرفی شده در نسخه 8.9 می باشد. تفاوت اصلی بین نسخه 9 و نسخه 8 این است که این پلتفرم پس از نوامبر 2021 به دریافت به روز رسانی ها و رفع مشکلات امنیتی ادامه خواهد داد. نسخه 9 همچنین روند به روز رسانی را ساده می کند و روند ارتقا از نسخه 8 را آسان تر می کند.

نیازمندی های سرور

برای استفاده از دروپال، استفاده از 2 گیگابایت رم و 2 هسته پردازنده توصیه می شود.

فایل های اصلی دروپال حدود 100 مگابایت را اشغال می کنند، علاوه بر این شما به فضایی برای ذخیره تصاویر، پایگاه داده، تم ها، ماژول های اضافی و نسخه های پشتیبان نیاز خواهید داشت که به اندازه سایت شما بستگی دارد.

دروپال 9 به PHP 7.4 یا بالاتر با حداقل محدودیت (memory_limit) برای حافظه 64 مگابایت؛ در صورت استفاده از ماژول های اضافی، نصب 128 مگابایت توصیه می شود.

دروپال می تواند از Apache یا Nginx به عنوان وب سرور و MySQL، PostgreSQL یا SQLite به عنوان پایگاه داده استفاده کند.

ما دروپال را با استفاده از 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 (حداقل نسخه برای دروپال 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 مورد نیاز برای کار دروپال را نصب کنیم:

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

ما همچنین ماژول های opcache mbstring توصیه شده PHP را نصب خواهیم کرد:

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

بیایید با ایجاد تغییرات در /etc/php-fpm.d/www.conf، گروه و کاربری را که nginx تحت آن اجرا می شود، تغییر دهیم:

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

بیایید بایگانی را با آخرین نسخه دروپال 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
در این آدرس صفحه نصب دروپال را مشاهده خواهیم کرد.

بیایید زبان مورد استفاده را انتخاب کنیم. به عنوان مثال: روسی. روی «ذخیره و ادامه» کلیک کنید

بیایید یک نمایه نصب را انتخاب کنیم (نمونه نمایشی صرفاً برای آشنایی با سیستم استفاده می شود). در مورد ما، بگذارید "استاندارد" باشد.

در صفحه بعد نامی به پایگاه داده می دهیم، به عنوان مثال "دروپال". اجازه دهید نام کاربری ریشه پایگاه داده و رمز عبوری که هنگام اجرای mysql_secure_installation به او داده شده را مشخص کنیم. روی «ذخیره و ادامه» کلیک کنید.

بیایید منتظر بمانیم تا نصب و به‌روزرسانی ترجمه‌ها تکمیل شود (فرآیند ممکن است چند دقیقه طول بکشد).

ما نام سایت را مشخص می کنیم، ایمیل سایت (از طرف آن اعلان های سایت ارسال می شود)، ورود، رمز عبور و ایمیل حساب مدیر دروپال را تعیین می کنیم. همچنین کشور و منطقه زمانی را در تنظیمات منطقه ای تنظیم می کنیم. و با کلیک روی "ذخیره و ادامه" نصب را کامل کنید.

پس از این، می توانید با ورود و رمز عبور مدیریت دروپال به کنترل پنل بروید.

راه اندازی 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"

راه اندازی امنیت میزبان معتمد (توصیه می شود)

این تنظیم به عنوان راه حلی برای مشکل مرتبط با تعیین پایگاه_url پویا طراحی شده است و برای جلوگیری از حملات HTTP HOST Header (زمانی که سایت شما فکر می کند شخص دیگری است) طراحی شده است.

برای این کار باید نام دامنه های مورد اعتماد سایت را در فایل تنظیمات مشخص کنید.

در پرونده

/usr/share/nginx/html/sites/default/settings.php بیایید از کامنت برداریم یا تنظیماتی با الگوهای نام واقعی سایت اضافه کنیم، به عنوان مثال:

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

نصب PHP APCu (توصیه می شود)

دروپال از APCu پشتیبانی می کند - حافظه پنهان کاربر جایگزین PHP، نسخه های 8 و 9 نسبت به نسخه های قبلی از APCu به عنوان یک کش محلی کوتاه مدت استفاده بیشتری می کنند. اندازه کش پیش فرض (32 مگابایت) برای اکثر سایت ها مناسب است و نمی تواند از 512 مگابایت تجاوز کند.

برای فعال سازی، ماژول 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. با انتخاب عکس فوری ایجاد شده قبلی در لیست کشویی "Server template" یک سرور مجازی جدید سفارش دهید.
  9. اگر سرور با موفقیت ایجاد شد، مواد دریافت شده در مرحله 6 را به پشتیبانی فنی انتقال دهید
  10. اگر خطایی وجود داشت، می‌توانید با پشتیبانی دلیل آن را بررسی کنید و راه‌اندازی را تکرار کنید

برای صاحبان مشاغل: نرم افزار خود را ارائه دهید

اگر توسعه‌دهنده نرم‌افزاری هستید که روی VPS مستقر و استفاده می‌شود، می‌توانیم شما را در بازار قرار دهیم. این روشی است که ما می توانیم به شما کمک کنیم تا مشتریان جدید، ترافیک و آگاهی ایجاد کنید. برامون بنویس

در نظرات به ما بگویید چه تصویری را از دست داده اید؟

و خودمون آماده میکنیم

ایجاد یک قالب VPS با دروپال 9 در Centos 8

ایجاد یک قالب VPS با دروپال 9 در Centos 8

منبع: www.habr.com