Pag-deploy sa usa ka aplikasyon sa Laravel 7 sa Ubuntu & Nginx

Pag-deploy sa usa ka aplikasyon sa Laravel 7 sa Ubuntu & Nginx

Nakahukom ko nga himoon ang akong portfolio gamit ang Laravel 7. Aron ang main page mahimong landing page, ug ang tanang impormasyon niini mahimong mausab gamit ang admin panel. Dili ang punto. Miabot kini sa deployment. Nakakita ako usa ka pares nga maayong mga panudlo kung giunsa kini buhaton sa usa ka hingpit nga server nga adunay tanan nga mga kasamok. Dili kaayo ko lig-on sa pag-deploy; Ako sa kasagaran labaw pa sa atubangan kay sa bug-os nga stack. Ug, kung makahimo pa ako pagsulat ug pagsulay sa PHP, unya sa wala pa magdumala sa server, ug uban pa. Wala pa ko nagdako. Apan kinahanglan nako nga masabtan kini.

Karon atong tun-an ang tanan nga mga lakang, sugod sa paglansad pinaagi sa SSH ug pagtapos sa nagtrabaho nga site. Atong paningkamutan nga malikayan ang tanan nga mga lit-ag.

Mahimo nimong makit-an ang parehas nga mga panudlo online. Human sa tanan, sa katapusan nakit-an ko kini. Tinuod, dili sa usa ka lugar, dili kung wala ang tabang sa StackOverflow, ug halos sa Russian. nag-antos ko. Mao to naka decide ko nga pasimplehon imong kinabuhi.

Buhaton namo ang tanan gamit ang usa ka tinulo sa DigitalOcean. Kini, siyempre, dili kinahanglan; pagpili sa bisan unsang pag-host. Kung nakaabot ka sa usa ka nagtrabaho nga server sa Ubuntu, balik. Alang sa mga nagdesisyon pa nga buhaton kini sa DigitalOcean, adunay daghang mga tip sa pag-set up sa usa ka domain. Ug $100 nga referral link.

Ang tanang lakang nga espesipiko sa DigitalOcean ihatag sa mga footnote nga sama niini.

Magsugod na ta.

TL; DR (basic commands lang)

Paghimo og user

  • ssh root@[IP-адрСс вашСго Π΄Ρ€ΠΎΠΏΠ»Π΅Ρ‚Π°]
  • adduser laravel
  • usermod -aG sudo laravel
  • su laravel

Idugang ang SSH niini

  • mkdir ~/.ssh
  • chmod 700 ~/.ssh
  • vim ~/.ssh/authorized_keys
  • Isulod ang yawe sa publiko
  • chmod 600 ~/.ssh/authorized_keys

Firewall

  • 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/<Π’Π°Ρˆ Π΄ΠΎΠΌΠ΅Π½>

Basic setup:

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

Lamang ang HTTP setup para sa 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 setting para sa 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

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

Paghimo og tinulo sa DigitalOcean ug magparehistro og bag-ong SSH key

Nagtuo gyud ko nga mahibal-an nimo kung giunsa ang pagparehistro sa DigitalOcean sa imong kaugalingon. Dili kini sayon, nga adunay daghang mga pag-verify ug uban pang mga butang. Kung kanunay ka nga makakuha usa ka sayup sa network kung mag-verify gamit ang mga dokumento, sulayi pagbuhat ang tanan pinaagi sa usa ka VPN, kinahanglan kini makatabang.

Sa menu sa ibabaw, i-klik Paghimo->Mga tulo. Pilia Ubuntu.

Sa diha nga ikaw magparehistro, makadawat ka og $100 sa imong account. Pero ayawg palimbong. Aduna ka lang 60 ka adlaw sa paggasto niini. Ug kini gamay ra kaayo. Mahimo nimo, sama kanako, gusto nga mogamit usa ka labi ka mahal nga plano, aron sa ulahi, kung ang tinuud nga salapi magsugod sa pagdagayday, mahimo ka magbalhin sa usa nga mas barato. Sultihan ko ikaw dayon nga dili kini molihok. Mahimo nimo kini dugangan, apan dili nimo kini mapakunhod. Mao nga kini moadto. pilion ko Standard->$5.

Gipili nako ang rehiyon nga labing duol kanamo Frankfurt. VPC Network->default-fra1

Ipahigayon dayon namo ang authentication pinaagi sa SSH. Pag-klik Bag-ong SSH Key. Kung wala kay SSH, adunay yano nga mga panudlo sa tuo. Ablihi ang bash terminal ug i-paste ssh-keygen. Dayon moadto kami sa file gamit ang public key /Users/<Π’Π°ΡˆΠ΅ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ>/.ssh/id_rsa.pub (o yano cat ~/.ssh/id_rsa.pub), kopyaha ang mga sulod ug idikit kini sa bintana sa wala. Bisan unsa nga ngalan.

Naghimo kami og hostname alang sa droplet.

I-klik dinhi Paghimo Droplet

Paghimo og bag-ong user

  • ssh root@[IP-адрСс вашСго Π΄Ρ€ΠΎΠΏΠ»Π΅Ρ‚Π°]
  • Sigurado ka ba nga gusto nimong ipadayon ang pagkonektar (oo/dili/[fingerprint])? yes
  • Pagsulod sa imong SSH password
  • Paghimo og user laravel: adduser laravel
  • Pagsulod sa imong password ug uban pang impormasyon (gisulod ra nako ang Tibuok Ngalan)
  • Idugang ang user sa sudo nga grupo: usermod -aG sudo laravel

SSH para sa bag-ong user

  • Pagbalhin sa bag-ong tiggamit: su laravel

Gihimo namon ang tanan nga mga aksyon nga labi pa, hangtod sa katapusan sa artikulo, alang sa tiggamit sa laravel. Busa, kung kalit ka nga nabalda, pag-login pag-usab ug pagsulod su laravel

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

Giablihan namo ang file sa Vim. Kung dili ka pamilyar niini, mahimo ka magtrabaho sa Nano, imong katungod.

Ang labing sukaranan nga mga sugo sa Vim

Aron magamit ang editor sa Vim sa tibuuk nga artikulo, kinahanglan nimo mahibal-an ang mosunod.

  • Ang Vim adunay lain-laing mga mode: Normal mode, diin ikaw mosulod sa mga sugo ug mopili sa mga mode ug uban pa.
  • Aron makagawas sa bisan unsang mode ug mobalik sa normal nga mode, pindota lang Esc
  • Lihok sa palibot: mahimo nimong gamiton ang mga pana
  • Paggawas nga walay pagtipig <Normal mode>: :q!
  • Exit ug save <Normal mode>: :wq
  • Pagbalhin ngadto sa text input mode <Normal mode>: i (gikan sa English. ipilit)
  • Gisulod namo ang among public key (nga among gibuhat sa ibabaw)
  • Kami nanalipod batok sa mga pagbag-o: chmod 600 ~/.ssh/authorized_keys

Pag-instalar og firewall

  • Atong tan-awon ang tanan nga magamit nga mga setting: sudo ufw app list
  • Tugoti ang OpenSSH (kon dili kini maka-lock kanamo): sudo ufw allow OpenSSH
  • Atong ilunsad ang firewall: sudo ufw enable, y
  • Pagsusi: sudo ufw status

Status: active

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

Maayo ra ang tanan.

Pag-instalar sa Nginx

Atol sa pag-instalar usahay pangutan-on ka "Sigurado ka ba?" Tubag y (Aw, kung sigurado ka).

  • sudo apt update
  • sudo apt install nginx

Pagdugang Nginx sa mga setting sa firewall

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

Adto sa imong IP. Kung maayo ang tanan, kinahanglan nimo nga makita ang mosunod.

Pag-deploy sa usa ka aplikasyon sa Laravel 7 sa Ubuntu & Nginx

Pag-instalar sa MySQL

  • sudo apt install mysql-server
  • Paglunsad sa usa ka awtomatikong proteksyon script sudo mysql_secure_installation

Tubaga ang mga pangutana nga gipangutana. Kung wala ka mahibal-an kung unsa ang itubag, ania ang pipila nga gisugyot nga mga kapilian:

  • I-validate ang plugin sa password - N

  • Kuhaa ang anonymous nga tiggamit? β€” Y

  • Dili tugotan ang root login sa layo? β€” N

  • Kuhaa ang database sa pagsulay ug pag-access niini? β€” N

  • I-reload ang mga privilege table karon? β€” Y

  • Adto ta sa MySQL: sudo mysql

  • Atong tan-awon ang mga paagi sa pag-access: SELECT user,authentication_string,plugin,host FROM mysql.user;

  • Paghimo og password alang sa gamut: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<Π’Π°Ρˆ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ для MySQL>';

  • Atong tan-awon pag-usab ang mga paagi sa pag-access: SELECT user,authentication_string,plugin,host FROM mysql.user;

  • Ibutang ang mga pagbag-o ug paggawas sa MySQL: FLUSH PRIVILEGES; ΠΈ exit

  • Karon, aron maka-log in sa MySQL kinahanglan nimo gamiton mysql -u root -p ug isulod ang password

Pag-instalar sa PHP

Gamiton nato ang usa ka third-party nga repository gikan sa Ondrej SurΓ½

  • 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

Karon pilion ta. Para sa Laravel 7, mahimo nimong pilion ang PHP 7.3 o 7.4. Ang bugtong kalainan anaa sa mga numero 3 ug 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

Ang PHP FastCGI Process Manager (fpm) nagtrabaho sa mga hangyo sa PHP. mysql, siyempre, alang sa pagtrabaho uban sa MySQL.

Sukad karon buhaton nako ang tanan sa 7.4.

Pag-set up sa Nginx

  • sudo vim /etc/nginx/sites-available/<Π’Π°Ρˆ Π΄ΠΎΠΌΠ΅Π½>

Imbes nga "<Your domain>" isulod ang domain (pananglitan, mysite.ru) nga gusto nimong gamiton sa umaabot. Kung wala ka pa, pagsulat og bisan unsa, unya balika lang ang mga lakang niini nga kapitulo alang sa imong domain kung imong pilion kini.

Pagsulod sa mosunod:

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

Kung gipili nimo ang bersyon 7.3 sa baylo php7.4-fpm.sock pagsulod php7.4-fpm.sock.

Paminaw sa port 80 sa server_nameinig abot namo sa root request /var/www/html kuhaa ang index file. Kung pagkahuman server_name Adunay usa ka butang, kami nangita alang sa ingon nga file. Kung dili namo kini makit-an, among ilabay ang 404. Kung kini matapos sa .php, dagan sa fpm... Kung naa .ht, nagdili (403).

  • Paghimo og link gikan sa sites-available Π² sites-enabled: sudo ln -s /etc/nginx/sites-available/<Π’Π°Ρˆ Π΄ΠΎΠΌΠ΅Π½> /etc/nginx/sites-enabled/
  • Pagtangtang sa link sa default: sudo unlink /etc/nginx/sites-enabled/default
  • Pagsusi sa mga sayop: sudo nginx -t
  • Pag-reboot: sudo systemctl reload nginx

Pagsusi sa trabaho:

  • sudo vim /var/www/html/info.php
  • Gisulat namo: <?php phpinfo();
  • Adto ta sa <Π’Π°Ρˆ IP>/info.php

Kinahanglan nimong makita ang usa ka butang nga sama niini:

Pag-deploy sa usa ka aplikasyon sa Laravel 7 sa Ubuntu & Nginx

Karon kini nga file mahimong mapapas: sudo rm /var/www/html/info.php

I-install ang 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

  • Adto ta sa MySQL: mysql -u root -p

  • Paghimo usa ka database nga adunay ngalan laravel: CREATE DATABASE laravel DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

  • Naghatag kami og root access sa laravel: GRANT ALL ON laravel.* TO 'root'@'localhost' IDENTIFIED BY '<Π’Π°Ρˆ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΎΡ‚ MySQL>';

  • FLUSH PRIVILEGES;

  • exit

  • cd /var/www/html

  • Paghimo og folder alang sa proyekto: sudo mkdir -p <Имя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°>

  • Gihatag namon ang tiggamit laravel katungod sa proyekto: sudo chown laravel:laravel <Имя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°>

Sunod kinahanglan nimo nga ibalhin ang proyekto. Pananglitan, ang pag-clone gikan sa Github.

  • cd ./<Имя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°>
  • git clone <ссылка Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚> .

Angayan nga hunahunaon nga kung wala nimo gitipig ang mga static nga file (pananglitan, gikan sa /public) sa Github, nan natural nga wala ka niini. Pananglitan, naghimo ako usa ka lahi nga hilo aron masulbad kini deploy, diin na-clone na nako: git clone -b <имя Π²Π΅Ρ‚ΠΊΠΈ> --single-branch <ссылка Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚> ..

  • Pag-instalar sa mga dependency: composer install
  • Paghimo .env: vim .env

Ang sukaranan nga bersyon niini ingon niini:

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>

Kung kopyahon nimo ang imong .env, ilisan ang APP_ENV sa produksiyon, APP_DEBUG og false ug isulod ang hustong setting para sa MySQL.

  • Pagbalhin sa database: php artisan migrate
  • Paghimo sa code: php artisan key:generate

Pag-ilis sa mga permiso:

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

Ang katapusan nga butang nga nahabilin mao ang pag-reconfigure sa Nginx alang sa 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;
    }
}

Sama sa miaging higayon, kung gipili nimo ang bersyon 7.3 sa baylo php7.4-fpm.sock pagsulod php7.4-fpm.sock.

Pagbutang ug domain sa DigitalOcean

Ang tanan sa pagkatinuod yano kaayo. Mopalit ka og domain (bisan asa), switch sa DigitalOcean sa Paghimo->Mga domain/DNS... Sa uma Pagdugang og domain mosulod ka niini nga domain ug i-klik ang pagdugang. Dayon adto sa mga setting sa domain ug sa field NGALAN sa HOST pagsulod @. Pagpili og proyekto ug pag-klik Paghimo og rekord.
Karon adto sa site diin imong gipalit ang domain, pangitaa ang "DNS Servers" didto (o usa ka butang nga susama) ug pagsulod sa mga server sa DigitalOcean (nga mao ns1.digitalocean.com, ns2.digitalocean.com, ns3.digitalocean.com). Karon kinahanglan ka maghulat gamay (o daghan) hangtod kini nga mga setting madawat. Andam na!
Ang bugtong problema mao nga ang imong site magbukas lamang isip HTTP. Aron adunay HTTPS, ipadayon ang sunod nga bahin.

Pag-set up sa HTTPS

I-install ang certbot ug ipasa ang domain name (format mysite.ru) ug domain name nga adunay 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.<Π’Π°Ρˆ Π΄ΠΎΠΌΠ΅Π½>

Karon kinahanglan nimo nga i-reconfigure ang Nginx (ayaw kalimti nga ilisan ang imong mga kantidad):

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

Sa akong hunahuna nahibal-an na nimo kung unsa ang kinahanglan usbon para sa PHP 7.3.

Dinhi, sa tinuud, ang tanan yano ra. Gi-redirect lang namo ang tanang hangyo gikan sa HTTP (port 80) ngadto sa HTTPS (port 443). Ug didto gibuhat namo ang tanan sama sa kaniadto, apan sa pag-encrypt.

Ang nahabilin mao ang pagbutang sa mga pagtugot sa firewall:

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

Karon ang tanan kinahanglan nga molihok ingon nga kini kinahanglan.

[Advanced] Pag-instalar sa Node.js

Kung kalit nga kinahanglan nimo nga ipadagan ang mga npm command direkta sa server, kinahanglan nimo nga i-install ang Node.js.

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

Mao to, nihunong ko ato nga stage. Sa prinsipyo, kontento ko sa resulta. Tingali mobalhin ko gikan sa DigitalOcean sa usa ka lugar nga mas duol sa Russia ug mas barato. Apan tungod kay naagian na nako ang tanan nga mga hugna sa pag-verify sa site ug gibuhat ang tanan didto, gipakita nako sila pinaagi sa panig-ingnan. Dugang pa, ang ilang pagsugod sa $100 usa ka maayo kaayo nga springboard alang sa pagbansay.

PS Espesyal nga salamat sa tagsulat kini nga diwa, nga nagsilbi nga sukaranan sa tanan nga mga aksyon sa ibabaw. Sa pipila ka mga kaso dili kini molihok alang sa Laravel 7, giayo nako kini.

PPS Kung ikaw usa ka taas nga inhenyero nga naghunahuna sa mga mando sa bash, palihug ayaw paghukom nga mapintas. Mahimong makit-an nimo kini nga artikulo nga ubos ang lebel, apan nalipay ako nga makapangita usa kung kinahanglan nako kini. Kung adunay mga sugyot alang sa pagpauswag, ako tanan alang niini.

Source: www.habr.com

Idugang sa usa ka comment