Centos 9 پر Drupal 8 کے ساتھ VPS ٹیمپلیٹ بنانا

ہم اپنے بازار کو وسعت دیتے رہتے ہیں۔ ہم نے حال ہی میں آپ کو بتایا کہ کیسے Gitlab کی تصویر بنائی، اور اس ہفتے ڈروپل ہمارے بازار میں نمودار ہوا۔

ہم آپ کو بتاتے ہیں کہ ہم نے اسے کیوں چنا اور تصویر کیسے بنائی گئی۔

Centos 9 پر Drupal 8 کے ساتھ VPS ٹیمپلیٹ بنانا

ڈروپل — کسی بھی قسم کی ویب سائٹ بنانے کے لیے ایک آسان اور طاقتور پلیٹ فارم: مائیکرو سائیٹس اور بلاگز سے لے کر بڑے سماجی پروجیکٹس تک، ویب ایپلیکیشنز کی بنیاد کے طور پر بھی استعمال کیا جاتا ہے، پی ایچ پی میں لکھا جاتا ہے اور متعلقہ ڈیٹا بیس کو ڈیٹا اسٹوریج کے طور پر استعمال کیا جاتا ہے۔

Drupal 9 میں ورژن 8.9 میں متعارف کرائی گئی تمام خصوصیات شامل ہیں۔ ورژن 9 اور ورژن 8 کے درمیان اہم فرق یہ ہے کہ پلیٹ فارم نومبر 2021 کے بعد اپ ڈیٹس اور سیکیورٹی اصلاحات حاصل کرتا رہے گا۔ ورژن 9 اپ ڈیٹ کے عمل کو بھی آسان بناتا ہے، ورژن 8 سے اپ گریڈ کرنے کے عمل کو اور بھی آسان بناتا ہے۔

سرور کی ضروریات

ڈروپل استعمال کرنے کے لیے، 2 جی بی ریم اور 2 سی پی یو کور استعمال کرنے کی سفارش کی جاتی ہے۔

مین ڈروپل فائلیں تقریباً 100 ایم بی لیتی ہیں، اس کے علاوہ آپ کو امیجز، ڈیٹا بیس، تھیمز، اضافی ماڈیولز اور بیک اپس کو اسٹور کرنے کے لیے جگہ کی ضرورت ہوگی، جو آپ کی سائٹ کے سائز پر منحصر ہوگی۔

ڈروپل 9 کو کم از کم حد کے ساتھ پی ایچ پی 7.4 یا اس سے زیادہ کی ضرورت ہے (memory_limit) 64 MB میموری کے لیے؛ اگر اضافی ماڈیولز استعمال کیے جائیں تو 128 MB کو انسٹال کرنے کی سفارش کی جاتی ہے۔

ڈروپل Apache یا Nginx کو ویب سرور کے طور پر اور MySQL، PostgreSQL یا SQLite کو ڈیٹا بیس کے طور پر استعمال کر سکتا ہے۔

ہم Nginx اور MySQL کا استعمال کرتے ہوئے Drupal انسٹال کریں گے۔

تنصیب

آئیے انسٹال شدہ پیکجوں کو تازہ ترین ورژن میں اپ ڈیٹ کریں:

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

چونکہ مرکزی سینٹوس ریپوزٹری فی الحال پی ایچ پی 7.2 استعمال کرتی ہے، آئیے پی ایچ پی 7.4 (ڈروپل 9 کے لیے کم از کم ورژن) کے ساتھ ایک REMI ذخیرہ شامل کریں۔
ایسا کرنے کے لیے، 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

آئیے پی ایچ پی 7.4 کو انسٹال کرنے کے لیے php:remi-7.4 ماڈیول کو فعال کریں:

sudo dnf module enable php:remi-7.4 -y

php-fpm اور php-cli انسٹال کریں:

sudo dnf install -y php-fpm php-cli

آئیے ڈروپل کے کام کرنے کے لیے درکار پی ایچ پی ماڈیولز انسٹال کریں:

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 کے لیے ایک ٹیمپلیٹ بنا رہے ہیں، اور وہ سست ہو سکتے ہیں، اس لیے ہم 30 سیکنڈ کی mysqld شروع کرنے کی تاخیر کا اضافہ کریں گے، ورنہ ابتدائی سسٹم بوٹ کے دوران شروع ہونے والے سرور کے ساتھ مسائل ہو سکتے ہیں:

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

آئیے پی ایچ پی سیشن ڈائرکٹری کے مالک کو اس کے مطابق nginx میں تبدیل کریں:

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

آئیے کنفیگریشن فائل /etc/nginx/nginx.conf سے تبصروں کے ساتھ لائنوں کو ہٹا دیں (تاکہ sed کے لیے کوئی ڈبل ٹرگرز نہ ہوں):

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

/etc/nginx/nginx.conf میں gzip کمپریشن کی ترتیبات شامل کریں۔

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-fpm ساکٹ کے ذریعے PHP پروسیسنگ، جامد فائلوں کے لیے لاگ کو غیر فعال کریں، ایکسپائر ٹائم میں اضافہ کریں، 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

سرٹ بوٹ انسٹال کرنے کے لیے ضروری ویجٹ انسٹال کریں:

sudo dnf install wget -y

آف سائٹ سے سرٹ بوٹ قابل عمل فائل ڈاؤن لوڈ کریں:

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

آرکائیو کو کھولنے کے لیے ٹار انسٹال کریں:

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

سنیپ شاٹ سے وی ڈی ایس شروع کرنے کے بعد، ہم اسکرپٹ کو چلا کر 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"

ٹرسٹڈ ہوسٹ سیکیورٹی سیٹ اپ کرنا (تجویز کردہ)

اس ترتیب کا مقصد متحرک base_url کے تعین سے وابستہ مسئلے کے حل کے طور پر ہے، اور اسے HTTP HOST ہیڈر حملوں کو روکنے کے لیے ڈیزائن کیا گیا ہے (جب آپ کی سائٹ کو لگتا ہے کہ یہ کوئی اور ہے)۔

ایسا کرنے کے لیے، آپ کو سیٹنگ فائل میں سائٹ کے لیے بھروسہ مند ڈومین نام بتانے کی ضرورت ہے۔

فائل میں

/usr/share/nginx/html/sites/default/settings.php آئیے غیر تبصرہ کریں یا اصل سائٹ کے ناموں کے نمونوں کے ساتھ ایک ترتیب شامل کریں، مثال کے طور پر:

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

پی ایچ پی اے پی سی یو انسٹال کرنا (تجویز کردہ)

ڈروپل اے پی سی یو کو سپورٹ کرتا ہے - متبادل پی ایچ پی یوزر کیشے، ورژن 8 اور 9 اے پی سی یو کا قلیل مدتی مقامی کیشے کے طور پر پچھلے ورژنز کے مقابلے میں زیادہ استعمال کرتے ہیں۔ ڈیفالٹ کیش سائز (32 MB) زیادہ تر سائٹس کے لیے موزوں ہے، اور 512 MB سے زیادہ نہیں ہو سکتا۔

چالو کرنے کے لیے، پی ایچ پی اے پی سی یو ماڈیول انسٹال کریں:

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 پر تعینات اور استعمال ہوتا ہے، تو ہم آپ کو بازار میں شامل کر سکتے ہیں۔ اس طرح ہم نئے صارفین، ٹریفک اور مرئیت لانے میں آپ کی مدد کر سکتے ہیں۔ ہمیں لکھیں۔

ہمیں کمنٹس میں بتائیں کہ آپ کو کون سی تصویر یاد آرہی ہے؟

اور ہم اسے خود تیار کریں گے۔

Centos 9 پر Drupal 8 کے ساتھ VPS ٹیمپلیٹ بنانا

Centos 9 پر Drupal 8 کے ساتھ VPS ٹیمپلیٹ بنانا

ماخذ: www.habr.com