āĻ‰āĻŦā§āĻ¨ā§āĻŸā§ āĻāĻŦāĻ‚ āĻāĻ¨āĻ—āĻŋāĻ¨ā§‡āĻ•ā§āĻ¸ā§‡ āĻ˛āĻžāĻ°āĻžāĻ­ā§‡āĻ˛ 7 āĻ āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

āĻ‰āĻŦā§āĻ¨ā§āĻŸā§ āĻāĻŦāĻ‚ āĻāĻ¨āĻ—āĻŋāĻ¨ā§‡āĻ•ā§āĻ¸ā§‡ āĻ˛āĻžāĻ°āĻžāĻ­ā§‡āĻ˛ 7 āĻ āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

āĻ†āĻŽāĻŋ āĻ˛āĻžāĻ°āĻžāĻ­ā§‡āĻ˛ 7 āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ†āĻŽāĻžāĻ° āĻĒā§‹āĻ°ā§āĻŸāĻĢā§‹āĻ˛āĻŋāĻ“ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋāĨ¤ āĻ¯āĻžāĻ¤ā§‡ āĻŽā§‚āĻ˛ āĻĒā§ƒāĻˇā§āĻ āĻžāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ˛ā§āĻ¯āĻžāĻ¨ā§āĻĄāĻŋāĻ‚ āĻĒā§ƒāĻˇā§āĻ āĻž āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻ…ā§āĻ¯āĻžāĻĄāĻŽāĻŋāĻ¨ āĻĒā§āĻ¯āĻžāĻ¨ā§‡āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¤āĻĨā§āĻ¯ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻŦāĻŋāĻ¨ā§āĻĻā§ āĻ¨āĻž. āĻāĻŸāĻŋ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ¸ā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻžāĻŽā§‡āĻ˛āĻž āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻāĻŸāĻŋ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¸ā§‡ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ†āĻŽāĻŋ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ­āĻžāĻ˛ āĻŸāĻŋāĻ‰āĻŸā§‹āĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻĒā§‡āĻ¯āĻŧā§‡āĻ›āĻŋāĨ¤ āĻ†āĻŽāĻŋ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ā§‡ āĻ–ā§āĻŦ āĻļāĻ•ā§āĻ¤āĻŋāĻļāĻžāĻ˛ā§€ āĻ¨āĻ‡; āĻ†āĻŽāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻĒā§āĻ°ā§‹ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ•ā§‡āĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻŦā§‡āĻļāĻŋ āĻ¸āĻžāĻŽāĻ¨ā§‡ āĻĨāĻžāĻ•āĻŋāĨ¤ āĻāĻŦāĻ‚, āĻ¯āĻĻāĻŋ āĻ†āĻŽāĻŋ āĻāĻ–āĻ¨āĻ“ āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋāĻ¤ā§‡ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻāĻŦāĻ‚ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž āĻ•āĻ°āĻžāĻ° āĻ†āĻ—ā§‡, āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋāĨ¤ āĻ†āĻŽāĻŋ āĻāĻ–āĻ¨ā§‹ āĻŦāĻĄāĻŧ āĻšāĻ‡āĻ¨āĻŋāĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻŽāĻŋ āĻāĻŸāĻž āĻŦā§‡āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡.

āĻāĻ–āĻ¨ āĻ†āĻŽāĻ°āĻž āĻāĻ¸āĻāĻ¸āĻāĻ‡āĻš āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ˛āĻžā§āĻš āĻĨā§‡āĻ•ā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ•āĻžāĻœā§‡āĻ° āĻ¸āĻžāĻ‡āĻŸā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻļā§‡āĻˇ āĻ•āĻ°ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ§āĻžāĻĒ āĻ…āĻ¤āĻŋāĻ•ā§āĻ°āĻŽ āĻ•āĻ°āĻŦāĨ¤ āĻ†āĻŽāĻ°āĻž āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻŦ āĻ¸āĻŦ āĻŦāĻŋāĻĒāĻ¤ā§āĻ¤āĻŋ āĻāĻĄāĻŧāĻžāĻ¤ā§‡āĨ¤

āĻ†āĻĒāĻ¨āĻŋ āĻ…āĻ¨āĻ˛āĻžāĻ‡āĻ¨ āĻ…āĻ¨ā§āĻ°ā§‚āĻĒ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻžāĻŦāĻ˛ā§€ āĻ–ā§āĻāĻœā§‡ āĻĒā§‡āĻ¤ā§‡ āĻ¸āĻ•ā§āĻˇāĻŽ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡. āĻ¸āĻŦ āĻĒāĻ°ā§‡, āĻ†āĻŽāĻŋ āĻ…āĻŦāĻļā§‡āĻˇā§‡ āĻāĻŸāĻŋ āĻ–ā§āĻāĻœā§‡ āĻĒā§‡āĻ¯āĻŧā§‡āĻ›āĻŋ. āĻ¸āĻ¤ā§āĻ¯, āĻāĻ• āĻœāĻžāĻ¯āĻŧāĻ—āĻžāĻ¯āĻŧ āĻ¨āĻ¯āĻŧ, āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ•āĻ“āĻ­āĻžāĻ°āĻĢā§āĻ˛ā§‹-āĻāĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ›āĻžāĻĄāĻŧāĻž āĻ¨āĻ¯āĻŧ, āĻāĻŦāĻ‚ āĻ–ā§āĻŦ āĻ•āĻŽāĻ‡ āĻ°āĻžāĻļāĻŋāĻ¯āĻŧāĻžāĻ¨ āĻ­āĻžāĻˇāĻžāĻ¯āĻŧāĨ¤ āĻ†āĻŽāĻŋ āĻ•āĻˇā§āĻŸ āĻĒā§‡āĻ¯āĻŧā§‡āĻ›āĻŋāĨ¤ āĻ¤āĻžāĻ‡ āĻ†āĻŽāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻœā§€āĻŦāĻ¨āĻ•ā§‡ āĻ¸āĻšāĻœ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋāĨ¤

āĻ†āĻŽāĻ°āĻž DigitalOcean-āĻ āĻāĻ• āĻĢā§‹āĻāĻŸāĻž āĻĻāĻŋāĻ¯āĻŧā§‡ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ•āĻ°āĻŦāĨ¤ āĻāĻŸāĻŋ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ¨āĻ¯āĻŧ; āĻ¯ā§‡āĻ•ā§‹āĻ¨ā§‹ āĻšā§‹āĻ¸ā§āĻŸāĻŋāĻ‚ āĻŦā§‡āĻ›ā§‡ āĻ¨āĻŋāĻ¨āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻ–āĻ¨ āĻ‰āĻŦā§āĻ¨ā§āĻŸā§āĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ°ā§€ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ āĻĒā§ŒāĻāĻ›āĻžāĻ¨, āĻĢāĻŋāĻ°ā§‡ āĻ†āĻ¸ā§āĻ¨āĨ¤ āĻ¯āĻžāĻ°āĻž āĻāĻ–āĻ¨āĻ“ 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

āĻŽāĻžāĻ‡āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛

  • 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

āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ

  • 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 āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻ•āĻ°āĻŦā§‡āĻ¨āĨ¤ āĻ…āĻ¨ā§‡āĻ• āĻ¯āĻžāĻšāĻžāĻ‡-āĻŦāĻžāĻ›āĻžāĻ‡ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻœāĻŋāĻ¨āĻŋāĻ¸ āĻ¸āĻš āĻāĻŸāĻŋ āĻ¸āĻšāĻœ āĻ¨āĻ¯āĻŧāĨ¤ āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¯āĻžāĻšāĻžāĻ‡ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ•ā§āĻ°āĻŽāĻžāĻ—āĻ¤ āĻāĻ•āĻŸāĻŋ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻĒāĻžāĻ¨, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻāĻ•āĻŸāĻŋ VPN āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°ā§āĻ¨, āĻāĻŸāĻŋ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤āĨ¤

āĻ‰āĻĒāĻ°ā§‡āĻ° āĻŽā§‡āĻ¨ā§āĻ¤ā§‡, āĻ•ā§āĻ˛āĻŋāĻ• āĻ•āĻ°ā§āĻ¨ āĻ¸ā§ƒāĻˇā§āĻŸāĻŋ->āĻŦāĻŋāĻ¨ā§āĻĻā§āĨ¤ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ‰āĻŦā§āĻ¨ā§āĻŸā§.

āĻ¯āĻ¤ āĻ¤āĻžāĻĄāĻŧāĻžāĻ¤āĻžāĻĄāĻŧāĻŋ āĻ†āĻĒāĻ¨āĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻ•āĻ°āĻŦā§‡āĻ¨, āĻ†āĻĒāĻ¨āĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸā§‡ $100 āĻĒāĻžāĻŦā§‡āĻ¨āĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻĒā§āĻ°āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻšāĻŦā§‡āĻ¨ āĻ¨āĻžāĨ¤ āĻāĻŸāĻŋ āĻŦā§āĻ¯āĻ¯āĻŧ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•āĻžāĻ›ā§‡ āĻŽāĻžāĻ¤ā§āĻ° 60 āĻĻāĻŋāĻ¨ āĻ†āĻ›ā§‡āĨ¤ āĻāĻŦāĻ‚ āĻāĻ‡ āĻ–ā§āĻŦ āĻ¸āĻžāĻŽāĻžāĻ¨ā§āĻ¯. āĻ†āĻĒāĻ¨āĻŋ, āĻ†āĻŽāĻžāĻ° āĻŽāĻ¤ā§‹, āĻāĻ•āĻŸāĻŋ āĻ†āĻ°āĻ“ āĻŦā§āĻ¯āĻ¯āĻŧāĻŦāĻšā§āĻ˛ āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨, āĻ¯āĻžāĻ¤ā§‡ āĻĒāĻ°ā§‡, āĻ¯āĻ–āĻ¨ āĻĒā§āĻ°āĻ•ā§ƒāĻ¤ āĻ…āĻ°ā§āĻĨ āĻĒā§āĻ°āĻŦāĻžāĻšāĻŋāĻ¤ āĻšāĻ¯āĻŧ, āĻ†āĻĒāĻ¨āĻŋ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ¸ā§āĻ¤āĻžāĻ¯āĻŧ āĻ¸ā§āĻ¯ā§āĻ‡āĻš āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ā§ˇ āĻ†āĻŽāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻŦāĻ˛āĻŦ āĻ¯ā§‡ āĻāĻŸāĻŋ āĻ•āĻžāĻœ āĻ•āĻ°āĻŦā§‡ āĻ¨āĻžāĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻāĻŸāĻŋ āĻŦāĻžāĻĄāĻŧāĻžāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻĒāĻ¨āĻŋ āĻāĻŸāĻŋ āĻ•āĻŽāĻžāĻ¤ā§‡ āĻĒāĻžāĻ°āĻŦā§‡āĻ¨ āĻ¨āĻžāĨ¤ āĻ¤āĻžāĻ‡ āĻāĻŸāĻž āĻ¯āĻžāĻ¯āĻŧ. āĻ†āĻŽāĻŋ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āĻ°ā§‡āĻ›āĻŋ āĻŽāĻžāĻ¨->$5.

āĻ†āĻŽāĻŋ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ•āĻžāĻ›ā§‡āĻ° āĻ…āĻžā§āĻšāĻ˛āĻŸāĻŋ āĻŦā§‡āĻ›ā§‡ āĻ¨āĻŋāĻ‡ āĻĢā§āĻ°āĻžāĻ‚āĻ•āĻĢā§āĻ°ā§āĻŸ. āĻ­āĻŋāĻĒāĻŋāĻ¸āĻŋ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•->āĻĄāĻŋāĻĢāĻ˛ā§āĻŸ-fra1

āĻ†āĻŽāĻ°āĻž āĻ…āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§‡ SSH āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻĒā§āĻ°āĻŽāĻžāĻŖā§€āĻ•āĻ°āĻŖ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻ•āĻ°āĻŦāĨ¤ āĻ•ā§āĻ˛āĻŋāĻ• āĻ¨āĻ¤ā§āĻ¨ SSH āĻ•ā§€. āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¯āĻĻāĻŋ SSH āĻ¨āĻž āĻĨāĻžāĻ•ā§‡, āĻĄāĻžāĻ¨āĻĻāĻŋāĻ•ā§‡ āĻ–ā§āĻŦ āĻ¸āĻšāĻœ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻžāĻŦāĻ˛ā§€ āĻ†āĻ›ā§‡āĨ¤ āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻžāĻļ āĻŸāĻžāĻ°ā§āĻŽāĻŋāĻ¨āĻžāĻ˛ āĻ–ā§āĻ˛ā§āĻ¨ āĻāĻŦāĻ‚ āĻĒā§‡āĻ¸ā§āĻŸ āĻ•āĻ°ā§āĻ¨ ssh-keygen. āĻ¤āĻžāĻ°āĻĒāĻ° āĻ†āĻŽāĻ°āĻž āĻĒāĻžāĻŦāĻ˛āĻŋāĻ• āĻ•ā§€ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻ¯āĻžāĻ‡ /Users/<ВаŅˆĐĩ иĐŧŅ ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅ>/.ssh/id_rsa.pub (āĻŦāĻž āĻ¸āĻšāĻœāĻ­āĻžāĻŦā§‡ cat ~/.ssh/id_rsa.pub), āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻ…āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻŦāĻžāĻŽ āĻĻāĻŋāĻ•ā§‡āĻ° āĻ‰āĻ‡āĻ¨ā§āĻĄā§‹āĻ¤ā§‡ āĻĒā§‡āĻ¸ā§āĻŸ āĻ•āĻ°ā§āĻ¨āĨ¤ āĻ¯ā§‡āĻ•ā§‹āĻ¨ āĻ¨āĻžāĻŽ.

āĻ†āĻŽāĻ°āĻž āĻĄā§āĻ°āĻĒāĻ˛ā§‡āĻŸā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻšā§‹āĻ¸ā§āĻŸāĻ¨āĻžāĻŽ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻāĻ¸ā§‡āĻ›āĻŋāĨ¤

āĻ§āĻžāĻ•ā§āĻ•āĻž āĻĢā§‹āĻāĻŸāĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨

āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨

  • ssh root@[IP-Đ°Đ´Ņ€ĐĩŅ ваŅˆĐĩĐŗĐž Đ´Ņ€ĐžĐŋĐģĐĩŅ‚Đ°]
  • āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻŋ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤āĻ­āĻžāĻŦā§‡ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻšāĻžāĻ˛āĻŋāĻ¯āĻŧā§‡ āĻ¯ā§‡āĻ¤ā§‡ āĻšāĻžāĻ¨ (āĻšā§āĻ¯āĻžāĻ/āĻ¨āĻž/[āĻ†āĻ™ā§āĻ˛ā§‡āĻ° āĻ›āĻžāĻĒ])? yes
  • āĻ†āĻĒāĻ¨āĻžāĻ° SSH āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻ˛āĻŋāĻ–ā§āĻ¨
  • āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨ Laravel: adduser laravel
  • āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¤āĻĨā§āĻ¯ āĻ˛āĻŋāĻ–ā§āĻ¨ (āĻ†āĻŽāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ¨āĻžāĻŽ āĻ˛āĻŋāĻ–āĻ›āĻŋ)
  • āĻ¸ā§āĻĄā§‹ āĻ—ā§āĻ°ā§āĻĒā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°ā§āĻ¨: usermod -aG sudo laravel

āĻ¨āĻ¤ā§āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻœāĻ¨ā§āĻ¯ SSH

  • āĻ¨āĻ¤ā§āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ¤ā§‡ āĻ¸ā§āĻ¯ā§āĻ‡āĻš āĻ•āĻ°ā§āĻ¨: su laravel

āĻ†āĻŽāĻ°āĻž āĻ˛āĻžāĻ°āĻžāĻ­ā§‡āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻĒāĻ•ā§āĻˇ āĻĨā§‡āĻ•ā§‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡āĻ° āĻļā§‡āĻˇ āĻ¨āĻž āĻšāĻ“āĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ†āĻ°āĻ“ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻ•āĻ°āĻŋāĨ¤ āĻ…āĻ¤āĻāĻŦ, āĻ¯āĻĻāĻŋ āĻ†āĻĒāĻ¨āĻŋ āĻšāĻ āĻžā§Ž āĻŦāĻžāĻ§āĻžāĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻšāĻ¨, āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ˛āĻ—āĻ‡āĻ¨ āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻŦā§‡āĻļ āĻ•āĻ°ā§āĻ¨ su laravel

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

āĻ†āĻŽāĻ°āĻž āĻ­āĻŋāĻŽā§‡ āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ āĻ–ā§āĻ˛āĻ˛āĻžāĻŽāĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻŸāĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•ā§‡āĻŦāĻžāĻ°ā§‡āĻ‡ āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤ āĻ¨āĻž āĻšāĻ¨ āĻ¤āĻŦā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ¨ā§āĻ¯āĻžāĻ¨ā§‹āĻ¤ā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨, āĻ†āĻĒāĻ¨āĻžāĻ° āĻ…āĻ§āĻŋāĻ•āĻžāĻ°.

āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻŽā§ŒāĻ˛āĻŋāĻ• 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)

āĻ†āĻĒāĻ¨āĻžāĻ° āĻ†āĻ‡āĻĒāĻŋāĻ¤ā§‡ āĻ¯āĻžāĻ¨āĨ¤ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ āĻŋāĻ•āĻ āĻžāĻ• āĻĨāĻžāĻ•āĻ˛ā§‡, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤āĻŸāĻŋ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤

āĻ‰āĻŦā§āĻ¨ā§āĻŸā§ āĻāĻŦāĻ‚ āĻāĻ¨āĻ—āĻŋāĻ¨ā§‡āĻ•ā§āĻ¸ā§‡ āĻ˛āĻžāĻ°āĻžāĻ­ā§‡āĻ˛ 7 āĻ āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

āĻŽāĻžāĻ‡āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

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

āĻāĻ–āĻ¨ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°āĻž āĻ¯āĻžāĻ•. 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

āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻĢāĻžāĻ¸ā§āĻŸāĻ¸āĻŋāĻœāĻŋāĻ†āĻ‡ āĻĒā§āĻ°āĻ¸ā§‡āĻ¸ āĻŽā§āĻ¯āĻžāĻ¨ā§‡āĻœāĻžāĻ° (āĻāĻĢāĻĒāĻŋāĻāĻŽ) āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĨ¤ mysql, āĻ…āĻŦāĻļā§āĻ¯āĻ‡, MySQL āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯āĨ¤

āĻāĻ–āĻ¨ āĻĨā§‡āĻ•ā§‡ āĻ†āĻŽāĻŋ 7.4-āĻ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ•āĻ°āĻŦāĨ¤

Nginx āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

  • sudo vim /etc/nginx/sites-available/<ВаŅˆ Đ´ĐžĐŧĐĩĐŊ>

"<Your domain>" āĻāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡ āĻĄā§‹āĻŽā§‡āĻ¨āĻŸāĻŋ āĻĒā§āĻ°āĻŦā§‡āĻļ āĻ•āĻ°āĻžāĻ¨ (āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, 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 index āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ āĻ¨āĻŋāĻ¨āĨ¤ āĻ¯āĻĻāĻŋ āĻĒāĻ°ā§‡ 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

āĻ†āĻĒāĻ¨āĻŋ āĻāĻ‡ āĻŽāĻ¤ āĻ•āĻŋāĻ›ā§ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻšāĻŦā§‡:

āĻ‰āĻŦā§āĻ¨ā§āĻŸā§ āĻāĻŦāĻ‚ āĻāĻ¨āĻ—āĻŋāĻ¨ā§‡āĻ•ā§āĻ¸ā§‡ āĻ˛āĻžāĻ°āĻžāĻ­ā§‡āĻ˛ 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 <ИĐŧŅ ĐŋŅ€ĐžĐĩĐēŅ‚Đ°>

āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻ†āĻĒāĻ¨āĻŋ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡. āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, Github āĻĨā§‡āĻ•ā§‡ āĻ•ā§āĻ˛ā§‹āĻ¨āĻŋāĻ‚āĨ¤

  • 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 āĻ āĻāĻ•āĻŸāĻŋ āĻĄā§‹āĻŽā§‡āĻ¨ āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ†āĻ¸āĻ˛ā§‡ āĻ–ā§āĻŦ āĻ¸āĻšāĻœ. āĻ†āĻĒāĻ¨āĻŋ āĻāĻ•āĻŸāĻŋ āĻĄā§‹āĻŽā§‡āĻ¨ āĻ•āĻŋāĻ¨ā§āĻ¨ (āĻ¯ā§‡āĻ•ā§‹āĻ¨ āĻœāĻžāĻ¯āĻŧāĻ—āĻžāĻ¯āĻŧ), āĻĄāĻŋāĻœāĻŋāĻŸāĻžāĻ˛ āĻ“āĻļā§‡āĻ¨ā§‡ āĻ¸ā§āĻ¯ā§āĻ‡āĻš āĻ•āĻ°ā§āĻ¨ āĻ¸ā§ƒāĻˇā§āĻŸāĻŋ->āĻĄā§‹āĻŽā§‡āĻ¨/DNSāĨ¤ В ĐŋĐžĐģĐĩ āĻāĻ•āĻŸāĻŋ āĻĄā§‹āĻŽā§‡āĻ‡āĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§āĻ¨ āĻ†āĻĒāĻ¨āĻŋ āĻāĻ‡ āĻĄā§‹āĻŽā§‡āĻ¨ā§‡ āĻĒā§āĻ°āĻŦā§‡āĻļ āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§āĻ¨ āĻ•ā§āĻ˛āĻŋāĻ• āĻ•āĻ°ā§āĻ¨. āĻ¤āĻžāĻ°āĻĒāĻ° āĻĄā§‹āĻŽā§‡āĻ‡āĻ¨ āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸ā§‡ āĻāĻŦāĻ‚ āĻĢāĻŋāĻ˛ā§āĻĄā§‡ āĻ¯āĻžāĻ¨ āĻšā§‹āĻ¸ā§āĻŸāĻ¨ā§‡āĻŽ āĻĒā§āĻ°āĻŦā§‡āĻļ āĻ•āĻ°āĻž @. āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ˛āĻŋāĻ• āĻ•āĻ°ā§āĻ¨ āĻ°ā§‡āĻ•āĻ°ā§āĻĄ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨.
āĻāĻ–āĻ¨ āĻ†āĻĒāĻ¨āĻŋ āĻ¯ā§‡ āĻ¸āĻžāĻ‡āĻŸā§‡ āĻĄā§‹āĻŽā§‡āĻ‡āĻ¨ āĻ•āĻŋāĻ¨ā§‡āĻ›ā§‡āĻ¨ āĻ¸ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ¯āĻžāĻ¨, āĻ¸ā§‡āĻ–āĻžāĻ¨ā§‡ "DNS āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°" āĻ–ā§āĻāĻœā§āĻ¨ (āĻŦāĻž āĻ…āĻ¨ā§āĻ°ā§‚āĻĒ āĻ•āĻŋāĻ›ā§) āĻāĻŦāĻ‚ DigitalOcean āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻĒā§āĻ°āĻŦā§‡āĻļ āĻ•āĻ°ā§āĻ¨ (āĻ¯ā§‡āĻŽāĻ¨ ns1.digitalocean.com, ns2.digitalocean.com, ns3.digitalocean.com) āĻāĻ–āĻ¨ āĻāĻ‡ āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸ āĻ—ā§ƒāĻšā§€āĻ¤ āĻ¨āĻž āĻšāĻ“āĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ•āĻŸā§ (āĻŦāĻž āĻ…āĻ¨ā§‡āĻ•) āĻ…āĻĒā§‡āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤!
āĻāĻ•āĻŽāĻžāĻ¤ā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻšāĻ˛ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¸āĻžāĻ‡āĻŸāĻŸāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° HTTP āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ–ā§āĻ˛āĻŦā§‡āĨ¤ HTTPS āĻĨāĻžāĻ•āĻ¤ā§‡, āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻ…āĻ‚āĻļā§‡ āĻ¯āĻžāĻ¨āĨ¤

HTTPS āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

āĻ¸āĻžāĻ°ā§āĻŸāĻŦāĻŸ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻāĻŸāĻŋāĻ•ā§‡ āĻĄā§‹āĻŽā§‡āĻ¨ āĻ¨āĻžāĻŽ āĻĒāĻžāĻ¸ āĻ•āĻ°ā§āĻ¨ (āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻŸ 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 āĻĒā§āĻ°āĻļāĻŋāĻ•ā§āĻˇāĻŖā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻšāĻŽā§ŽāĻ•āĻžāĻ° āĻ¸ā§āĻĒā§āĻ°āĻŋāĻ‚āĻŦā§‹āĻ°ā§āĻĄāĨ¤

āĻ˛ā§‡āĻ–āĻ•āĻ•ā§‡ āĻĒāĻŋāĻāĻ¸ āĻŦāĻŋāĻļā§‡āĻˇ āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ āĻāĻ‡ āĻ¸āĻžāĻ°āĻžāĻ‚āĻļ, āĻ¯āĻž āĻ‰āĻĒāĻ°ā§‡āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•āĻ°ā§āĻŽā§‡āĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĻ›ā§‡āĨ¤ āĻ•āĻŋāĻ›ā§ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻāĻŸāĻŋ Laravel 7 āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ āĻ¨āĻž, āĻ†āĻŽāĻŋ āĻāĻŸāĻŋ āĻ āĻŋāĻ• āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤

PPS āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻ•āĻœāĻ¨ āĻļā§€āĻ°ā§āĻˇ āĻĒā§āĻ°āĻ•ā§ŒāĻļāĻ˛ā§€ āĻšāĻ¨ āĻ¯āĻŋāĻ¨āĻŋ āĻŦā§āĻ¯āĻžāĻļ āĻ•āĻŽāĻžāĻ¨ā§āĻĄā§‡ āĻšāĻŋāĻ¨ā§āĻ¤āĻž āĻ•āĻ°ā§‡āĻ¨, āĻĻāĻ¯āĻŧāĻž āĻ•āĻ°ā§‡ āĻ•āĻ ā§‹āĻ°āĻ­āĻžāĻŦā§‡ āĻŦāĻŋāĻšāĻžāĻ° āĻ•āĻ°āĻŦā§‡āĻ¨ āĻ¨āĻžāĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻŽā§āĻ¨ āĻ¸ā§āĻ¤āĻ°ā§‡āĻ° āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻŽāĻŋ āĻ¯āĻ–āĻ¨ āĻāĻŸāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻāĻ•āĻŸāĻŋ āĻ–ā§āĻāĻœā§‡ āĻĒā§‡āĻ¯āĻŧā§‡ āĻ–ā§āĻļāĻŋ āĻšāĻ¤āĻžāĻŽāĨ¤ āĻ¯āĻĻāĻŋ āĻ‰āĻ¨ā§āĻ¨āĻ¤āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĨāĻžāĻ•ā§‡ āĻ¤āĻŦā§‡ āĻ†āĻŽāĻŋ āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŦāĻ‡ āĻ†āĻ›āĻŋāĨ¤

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨