Laravel 7-n aplikazio bat zabaltzen Ubuntu eta Nginx-en

Laravel 7-n aplikazio bat zabaltzen Ubuntu eta Nginx-en

Nire portafolioa Laravel 7 erabiliz egitea erabaki nuen. Orrialde nagusia lurreratze orri bat izan zedin, eta bertako informazio guztia administrazio panela erabiliz alda zitekeen. Ez da kontua. Hedapenera iritsi zen. Tutorial on pare bat aurkitu ditut zerbitzari oso batean nola egin arazo guztiekin. Ez naiz oso indartsua hedapenean; orokorrean, pila osoa baino aurrealdean nago. Eta, oraindik ere PHPn idatzi eta probatzen badut, zerbitzaria kudeatu aurretik, etab. Oraindik ez naiz hazi. Baina asmatu behar nuen.

Orain urrats guztiak emango ditugu, SSH bidez abiarazten hasi eta lan gunearekin amaitu. Zulo guztiak saihesten saiatuko gara.

Sarean antzeko argibideak aurki ditzakezu. Azken finean, azkenean aurkitu nuen. Egia da, ez leku batean, ez StackOverflow-en laguntzarik gabe, eta apenas errusieraz. sufritu nuen. Horregatik erabaki nuen zure bizitza erraztea.

DigitalOcean-en tanta batekin egingo dugu guztia. Hori, noski, ez da beharrezkoa; aukeratu edozein hosting. Ubuntun lan egiten duen zerbitzari batera iristen zarenean, itzuli. Oraindik DigitalOcean-en egitea erabakitzen dutenentzat, domeinu bat konfiguratzeko aholku gehiago egongo dira. Eta $ 100 erreferentzia esteka.

DigitalOcean-en berariazko urrats guztiak honelako oin-oharretan emango dira.

Has gaitezen.

TL;DR (oinarrizko komandoak soilik)

Sortu erabiltzaile bat

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

Gehitu SSH horri

  • mkdir ~/.ssh
  • chmod 700 ~/.ssh
  • vim ~/.ssh/authorized_keys
  • Sartu gako publikoa
  • 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/<Π’Π°Ρˆ Π΄ΠΎΠΌΠ΅Π½>

Oinarrizko konfigurazioa:

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

Laravel-erako HTTP konfigurazioa soilik:

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

Laravel-erako HTTPS ezarpena:

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

Sortu tanta bat DigitalOcean-en eta erregistratu SSH gako berri bat

Benetan uste dut zuk zeuk asmatuko duzula DigitalOcean-en erregistratu. Ez da erraza, egiaztapen eta beste gauza askorekin. Dokumentuak erabiltzean egiaztatzean etengabe sareko errore bat jasotzen baduzu, saiatu dena VPN baten bidez egiten, lagundu beharko luke.

Goiko menuan, egin klik Sortu->tantak. Aukeratu Ubuntu.

Erregistratu bezain laster, $ 100 jasoko dituzu zure kontuan. Baina ez zaitez engaina. 60 egun baino ez dituzu pasatzeko. Eta hau oso gutxi da. Baliteke, nik bezala, plan garestiagoa erabili nahi izatea, gerora, benetako dirua jaisten hasten denean, merkeago batera aldatzeko. Berehala esango dizut ez duela funtzionatuko. Handitu dezakezu, baina ezin duzu murriztu. Hala doa. aukeratzen dut Standard->$5.

Guregandik gertuen dagoen eskualdea aukeratzen dut Frankfurt. VPC sarea->default-fra1

Berehala egingo dugu autentifikazioa SSH bidez. Egin klik SSH gako berria. SSH ez baduzu, eskuinaldean argibide oso errazak daude. Ireki bash terminal bat eta itsatsi ssh-keygen. Ondoren, gako publikoa duen fitxategira joango gara /Users/<Π’Π°ΡˆΠ΅ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ>/.ssh/id_rsa.pub (edo besterik gabe cat ~/.ssh/id_rsa.pub), kopiatu edukia eta itsatsi ezkerreko leihoan. Edozein izen.

Tantarako ostalari-izen bat datorkigu.

prentsa Sortu tanta

Sortu erabiltzaile berri bat

  • ssh root@[IP-адрСс вашСго Π΄Ρ€ΠΎΠΏΠ»Π΅Ρ‚Π°]
  • Ziur konektatzen jarraitu nahi duzula (bai/ez/[hatz-marka])? yes
  • Sartu zure SSH pasahitza
  • Sortu erabiltzaile bat laravel: adduser laravel
  • Sartu zure pasahitza eta bestelako informazioa (Izen osoa bakarrik sartzen dut)
  • Gehitu erabiltzailea sudo taldean: usermod -aG sudo laravel

SSH erabiltzaile berrientzako

  • Erabiltzaile berrira aldatu: su laravel

Ekintza guztiak aurrerago egiten ditugu, artikuluaren amaiera arte, laravel erabiltzailearen izenean. Hori dela eta, bat-batean eteten bazaizu, hasi berriro saioa eta sartu su laravel

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

Fitxategia Vim-en ireki dugu. Ez baduzu batere ezagutzen, Nano-n lan egin dezakezu, zure eskubidea.

Vim komando oinarrizkoenak

Artikuluan zehar Vim editorea erabiltzeko, honako hau jakitea besterik ez duzu behar.

  • Vim-ek modu desberdinak ditu: Modu normala, zeinetan komandoak sartu eta moduak eta beste hautatzen dituzun.
  • Edozein modutik irteteko eta modu normalera itzultzeko, sakatu besterik ez dago Esc
  • Mugitu: geziak erabil ditzakezu
  • Irten gorde gabe <Normal mode>: :q!
  • Irten eta gorde <Normal mode>: :wq
  • Aldatu testua idazteko modura <Normal mode>: i (ingelesetik. sartu)
  • Gure gako publikoa sartzen dugu (goian egin duguna)
  • Aldaketen aurka babesten dugu: chmod 600 ~/.ssh/authorized_keys

Suebaki bat instalatzea

  • Ikus ditzagun erabilgarri dauden ezarpen guztiak: sudo ufw app list
  • Baimendu OpenSSH (bestela blokeatuko gaitu): sudo ufw allow OpenSSH
  • Abiarazi dezagun suebakia: sudo ufw enable, y
  • Egiaztatzen dugu: sudo ufw status

Status: active

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

Dena ondo dago.

Nginx instalatzen

Instalazioan zehar batzuetan "Ziur al zaude?" galdetuko zaizu. Erantzun y (beno, ziur bazaude bakarrik).

  • sudo apt update
  • sudo apt install nginx

Nginx suebakiaren ezarpenetara gehitzea

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

Joan zure IPra. Dena ondo badoa, honako hau ikusi beharko zenuke.

Laravel 7-n aplikazio bat zabaltzen Ubuntu eta Nginx-en

MySQL instalatzen

  • sudo apt install mysql-server
  • Babes automatikoko script bat abiarazten sudo mysql_secure_installation

Egindako galderei erantzun. Zer erantzun ez badakizu, hona hemen iradokitako aukera batzuk:

  • Pasahitz plugina balioztatu - N

  • Erabiltzaile anonimoak kendu? β€” Y

  • Urrutiko saio-hasiera ez baimendu? β€” N

  • Proba datu-basea kendu eta harako sarbidea? β€” N

  • Pribilegio-taulak berriro kargatu nahi dituzu? β€” Y

  • Goazen MySQLra: sudo mysql

  • Ikus ditzagun sarbide-metodoak: SELECT user,authentication_string,plugin,host FROM mysql.user;

  • Ezarri pasahitz bat rooterako: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<Π’Π°Ρˆ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ для MySQL>';

  • Ikus ditzagun berriro sarbide-metodoak: SELECT user,authentication_string,plugin,host FROM mysql.user;

  • Aplikatu aldaketak eta irten MySQL: FLUSH PRIVILEGES; ΠΈ exit

  • Orain, MySQL-en saioa hasteko erabili behar duzu mysql -u root -p eta sartu pasahitza

PHP instalatzen

Erabili dezagun hirugarrenen biltegi bat 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

Orain aukera dezagun. Laravel 7rako, PHP 7.3 edo 7.4 aukera dezakezu. Alde bakarra 3 eta 4 zenbakietan egongo da.

  • 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 eskaerarekin funtzionatzen du. mysql, noski, MySQLrekin lan egiteko.

Hemendik aurrera dena egingo dut 7.4an.

Nginx konfiguratzen

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

"<Zure domeinua>"ren ordez, sartu domeinua (adibidez, mysite.ru) etorkizunean erabili nahi duzun. Oraindik ez baduzu, idatzi edozein, eta, ondoren, errepikatu besterik ez duzu kapitulu honetako urratsak zure domeinurako hautatzen duzunean.

Hurrengoa sartu:

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

Horren ordez 7.3 bertsioa aukeratu baduzu php7.4-fpm.sock idatzi php7.4-fpm.sock.

Entzun 80 ataka aktibatuta server_nameroot eskaerara iristen garenean /var/www/html hartu indize fitxategia. ondoren bada server_name Bada zerbait, horrelako fitxategi baten bila gabiltza. Ez badugu aurkitzen, 404 botatzen dugu. Bukatzen bada .php, zeharkatu fpm... Bada .ht, debekatu (403).

  • Hemendik lotura bat egitea sites-available Π² sites-enabled: sudo ln -s /etc/nginx/sites-available/<Π’Π°Ρˆ Π΄ΠΎΠΌΠ΅Π½> /etc/nginx/sites-enabled/
  • Esteka kentzen default: sudo unlink /etc/nginx/sites-enabled/default
  • Akatsak egiaztatzea: sudo nginx -t
  • Berrabiarazi: sudo systemctl reload nginx

Lana egiaztatzea:

  • sudo vim /var/www/html/info.php
  • Guk idazten dugu: <?php phpinfo();
  • Goazen <Π’Π°Ρˆ IP>/info.php

Horrelako zerbait ikusi beharko zenuke:

Laravel 7-n aplikazio bat zabaltzen Ubuntu eta Nginx-en

Orain fitxategi hau ezabatu daiteke: sudo rm /var/www/html/info.php

Instalatu 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

  • Goazen MySQLra: mysql -u root -p

  • Sortu datu-base bat izenarekin laravel: CREATE DATABASE laravel DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

  • Errorako sarbidea eskaintzen dugu laravel: GRANT ALL ON laravel.* TO 'root'@'localhost' IDENTIFIED BY '<Π’Π°Ρˆ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΎΡ‚ MySQL>';

  • FLUSH PRIVILEGES;

  • exit

  • cd /var/www/html

  • Sortu karpeta bat proiekturako: sudo mkdir -p <Имя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°>

  • Erabiltzaileari eskaintzen diogu laravel proiektuaren eskubideak: sudo chown laravel:laravel <Имя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°>

Ondoren, proiektua transferitu behar duzu. Adibidez, Github-etik klonatzea.

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

Kontuan izan behar da fitxategi estatikoak gorde ez badituzu (adibidez, batetik /public) Github-en, orduan, jakina, ez dituzu izango. Adibidez, hari bereizi bat sortu nuen hau konpontzeko deploy, dagoeneko klonatu nuenetik: git clone -b <имя Π²Π΅Ρ‚ΠΊΠΈ> --single-branch <ссылка Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚> ..

  • Mendekotasunak instalatzea: composer install
  • Sortu .env: vim .env

Honen oinarrizko bertsioak itxura hau du:

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>

Zure .env kopiatzen baduzu, ordeztu APP_ENV ekoizpenarekin, APP_DEBUG falsearekin eta sartu MySQL-ren ezarpen egokiak.

  • Datu-basea migratzen: php artisan migrate
  • Kodea sortzea: php artisan key:generate

Baimenak aldatzea:

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

Azken gauza geratzen da Nginx Laravel-erako birkonfiguratzea:

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

Azken aldian bezala, 7.3 bertsioa aukeratu baduzu php7.4-fpm.sock idatzi php7.4-fpm.sock.

DigitalOcean-en domeinu bat konfiguratzea

Egia esan, dena oso erraza da. Domeinu bat erosten duzu (edozein lekutan), aldatu DigitalOcean-era hemen Sortu->Domeinuak/DNS... Eremuan Gehitu domeinu bat domeinu hau sartu eta gehitu egin klik. Ondoren, joan domeinuaren ezarpenetara eta eremura OSTALARIA IZENA sartu @. Hautatu proiektu bat eta egin klik Sortu erregistroa.
Orain joan domeinua erosi duzun gunera, bilatu bertan "DNS zerbitzariak" (edo antzeko zerbait) eta sartu DigitalOcean zerbitzarietan (hau da. ns1.digitalocean.com, ns2.digitalocean.com, ns3.digitalocean.com). Orain pixka bat (edo asko) itxaron behar duzu ezarpen hauek onartu arte. Prest!
Arazo bakarra da zure webgunea HTTP gisa soilik irekiko dela. HTTPS izateko, joan hurrengo zatira.

HTTPS konfiguratzea

Instalatu certbot eta pasa iezaiozu domeinu-izena (formatua mysite.ru) eta domeinu-izena www-rekin (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.<Π’Π°Ρˆ Π΄ΠΎΠΌΠ΅Π½>

Orain Nginx birkonfiguratu behar duzu (ez ahaztu zure balioak ordezkatzeaz):

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

Uste dut dagoeneko ulertzen duzula zer aldatu behar den PHP 7.3rako.

Hemen, egia esan, dena sinplea da. HTTPtik (80 ataka) HTTPSra (443 ataka) birbideratzen ditugu eskaera guztiak. Eta hor egiten dugu dena lehen bezala, baina enkriptatzearekin.

Suebakian baimenak ezartzea besterik ez da geratzen:

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

Orain dena behar den bezala funtzionatu beharko luke.

[Aurreratua] Node.js instalatzen

Bat-batean npm komandoak zuzenean zerbitzarian exekutatu behar badituzu, Node.js instalatu behar duzu.

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

Hori da, etapa honetan gelditu naiz. Printzipioz, pozik nago emaitzarekin. Beharbada DigitalOceanetik aldatuko naiz Errusiatik gertuago eta merkeago. Baina jada gunean egiaztapen txanda guztiak pasatu eta bertan dena egin nuenez, adibidearekin erakutsi nituen. Horrez gain, hasierako 100 $ entrenatzeko abiapuntu bikaina da.

PS Esker bereziak egileari mamia hau, aurreko ekintza guztien oinarri izan zena. Zenbait kasutan Laravel 7rako ez du funtzionatzen, konpondu dut.

PPS Bash komandoetan pentsatzen duen goi mailako ingeniari bat bazara, mesedez, ez epaitu gogor. Baliteke artikulu hau maila baxukoa dela irudituko zaizuela, baina poztu egingo nuke behar nuenean bat aurkitzea. Hobetzeko iradokizunak badaude, alde nago.

Iturria: www.habr.com

Gehitu iruzkin berria