Saya memutuskan untuk membuat portofolio saya menggunakan Laravel 7. Sehingga halaman utama menjadi halaman arahan, dan semua informasi di dalamnya dapat diubah menggunakan panel admin. Bukan itu intinya. Itu sampai pada penempatan. Saya menemukan beberapa tutorial bagus tentang cara melakukan ini di server lengkap dengan semua masalahnya. Saya tidak terlalu kuat dalam penerapan; Saya biasanya lebih terdepan daripada tumpukan penuh. Dan, jika saya masih bisa menulis dan menguji di PHP, maka sebelum mengelola server, dll. Saya belum dewasa. Tapi saya harus memikirkannya.
Sekarang kita akan melalui semua langkah, dimulai dengan peluncuran melalui SSH dan diakhiri dengan situs kerja. Kami akan berusaha menghindari semua jebakan.
Anda mungkin dapat menemukan petunjuk serupa secara online. Bagaimanapun, saya akhirnya menemukannya. Benar, tidak di satu tempat, bukan tanpa bantuan StackOverflow, dan hampir tidak dalam bahasa Rusia. Saya menderita. Itu sebabnya saya memutuskan untuk menyederhanakan hidup Anda.
Kami akan melakukan segalanya dengan setetes air di DigitalOcean. Ini tentu saja tidak perlu, pilih hosting apa saja. Saat Anda mencapai server yang berfungsi di Ubuntu, kembalilah. Bagi yang masih memutuskan untuk melakukannya di DigitalOcean, akan ada tips lebih lanjut dalam menyiapkan domain. Dan
Semua langkah khusus DigitalOcean akan diberikan dalam catatan kaki seperti ini.
Mari kita mulai.
TL;DR (hanya perintah dasar)
Buat pengguna
ssh root@[IP-Π°Π΄ΡΠ΅Ρ Π²Π°ΡΠ΅Π³ΠΎ Π΄ΡΠΎΠΏΠ»Π΅ΡΠ°]
adduser laravel
usermod -aG sudo laravel
su laravel
Tambahkan SSH ke dalamnya
mkdir ~/.ssh
chmod 700 ~/.ssh
vim ~/.ssh/authorized_keys
- Masukkan kunci publik
chmod 600 ~/.ssh/authorized_keys
tembok api
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/<ΠΠ°Ρ Π΄ΠΎΠΌΠ΅Π½>
Pengaturan dasar:
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;
}
}
Hanya pengaturan HTTP untuk 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;
}
}
Pengaturan HTTPS untuk 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
Buat tetesan di DigitalOcean dan daftarkan kunci SSH baru
Saya benar-benar yakin Anda akan mengetahui sendiri cara mendaftar ke DigitalOcean. Memang tidak mudah, dengan banyak verifikasi dan lain-lain. Jika Anda terus-menerus mendapatkan kesalahan jaringan saat memverifikasi menggunakan dokumen, coba lakukan semuanya melalui VPN, ini akan membantu.
Di menu di bagian atas, klik membuat->Tetesan. Memilih Ubuntu.
Segera setelah Anda mendaftar, Anda akan menerima $100 ke akun Anda. Tapi jangan tertipu. Anda hanya punya waktu 60 hari untuk menghabiskannya. Dan ini sangat sedikit. Anda mungkin, seperti saya, ingin menggunakan paket yang lebih mahal, sehingga nanti, ketika uang riil mulai mengalir, Anda bisa beralih ke paket yang lebih murah. Saya akan langsung memberitahu Anda bahwa itu tidak akan berhasil. Anda bisa menambahnya, tapi Anda tidak bisa menguranginya. Begitu seterusnya. saya memilih Standar->$5.
Saya memilih wilayah yang paling dekat dengan kami Frankfurt. Jaringan VPC->default-fra1
Kami akan segera melakukan otentikasi melalui SSH. Klik Kunci SSH Baru. Jika Anda tidak memiliki SSH, ada petunjuk yang sangat sederhana di sebelah kanan. Buka terminal bash dan tempel
ssh-keygen
. Lalu kita pergi ke file dengan kunci publik/Users/<ΠΠ°ΡΠ΅ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ>/.ssh/id_rsa.pub
(atau sederhananyacat ~/.ssh/id_rsa.pub
), salin isinya dan tempel ke jendela di sebelah kiri. Nama apapun.Kami datang dengan nama host untuk tetesan tersebut.
Klik disini Buat Tetesan
Buat pengguna baru
ssh root@[IP-Π°Π΄ΡΠ΅Ρ Π²Π°ΡΠ΅Π³ΠΎ Π΄ΡΠΎΠΏΠ»Π΅ΡΠ°]
- Apakah Anda yakin ingin melanjutkan koneksi (ya/tidak/[sidik jari])?
yes
- Masukkan kata sandi SSH Anda
- Buat pengguna LARAVEL:
adduser laravel
- Masukkan kata sandi Anda dan informasi lainnya (Saya hanya memasukkan Nama Lengkap)
- Tambahkan pengguna ke grup sudo:
usermod -aG sudo laravel
SSH untuk pengguna baru
- Beralih ke pengguna baru:
su laravel
Kami melakukan semua tindakan lebih lanjut, hingga akhir artikel, atas nama pengguna laravel. Oleh karena itu, jika Anda tiba-tiba terganggu, login ulang dan masuk su laravel
mkdir ~/.ssh
chmod 700 ~/.ssh
vim ~/.ssh/authorized_keys
Kami membuka file di Vim. Jika Anda belum familiar sama sekali, Anda bisa bekerja di Nano, kan.
Perintah Vim paling dasar
Untuk menggunakan editor Vim di seluruh artikel, Anda hanya perlu mengetahui hal berikut.
- Vim memiliki mode berbeda: Mode normal, di mana Anda memasukkan perintah dan memilih mode dan lainnya.
- Untuk keluar dari mode apa pun dan kembali ke mode normal, cukup tekan
Esc
- Bergerak: Anda cukup menggunakan panah
- Keluar tanpa menyimpan
<Normal mode>
::q!
- Keluar dan simpan
<Normal mode>
::wq
- Beralih ke mode masukan teks
<Normal mode>
:i
(dari bahasa Inggris. menyisipkan)
- Kami memasukkan kunci publik kami (yang kami lakukan di atas)
- Kami melindungi dari perubahan:
chmod 600 ~/.ssh/authorized_keys
Memasang firewall
- Mari kita lihat semua pengaturan yang tersedia:
sudo ufw app list
- Izinkan OpenSSH (jika tidak maka akan mengunci kita):
sudo ufw allow OpenSSH
- Mari luncurkan firewall:
sudo ufw enable
,y
- Kami memeriksa:
sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Semuanya baik-baik saja.
Menginstal Nginx
Selama instalasi terkadang Anda akan ditanya "Apakah Anda yakin?" Menjawab y
(yah, hanya jika Anda yakin).
sudo apt update
sudo apt install nginx
Menambahkan Nginx ke pengaturan 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)
Buka IP Anda. Jika semuanya berjalan dengan baik, Anda akan melihat yang berikut ini.
Menginstal MySQL
sudo apt install mysql-server
- Meluncurkan skrip perlindungan otomatis
sudo mysql_secure_installation
Jawab pertanyaan yang diajukan. Jika Anda tidak tahu harus menjawab apa, berikut beberapa opsi yang disarankan:
-
Validasi plugin kata sandi -
N
-
Hapus pengguna anonim? β
Y
-
Larang login root dari jarak jauh? β
N
-
Hapus database pengujian dan akses ke sana? β
N
-
Muat ulang tabel hak istimewa sekarang? β
Y
-
Mari kita pergi ke MySQL:
sudo mysql
-
Mari kita lihat metode aksesnya:
SELECT user,authentication_string,plugin,host FROM mysql.user;
-
Tetapkan kata sandi untuk root:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<ΠΠ°Ρ ΠΏΠ°ΡΠΎΠ»Ρ Π΄Π»Ρ MySQL>';
-
Mari kita lihat kembali metode aksesnya:
SELECT user,authentication_string,plugin,host FROM mysql.user;
-
Terapkan perubahan dan keluar dari MySQL:
FLUSH PRIVILEGES;
ΠΈexit
-
Sekarang, untuk masuk ke MySQL Anda perlu menggunakan
mysql -u root -p
dan masukkan kata sandi
Menginstal PHP
Mari gunakan repositori pihak ketiga dari
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
Sekarang mari kita pilih. Untuk Laravel 7, Anda bisa memilih PHP 7.3 atau 7.4. Perbedaannya hanya pada angka 3 dan 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 Process Manager (fpm) bekerja dengan permintaan PHP. mysql, tentu saja, untuk bekerja dengan MySQL.
Mulai sekarang saya akan melakukan semuanya di 7.4.
Menyiapkan Nginx
sudo vim /etc/nginx/sites-available/<ΠΠ°Ρ Π΄ΠΎΠΌΠ΅Π½>
Daripada "<Domain Anda>" masukkan domainnya (misalnya, mysite.ru
) yang ingin Anda gunakan di masa depan. Jika Anda belum memilikinya, tulis apa pun, lalu ulangi saja langkah-langkah dalam bab ini untuk domain Anda saat Anda memilihnya.
Masukkan berikut:
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;
}
}
Jika Anda memilih versi 7.3 saja php7.4-fpm.sock
tulis di php7.4-fpm.sock
.
Dengarkan port 80 aktif server_name
ketika kita sampai pada permintaan root /var/www/html
ambil file indeks. Jika setelahnya server_name
Ada sesuatu, kami sedang mencari file seperti itu. Kalau tidak ketemu, kita buang 404. Kalau diakhiri dengan .php
, melintasi fpm
... Jika ada .ht
, melarang (403).
- Membuat tautan dari
sites-available
Π²sites-enabled
:sudo ln -s /etc/nginx/sites-available/<ΠΠ°Ρ Π΄ΠΎΠΌΠ΅Π½> /etc/nginx/sites-enabled/
- Menghapus tautan ke
default
:sudo unlink /etc/nginx/sites-enabled/default
- Memeriksa kesalahan:
sudo nginx -t
- Menyalakan ulang:
sudo systemctl reload nginx
Memeriksa pekerjaan:
sudo vim /var/www/html/info.php
- Kami menulis:
<?php phpinfo();
- Pergi ke
<ΠΠ°Ρ IP>/info.php
Anda akan melihat sesuatu seperti ini:
Sekarang file ini dapat dihapus: sudo rm /var/www/html/info.php
Instal 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
-
Mari kita pergi ke MySQL:
mysql -u root -p
-
Buat database dengan nama LARAVEL:
CREATE DATABASE laravel DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
-
Kami menyediakan akses root ke LARAVEL:
GRANT ALL ON laravel.* TO 'root'@'localhost' IDENTIFIED BY '<ΠΠ°Ρ ΠΏΠ°ΡΠΎΠ»Ρ ΠΎΡ MySQL>';
-
FLUSH PRIVILEGES;
-
exit
-
cd /var/www/html
-
Buat folder untuk proyek:
sudo mkdir -p <ΠΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°>
-
Kami menyediakan pengguna LARAVEL hak atas proyek:
sudo chown laravel:laravel <ΠΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°>
Selanjutnya Anda perlu mentransfer proyek. Misalnya kloning dari Github.
cd ./<ΠΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°>
git clone <ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡ> .
Perlu dipertimbangkan jika Anda tidak menyimpan file statis (misalnya, dari /public
) di Github, tentu saja Anda tidak akan memilikinya. Misalnya, saya membuat thread terpisah untuk mengatasi ini deploy
, dari mana saya sudah mengkloning: git clone -b <ΠΈΠΌΡ Π²Π΅ΡΠΊΠΈ> --single-branch <ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡ> .
.
- Menginstal dependensi:
composer install
- Buat .env:
vim .env
Versi dasarnya terlihat seperti ini:
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>
Jika Anda menyalin .env, ganti APP_ENV dengan produksi, APP_DEBUG dengan false dan masukkan pengaturan yang benar untuk MySQL.
- Memigrasikan basis data:
php artisan migrate
- Menghasilkan kode:
php artisan key:generate
Mengubah izin:
sudo chown -R $USER:www-data storage
sudo chown -R $USER:www-data bootstrap/cache
chmod -R 775 storage
chmod -R 775 bootstrap/cache
Hal terakhir yang tersisa adalah mengkonfigurasi ulang Nginx untuk 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;
}
}
Seperti terakhir kali, jika Anda memilih versi 7.3 php7.4-fpm.sock
tulis di php7.4-fpm.sock
.
Menyiapkan domain di DigitalOcean
Semuanya sebenarnya sangat sederhana. Anda membeli domain (di mana saja), beralih ke DigitalOcean di membuat->Domain/DNS. ΠΎΠ»Π΅ Tambahkan domain Anda memasukkan domain ini dan klik tambahkan. Lalu pergi ke pengaturan domain dan ke lapangan HOSTNAME memasuki @. Pilih proyek dan klik Buat catatan.
Sekarang buka situs tempat Anda membeli domain, temukan "Server DNS" di sana (atau yang serupa) dan masukkan server DigitalOcean (yaituns1.digitalocean.com
,ns2.digitalocean.com
,ns3.digitalocean.com
). Sekarang Anda perlu menunggu sebentar (atau lama) hingga pengaturan ini diterima. Siap!
Satu-satunya masalah adalah situs Anda hanya akan terbuka sebagai HTTP. Untuk memiliki HTTPS, lanjutkan ke bagian berikutnya.
Menyiapkan HTTPS
Instal certbot dan berikan nama domainnya (format mysite.ru
) dan nama domain dengan 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.<ΠΠ°Ρ Π΄ΠΎΠΌΠ΅Π½>
Sekarang Anda perlu mengkonfigurasi ulang Nginx (jangan lupa mengganti nilai Anda):
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;
}
}
Saya rasa Anda sudah memahami apa yang perlu diubah untuk PHP 7.3.
Faktanya, semuanya sederhana di sini. Kami cukup mengalihkan semua permintaan dari HTTP (port 80) ke HTTPS (port 443). Dan di sana kami melakukan semuanya sama seperti sebelumnya, tetapi dengan enkripsi.
Yang tersisa hanyalah mengatur izin di firewall:
sudo nginx -t
sudo ufw app list
sudo ufw allow 'Nginx HTTPS'
sudo ufw status
sudo systemctl reload nginx
Sekarang semuanya harus berjalan sebagaimana mestinya.
[Lanjutan] Menginstal Node.js
Jika Anda tiba-tiba perlu menjalankan perintah npm langsung di server, Anda perlu menginstal Node.js.
sudo apt update
sudo apt install -y nodejs npm
nodejs -v
Itu saja, saya berhenti pada tahap ini. Prinsipnya, saya puas dengan hasilnya. Mungkin saya akan beralih dari DigitalOcean ke tempat yang lebih dekat ke Rusia dan lebih murah. Tapi karena saya sudah melalui semua putaran verifikasi di situs dan melakukan semuanya di sana, saya menunjukkannya dengan contoh. Selain itu, $100 awal mereka merupakan batu loncatan yang sangat baik untuk pelatihan.
PS Terima kasih khusus kepada penulis
PPS Jika Anda seorang insinyur papan atas yang berpikir dalam perintah bash, mohon jangan menilai dengan kasar. Anda mungkin menganggap artikel ini tingkat rendah, tetapi saya akan senang menemukannya ketika saya membutuhkannya. Jika ada saran untuk perbaikan, saya mendukungnya.
Sumber: www.habr.com