Ҷойгир кардани барнома ба Laravel 7 дар Ubuntu & Nginx

Ҷойгир кардани барнома ба Laravel 7 дар Ubuntu & Nginx

Ман қарор додам, ки портфели худро бо истифода аз Laravel 7 созам. Барои он ки саҳифаи асосӣ саҳифаи кушодашавӣ бошад ва тамоми маълумот дар он бо истифода аз панели администратор тағир дода шавад. Гап нест. Он барои ҷойгиркунӣ омад. Ман якчанд дарси хуберо дар бораи чӣ гуна иҷро кардани ин корро дар сервери мукаммал бо ҳама мушкилот пайдо кардам. Ман дар ҷойгиркунӣ чандон қавӣ нестам; Ман дар маҷмӯъ назар ба стек пурра пештар ҳастам. Ва агар ман то ҳол дар PHP навишта метавонам ва озмоиш кунам, пас пеш аз идоракунии сервер ва ғайра. Ман ҳанӯз калон нашудаам. Аммо ман бояд инро фаҳмидам.

Ҳоло мо ҳама қадамҳоро мегузарем, аз оғоз тавассути SSH ва ба анҷом расидани сайти корӣ. Мо мекӯшем, ки аз ҳама камбудиҳо канорагирӣ кунем.

Шумо метавонед дастурҳои шабеҳро дар интернет пайдо кунед. Охир, ман дар охир онро ёфтам. Дуруст аст, на дар як ҷо, на бе ёрии StackOverflow ва базӯр ба забони русӣ. азоб кашидам. Барои ҳамин ман қарор додам, ки зиндагии шуморо содда кунам.

Мо ҳама чизро бо қатра дар DigitalOcean мекунем. Ин, албатта, зарур нест; ягон хостингро интихоб кунед. Вақте ки шумо ба сервери корӣ дар Ubuntu мерасед, баргардед. Барои онҳое, ки ҳоло ҳам тасмим гирифтанд, ки ин корро дар DigitalOcean анҷом диҳанд, маслиҳатҳои бештар дар бораи таъсиси домен вуҷуд доранд. Ва $ 100 истиноди муроҷиат.

Ҳама қадамҳои мушаххаси 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

MySQL

  • 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

PHP

  • 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 барои Laravel:

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 барои Laravel:

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

Ларел

  • 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.

Ҳамин ки шумо ба қайд гирифтаед, шумо ба ҳисоби худ 100 доллар мегиред. Аммо фирефта нашавед. Шумо танҳо 60 рӯз доред, ки онро сарф кунед. Ва ин хеле кам аст. Шумо метавонед, мисли ман, мехоҳед нақшаи гаронтареро истифода баред, то дертар, вақте ки пули ҳақиқӣ ҷорӣ мешавад, шумо метавонед ба нақшаи арзонтар гузаред. Ман фавран ба шумо мегӯям, ки он кор намекунад. Шумо метавонед онро зиёд кунед, аммо кам карда наметавонед. Ҳамин тавр меравад. ман интихоб мекунам Стандарт->$5.

Ман минтақаи ба мо наздиктаринро интихоб мекунам Франкфурт. Шабакаи VPC->default-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

Мо ҳама амалҳоро минбаъд, то охири мақола, аз номи корбари laravel иҷро мекунем. Аз ин рӯ, агар шумо ногаҳон қатъ шавед, дубора ворид шавед ва ворид шавед su laravel

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

Мо файлро дар Vim кушодем. Агар шумо бо он тамоман шинос набошед, шумо метавонед дар Nano кор кунед, рости шумо.

Фармонҳои асосии Vim

Барои истифодаи муҳаррири 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-и худ равед. Агар ҳама чиз хуб бошад, шумо бояд зеринро бинед.

Ҷойгир кардани барнома ба Laravel 7 дар Ubuntu & Nginx

Насб кардани 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;

  • Барои реша парол таъин кунед: 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 ва паролро ворид кунед

Насб кардани PHP

Биёед як анбори тарафи сеюмро аз Ондрей Сури

  • 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

Акнун биёед интихоб кунем. Барои Laravel 7, шумо метавонед PHP 7.3 ё 7.4 -ро интихоб кунед. Ягона фарқият дар рақамҳои 3 ва 4 хоҳад буд.

  • 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 (fpm) бо дархостҳои PHP кор мекунад. mysql, албатта, барои кор бо MySQL.

Минбаъд ман ҳама чизро дар 7.4 иҷро мекунам.

Насб кардани Nginx

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

Ба ҷои "<Домени шумо>" доменро ворид кунед (масалан, 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;
        }
}

Агар шумо ба ҷои версияи 7.3 интихоб карда бошед php7.4-fpm.sock нависед php7.4-fpm.sock.

Порти 80-ро гӯш кунед server_nameвақте ки мо ба дархости реша мерасем /var/www/html файли индексро гиред. Агар баъд server_name Чизе ҳаст, мо чунин файлро меҷӯем. Агар мо онро наёбем, 404-ро мепартоем. Агар он бо тамом шавад .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

Шумо бояд чизе монанди ин бинед:

Ҷойгир кардани барнома ба Laravel 7 дар Ubuntu & Nginx

Акнун ин файлро нест кардан мумкин аст: sudo rm /var/www/html/info.php

Laravel насб кунед

  • 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 <Имя проекта>

Минбаъд шумо бояд лоиҳаро интиқол диҳед. Масалан, клонкунӣ аз Github.

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

Бояд ба назар гирифт, ки агар шумо файлҳои статикиро захира накарда бошед (масалан, аз /public) дар Github, пас табиист, ки шумо онҳоро нахоҳед дошт. Масалан, ман барои ҳалли ин як риштаи алоҳида эҷод кардам 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 -ро бо истеҳсол, APP_DEBUG -ро бо дурӯғ иваз кунед ва танзимоти дурусти 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 барои Laravel аст:

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;
    }
}

Мисли дафъаи гузашта, агар шумо ба ҷои версияи 7.3-ро интихоб карда бошед php7.4-fpm.sock нависед php7.4-fpm.sock.

Таъсиси домен дар DigitalOcean

Ҳама чиз воқеан хеле оддӣ аст. Шумо домен мехаред (дар ҳама ҷо), ба DigitalOcean гузаред сохтан->Доменҳо/DNS... Дар саҳро Домен илова кунед шумо ба ин домен ворид мешавед ва иловаро пахш мекунед. Пас ба танзимоти домен ва ба майдон равед НОМИ НОМ ворид кунед @. Лоиҳаро интихоб кунед ва клик кунед Сабт эҷод кунед.
Акнун ба сайте, ки шумо доменро харидед, равед, дар он ҷо "Серверҳои DNS" -ро пайдо кунед (ё чизи шабеҳ) ва серверҳои 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 (порти 80) ба HTTPS (порти 443) равона мекунем. Ва дар он ҷо мо ҳама корро ҳамон тавре ки қаблан анҷом медиҳем, аммо бо рамзгузорӣ.

Ҳама чизи боқӣ гузоштани иҷозатҳо дар брандмауэр аст:

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

Акнун ҳама чиз бояд тавре кор кунад.

[Advanced] Насбкунии Node.js

Агар ба шумо ногаҳон лозим шавад, ки фармонҳои npm-ро мустақиман дар сервер иҷро кунед, шумо бояд Node.js-ро насб кунед.

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

Ҳамин аст, ман дар ин марҳила қатъ кардам. Умуман, ман аз натиҷа қаноатмандам. Шояд ман аз DigitalOcean ба ҷое наздиктар ба Русия ва арзонтар мегузарам. Аммо азбаски ман аллакай ҳама давраҳои санҷишро дар сайт гузашта будам ва ҳама чизро дар он ҷо кардам, ман онҳоро бо намуна нишон додам. Илова бар ин, 100 доллари ибтидоии онҳо як трамплини олӣ барои омӯзиш аст.

PS Ташаккури махсус ба муаллиф ин мазмун, ки барои хамаи амалхои дар боло зикршуда асос шуда буд. Дар баъзе ҳолатҳо он барои Laravel 7 кор намекунад, ман онро ислоҳ кардам.

PPS Агар шумо як муҳандиси олӣ бошед, ки дар фармонҳои bash фикр мекунад, лутфан сахт доварӣ накунед. Шояд шумо ин мақоларо дар сатҳи паст қарор медиҳед, аммо ман хурсанд мешудам, ки вақте ки ба ман лозим буд, онро пайдо кунам. Агар пешниҳодҳо барои беҳбудӣ вуҷуд дошта бошанд, ман ҳама ҷонибдори он ҳастам.

Манбаъ: will.com

Илова Эзоҳ