การปรับใช้แอปพลิเคชันกับ Laravel 7 บน Ubuntu และ Nginx

การปรับใช้แอปพลิเคชันกับ Laravel 7 บน Ubuntu และ Nginx

ฉันตัดสินใจสร้างพอร์ตโฟลิโอโดยใช้ Laravel 7 เพื่อให้หน้าหลักเป็นหน้า Landing Page และข้อมูลทั้งหมดสามารถเปลี่ยนแปลงได้โดยใช้แผงผู้ดูแลระบบ ไม่ใช่ประเด็น มันมาถึงการใช้งาน ฉันพบบทช่วยสอนที่ดีสองสามข้อเกี่ยวกับวิธีการทำเช่นนี้บนเซิร์ฟเวอร์เต็มรูปแบบพร้อมทั้งปัญหาทั้งหมด ฉันใช้งานไม่เก่งนัก โดยทั่วไป ฉันจะเป็นส่วนหน้ามากกว่าเต็มสแต็ก และถ้าฉันยังสามารถเขียนและทดสอบใน PHP ได้ก่อนที่จะจัดการเซิร์ฟเวอร์ ฯลฯ ฉันยังไม่โตเลย แต่ฉันก็ต้องคิดออก

ตอนนี้เราจะดำเนินการตามขั้นตอนทั้งหมด โดยเริ่มจากการเปิดตัวผ่าน SSH และสิ้นสุดที่ไซต์การทำงาน เราจะพยายามหลีกเลี่ยงข้อผิดพลาดทั้งหมด

คุณอาจพบคำแนะนำที่คล้ายกันทางออนไลน์ ในที่สุดฉันก็พบมันจนพบ จริงไม่ใช่ในที่เดียวไม่ใช่โดยไม่ได้รับความช่วยเหลือจาก StackOverflow และแทบจะไม่เป็นภาษารัสเซีย ฉันได้รับความเดือดร้อน. นั่นเป็นเหตุผลที่ฉันตัดสินใจทำให้ชีวิตของคุณง่ายขึ้น

เราจะทำทุกอย่างด้วยหยดบน DigitalOcean แน่นอนว่าไม่จำเป็น เลือกโฮสติ้งใดก็ได้ เมื่อคุณไปถึงเซิร์ฟเวอร์ที่ทำงานบน Ubuntu ให้กลับมา สำหรับผู้ที่ยังตัดสินใจทำบน DigitalOcean จะมีเคล็ดลับเพิ่มเติมในการตั้งค่าโดเมน และ ลิงก์อ้างอิง $100.

ขั้นตอนเฉพาะของ DigitalOcean ทั้งหมดจะมีระบุไว้ในเชิงอรรถเช่นนี้

เริ่มกันเลย.

TL; DR (คำสั่งพื้นฐานเท่านั้น)

สร้างผู้ใช้

  • ssh root@[IP-адрес вашего дроплета]
  • adduser laravel
  • usermod -aG sudo laravel
  • su laravel

เพิ่ม SSH ลงไป

  • mkdir ~/.ssh
  • chmod 700 ~/.ssh
  • vim ~/.ssh/authorized_keys
  • ใส่กุญแจสาธารณะ
  • chmod 600 ~/.ssh/authorized_keys

ไฟร์วอลล์

  • 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/<Ваш домен>

การตั้งค่าพื้นฐาน:

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

เฉพาะการตั้งค่า HTTP สำหรับ 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 สำหรับ 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

สร้างหยดบน DigitalOcean และลงทะเบียนคีย์ SSH ใหม่

ฉันเชื่ออย่างแท้จริงว่าคุณจะรู้วิธีการลงทะเบียนกับ DigitalOcean ด้วยตัวเอง มันไม่ง่ายเลย ต้องมีการตรวจสอบและอื่นๆ อีกมากมาย หากคุณได้รับข้อผิดพลาดทางเครือข่ายอยู่ตลอดเวลาเมื่อตรวจสอบโดยใช้เอกสาร ให้ลองทำทุกอย่างผ่าน VPN ซึ่งน่าจะช่วยได้

ในเมนูด้านบน คลิก สร้างบัญชีตัวแทน->หยด. เลือก อูบุนตู.

ทันทีที่คุณลงทะเบียน คุณจะได้รับ $100 เข้าบัญชีของคุณ แต่อย่าหลงกล คุณมีเวลาเพียง 60 วันในการใช้จ่าย และนี่ก็น้อยมาก คุณอาจต้องการใช้แผนที่แพงกว่าเช่นเดียวกับฉัน เพื่อว่าในภายหลังเมื่อเงินจริงเริ่มไหล คุณสามารถเปลี่ยนไปใช้แผนที่ถูกกว่าได้ ฉันจะบอกคุณทันทีว่ามันจะใช้งานไม่ได้ คุณสามารถเพิ่มได้ แต่คุณไม่สามารถลดลงได้ ดังนั้นมันไป ฉันเลือก Standard ->$5.

ฉันเลือกภูมิภาคที่อยู่ใกล้เราที่สุด แฟรงค์เฟิร์ต. เครือข่าย VPC->ค่าเริ่มต้น-fra1

เราจะดำเนินการรับรองความถูกต้องผ่าน SSH ทันที คลิก คีย์ SSH ใหม่. หากคุณไม่มี SSH มีคำแนะนำง่ายๆ ทางด้านขวา เปิดเทอร์มินัลทุบตีแล้ววาง ssh-keygen. จากนั้นเราไปที่ไฟล์ด้วยรหัสสาธารณะ /Users/<Ваше имя пользователя>/.ssh/id_rsa.pub (หรือง่ายๆ cat ~/.ssh/id_rsa.pub) คัดลอกเนื้อหาและวางลงในหน้าต่างทางด้านซ้าย ชื่ออะไรก็ได้

เราคิดชื่อโฮสต์สำหรับหยด

กด สร้างหยด

สร้างผู้ใช้ใหม่

  • ssh root@[IP-адрес вашего дроплета]
  • คุณแน่ใจหรือไม่ว่าต้องการเชื่อมต่อต่อ (ใช่/ไม่ใช่/[ลายนิ้วมือ]) yes
  • ป้อนรหัสผ่าน SSH ของคุณ
  • สร้างผู้ใช้ Laravel: adduser laravel
  • ใส่รหัสผ่านและข้อมูลอื่น ๆ ของคุณ (ฉันใส่เฉพาะชื่อเต็มเท่านั้น)
  • เพิ่มผู้ใช้ในกลุ่ม sudo: usermod -aG sudo laravel

SSH สำหรับผู้ใช้ใหม่

  • เปลี่ยนเป็นผู้ใช้ใหม่: su laravel

เราดำเนินการทั้งหมดต่อไปในนามของผู้ใช้ laravel จนถึงท้ายบทความ ดังนั้น หากคุณถูกขัดจังหวะกะทันหัน ให้เข้าสู่ระบบใหม่และเข้าสู่ระบบอีกครั้ง su laravel

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

เราเปิดไฟล์ใน Vim หากคุณไม่คุ้นเคยเลยก็สามารถทำงานในนาโนได้ใช่ไหม.

คำสั่ง Vim พื้นฐานที่สุด

หากต้องการใช้ Vim Editor ตลอดทั้งบทความ คุณเพียงแค่ต้องรู้สิ่งต่อไปนี้

  • Vim มีโหมดต่างๆ: โหมดปกติ ซึ่งคุณป้อนคำสั่งและเลือกโหมดและอื่นๆ
  • หากต้องการออกจากโหมดใดๆ และกลับสู่โหมดปกติ เพียงกด Esc
  • เคลื่อนที่ไปรอบ ๆ: คุณสามารถใช้ลูกศรได้
  • ออกโดยไม่บันทึก <Normal mode>: :q!
  • ออกและบันทึก <Normal mode>: :wq
  • สลับไปที่โหมดป้อนข้อความ <Normal mode>: i (จากภาษาอังกฤษ. แทรก)
  • เราใส่กุญแจสาธารณะของเรา (ซึ่งเราทำไว้ด้านบน)
  • เราป้องกันการเปลี่ยนแปลง: chmod 600 ~/.ssh/authorized_keys

การติดตั้งไฟร์วอลล์

  • มาดูการตั้งค่าที่มีอยู่ทั้งหมด: sudo ufw app list
  • อนุญาต OpenSSH (ไม่เช่นนั้นมันจะล็อคเรา): sudo ufw allow OpenSSH
  • มาเริ่มไฟร์วอลล์กัน: sudo ufw enable, y
  • เราตรวจสอบ: sudo ufw status

Status: active

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

ทุกอย่างปกติดี.

การติดตั้ง Nginx

ระหว่างการติดตั้ง บางครั้งระบบจะถามว่า "คุณแน่ใจหรือไม่" คำตอบ y (ก็ต่อเมื่อคุณแน่ใจเท่านั้น)

  • sudo apt update
  • sudo apt install nginx

การเพิ่ม Nginx ในการตั้งค่าไฟร์วอลล์

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

ไปที่ IP ของคุณ หากทุกอย่างเป็นไปด้วยดีคุณควรเห็นสิ่งต่อไปนี้

การปรับใช้แอปพลิเคชันกับ Laravel 7 บน Ubuntu และ Nginx

การติดตั้ง MySQL

  • sudo apt install mysql-server
  • การเปิดตัวสคริปต์การป้องกันอัตโนมัติ sudo mysql_secure_installation

ตอบคำถามที่ถาม หากคุณไม่รู้ว่าจะตอบอะไร นี่คือตัวเลือกที่แนะนำบางส่วน:

  • ตรวจสอบปลั๊กอินรหัสผ่าน - N

  • ลบผู้ใช้ที่ไม่ระบุชื่อออกใช่ไหม — Y

  • ไม่อนุญาตให้ล็อกอินรูทจากระยะไกลใช่ไหม — N

  • ลบฐานข้อมูลทดสอบและเข้าถึงได้หรือไม่ — N

  • โหลดตารางสิทธิพิเศษตอนนี้เลยไหม — Y

  • ไปที่ MySQL กันเถอะ: sudo mysql

  • ลองดูวิธีการเข้าถึง: SELECT user,authentication_string,plugin,host FROM mysql.user;

  • ตั้งรหัสผ่านสำหรับรูท: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<Ваш пароль для MySQL>';

  • ลองดูวิธีการเข้าถึงอีกครั้ง: SELECT user,authentication_string,plugin,host FROM mysql.user;

  • ใช้การเปลี่ยนแปลงและออกจาก MySQL: FLUSH PRIVILEGES; и exit

  • ตอนนี้เพื่อเข้าสู่ระบบ MySQL คุณต้องใช้ mysql -u root -p และป้อนรหัสผ่าน

การติดตั้ง 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

ตอนนี้เรามาเลือกกัน สำหรับ Laravel 7 คุณสามารถเลือก PHP 7.3 หรือ 7.4 ได้ ความแตกต่างเพียงอย่างเดียวจะอยู่ในหมายเลข 3 และ 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) ทำงานร่วมกับคำขอ PHP mysql แน่นอนสำหรับการทำงานกับ MySQL

จากนี้ไปผมจะทำทุกอย่างใน 7.4.

การตั้งค่า Nginx

  • sudo vim /etc/nginx/sites-available/<Ваш домен>

แทนที่จะป้อน "<โดเมนของคุณ>" ให้ป้อนโดเมน (เช่น mysite.ru) ที่คุณต้องการใช้ในอนาคต หากคุณยังไม่มี ให้เขียนรายการใดๆ จากนั้นเพียงทำซ้ำขั้นตอนในบทนี้สำหรับโดเมนของคุณเมื่อคุณเลือก

ป้อนต่อไปนี้:

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

หากคุณเลือกเวอร์ชัน 7.3 แทน php7.4-fpm.sock เขียนใน php7.4-fpm.sock.

ฟังพอร์ต 80 บน server_nameเมื่อเรามาถึงคำขอรูท /var/www/html นำไฟล์ดัชนี ถ้าหลังจากนั้น server_name มีบางอย่างเรากำลังมองหาไฟล์ดังกล่าว หากไม่พบเราจะโยน 404 ทิ้งหากลงท้ายด้วย .php, วิ่งผ่าน fpm... ถ้ามี .htห้าม (403)

  • การทำลิงค์จาก sites-available в sites-enabled: sudo ln -s /etc/nginx/sites-available/<Ваш домен> /etc/nginx/sites-enabled/
  • การลบลิงค์ไปที่ default: sudo unlink /etc/nginx/sites-enabled/default
  • การตรวจสอบข้อผิดพลาด: sudo nginx -t
  • รีบูต: sudo systemctl reload nginx

การตรวจสอบงาน:

  • sudo vim /var/www/html/info.php
  • พวกเราเขียน: <?php phpinfo();
  • ไปที่ <Ваш IP>/info.php

คุณควรเห็นสิ่งนี้:

การปรับใช้แอปพลิเคชันกับ Laravel 7 บน Ubuntu และ Nginx

ตอนนี้ไฟล์นี้สามารถลบได้: sudo rm /var/www/html/info.php

ติดตั้ง 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

  • ไปที่ MySQL กันเถอะ: mysql -u root -p

  • สร้างฐานข้อมูลด้วยชื่อ Laravel: CREATE DATABASE laravel DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

  • เราให้การเข้าถึงรูท Laravel: GRANT ALL ON laravel.* TO 'root'@'localhost' IDENTIFIED BY '<Ваш пароль от MySQL>';

  • FLUSH PRIVILEGES;

  • exit

  • cd /var/www/html

  • สร้างโฟลเดอร์สำหรับโครงการ: sudo mkdir -p <Имя проекта>

  • เราจัดให้ผู้ใช้ Laravel สิทธิในโครงการ: sudo chown laravel:laravel <Имя проекта>

ถัดไปคุณต้องโอนโครงการ เช่น การโคลนจาก Github

  • cd ./<Имя проекта>
  • git clone <ссылка на проект> .

ควรพิจารณาว่าหากคุณไม่ได้บันทึกไฟล์คงที่ (เช่นจาก /public) บน Github แน่นอนว่าคุณจะไม่มีมัน ตัวอย่างเช่น ฉันสร้างเธรดแยกต่างหากเพื่อแก้ไขปัญหานี้ deployซึ่งฉันได้โคลนไว้แล้ว: git clone -b <имя ветки> --single-branch <ссылка на проект> ..

  • การติดตั้งการอ้างอิง: composer install
  • สร้าง .env: 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>

หากคุณคัดลอก .env ของคุณ ให้แทนที่ APP_ENV ด้วยการใช้งานจริง APP_DEBUG ด้วย false และป้อนการตั้งค่าที่ถูกต้องสำหรับ 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

สิ่งสุดท้ายที่เหลือคือกำหนดค่า Nginx ใหม่สำหรับ 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;
    }
}

เช่นเดียวกับครั้งที่แล้วหากคุณเลือกเวอร์ชัน 7.3 แทน php7.4-fpm.sock เขียนใน php7.4-fpm.sock.

การตั้งค่าโดเมนบน DigitalOcean

ทุกอย่างเป็นเรื่องง่ายมากจริงๆ คุณซื้อโดเมน (ทุกที่) เปลี่ยนไปใช้ DigitalOcean ได้ที่ สร้างบัญชีตัวแทน->โดเมน/DNS. В ปอล เพิ่มโดเมน คุณป้อนโดเมนนี้แล้วคลิกเพิ่ม จากนั้นไปที่การตั้งค่าโดเมนและไปที่ฟิลด์ ชื่อโฮสต์ เข้า @. เลือกโครงการแล้วคลิก สร้างบันทึก.
ตอนนี้ไปที่ไซต์ที่คุณซื้อโดเมน ค้นหา “เซิร์ฟเวอร์ DNS” ที่นั่น (หรือบางอย่างที่คล้ายกัน) และเข้าสู่เซิร์ฟเวอร์ DigitalOcean (กล่าวคือ ns1.digitalocean.com, ns2.digitalocean.com, ns3.digitalocean.com). ตอนนี้คุณต้องรอสักครู่ (หรือมาก) จนกว่าการตั้งค่าเหล่านี้จะได้รับการยอมรับ พร้อม!
ปัญหาเดียวคือเว็บไซต์ของคุณจะเปิดเป็น HTTP เท่านั้น หากต้องการใช้ HTTPS ให้ไปยังส่วนถัดไป

การตั้งค่า HTTPS

ติดตั้ง certbot และส่งชื่อโดเมน (format mysite.ru) และชื่อโดเมนด้วย 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.<Ваш домен>

ตอนนี้คุณต้องกำหนดค่า Nginx ใหม่ (อย่าลืมแทนที่ค่าของคุณ):

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

ฉันคิดว่าคุณเข้าใจแล้วว่าต้องเปลี่ยนแปลงอะไรใน PHP 7.3

ที่จริงแล้วทุกอย่างเรียบง่ายที่นี่ เราเพียงแค่เปลี่ยนเส้นทางคำขอทั้งหมดจาก HTTP (พอร์ต 80) ไปยัง HTTPS (พอร์ต 443) และที่นั่นเราทำทุกอย่างเหมือนเดิมแต่ใช้การเข้ารหัส

สิ่งที่เหลืออยู่คือการตั้งค่าการอนุญาตในไฟร์วอลล์:

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

ตอนนี้ทุกอย่างควรจะทำงานได้อย่างที่ควรจะเป็น

[ขั้นสูง] การติดตั้ง Node.js

หากคุณจำเป็นต้องรันคำสั่ง npm โดยตรงบนเซิร์ฟเวอร์โดยฉับพลัน คุณจะต้องติดตั้ง Node.js

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

แค่นั้นแหละฉันหยุดที่ขั้นตอนนี้ โดยหลักการแล้วฉันพอใจกับผลลัพธ์ที่ได้ บางทีฉันอาจจะเปลี่ยนจาก DigitalOcean ที่ไหนสักแห่งที่ใกล้กับรัสเซียและถูกกว่า แต่เนื่องจากฉันได้ผ่านการตรวจสอบรอบทั้งหมดบนเว็บไซต์แล้วและทำทุกอย่างที่นั่น ฉันจึงแสดงให้พวกเขาเห็นตามตัวอย่าง นอกจากนี้ การเริ่มต้น $100 ยังเป็นจุดเริ่มต้นที่ยอดเยี่ยมสำหรับการฝึกฝน

PS. ขอขอบคุณผู้เขียนเป็นพิเศษ ส่วนสำคัญนี้ซึ่งทำหน้าที่เป็นพื้นฐานสำหรับการดำเนินการข้างต้นทั้งหมด ในบางกรณีมันใช้ไม่ได้กับ Laravel 7 ฉันแก้ไขมันแล้ว

PPS หากคุณเป็นวิศวกรชั้นนำที่คิดคำสั่ง bash โปรดอย่าตัดสินอย่างรุนแรง คุณอาจพบว่าบทความนี้มีระดับต่ำ แต่ฉันยินดีที่จะพบบทความนี้เมื่อฉันต้องการ หากมีข้อเสนอแนะให้ปรับปรุง ผมก็พร้อมครับ

ที่มา: will.com

เพิ่มความคิดเห็น