рдореА Laravel 7 рд╡рд╛рдкрд░реВрди рдорд╛рдЭрд╛ рдкреЛрд░реНрдЯрдлреЛрд▓рд┐рдУ рдмрдирд╡рдгреНрдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рдШреЗрддрд▓рд╛. рдЬреЗрдгреЗрдХрд░реВрди рдореБрдЦреНрдп рдкреГрд╖реНрда рд╣реЗ рд▓рдБрдбрд┐рдВрдЧ рдкреГрд╖реНрда рдЕрд╕реЗрд▓ рдЖрдгрд┐ рддреНрдпрд╛рд╡рд░реАрд▓ рд╕рд░реНрд╡ рдорд╛рд╣рд┐рддреА рдЕреЕрдбрдорд┐рди рдкреЕрдиреЗрд▓ рд╡рд╛рдкрд░реВрди рдмрджрд▓рддрд╛ рдпреЗрдИрд▓. рдореБрджреНрджрд╛ рдирд╛рд╣реА. рддреЗ рддреИрдирд╛рддреАрдХрдбреЗ рдЖрд▓реЗ. рд╕рд░реНрд╡ рд╕рдорд╕реНрдпрд╛рдВрд╕рд╣ рдкреВрд░реНрдг рд╡рд╛рдв рдЭрд╛рд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рд╣реЗ рдХрд╕реЗ рдХрд░рд╛рд╡реЗ рдпрд╛рдмрджреНрджрд▓ рдорд▓рд╛ рджреЛрди рдЪрд╛рдВрдЧрд▓реЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╕рд╛рдкрдбрд▓реЗ. рдореА рддреИрдирд╛рддреАрдордзреНрдпреЗ рдлрд╛рд░ рдордЬрдмреВрдд рдирд╛рд╣реА; рдореА рд╕рд╛рдорд╛рдиреНрдпрддрдГ рдкреВрд░реНрдг рд╕реНрдЯреЕрдХрдкреЗрдХреНрд╖рд╛ рдЕрдзрд┐рдХ рд╕рдореЛрд░ рдЕрд╕рддреЛ. рдЖрдгрд┐, рдЬрд░ рдореА рдЕрдЬреВрдирд╣реА PHP рдордзреНрдпреЗ рд▓рд┐рд╣реВ рдЖрдгрд┐ рдЪрд╛рдЪрдгреА рдХрд░реВ рд╢рдХрд▓реЛ, рддрд░ рд╕рд░реНрд╡реНрд╣рд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА рдЗ. рдореА рдЕрдЬреВрди рдореЛрдард╛ рдЭрд╛рд▓реЛ рдирд╛рд╣реА. рдкрдг рдорд▓рд╛ рддреЗ рдмрд╛рд╣реЗрд░ рдХрд╛рдврд╛рдпрдЪреЗ рд╣реЛрддреЗ.
рдЖрддрд╛ рдЖрдореНрд╣реА рд╕рд░реНрд╡ рдкрд╛рдпрд▒реНрдпрд╛ рдкрд╛рд░ рдХрд░реВ, SSH рджреНрд╡рд╛рд░реЗ рд▓рд╛рдБрдЪ рдХрд░реВрди рдЖрдгрд┐ рдХрд╛рд░реНрдпрд░рдд рд╕рд╛рдЗрдЯрд╕рд╣ рд╕рдорд╛рдкреНрдд. рдЖрдореНрд╣реА рд╕рд░реНрд╡ рдЕрдбрдЪрдгреА рдЯрд╛рд│рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реВ.
рддреБрдореНрд╣рд╛рд▓рд╛ рддрддреНрд╕рдо рд╕реВрдЪрдирд╛ рдСрдирд▓рд╛рдЗрди рдорд┐рд│реВ рд╢рдХрддрд╛рдд. рд╢реЗрд╡рдЯреА, рдорд▓рд╛ рддреЗ рд╕рд╛рдкрдбрд▓реЗ. рдЦрд░реЗ рдЖрд╣реЗ, рдПрдХрд╛рдЪ рдард┐рдХрд╛рдгреА рдирд╛рд╣реА, рд╕реНрдЯреЕрдХрдУрд╡реНрд╣рд░рдлреНрд▓реЛрдЪреНрдпрд╛ рдорджрддреАрд╢рд┐рд╡рд╛рдп рдирд╛рд╣реА рдЖрдгрд┐ рд░рд╢рд┐рдпрди рднрд╛рд╖реЗрдд рдХреНрд╡рдЪрд┐рддрдЪ. рдорд▓рд╛ рддреНрд░рд╛рд╕ рдЭрд╛рд▓рд╛. рдореНрд╣рдгреВрдирдЪ рдореА рддреБрдордЪреЗ рдЬреАрд╡рди рд╕реЛрдкреЗ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рдШреЗрддрд▓рд╛ рдЖрд╣реЗ.
рдЖрдореНрд╣реА DigitalOcean рд╡рд░ рдбреНрд░реЙрдкрд▓реЗрдЯрд╕рд╣ рд╕рд░реНрд╡рдХрд╛рд╣реА рдХрд░реВ. рд╣реЗ рдЕрд░реНрдерд╛рддрдЪ рдЖрд╡рд╢реНрдпрдХ рдирд╛рд╣реА; рдХреЛрдгрддреЗрд╣реА рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдирд┐рд╡рдбрд╛. рддреБрдореНрд╣реА рдЙрдмрдВрдЯреВрд╡рд░ рдХрд╛рд░реНрдпрд░рдд рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдкреЛрд╣реЛрдЪрд▓реНрдпрд╛рд╡рд░, рдкрд░рдд рдпрд╛. рдЬреЗ рдЕрдЬреВрдирд╣реА 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;
}
}
Laravel рд╕рд╛рдареА рдлрдХреНрдд 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;
}
}
Laravel рд╕рд╛рдареА 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 рдХреА рдиреЛрдВрджрдгреА рдХрд░рд╛
рдорд▓рд╛ рдЦрд░реЛрдЦрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдЖрд╣реЗ рдХреА рддреБрдореНрд╣реА рд╕реНрд╡рддрдГ рдбрд┐рдЬрд┐рдЯрд▓рдУрд╢рдирдордзреНрдпреЗ рдиреЛрдВрджрдгреА рдХрд╢реА рдХрд░рд╛рд╡реА рд╣реЗ рд╕рдордЬреВрди рдШреНрдпрд╛рд▓. рдкреБрд╖реНрдХрд│ рдкрдбрддрд╛рд│рдгреА рдЖрдгрд┐ рдЗрддрд░ рдЧреЛрд╖реНрдЯреАрдВрд╕рд╣ рд╣реЗ рд╕реЛрдкреЗ рдирд╛рд╣реА. рджрд╕реНрддрдРрд╡рдЬрд╛рдВрдЪреА рдкрдбрддрд╛рд│рдгреА рдХрд░рддрд╛рдирд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рддрдд рдиреЗрдЯрд╡рд░реНрдХ рдПрд░рд░ рдпреЗрдд рдЕрд╕рд▓реНрдпрд╛рд╕, 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
- рддреБрдордЪрд╛ рдкрд╛рд╕рд╡рд░реНрдб рдЖрдгрд┐ рдЗрддрд░ рдорд╛рд╣рд┐рддреА рдПрдВрдЯрд░ рдХрд░рд╛ (рдореА рдлрдХреНрдд рдкреВрд░реНрдг рдирд╛рд╡ рдПрдВрдЯрд░ рдХрд░рд╛)
- рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд▓рд╛ sudo рдЧрдЯрд╛рдд рдЬреЛрдбрд╛:
usermod -aG sudo laravel
рдирд╡реАрди рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд╕рд╛рдареА SSH
- рдирд╡реАрди рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд╡рд░ рд╕реНрд╡рд┐рдЪ рдХрд░рд╛:
su laravel
рдЖрдореНрд╣реА laravel рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪреНрдпрд╛ рд╡рддреАрдиреЗ рд▓реЗрдЦрд╛рдЪреНрдпрд╛ рд╢реЗрд╡рдЯрдкрд░реНрдпрдВрдд рдкреБрдвреАрд▓ рд╕рд░реНрд╡ рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЛ. рдореНрд╣рдгреВрди, рдЬрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрдЪрд╛рдирдХ рд╡реНрдпрддреНрдпрдп рдЖрд▓рд╛ рдЕрд╕реЗрд▓ рддрд░, рдкреБрдиреНрд╣рд╛ рд▓реЙрдЧрд┐рди рдХрд░рд╛ рдЖрдгрд┐ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░рд╛ su laravel
mkdir ~/.ssh
chmod 700 ~/.ssh
vim ~/.ssh/authorized_keys
рдЖрдореНрд╣реА Vim рдордзреНрдпреЗ рдлрд╛рдЗрд▓ рдЙрдШрдбрд▓реА. рддреБрдордЪреА рдЕрдЬрд┐рдмрд╛рдд рдУрд│рдЦ рдирд╕реЗрд▓ рддрд░ рддреБрдордЪрд╛ рд╣рдХреНрдХ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдиреЕрдиреЛрдордзреНрдпреЗ рдХрд╛рдо рдХрд░рддрд╛ рдпреЗрдИрд▓.
рд╕рд░реНрд╡рд╛рдд рдореВрд▓рднреВрдд Vim рдЖрдЬреНрдЮрд╛
рд╕рдВрдкреВрд░реНрдг рд▓реЗрдЦрд╛рдд Vim рд╕рдВрдкрд╛рджрдХ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд рдЦрд╛рд▓реАрд▓ рдЧреЛрд╖реНрдЯреА рдорд╛рд╣рд┐рдд рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.
- 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 рд╡рд░ рдЬрд╛. рд╕рд░реНрд╡ рдХрд╛рд╣реА рдареАрдХ рдЕрд╕рд▓реНрдпрд╛рд╕, рдЖрдкрдг рдЦрд╛рд▓реАрд▓ рдкрд╣рд╛рд╡реЗ.
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 рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ (fpm) PHP рд╡рд┐рдирдВрддреНрдпрд╛рдВрд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рддреЗ. 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
рдЗрдВрдбреЗрдХреНрд╕ рдлрд╛рдЗрд▓ рдШреНрдпрд╛. рдЬрд░ рдирдВрддрд░ 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
рдЖрдкрдг рдЕрд╕реЗ рдХрд╛рд╣реАрддрд░реА рдкрд╣рд╛рд╡реЗ:
рдЖрддрд╛ рд╣реА рдлрд╛рдИрд▓ рд╣рдЯрд╡рд┐рд▓реА рдЬрд╛рдК рд╢рдХрддреЗ: 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 <╨Ш╨╝╤П ╨┐╤А╨╛╨╡╨║╤В╨░>
рдкреБрдвреЗ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдкреНрд░рдХрд▓реНрдк рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЧрд┐рдердм рд╡рд░реВрди рдХреНрд▓реЛрдирд┐рдВрдЧ.
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 рд▓рд╛ рдЦреЛрдЯреНрдпрд╛рдиреЗ рдмрджрд▓рд╛ рдЖрдгрд┐ 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
рд╢реЗрд╡рдЯрдЪреА рдЧреЛрд╖реНрдЯ рдореНрд╣рдгрдЬреЗ Laravel рд╕рд╛рдареА 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;
}
}
рдорд╛рдЧреАрд▓ рд╡реЗрд│реЗрдкреНрд░рдорд╛рдгреЗ, рддреБрдореНрд╣реА рддреНрдпрд╛рдРрд╡рдЬреА рдЖрд╡реГрддреНрддреА рен.рей рдирд┐рд╡рдбрд▓реНрдпрд╛рд╕ 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 рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛ рдЖрдгрд┐ рддреНрдпрд╛рд╕ рдбреЛрдореЗрди рдирд╛рд╡ рдкрд╛рд╕ рдХрд░рд╛ (рд╕реНрд╡рд░реВрдк 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 рд╣реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдгрд╛рд╕рд╛рдареА рдЙрддреНрдХреГрд╖реНрдЯ рд╕реНрдкреНрд░рд┐рдВрдЧрдмреЛрд░реНрдб рдЖрд╣реЗ.
рдкреБрдирд╢реНрдЪ рд▓реЗрдЦрдХрд╛рдЪреЗ рд╡рд┐рд╢реЗрд╖ рдЖрднрд╛рд░
PPS рдЬрд░ рддреБрдореНрд╣реА рдЙрдЪреНрдЪ рдЕрднрд┐рдпрдВрддрд╛ рдЕрд╕рд╛рд▓ рдЬреЛ рдмреЕрд╢ рдХрдорд╛рдВрдбрдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЛ, рддрд░ рдХреГрдкрдпрд╛ рдХрдареЛрд░рдкрдгреЗ рдирд┐рд░реНрдгрдп рдШреЗрдК рдирдХрд╛. рддреБрдореНрд╣рд╛рд▓рд╛ рд╣рд╛ рд▓реЗрдЦ рдЦрд╛рд▓рдЪреНрдпрд╛ рдкрд╛рддрд│реАрд╡рд░рдЪрд╛ рд╡рд╛рдЯреВ рд╢рдХрддреЛ, рдкрд░рдВрддреБ рдЬреЗрд╡реНрд╣рд╛ рдорд▓рд╛ рддреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕реЗрд▓ рддреЗрд╡реНрд╣рд╛ рдорд▓рд╛ рдПрдХ рд╢реЛрдзреВрди рдЖрдирдВрдж рдЭрд╛рд▓рд╛ рдЕрд╕рддрд╛. рд╕реБрдзрд╛рд░рдгреЗрд╕рд╛рдареА рдХрд╛рд╣реА рд╕реВрдЪрдирд╛ рдЕрд╕рд▓реНрдпрд╛рд╕, рдореА рддреНрдпрд╛рд╕рд╛рдареА рд╕рд░реНрд╡ рдХрд╛рд╣реА рдЖрд╣реЗ.
рд╕реНрддреНрд░реЛрдд: www.habr.com