Menerapkan aplikasi ke Laravel 7 di Ubuntu & Nginx

Menerapkan aplikasi ke Laravel 7 di Ubuntu & Nginx

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 Tautan rujukan $100.

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 sederhananya cat ~/.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.

Menerapkan aplikasi ke Laravel 7 di Ubuntu & Nginx

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

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_nameketika 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:

Menerapkan aplikasi ke Laravel 7 di Ubuntu & Nginx

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 (yaitu ns1.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 inti ini, yang menjadi dasar untuk semua tindakan di atas. Dalam beberapa kasus, ini tidak berfungsi untuk Laravel 7, saya memperbaikinya.

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

Tambah komentar