هذه هي مجموعة من أوامر لينكس لإعداد سيرفر VPS.

كتب هذه القائمة صديقي محسن الصيادي وحررتها ونشرتها هنا فله جزيل الشكر.

هذه القائمة خُّصّصت لإعداد سيرفر VPS من نوع Digital Ocean Droplet بنظام تشغيل Ubuntu v20 لتجهيز مشروع Laravel. قد لا يكون بالضرورة هذا ما تبحث عنه، ولكن قد تجد بعض الأوامر التي تفيدك عمومًا.

ملاحظة: هذه القائمة ليست نهائية وستكون محدثة باستمرار.

وندعوك بشدة إن كنت تعلم أي إضافة أو تعديل لتحسين هذه الأوامر أو توضيحها أن تشاركنا في التعليقات لإضافتها للتدوينة.

لإضافة وصول عن بعد remote ssh

sudo nano ~/.ssh/authorized_keys (add public key)
sudo service ssh restart

إعداد الجدار الناري config firewall

sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw allow webmin
sudo ufw allow OpenSSH
sudo ufw enable or sudo ufw reload

تنزيل لوحة تحكم Webmin لإدارة السيرفر شبيهة cPanel

sudo apt update
sudo nano /etc/apt/sources.list
deb http://download.webmin.com/download/repository sarge contrib (add on bottom)
wget -q -O- http://www.webmin.com/jcameron-key.asc | sudo apt-key add
sudo apt update
sudo apt upgrade
sudo apt install webmin
sudo /usr/share/webmin/changepass.pl /etc/webmin root [new password]
sudo systemctl status webmin

للمزيد:

تنزيل سيرفر Nginx

sudo apt update
sudo apt install nginx
sudo ufw app list
sudo ufw allow 'Nginx HTTP'
sudo ufw status
sudo systemctl [stop-start-restart-reload-disable-enable] nginx
sudo mkdir -p /var/www/YOUR_DOMAIN/html
sudo chown -R $USER:$USER /var/www/YOUR_DOMAIN/html
sudo chmod -R 755 /var/www/YOUR_DOMAIN/html

ثم نفتح الملف

sudo nano /etc/nginx/sites-available/YOUR_DOMAIN

وتوضع البيانات التالية

server {
listen 80;
listen [::]:80;

        root /var/www/YOUR_DOMAIN/html;
        index index.html index.htm index.nginx-debian.html;

        server_name YOUR_DOMAIN www.YOUR_DOMAIN;

        location / {
                try_files $uri $uri/ =404;
        }

}

ثم نكمل

sudo ln -s /etc/nginx/sites-available/YOUR_DOMAIN /etc/nginx/sites-enabled/
sudo unlink /etc/nginx/sites-enabled/default

ثم نفتح الملف

sudo nano /etc/nginx/nginx.conf

وتوضع البيانات التالية

server_names_hash_bucket_size 64 (enable);
sudo nano /etc/hosts
167.99.244.85 YOUR_DOMAIN www.YOUR_DOMAIN
sudo nginx -t
sudo systemctl restart nginx

للمزيد:

إضافة شهادة SSL عن طريق let's encrypt

sudo apt install certbot python3-certbot-nginx
sudo nano /etc/nginx/sites-available/YOUR_DOMAIN
sudo nginx -t
sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'
sudo certbot --nginx -d YOUR_DOMAIN -d www.YOUR_DOMAIN
sudo systemctl status certbot.timer
sudo certbot renew --dry-run

للمزيد:

install php using nginx with specific version

تنزيل PHP بإصدار معين عن طريق Nginx

sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.2-fpm php8.2-mysql php8.2-curl php8.2-dom php8.2-mbstring php8.2-xml php8.2-bcmath

config laravel project

إعداد مشروع Laravel

فتح الملف المرتبط باسم النطاق domain

sudo nano /etc/nginx/sites-available/YOUR_DOMAIN

وتوضع البيانات التالية


(sites-avaliable) server {

    root /var/www/YOUR_DOMAIN/html/public;

    server_name YOUR_DOMAIN www.YOUR_DOMAIN;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }

تنزيل Composer


curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer (install latest composer)

تنزيل mariaDB

ملاحظة: قاعدة بيانات mariaDB مشتقة من MySQL مفتوحة المصدر وقد تكون مفيدة في حالة أن بيانات السيرفر صغيرة ولا تستوعبها MySQL، كما أن الفروقات العملية بينها وMYSQL لا تكاد تذكر.

sudo apt install mariadb-server
sudo mysql_secure_installation
sudo systemctl enable mariadb.service

للمزيد:

إعداد الصلاحيات

sudo chown -R www-data:www-data /var/www/YOUR_DOMAIN/html/storage
sudo chown -R www-data:www-data /var/www/YOUR_DOMAIN/html/bootstrap/cache

للمزيد:

مصادر مفيدة: