Ubuntu рдФрд░ Nginx рдкрд░ Laravel 7 рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдХрд░рдирд╛

Ubuntu рдФрд░ Nginx рдкрд░ Laravel 7 рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдХрд░рдирд╛

рдореИрдВрдиреЗ рд▓рд╛рд░рд╡реЗрд▓ 7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдирд╛ рдкреЛрд░реНрдЯрдлреЛрд▓рд┐рдпреЛ рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рддрд╛рдХрд┐ рдореБрдЦреНрдп рдкреГрд╖реНрда рдПрдХ рд▓реИрдВрдбрд┐рдВрдЧ рдкреГрд╖реНрда рд╣реЛ, рдФрд░ рдЙрд╕ рдкрд░ рдореМрдЬреВрдж рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХреЗред рдмрд╛рдд рдпрд╣ рдирд╣реАрдВ рд╣реИ. рдмрд╛рдд рддреИрдирд╛рддреА рдХреА рдЖ рдЧрдИ. рдореБрдЭреЗ рд╕рднреА рдкрд░реЗрд╢рд╛рдирд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреВрд░реНрдг рд╕рд░реНрд╡рд░ рдкрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд░реЗрдВ, рдЗрд╕ рдкрд░ рдХреБрдЫ рдЕрдЪреНрдЫреЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдорд┐рд▓реЗред рдореИрдВ рддреИрдирд╛рддреА рдореЗрдВ рдмрд╣реБрдд рдордЬрдмреВрдд рдирд╣реАрдВ рд╣реВрдВ; рдореИрдВ рдЖрдо рддреМрд░ рдкрд░ рдкреВрд░реНрдг рд╕реНрдЯреИрдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЖрдЧреЗ рд╣реВрдВред рдФрд░, рдЕрдЧрд░ рдореИрдВ рдЕрднреА рднреА PHP рдореЗрдВ рд▓рд┐рдЦ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рддреЛ рд╕рд░реНрд╡рд░ рдЖрджрд┐ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗред рдореИрдВ рдЕрднреА рдмрдбрд╝рд╛ рдирд╣реАрдВ рд╣реБрдЖ рд╣реВрдВ. рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдерд╛.

рдЕрдм рд╣рдо рд╕рднреА рдЪрд░рдгреЛрдВ рд╕реЗ рдЧреБрдЬрд░реЗрдВрдЧреЗ, рдПрд╕рдПрд╕рдПрдЪ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЙрдиреНрдЪ рд╕реЗ рд▓реЗрдХрд░ рдХрд╛рд░реНрдп рд╕реНрдерд▓ рддрдХред рд╣рдо рд╕рднреА рдиреБрдХрд╕рд╛рдиреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ.

рдЖрдк рдЗрд╕реА рддрд░рд╣ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рдСрдирд▓рд╛рдЗрди рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЦрд╝рд┐рд░рдХрд╛рд░, рдЖрдЦрд╝рд┐рд░рдХрд╛рд░ рдореБрдЭреЗ рдпрд╣ рдорд┐рд▓ рд╣реА рдЧрдпрд╛ред рд╕рдЪ рд╣реИ, рдПрдХ рдЬрдЧрд╣ рдкрд░ рдирд╣реАрдВ, рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдХреА рдорджрдж рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ, рдФрд░ рд╢рд╛рдпрдж рд╣реА рд░реВрд╕реА рдореЗрдВред рдореБрдЭреЗ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдЬреАрд╡рди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред

рд╣рдо DigitalOcean рдкрд░ рдПрдХ рдмреВрдВрдж рд╕реЗ рд╕рдм рдХреБрдЫ рдХрд░реЗрдВрдЧреЗред рдирд┐рдГрд╕рдВрджреЗрд╣, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ; рдХреЛрдИ рднреА рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдЪреБрдиреЗрдВред рдЬрдм рдЖрдк рдЙрдмрдВрдЯреВ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдкрд╣реБрдВрдЪ рдЬрд╛рдПрдВ, рддреЛ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдВред рдЬреЛ рд▓реЛрдЧ рдЕрднреА рднреА DigitalOcean рдкрд░ рдЗрд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдбреЛрдореЗрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рднреА рдпреБрдХреНрддрд┐рдпрд╛рдБ рд╣реЛрдВрдЧреАред рдФрд░ $100 рд░реЗрдлрд░рд▓ рд▓рд┐рдВрдХ.

рд╕рднреА DigitalOcean-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪрд░рдг рдЗрд╕ рддрд░рд╣ рдХреЗ рдлрд╝реБрдЯрдиреЛрдЯ рдореЗрдВ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗред

рдЪрд▓реЛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рдЯреАрдПрд▓;рдбреАрдЖрд░ (рдХреЗрд╡рд▓ рдореВрд▓ рдЖрджреЗрд╢)

рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдПрдВ

  • 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 рд╕реЗрдЯрдЕрдк:

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 рд╕реЗрдЯрд┐рдВрдЧ:

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 рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХрд░рдг рдХреИрд╕реЗ рдХрд░реЗрдВред рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рддреНрдпрд╛рдкрди рдФрд░ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдпрд╣ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рддреНрдпрд╛рдкрди рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ, рддреЛ рд╡реАрдкреАрдПрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдм рдХреБрдЫ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдЗрд╕рд╕реЗ рдорджрдж рдорд┐рд▓реЗрдЧреАред

рд╢реАрд░реНрд╖ рдкрд░ рдореЗрдиреВ рдореЗрдВ, рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдмрдирд╛рдПрдВ->рдмреВрдВрджреЛрдВ. рдЪреБрдирдирд╛ Ubuntu.

рдЬреИрд╕реЗ рд╣реА рдЖрдк рдкрдВрдЬреАрдХрд░рдг рдХрд░реЗрдВрдЧреЗ, рдЖрдкрдХреЗ рдЦрд╛рддреЗ рдореЗрдВ $100 рдкреНрд░рд╛рдкреНрдд рд╣реЛ рдЬрд╛рдпреЗрдВрдЧреЗред рд▓реЗрдХрд┐рди рдореВрд░реНрдЦ рдордд рдмрдиреЛ. рдЗрд╕реЗ рдЦрд░реНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ 60 рджрд┐рди рд╣реИрдВред рдФрд░ рдпреЗ рдмрд╣реБрдд рдХрдо рд╣реИ. рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рднреА рдореЗрд░реА рддрд░рд╣ рдЕрдзрд┐рдХ рдорд╣рдВрдЧреЗ рдкреНрд▓рд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВ, рддрд╛рдХрд┐ рдмрд╛рдж рдореЗрдВ, рдЬрдм рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреИрд╕рд╛ рдЖрдиреЗ рд▓рдЧреЗ, рддреЛ рдЖрдк рд╕рд╕реНрддреЗ рдкреНрд▓рд╛рди рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХреЗрдВред рдореИрдВ рдЖрдкрдХреЛ рддреБрд░рдВрдд рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЖрдк рдЗрд╕реЗ рдмрдврд╝рд╛ рддреЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдШрдЯрд╛ рдирд╣реАрдВ рд╕рдХрддреЗред рддреЛ рдпрд╣ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдЪрдпрди рдХрд░рддрд╛ рд╣реВрдВ рдорд╛рдирдХ->$5.

рдореИрдВ рдЕрдкрдиреЗ рдирд┐рдХрдЯрддрдо рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЪреБрдирддрд╛ рд╣реВрдВ рдлреНрд░реИрдВрдХрдлрд░реНрдЯ. рд╡реАрдкреАрд╕реА рдиреЗрдЯрд╡рд░реНрдХ->рдбрд┐рдлрд╝реЙрд▓реНрдЯ-fra1

рд╣рдо рддреБрд░рдВрдд рдПрд╕рдПрд╕рдПрдЪ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд░реЗрдВрдЧреЗред рдХреНрд▓рд┐рдХ рдирдИ SSH рдХреБрдВрдЬреА. рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ SSH рдирд╣реАрдВ рд╣реИ, рддреЛ рджрд╛рдИрдВ рдУрд░ рдмрд╣реБрдд рд╕рд░рд▓ рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВред рдПрдХ рдмреИрд╢ рдЯрд░реНрдорд┐рдирд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ ssh-keygen. рдлрд┐рд░ рд╣рдо рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ /Users/<╨Т╨░╤И╨╡ ╨╕╨╝╤П ╨┐╨╛╨╗╤М╨╖╨╛╨▓╨░╤В╨╡╨╗╤П>/.ssh/id_rsa.pub (рдпрд╛ рдХреЗрд╡рд▓ cat ~/.ssh/id_rsa.pub), рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рдмрд╛рдИрдВ рдУрд░ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВред рдХреЛрдИ рднреА рдирд╛рдоред

рд╣рдо рдЫреЛрдЯреА рдмреВрдВрдж рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реЛрд╕реНрдЯрдирд╛рдо рд▓реЗрдХрд░ рдЖрдП рд╣реИрдВред

рдХреНрд▓рд┐рдХ рдбреНрд░реЙрдкрд▓реЗрдЯ рдмрдирд╛рдПрдВ

рдПрдХ рдирдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдПрдБ

  • ssh root@[IP-╨░╨┤╤А╨╡╤Б ╨▓╨░╤И╨╡╨│╨╛ ╨┤╤А╨╛╨┐╨╗╨╡╤В╨░]
  • рдХреНрдпрд╛ рдЖрдк рд╡рд╛рдХрдИ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рд╣рд╛рдВ/рдирд╣реАрдВ/[рдлрд╝рд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ])? yes
  • рдЕрдкрдирд╛ рдПрд╕рдПрд╕рдПрдЪ рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░реЗрдВ
  • рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдПрдВ Laravel: adduser laravel
  • рдЕрдкрдирд╛ рдкрд╛рд╕рд╡рд░реНрдб рдФрд░ рдЕрдиреНрдп рдЬрд╛рдирдХрд╛рд░реА рджрд░реНрдЬ рдХрд░реЗрдВ (рдореИрдВ рдХреЗрд╡рд▓ рдкреВрд░рд╛ рдирд╛рдо рджрд░реНрдЬ рдХрд░рддрд╛ рд╣реВрдВ)
  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ sudo рд╕рдореВрд╣ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ: usermod -aG sudo laravel

рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП SSH

  • рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ: su laravel

рд╣рдо рд▓рд╛рд░рд╡реЗрд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдУрд░ рд╕реЗ, рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рддрдХ рдЖрдЧреЗ рдХреА рд╕рднреА рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпрд╛рдВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдЕрдЪрд╛рдирдХ рдмрд╛рдзрд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдкреБрдирдГ рд▓реЙрдЧрд┐рди рдХрд░реЗрдВ рдФрд░ рдкреНрд░рд╡реЗрд╢ рдХрд░реЗрдВ su laravel

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

рд╣рдордиреЗ рд╡рд┐рдо рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реАред рдЕрдЧрд░ рдЖрдк рдЗрд╕рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ рддреЛ рдЖрдк рдиреИрдиреЛ рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдкрдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИ.

рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рд╡рд┐рдо рдХрдорд╛рдВрдб

рдкреВрд░реЗ рд▓реЗрдЦ рдореЗрдВ рд╡рд┐рдо рд╕рдВрдкрд╛рджрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

  • рд╡рд┐рдо рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЛрдб рд╣реИрдВ: рд╕рд╛рдорд╛рдиреНрдп рдореЛрдб, рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдореЛрдб рдФрд░ рдЕрдиреНрдп рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВред
  • рдХрд┐рд╕реА рднреА рдореЛрдб рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдореЛрдб рдкрд░ рд▓реМрдЯрдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рджрдмрд╛рдПрдВ Esc
  • рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдореЗрдВ: рдЖрдк рдХреЗрд╡рд▓ рддреАрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
  • рдмрдЪрдд рдХреЗ рдмрд┐рдирд╛ рдмрд╛рд╣рд░ рд╣реБрдпреЗ <Normal mode>: :q!
  • рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ рдФрд░ рд╕рд╣реЗрдЬреЗрдВ <Normal mode>: :wq
  • рдЯреЗрдХреНрд╕реНрдЯ рдЗрдирдкреБрдЯ рдореЛрдб рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ <Normal mode>: i (рдЕрдВрдЧреНрд░реЗрдЬрд╝реА рд╕реЗред рдбрд╛рд▓рдиреЗ рдХреЗ)
  • рд╣рдо рдЕрдкрдиреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдбрд╛рд▓рддреЗ рд╣реИрдВ (рдЬреЛ рд╣рдордиреЗ рдКрдкрд░ рдХрд┐рдпрд╛ рдерд╛)
  • рд╣рдо рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рд╕реЗ рд░рдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ: chmod 600 ~/.ssh/authorized_keys

рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛

  • рдЖрдЗрдП рд╕рднреА рдЙрдкрд▓рдмреНрдз рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рджреЗрдЦреЗрдВ: sudo ufw app list
  • рдУрдкрдирдПрд╕рдПрд╕рдПрдЪ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдВ (рдЕрдиреНрдпрдерд╛ рдпрд╣ рд╣рдореЗрдВ рд▓реЙрдХ рдХрд░ рджреЗрдЧрд╛): 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)

рдЕрдкрдиреЗ рдЖрдИрдкреА рдкрд░ рдЬрд╛рдПрдВ. рдпрджрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд░рд╣рд╛, рддреЛ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред

Ubuntu рдФрд░ Nginx рдкрд░ Laravel 7 рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдХрд░рдирд╛

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 рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдбрд╛рд▓реЗрдВ

рдкреАрдПрдЪрдкреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛

рдЖрдЗрдП рдХрд┐рд╕реА рддреГрддреАрдп-рдкрдХреНрд╖ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдУрдиреНрдбреНрд░реЗрдЬ рд╕реВрд░реА

  • 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 рдХреЗ рд▓рд┐рдП, рдЖрдк 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 рдлрд╛рд╕реНрдЯрд╕реАрдЬреАрдЖрдИ рдкреНрд░реЛрд╕реЗрд╕ рдореИрдиреЗрдЬрд░ (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

рдЖрдкрдХреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

Ubuntu рдФрд░ Nginx рдкрд░ Laravel 7 рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдХрд░рдирд╛

рдЕрдм рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд╣рдЯрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ: sudo rm /var/www/html/info.php

рд▓рд╛рд░рд╡реЗрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ

  • 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 <╨Ш╨╝╤П ╨┐╤А╨╛╨╡╨║╤В╨░>

рдЗрд╕рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреАрдердм рд╕реЗ рдХреНрд▓реЛрдирд┐рдВрдЧред

  • cd ./<╨Ш╨╝╤П ╨┐╤А╨╛╨╡╨║╤В╨░>
  • git clone <╤Б╤Б╤Л╨╗╨║╨░ ╨╜╨░ ╨┐╤А╨╛╨╡╨║╤В> .

рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдкрдиреЗ рд╕реНрдерд┐рд░ рдлрд╝рд╛рдЗрд▓реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реЗ) рд╕рд╣реЗрдЬреА рдирд╣реАрдВ рд╣реИрдВ /public) рдЬреАрдердм рдкрд░, рддреЛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡реЗ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдмрдирд╛рдпрд╛ 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 рдХреЛ рдЧрд▓рдд рд╕реЗ рдмрджрд▓реЗрдВ рдФрд░ 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 рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛:

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 рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ рдмрдирд╛рдПрдВ->рдбреЛрдореЗрди/рдбреАрдПрдирдПрд╕. ╨╛╨╗╨╡ рдПрдХ рдбреЛрдореЗрди рдЬреЛрдбрд╝реЗрдВ рдЖрдк рдЗрд╕ рдбреЛрдореЗрди рдХреЛ рджрд░реНрдЬ рдХрд░реЗрдВ рдФрд░ рдРрдб рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдлрд┐рд░ рдбреЛрдореЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдФрд░ рдлреАрд▓реНрдб рдкрд░ рдЬрд╛рдПрдВ HOSTNAME рдкреНрд░рд╡реЗрд╢ рдХрд░рдирд╛ @. рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЪреБрдиреЗрдВ рдФрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рдПрдВ.
рдЕрдм рдЙрд╕ рд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛рдПрдВ рдЬрд╣рд╛рдВ рдЖрдкрдиреЗ рдбреЛрдореЗрди рдЦрд░реАрджрд╛ рдерд╛, рд╡рд╣рд╛рдВ "DNS рд╕рд░реНрд╡рд░" рдвреВрдВрдвреЗрдВ (рдпрд╛ рдРрд╕рд╛ рд╣реА рдХреБрдЫ) рдФрд░ DigitalOcean рд╕рд░реНрд╡рд░ рджрд░реНрдЬ рдХрд░реЗрдВ (рдЕрд░реНрдерд╛рддреН ns1.digitalocean.com, ns2.digitalocean.com, ns3.digitalocean.com). рдЕрдм рдЖрдкрдХреЛ рдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕реНрд╡реАрдХрд╛рд░ рд╣реЛрдиреЗ рддрдХ рдереЛрдбрд╝рд╛ (рдпрд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ) рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рддреИрдпрд╛рд░!
рдПрдХрдорд╛рддреНрд░ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреА рд╕рд╛рдЗрдЯ рдХреЗрд╡рд▓ HTTP рдХреЗ рд░реВрдк рдореЗрдВ рдЦреБрд▓реЗрдЧреАред HTTPS рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдЧрд▓реЗ рднрд╛рдЧ рдкрд░ рдЬрд╛рдПрдБред

HTTPS рдХреА рд╕реНрдерд╛рдкрдирд╛

Certbot рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдбреЛрдореЗрди рдирд╛рдо (рдкреНрд░рд╛рд░реВрдк) рдкрд╛рд╕ рдХрд░реЗрдВ 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 рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рд╕реНрдкреНрд░рд┐рдВрдЧрдмреЛрд░реНрдб рд╣реИред

рдкреБрдирд╢реНрдЪ рд▓реЗрдЦрдХ рдХреЛ рд╡рд┐рд╢реЗрд╖ рдзрдиреНрдпрд╡рд╛рдж рдпрд╣ рд╕рд╛рд░, рдЬреЛ рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рд▓рд╛рд░рд╡реЗрд▓ 7 рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рд╣реИред

рдкреАрдкреАрдПрд╕ рдпрджрд┐ рдЖрдк рдПрдХ рд╢реАрд░реНрд╖ рдЗрдВрдЬреАрдирд┐рдпрд░ рд╣реИрдВ рдЬреЛ рдмреИрд╢ рдХрдорд╛рдВрдб рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдХрдареЛрд░рддрд╛ рд╕реЗ рдирд┐рд░реНрдгрдп рди рд▓реЗрдВред рдЖрдкрдХреЛ рдпрд╣ рд▓реЗрдЦ рдирд┐рдореНрди рд╕реНрддрд░ рдХрд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдореБрдЭреЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рддреЛ рдореБрдЭреЗ рдЗрд╕реЗ рдкрд╛рдХрд░ рдЦреБрд╢реА рд╣реЛрдЧреАред рдпрджрд┐ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реБрдЭрд╛рд╡ рд╣реИрдВ рддреЛ рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ