Napagpasyahan kong gawin ang aking portfolio gamit ang Laravel 7. Upang ang pangunahing pahina ay maging isang landing page, at lahat ng impormasyon dito ay maaaring mabago gamit ang admin panel. Hindi ang punto. Dumating ito sa deployment. Nakakita ako ng ilang magagandang tutorial kung paano ito gagawin sa isang ganap na server na may lahat ng mga problema. Hindi ako masyadong malakas sa deployment; sa pangkalahatan ay mas nasa harap ako kaysa sa buong stack. At, kung maaari pa rin akong magsulat at sumubok sa PHP, pagkatapos ay bago pamahalaan ang server, atbp. Hindi pa ako lumaki. Ngunit kailangan kong malaman ito.
Ngayon ay dadaan tayo sa lahat ng mga hakbang, simula sa paglunsad sa pamamagitan ng SSH at magtatapos sa gumaganang site. Susubukan naming maiwasan ang lahat ng mga pitfalls.
Maaari kang makahanap ng mga katulad na tagubilin online. Pagkatapos ng lahat, natagpuan ko ito sa wakas. Totoo, hindi sa isang lugar, hindi nang walang tulong ng StackOverflow, at halos hindi sa Russian. nagdusa ako. Kaya naman nagdesisyon akong gawing simple ang buhay mo.
Gagawin namin ang lahat gamit ang isang droplet sa DigitalOcean. Ito, siyempre, ay hindi kinakailangan; pumili ng anumang pagho-host. Kapag naabot mo ang isang gumaganang server sa Ubuntu, bumalik. Para sa mga nagpasya pa ring gawin ito sa DigitalOcean, magkakaroon ng higit pang mga tip sa pag-set up ng isang domain. At
Lahat ng hakbang na partikular sa DigitalOcean ay ibibigay sa mga footnote na tulad nito.
Magsimula na tayo
TL;DR (mga pangunahing utos lamang)
Gumawa ng user
ssh root@[IP-Π°Π΄ΡΠ΅Ρ Π²Π°ΡΠ΅Π³ΠΎ Π΄ΡΠΎΠΏΠ»Π΅ΡΠ°]
adduser laravel
usermod -aG sudo laravel
su laravel
Magdagdag ng SSH dito
mkdir ~/.ssh
chmod 700 ~/.ssh
vim ~/.ssh/authorized_keys
- Ipasok ang pampublikong susi
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/<ΠΠ°Ρ Π΄ΠΎΠΌΠ΅Π½>
Pangunahing 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;
}
}
Tanging 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;
}
}
Setting ng HTTPS 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
Gumawa ng droplet sa DigitalOcean at magrehistro ng bagong SSH key
Talagang naniniwala ako na malalaman mo kung paano magrehistro sa DigitalOcean mismo. Ito ay hindi madali, na may maraming mga pagpapatunay at iba pang mga bagay. Kung palagi kang nakakakuha ng error sa network kapag nagbe-verify gamit ang mga dokumento, subukang gawin ang lahat sa pamamagitan ng VPN, makakatulong ito.
Sa menu sa itaas, i-click Lumikha->Mga Droplet. Pumili Ubuntu.
Sa sandaling magparehistro ka, makakatanggap ka ng $100 sa iyong account. Ngunit huwag magpaloko. Mayroon ka lamang 60 araw para gugulin ito. At ito ay napakaliit. Maaaring gusto mo, tulad ko, na gumamit ng mas mahal na plano, para sa ibang pagkakataon, kapag nagsimula nang dumaloy ang totoong pera, maaari kang lumipat sa mas mura. Sasabihin ko kaagad sa iyo na hindi ito gagana. Maaari mong dagdagan ito, ngunit hindi mo ito maaaring bawasan. Kaya ito napupunta. pinili ko pamantayan->$5.
Pinipili ko ang rehiyon na pinakamalapit sa amin Frankfurt. VPC Network->default-fra1
Magsasagawa kami kaagad ng pagpapatunay sa pamamagitan ng SSH. I-click Bagong SSH Key. Kung wala kang SSH, may mga napakasimpleng tagubilin sa kanan. Magbukas ng bash terminal at i-paste
ssh-keygen
. Pagkatapos ay pumunta kami sa file gamit ang pampublikong key/Users/<ΠΠ°ΡΠ΅ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ>/.ssh/id_rsa.pub
(o simplecat ~/.ssh/id_rsa.pub
), kopyahin ang mga nilalaman at i-paste ito sa window sa kaliwa. Kahit anong pangalan.Nakabuo kami ng hostname para sa droplet.
Push Lumikha ng Droplet
Gumawa ng bagong user
ssh root@[IP-Π°Π΄ΡΠ΅Ρ Π²Π°ΡΠ΅Π³ΠΎ Π΄ΡΠΎΠΏΠ»Π΅ΡΠ°]
- Sigurado ka bang gusto mong magpatuloy sa pagkonekta (oo/hindi/[fingerprint])?
yes
- Ilagay ang iyong SSH password
- Gumawa ng user laravel:
adduser laravel
- Ilagay ang iyong password at iba pang impormasyon (Ilalagay ko lang ang Buong Pangalan)
- Idagdag ang user sa sudo group:
usermod -aG sudo laravel
SSH para sa bagong user
- Lumipat sa bagong user:
su laravel
Isinasagawa namin ang lahat ng mga aksyon nang higit pa, hanggang sa katapusan ng artikulo, sa ngalan ng gumagamit ng laravel. Samakatuwid, kung bigla kang nagambala, muling mag-login at pumasok su laravel
mkdir ~/.ssh
chmod 700 ~/.ssh
vim ~/.ssh/authorized_keys
Binuksan namin ang file sa Vim. Kung hindi ka pamilyar dito, maaari kang magtrabaho sa Nano, ang iyong karapatan.
Ang pinakapangunahing mga utos ng Vim
Upang magamit ang Vim editor sa buong artikulo, kailangan mo lamang malaman ang mga sumusunod.
- Ang Vim ay may iba't ibang mga mode: Normal na mode, kung saan ka maglalagay ng mga command at pumili ng mga mode at iba pa.
- Upang lumabas sa anumang mode at bumalik sa normal na mode, pindutin lamang
Esc
- Lumipat sa paligid: maaari ka lamang gumamit ng mga arrow
- Lumabas nang hindi nagse-save
<Normal mode>
::q!
- Lumabas at i-save
<Normal mode>
::wq
- Lumipat sa text input mode
<Normal mode>
:i
(mula sa English. isingit)
- Ipinasok namin ang aming pampublikong susi (na ginawa namin sa itaas)
- Pinoprotektahan namin laban sa mga pagbabago:
chmod 600 ~/.ssh/authorized_keys
Pag-install ng firewall
- Tingnan natin ang lahat ng magagamit na mga setting:
sudo ufw app list
- Payagan ang OpenSSH (kung hindi, mai-lock tayo nito):
sudo ufw allow OpenSSH
- Ilunsad natin ang firewall:
sudo ufw enable
,y
- Namin suriin:
sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Maayos ang lahat.
Pag-install ng Nginx
Sa panahon ng pag-install, minsan tatanungin ka ng "Sigurado ka ba?" Sagot y
(well, kung sigurado ka lang).
sudo apt update
sudo apt install nginx
Pagdaragdag ng Nginx sa mga setting ng 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)
Pumunta sa iyong IP. Kung maayos ang lahat, dapat mong makita ang sumusunod.
Pag-install ng MySQL
sudo apt install mysql-server
- Paglulunsad ng awtomatikong proteksyon script
sudo mysql_secure_installation
Sagutin ang mga itinanong. Kung hindi mo alam kung ano ang isasagot, narito ang ilang iminungkahing opsyon:
-
Patunayan ang plugin ng password -
N
-
Alisin ang mga hindi kilalang user? β
Y
-
Huwag payagan ang root login nang malayuan? β
N
-
Alisin ang database ng pagsubok at pag-access dito? β
N
-
I-reload ang mga privilege table ngayon? β
Y
-
Pumunta tayo sa MySQL:
sudo mysql
-
Tingnan natin ang mga paraan ng pag-access:
SELECT user,authentication_string,plugin,host FROM mysql.user;
-
Magtakda ng password para sa root:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<ΠΠ°Ρ ΠΏΠ°ΡΠΎΠ»Ρ Π΄Π»Ρ MySQL>';
-
Tingnan natin muli ang mga paraan ng pag-access:
SELECT user,authentication_string,plugin,host FROM mysql.user;
-
Ilapat ang mga pagbabago at lumabas sa MySQL:
FLUSH PRIVILEGES;
ΠΈexit
-
Ngayon, upang mag-log in sa MySQL kailangan mong gamitin
mysql -u root -p
at ilagay ang password
Pag-install ng PHP
Gumamit tayo ng isang third-party na repository mula sa
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
Ngayon pumili tayo. Para sa Laravel 7, maaari kang pumili ng PHP 7.3 o 7.4. Ang pagkakaiba lamang ay nasa mga numero 3 at 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
Gumagana ang PHP FastCGI Process Manager (fpm) sa mga kahilingan sa PHP. mysql, siyempre, para sa pagtatrabaho sa MySQL.
Mula ngayon gagawin ko ang lahat sa 7.4.
Pag-set up ng Nginx
sudo vim /etc/nginx/sites-available/<ΠΠ°Ρ Π΄ΠΎΠΌΠ΅Π½>
Sa halip na "<Iyong domain>" ilagay ang domain (halimbawa, mysite.ru
) na gusto mong gamitin sa hinaharap. Kung wala ka pa, sumulat ng anuman, pagkatapos ay ulitin lang ang mga hakbang sa kabanatang ito para sa iyong domain kapag pinili mo ito.
Ipasok ang sumusunod:
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 pinili mo ang bersyon 7.3 sa halip php7.4-fpm.sock
isulat sa php7.4-fpm.sock
.
Makinig sa port 80 sa server_name
pagdating namin sa root request /var/www/html
kunin ang index file. Kung pagkatapos server_name
May isang bagay, naghahanap kami ng ganoong file. Kung hindi namin ito mahanap, itinatapon namin ang 404. Kung magtatapos ito sa .php
, tumakbo sa pamamagitan ng fpm
... Kung meron .ht
, ipagbawal (403).
- Gumagawa ng link mula sa
sites-available
Π²sites-enabled
:sudo ln -s /etc/nginx/sites-available/<ΠΠ°Ρ Π΄ΠΎΠΌΠ΅Π½> /etc/nginx/sites-enabled/
- Tinatanggal ang link sa
default
:sudo unlink /etc/nginx/sites-enabled/default
- Pagsusuri ng mga error:
sudo nginx -t
- I-reboot:
sudo systemctl reload nginx
Sinusuri ang gawain:
sudo vim /var/www/html/info.php
- Sumulat kami:
<?php phpinfo();
- Pumunta sa
<ΠΠ°Ρ IP>/info.php
Dapat kang makakita ng ganito:
Ngayon ang file na ito ay maaaring tanggalin: 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
-
Pumunta tayo sa MySQL:
mysql -u root -p
-
Lumikha ng isang database na may pangalan laravel:
CREATE DATABASE laravel DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
-
Nagbibigay kami ng root access sa laravel:
GRANT ALL ON laravel.* TO 'root'@'localhost' IDENTIFIED BY '<ΠΠ°Ρ ΠΏΠ°ΡΠΎΠ»Ρ ΠΎΡ MySQL>';
-
FLUSH PRIVILEGES;
-
exit
-
cd /var/www/html
-
Lumikha ng isang folder para sa proyekto:
sudo mkdir -p <ΠΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°>
-
Nagbibigay kami sa gumagamit laravel karapatan sa proyekto:
sudo chown laravel:laravel <ΠΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°>
Susunod na kailangan mong ilipat ang proyekto. Halimbawa, ang pag-clone mula sa Github.
cd ./<ΠΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°>
git clone <ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡ> .
Ito ay nagkakahalaga ng pagsasaalang-alang na kung hindi ka nag-save ng mga static na file (halimbawa, mula sa /public
) sa Github, at natural na wala ka sa kanila. Halimbawa, gumawa ako ng hiwalay na thread para malutas ito deploy
, kung saan na-clone ko na: git clone -b <ΠΈΠΌΡ Π²Π΅ΡΠΊΠΈ> --single-branch <ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡ> .
.
- Pag-install ng mga dependency:
composer install
- Lumikha ng .env:
vim .env
Ang pangunahing bersyon nito ay ganito ang hitsura:
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 kopyahin mo ang iyong .env, palitan ang APP_ENV ng produksyon, APP_DEBUG ng false at ilagay ang mga tamang setting para sa MySQL.
- Paglipat ng database:
php artisan migrate
- Pagbuo ng code:
php artisan key:generate
Pagbabago ng mga pahintulot:
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 huling bagay na natitira ay muling i-configure ang Nginx para 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;
}
}
Tulad ng huling pagkakataon, kung pinili mo na lang ang bersyon 7.3 php7.4-fpm.sock
isulat sa php7.4-fpm.sock
.
Pagse-set up ng domain sa DigitalOcean
Ang lahat ay talagang napaka-simple. Bumili ka ng domain (kahit saan), lumipat sa DigitalOcean sa Lumikha->Mga Domain/DNS... Sa patlang Magdagdag ng domain ipasok mo ang domain na ito at i-click ang idagdag. Pagkatapos ay pumunta sa mga setting ng domain at sa field PANGALAN NG HOST pumasok @. Pumili ng proyekto at i-click Lumikha ng tala.
Pumunta ngayon sa site kung saan mo binili ang domain, hanapin ang "Mga Server ng DNS" doon (o katulad nito) at ipasok ang mga server ng DigitalOcean (ibig sabihin,ns1.digitalocean.com
,ns2.digitalocean.com
,ns3.digitalocean.com
). Ngayon ay kailangan mong maghintay ng kaunti (o marami) hanggang sa matanggap ang mga setting na ito. handa na!
Ang tanging problema ay ang iyong site ay magbubukas lamang bilang HTTP. Upang magkaroon ng HTTPS, magpatuloy sa susunod na bahagi.
Pagse-set up ng HTTPS
I-install ang certbot at ipasa ang domain name (format mysite.ru
) at domain name na may 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.<ΠΠ°Ρ Π΄ΠΎΠΌΠ΅Π½>
Ngayon ay kailangan mong i-configure muli ang Nginx (huwag kalimutang palitan ang iyong mga halaga):
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 tingin ko naiintindihan mo na kung ano ang kailangang baguhin para sa PHP 7.3.
Dito, sa katunayan, ang lahat ay simple. Nire-redirect lang namin ang lahat ng kahilingan mula sa HTTP (port 80) patungo sa HTTPS (port 443). At doon ginagawa namin ang lahat tulad ng dati, ngunit may pag-encrypt.
Ang natitira na lang ay itakda ang mga pahintulot sa firewall:
sudo nginx -t
sudo ufw app list
sudo ufw allow 'Nginx HTTPS'
sudo ufw status
sudo systemctl reload nginx
Ngayon ang lahat ay dapat gumana ayon sa nararapat.
[Advanced] Pag-install ng Node.js
Kung biglang kailangan mong magpatakbo ng mga npm command nang direkta sa server, kailangan mong i-install ang Node.js.
sudo apt update
sudo apt install -y nodejs npm
nodejs -v
Iyon lang, tumigil ako sa yugtong ito. Sa prinsipyo, nasiyahan ako sa resulta. Marahil ay lilipat ako mula sa DigitalOcean sa isang lugar na mas malapit sa Russia at mas mura. Ngunit dahil nalampasan ko na ang lahat ng verification round sa site at ginawa ko na ang lahat doon, ipinakita ko sa kanila sa pamamagitan ng halimbawa. Bilang karagdagan, ang kanilang panimulang $100 ay isang mahusay na pambuwelo para sa pagsasanay.
PS Espesyal na salamat sa may-akda
PPS Kung ikaw ay isang nangungunang inhinyero na nag-iisip sa mga utos ng bash, mangyaring huwag husgahan nang malupit. Maaaring makita mo ang artikulong ito na mababa ang pamantayan, ngunit natutuwa akong makahanap ng isa kapag kailangan ko ito. Kung may mga mungkahi para sa pagpapabuti, lahat ako para dito.
Pinagmulan: www.habr.com