استقرار یک برنامه در لاراول ۷ Ubuntu و نگینکس

استقرار یک برنامه در لاراول ۷ Ubuntu و نگینکس

تصمیم گرفتم نمونه‌کارهایم را با استفاده از لاراول ۷ بسازم. می‌خواستم صفحه اصلی یک صفحه فرود باشد و تمام اطلاعات روی آن از طریق پنل مدیریت قابل ویرایش باشد. مسئله‌ی مهمی نبود. وقت استقرار بود. چند آموزش خوب در مورد نحوه‌ی انجام این کار روی یک سرور کامل، با تمام پیچیدگی‌هایش، پیدا کردم. من در استقرار خیلی قوی نیستم؛ من بیشتر یک توسعه‌دهنده‌ی front-end هستم تا یک توسعه‌دهنده‌ی full-stack. و در حالی که می‌توانم PHP بنویسم و ​​​​تست کنم، اما کاملاً از پس مدیریت سرور و موارد مشابه برنمی‌آیم. اما باید این را کشف می‌کردم.

حالا تمام مراحل را بررسی خواهیم کرد، از راه‌اندازی از طریق SSH تا داشتن یک وب‌سایت فعال. سعی خواهیم کرد از همه مشکلات اجتناب کنیم.

شاید بتوانید دستورالعمل‌های مشابهی را به‌صورت آنلاین پیدا کنید. من که پیدا کردم. درست است، همه چیز یکجا نبود، به کمک StackOverflow نیاز داشت و بعید است که به زبان روسی باشد. این یک چالش بود. بنابراین تصمیم گرفتم کار را برای شما آسان‌تر کنم.

ما همه کارها را با یک سرور مجازی در DigitalOcean انجام خواهیم داد. البته این اختیاری است؛ می‌توانید هر میزبانی را انتخاب کنید. شما به سرور فعال از طریق ... خواهید رسید. Ubuntu، برگردید. برای کسانی که هنوز تصمیم به استفاده از DigitalOcean دارند، نکات بیشتری در مورد تنظیم دامنه وجود خواهد داشت. و همچنین لینک ارجاع ۱۰۰ دلاری.

تمام مراحل خاص DigitalOcean در پاورقی‌هایی مانند این موارد ارائه خواهد شد.

بیا شروع کنیم.

TL;DR (فقط دستورات پایه)

یک کاربر ایجاد کنید

  • ssh root@[IP-адрес вашего дроплета]
  • adduser laravel
  • usermod -aG sudo laravel
  • su laravel

بیایید SSH را به آن اضافه کنیم

  • mkdir ~/.ssh
  • chmod 700 ~/.ssh
  • vim ~/.ssh/authorized_keys
  • کلید عمومی را وارد کنید
  • chmod 600 ~/.ssh/authorized_keys

فایروال

  • sudo ufw allow OpenSSH
  • sudo ufw enable
  • sudo ufw status

Nginx

  • sudo apt update
  • sudo apt install -y nginx
  • sudo ufw allow 'Nginx HTTP'
  • sudo ufw status

خروجی

  • sudo apt install -y mysql-server
  • sudo mysql_secure_installation, NYNNY
  • sudo mysql
  • ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<Ваш пароль для MySQL>';
  • SELECT user,authentication_string,plugin,host FROM mysql.user;
  • FLUSH PRIVILEGES;
  • exit

پی اچ پی

  • sudo apt update

  • sudo apt install -y curl wget gnupg2 ca-certificates lsb-release apt-transport-https

  • sudo apt-add-repository ppa:ondrej/php

  • sudo apt update

  • 7.3: sudo apt install -y php7.3-fpm php7.3-mysql

  • 7.4: sudo apt install -y php7.4-fpm php7.4-mysql

  • sudo vim /etc/nginx/sites-available/<Ваш домен>

راه اندازی اولیه:

server {
        listen 80;
        root /var/www/html;
        index index.php index.html index.htm index.nginx-debian.html;
        server_name <Ваш домен или IP>;

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

        location ~ .php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }

        location ~ /.ht {
                deny all;
        }
}

تنظیمات فقط HTTP برای لاراول:

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

    root /var/www/html/<Имя проекта>/public;
    index index.php index.html index.htm index.nginx-debian.html;

    server_name <Ваш домен или IP>;

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

    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }

    location ~ /.ht {
        deny all;
    }
}

تنظیمات HTTPS برای لاراول:

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

    server_name <Ваш домен> www.<Ваш домен>;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name <Ваш домен> www.<Ваш домен>;
    root /var/www/html/<Имя проекта>/public;

    ssl_certificate /etc/letsencrypt/live/<Ваш домен>/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/<Ваш домен>/privkey.pem;

    ssl_protocols TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
    ssl_prefer_server_ciphers on;

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

    index index.php index.html index.htm index.nginx-debian.html;

    charset utf-8;

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

    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }

    location ~ /.ht {
            deny all;
    }

    location ~ /.well-known {
            allow all;
    }
}

  • sudo ln -s /etc/nginx/sites-available/<Ваш домен> /etc/nginx/sites-enabled/
  • sudo unlink /etc/nginx/sites-enabled/default
  • sudo nginx -t
  • sudo systemctl reload nginx

فریم ورک Laravel

  • 7.3: sudo apt install -y php7.3-mbstring php7.3-xml composer unzip

  • 7.4: sudo apt install -y php7.4-mbstring php7.4-xml composer unzip

  • mysql -u root -p

  • CREATE DATABASE laravel DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

  • GRANT ALL ON laravel.* TO 'root'@'localhost' IDENTIFIED BY '<Ваш пароль от MySQL>';

  • FLUSH PRIVILEGES;

  • exit

  • cd /var/www/html

  • sudo mkdir -p <Имя проекта>

  • sudo chown laravel:laravel <Имя проекта>

  • cd ./<Имя проекта>

  • git clone <ссылка на проект> . / git clone -b <имя ветки> --single-branch <ссылка на проект> .

  • composer install

  • vim .env

APP_NAME=Laravel
APP_ENV=production
APP_KEY=
APP_DEBUG=false
APP_URL=http://<Ваш домен>

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=<Ваш пароль от MySQL>

  • php artisan migrate

  • php artisan key:generate

  • sudo chown -R $USER:www-data storage

  • sudo chown -R $USER:www-data bootstrap/cache

  • chmod -R 775 storage

  • chmod -R 775 bootstrap/cache

HTTPS

  • sudo add-apt-repository ppa:certbot/certbot

  • sudo apt install -y python-certbot-nginx

  • sudo certbot certonly --webroot --webroot-path=/var/www/html/<Имя проекта>/public -d <Ваш домен> -d www.<Ваш домен>

  • sudo nginx -t

  • sudo ufw allow 'Nginx HTTPS'

  • sudo ufw status

  • sudo systemctl reload nginx

یک سرور در DigitalOcean ایجاد کنید و یک کلید SSH جدید ثبت کنید

من صمیمانه معتقدم که خودتان می‌توانید نحوه ثبت نام در DigitalOcean را پیدا کنید. این کار پیچیده است، با کلی مراحل تأیید و موارد بی‌معنی دیگر. اگر هنگام تأیید اسناد، مدام با خطاهای شبکه مواجه می‌شوید، سعی کنید از VPN استفاده کنید؛ این باید کمک کند.

در منوی بالا، کلیک کنید ساختن->قطره... ما انتخاب میکنیم Ubuntu.

به محض ثبت نام، ۱۰۰ دلار به حسابتان واریز می‌شود. اما زیاد ذوق‌زده نشوید. فقط ۶۰ روز فرصت دارید تا آن را خرج کنید. و این خیلی کم است. شاید مثل من بخواهید از یک طرح گران‌تر استفاده کنید تا بعداً، وقتی پول واقعی شروع به ورود کرد، بتوانید به یک طرح ارزان‌تر تغییر دهید. همین الان به شما می‌گویم، این امکان‌پذیر نیست. می‌توانید آن را افزایش دهید، اما نمی‌توانید آن را کاهش دهید. این روشی است که من انتخاب می‌کنم. استاندارد->$5.

من نزدیکترین منطقه به خودمان را انتخاب می‌کنم. فرانکفورت. شبکه VPC->پیش‌فرض-fra1

ما مستقیماً از طریق SSH احراز هویت خواهیم کرد. کلیک کنید کلید SSH جدیداگر SSH ندارید، یک دستورالعمل بسیار ساده در سمت راست وجود دارد. یک ترمینال bash باز کنید، دستور زیر را پیست کنید. ssh-keygenسپس به سراغ فایل حاوی کلید عمومی می‌رویم. /Users/<Ваше имя пользователя>/.ssh/id_rsa.pub (یا به سادگی cat ~/.ssh/id_rsa.pub) ، محتویات را کپی کرده و در پنجره سمت چپ جایگذاری کنید. نام آن هر چیزی است که می‌خواهید.

بیایید یک نام میزبان برای قطره (droplet) انتخاب کنیم.

فشار ایجاد قطره

ایجاد یک کاربر جدید

  • ssh root@[IP-адрес вашего дроплета]
  • آیا مطمئن هستید که می‌خواهید اتصال را ادامه دهید (بله/خیر/[اثر انگشت])؟ yes
  • رمز عبور SSH خود را وارد کنید
  • یک کاربر ایجاد کنید لاراول: adduser laravel
  • رمز عبور و سایر اطلاعات خود را وارد کنید (من فقط نام کامل خود را وارد می‌کنم)
  • کاربر را به گروه sudo اضافه کنید: usermod -aG sudo laravel

SSH برای یک کاربر جدید

  • انتقال به یک کاربر جدید: su laravel

تمام اقدامات بعدی، برای ادامه مقاله، به عنوان کاربر لاراول انجام خواهد شد. بنابراین، اگر وقفه‌ای در کار شما ایجاد شد، دوباره وارد سیستم شوید و وارد شوید su laravel

  • mkdir ~/.ssh
  • chmod 700 ~/.ssh
  • vim ~/.ssh/authorized_keys

ما فایل را در Vim باز کرده‌ایم. اگر اصلاً با آن آشنا نیستید، می‌توانید از Nano استفاده کنید، حق با شماست..

اساسی‌ترین دستورات Vim

برای استفاده از ویرایشگر Vim در طول این مقاله، فقط باید موارد زیر را بدانید.

  • ویم حالت‌های مختلفی دارد: حالت عادی، که در آن دستورات را وارد می‌کنید و حالت‌ها را انتخاب می‌کنید، و بقیه.
  • برای خروج از هر حالتی و ورود به حالت عادی، کافیست دکمه ... را فشار دهید. Esc
  • برای حرکت: می‌توانید به سادگی از کلیدهای جهت‌نما استفاده کنید
  • خروج بدون ذخیره <Normal mode>: :q!
  • خروج و ذخیره <Normal mode>: :wq
  • به حالت ورودی متن بروید <Normal mode>: i (از انگلیسی. درج)
  • کلید عمومی خود را (که در بالا ساختیم) وارد می‌کنیم
  • محافظت در برابر تغییرات: chmod 600 ~/.ssh/authorized_keys

نصب فایروال

  • بیایید تمام تنظیمات موجود را بررسی کنیم: sudo ufw app list
  • OpenSSH را مجاز کنید (در غیر این صورت قفل خواهیم شد): sudo ufw allow OpenSSH
  • بیایید فایروال را راه اندازی کنیم: sudo ufw enable, y
  • ما بررسی می کنیم: sudo ufw status

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

همه چیز خوب است.

نصب Nginx

در حین نصب، گاهی اوقات از شما پرسیده می‌شود «آیا مطمئن هستید؟» پاسخ y (خب، فقط اگر مطمئن هستید).

  • sudo apt update
  • sudo apt install nginx

افزودن Nginx به تنظیمات فایروال

  • sudo ufw app list
  • sudo ufw allow 'Nginx HTTP'
  • sudo ufw status

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx HTTP                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

به آدرس IP خود بروید. اگر همه چیز خوب پیش برود، باید موارد زیر را ببینید.

استقرار یک برنامه در لاراول ۷ Ubuntu و نگینکس

نصب MySQL

  • sudo apt install mysql-server
  • ما یک اسکریپت محافظت خودکار راه اندازی می کنیم sudo mysql_secure_installation

به سوالات زیر پاسخ دهید. اگر مطمئن نیستید، در اینجا چند پاسخ پیشنهادی ارائه شده است:

  • افزونه اعتبارسنجی رمز عبور — N

  • کاربران ناشناس را حذف کنید؟ — Y

  • عدم اجازه ورود به سیستم ریشه از راه دور؟ — N

  • حذف پایگاه داده آزمایشی و دسترسی به آن؟ — N

  • الان جداول امتیاز را دوباره بارگذاری کنید؟ — Y

  • بریم سراغ MySQL: sudo mysql

  • بیایید به روش‌های دسترسی نگاهی بیندازیم: SELECT user,authentication_string,plugin,host FROM mysql.user;

  • برای root رمز عبور تعیین کنید: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<Ваш пароль для MySQL>';

  • بیایید دوباره به روش‌های دسترسی نگاهی بیندازیم: SELECT user,authentication_string,plugin,host FROM mysql.user;

  • تغییرات را اعمال کنید و از MySQL خارج شوید: FLUSH PRIVILEGES; и exit

  • حالا برای ورود به MySQL باید از دستور زیر استفاده کنید: mysql -u root -p و رمز عبور را وارد کنید

نصب پی اچ پی

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

  • sudo apt update
  • sudo apt install -y curl wget gnupg2 ca-certificates lsb-release apt-transport-https
  • sudo apt-add-repository ppa:ondrej/php
  • sudo apt update

حالا بیایید انتخاب کنیم. برای لاراول ۷، می‌توانید PHP 7.3 یا ۷.۴ را انتخاب کنید. تنها تفاوت در اعداد ۳ و ۴ خواهد بود.

  • 7.3: sudo apt install -y php7.3-fpm php7.3-mysql
  • 7.4: sudo apt install -y php7.4-fpm php7.4-mysql

PHP FastCGI Process Manager (fpm) کوئری‌های PHP را مدیریت می‌کند. البته MySQL کوئری‌های MySQL را مدیریت می‌کند.

از این به بعد همه کارها رو با ۷.۴ انجام میدم.

پیکربندی Nginx

  • sudo vim /etc/nginx/sites-available/<Ваш домен>

به جای "<Your domain>" دامنه خود را قرار دهید (مثلاً mysite.ru) که می‌خواهید در آینده از آن استفاده کنید. اگر هنوز دامنه‌ای ندارید، هر دامنه‌ای را وارد کنید، سپس پس از انتخاب دامنه، مراحل این فصل را برای آن تکرار کنید.

موارد زیر را وارد می‌کنیم:

server {
        listen 80;
        root /var/www/html;
        index index.php index.html index.htm index.nginx-debian.html;
        server_name <Ваш домен или IP>;

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

        location ~ .php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }

        location ~ /.ht {
                deny all;
        }
}

اگر نسخه ۷.۳ را انتخاب کرده‌اید php7.4-fpm.sock وارد شوید php7.4-fpm.sock.

به پورت ۸۰ گوش دهید server_nameوقتی درخواستی را در ریشه دریافت می‌کنیم /var/www/html فایل ایندکس را می‌گیریم. اگر بعد از server_name چیزی آنجا هست، ما دنبال چنین فایلی می‌گردیم. اگر آن را پیدا نکنیم، خطای ۴۰۴ می‌دهیم. اگر به ... ختم شود .php، ما آن را اجرا می‌کنیم fpm... اگر وجود دارد .ht، ما ممنوع می‌کنیم (403).

  • ما از آنجا لینک می‌سازیم sites-available в sites-enabled: sudo ln -s /etc/nginx/sites-available/<Ваш домен> /etc/nginx/sites-enabled/
  • ما لینک را حذف می‌کنیم default: sudo unlink /etc/nginx/sites-enabled/default
  • بررسی خطاها: sudo nginx -t
  • راه اندازی مجدد: sudo systemctl reload nginx

بررسی کار:

  • sudo vim /var/www/html/info.php
  • ما نوشتیم: <?php phpinfo();
  • برویم به <Ваш IP>/info.php

شما باید چیزی شبیه به این را ببینید:

استقرار یک برنامه در لاراول ۷ Ubuntu و نگینکس

حالا این فایل قابل حذف است: sudo rm /var/www/html/info.php

نصب لاراول

  • 7.3: sudo apt install php7.3-mbstring php7.3-xml composer unzip

  • 7.4: sudo apt install php7.4-mbstring php7.4-xml composer unzip

  • بریم سراغ MySQL: mysql -u root -p

  • ایجاد پایگاه داده با نام لاراول: CREATE DATABASE laravel DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

  • اعطای دسترسی روت به لاراول: GRANT ALL ON laravel.* TO 'root'@'localhost' IDENTIFIED BY '<Ваш пароль от MySQL>';

  • FLUSH PRIVILEGES;

  • exit

  • cd /var/www/html

  • ایجاد پوشه برای پروژه: sudo mkdir -p <Имя проекта>

  • در اختیار کاربر قرار می‌دهیم لاراول حقوق پروژه: sudo chown laravel:laravel <Имя проекта>

در مرحله بعد، باید پروژه را منتقل کنید. برای مثال، با کپی کردن آن از گیت‌هاب.

  • cd ./<Имя проекта>
  • git clone <ссылка на проект> .

شایان ذکر است که اگر فایل‌های استاتیک را ذخیره نکرده‌اید (برای مثال، از /public) در گیت‌هاب، پس طبیعتاً آنها را نخواهید داشت. برای مثال، من یک شاخه جداگانه برای رسیدگی به این موضوع ایجاد کردم. deploy، که قبلاً از آن کلون کرده‌ام: git clone -b <имя ветки> --single-branch <ссылка на проект> ..

  • نصب وابستگی ها: composer install
  • ایجاد فایل .env: vim .env

نسخه پایه آن به این شکل است:

APP_NAME=Laravel
APP_ENV=production
APP_KEY=
APP_DEBUG=false
APP_URL=http://<Ваш домен>

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=<Ваш пароль от MySQL>

اگر فایل .env خود را کپی می‌کنید، APP_ENV را با production و APP_DEBUG را با false جایگزین کنید و تنظیمات صحیح را برای MySQL وارد کنید.

  • انتقال پایگاه داده: php artisan migrate
  • تولید کد: php artisan key:generate

تغییر مجوزها:

  • sudo chown -R $USER:www-data storage
  • sudo chown -R $USER:www-data bootstrap/cache
  • chmod -R 775 storage
  • chmod -R 775 bootstrap/cache

آخرین چیزی که باقی مانده است، پیکربندی مجدد Nginx برای لاراول است:

sudo vim /etc/nginx/sites-available/<Ваш домен>

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

    root /var/www/html/<Имя проекта>/public;
    index index.php index.html index.htm index.nginx-debian.html;

    server_name <Ваш домен или IP>;

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

    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }

    location ~ /.ht {
        deny all;
    }
}

درست مثل دفعه قبل، اگر به جای آن نسخه ۷.۳ را انتخاب کرده باشید php7.4-fpm.sock وارد شوید php7.4-fpm.sock.

راه اندازی دامنه در DigitalOcean

همه چیز واقعاً ساده است. شما یک دامنه (از هر جایی) می‌خرید، به DigitalOcean در ... منتقل می‌شوید. ساختن->دامنه‌ها/DNSبه در زمینه اضافه کردن دامنه شما این دامنه را وارد کنید، روی افزودن کلیک کنید. سپس به تنظیمات دامنه بروید و در فیلد نام خانوادگی وارد می شوید @پروژه را انتخاب کنید و کلیک کنید ایجاد یک رکورد.
حالا به وب‌سایتی که دامنه را از آن خریداری کرده‌اید بروید، عبارت "DNS Servers" (یا چیزی شبیه به آن) را در آنجا پیدا کنید و سرورهای DigitalOcean (یعنی ...) را وارد کنید. ns1.digitalocean.com, ns2.digitalocean.com, ns3.digitalocean.comحالا باید کمی (یا خیلی) صبر کنید تا این تنظیمات پذیرفته شوند. تمام!
تنها مشکل این است که سایت شما فقط با HTTP باز می‌شود. برای استفاده از HTTPS، به بخش بعدی بروید.

راه‌اندازی HTTPS

ما certbot را نصب می‌کنیم و نام دامنه (به فرمت) را به آن می‌دهیم mysite.ru) و نام دامنه با www (www.mysite.ru).

  • sudo add-apt-repository ppa:certbot/certbot
  • sudo apt install python-certbot-nginx
  • sudo certbot certonly --webroot --webroot-path=/var/www/html/<Имя проекта>/public -d <Ваш домен> -d www.<Ваш домен>

حالا باید Nginx را دوباره پیکربندی کنید (فراموش نکنید که مقادیر خود را جایگزین کنید):

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

    server_name <Ваш домен> www.<Ваш домен>;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name <Ваш домен> www.<Ваш домен>;
    root /var/www/html/<Имя проекта>/public;

    ssl_certificate /etc/letsencrypt/live/<Ваш домен>/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/<Ваш домен>/privkey.pem;

    ssl_protocols TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
    ssl_prefer_server_ciphers on;

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

    index index.php index.html index.htm index.nginx-debian.html;

    charset utf-8;

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

    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }

    location ~ /.ht {
            deny all;
    }

    location ~ /.well-known {
            allow all;
    }
}

فکر می‌کنم شما از قبل می‌دانید که برای PHP 7.3 چه چیزهایی باید تغییر کنند.

در واقع اینجا خیلی ساده است. ما به سادگی تمام درخواست‌ها را از HTTP (پورت ۸۰) به HTTPS (پورت ۴۴۳) هدایت می‌کنیم. سپس همان کار قبلی را انجام می‌دهیم، اما با رمزگذاری.

تنها کاری که باقی مانده تنظیم مجوزها در فایروال است:

  • sudo nginx -t
  • sudo ufw app list
  • sudo ufw allow 'Nginx HTTPS'
  • sudo ufw status
  • sudo systemctl reload nginx

حالا همه چیز باید همانطور که باید کار کند.

[اختیاری] نصب Node.js

اگر ناگهان نیاز پیدا کردید که دستورات npm را مستقیماً روی سرور اجرا کنید، باید Node.js را نصب کنید.

  • sudo apt update
  • sudo apt install -y nodejs npm
  • nodejs -v

همین، من اینجا متوقف شدم. من اساساً از نتیجه راضی هستم. ممکن است از DigitalOcean به جایی نزدیک‌تر به روسیه و ارزان‌تر نقل مکان کنم. اما از آنجایی که من قبلاً تمام مراحل تأیید را در وب‌سایت طی کرده‌ام و همه کارها را آنجا انجام داده‌ام، از مثال آنها استفاده کردم. علاوه بر این، مبلغ اولیه ۱۰۰ دلار آنها نقطه شروع بسیار خوبی است.

پی‌نوشت: تشکر ویژه از نویسنده این تاریخکه به عنوان پایه و اساس تمام مراحل فوق عمل کرد. این کد از بعضی جهات در لاراول ۷ کار نمی‌کند، اما من آن را اصلاح کرده‌ام.

پی‌نوشت: اگر شما یک مهندس سطح بالا هستید که با دستورات bash فکر می‌کنید، لطفاً خیلی سخت‌گیرانه در مورد من قضاوت نکنید. ممکن است این مقاله کمی بی‌کیفیت به نظر برسد، اما خوشحال می‌شوم وقتی به آن نیاز داشتم، یکی مثل این را پیدا کنم. اگر پیشنهادی برای بهبود دارید، کاملاً موافقم.

منبع: www.habr.com

خرید هاست قابل اعتماد برای سایت های دارای حفاظت DDoS، سرورهای VPS VDS 🔥 خرید هاستینگ معتبر با محافظت در برابر حملات DDoS، سرورهای VPS و VDS | ProHoster