Laravel 7 ááᯠá¡áá¯á¶ážááŒá¯á áá»áœááºá¯ááºá á¡á á¯á á¯ááᯠááŒá¯áá¯ááºááẠáá¯á¶ážááŒááºáá²á·áááºá ááá¯á·ááŸáᬠáááºáá á¬áá»ááºááŸá¬ááẠáááºážáááºááá·áº á á¬áá»ááºááŸá¬ááŒá áºáááºááŸáá·áº áááºážááŸá á¡áá»ááºá¡áááºá¡á¬ážáá¯á¶ážááᯠá á®áá¶ááá·áºááœá²áá°áá±á¬ááºááᯠá¡áá¯á¶ážááŒá¯á ááŒá±á¬ááºážáá²ááá¯ááºáááºá á¡ááŸááºáá±á¬á· ááá¯ááºáá°ážá áááºááŒáá·áºááá¯á· áá±á¬ááºáá¬áááºá ááŒá¿áá¬áá±á«ááºážá á¯á¶áá²á· ááŒáá·áºááŒáá·áºá á¯á¶á á¯á¶ááŸááá²á· áá¬áá¬ááŸá¬ áá«ááᯠáááºááá¯áá¯ááºáááá²ááá¯áá²á· áááºáááºážá á¬áá±á¬ááºážáá±á¬ááºážááŸá áºáá¯ááᯠáá«ááœá±á·áá²á·áááºá áá»áœááºá¯ááºááẠááŒáá·áºáá»ááºáá¬ááœáẠááááºá¡á¬ážááááºáá«á áá±áá¯áá»á¡á¬ážááŒáá·áº áá»áœááºá¯ááºááẠá¡ááŒáá·áºá¡áááẠááŸá±á·áááºážááá¯áá«áááºá PHP ááŸá¬ áá±ážááŒá®áž á ááºážáááºááá¯ááºááẠáá¬áá¬ááᯠáá á®áá¶ááá·áºááœá²áááºá áá«áááŒá®ážááœá¬ážáá±ážáá°ážá áá«áá±ááá·áº áá«á¡á²áá«ááᯠá¡ááŒá±ááŸá¬áá²á·ááááºá
ááᯠáá»áœááºá¯ááºááá¯á·ááẠSSH ááŸáá áºááá·áº á áááºááŒá®áž á¡áá¯ááºáá¯ááºááá·áºááá¯ááºááŒáá·áº á¡áá¯á¶ážáááºááá·áº á¡ááá·áºá¡á¬ážáá¯á¶ážááᯠááŒááºáááºážáá«áááºá áá¯áá¹áááœá±á¡á¬ážáá¯á¶ážááᯠááŸá±á¬ááºááŸá¬ážááá¯ááºá¡á±á¬áẠááŒáá¯ážá á¬ážááœá¬ážáááºá
á¡áá¬ážáá° ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááᯠá¡áœááºááá¯ááºážááœáẠáááºááŸá¬ááœá±ááá¯ááºáá«áááºá áá±á¬ááºáá¯á¶ážáá±á¬á· áá«ááœá±á·áááºá StackOverflow áá¡áá°á¡áá®ááá«áá² áá áºáá±áá¬áááºážááœáẠááá¯ááºáá² áá¯ááŸá¬ážáá¬áá¬ááŒáá·áº áá²áááºážáááºá áá¶á á¬ážáá²á·ááááºá á¡á²áá«ááŒá±á¬áá·áº áááºážááááᯠááá¯ážááŸááºážá¡á±á¬ááºáá¯ááºááá¯á· áá¯á¶ážááŒááºááá¯ááºáááºá
áá»áœááºá¯ááºááá¯á·ááẠDigitalOcean ááœáẠá¡á
ááºáá
áºá
ááºááŒáá·áº á¡áá¬á¡á¬ážáá¯á¶ážááᯠáá¯ááºáá±á¬ááºáá«áááºá á€áááºááŸá¬ áááá¯á¡ááºáá«á áááºááá·áº hosting ááá¯áááᯠááœá±ážáá»ááºáá«á Ubuntu ááœááºá¡áá¯ááºáá¯ááºáá±á¬áá¬áá¬ááá¯á·áá±á¬ááºááŸááá±á¬á¡áá«á ááŒááºáá¬áá«á 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
Firewall
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 áá±á¬á·á¡áá áºáá áºáá¯ááᯠááŸááºáá¯á¶áááºáá«á
áááºááá¯ááºááá¯áẠDigitalOcean ááŒáá·áº á á¬áááºážááœááºážáááºážááᯠá¡ááŒá±ááŸá¬ááá¯ááºáááºáᯠáá»áœááºá¯áẠá¡ááŸááºáááẠáá¯á¶ááŒááºáá«áááºá á áá á áºááŸá¯áá»á¬ážááŸáá·áº á¡ááŒá¬ážá¡áá¬áá»á¬ážá áœá¬ááŒáá·áº ááœááºáá°áááºááá¯ááºá á á¬ááœááºá á¬áááºážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á á á áºáá±ážáá¬ááœáẠááœááºáááºá¡ááŸá¬ážá¡ááœááºážáá»á¬áž á¡áááºáááŒááºáááŸááá«á VPN ááŸáá áºááá·áº á¡áá¬á¡á¬ážáá¯á¶ážááᯠáá¯ááºáá±á¬ááºááŒáá·áºáá«á á¡áá±á¬ááºá¡áá°ááŒá áºááá·áºáááºá
á¡áá±á«áºáá¯á¶ážááŸá áá®áá°ážááœáẠááŸáááºáá«á áááºáá®áž->ááœá². ááœá±ážáá«á Ubuntu ááá¯.
á á¬áááºážááœááºážááŒá®ážáá¬áá²á· ááá·áºá¡áá±á¬áá·áºáá²ááᯠ$100 áááŸáááŸá¬ááŒá áºáá«áááºá áá«áá±ááá·áº áááŸáá·áºá á¬ážáá«áá²á·á áááºážááá¯áá¯á¶ážááẠááá·áºááœáẠááẠ60 áá¬ááŸááááºá ááŒá®ážáá±á¬á· áá«á á¡áááºážáááºážáááºá áá»áœááºá¯ááºáá²á·ááá¯á· áááºážá ááá¯á á»á±ážááŒá®ážáá²á· á¡á á®á¡á ááºááᯠáá¯á¶ážáá»ááºáááºá áá«á០áá±á¬ááºááá¯ááºážááŸá¬á ááœá±á¡á á áºá¡ááŸáẠá áááºá á®ážáááºážáá¬áá²á·á¡áá«á á á»á±ážáááºáá¬áá²á· á¡á á®á¡á ááºááᯠááŒá±á¬ááºážááá¯ááºááŸá¬áá«á á¡áá¯ááºáááŒá áºáá°ážááá¯á· áá»ááºááŒááºážááŒá±á¬áááºá ááá¯ážááá¯ááºáá±ááá·áº áá»áŸá±á¬á·ááá¯á·áááá°ážá áá«ááᯠááœá¬ážáá«ááŒá®á áá«ááœá±ážáááºá á á¶->$5.
áá«ááá¯á·áá²á· á¡áá®ážáá¯á¶ážáá±áááᯠáá«ááœá±ážáááºá Frankfurt. VPC ááœááºáááº->áá°áááºáž-fra1
áá»áœááºá¯ááºááá¯á·ááẠSSH ááŸáá áºááá·áº á á áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬ážááŒááŒááºážááᯠáá»ááºáá»ááºážáá¯ááºáá±á¬ááºáá«áááºá ááŸáááºáá«á SSH áá®ážá¡áá áº. ááá·áºááœáẠSSH áááŸááá«áá áá¬áááºááœáẠá¡ááœááºááá¯ážááŸááºážáá±á¬ ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááŸááááºá bash terminal ááá¯ááœáá·áºááŒá®áž paste áá¯ááºáá«á
ssh-keygen
. ááŒá®ážááẠpublic key áá²á· ááá¯ááºááá¯ááœá¬ážáá«á/Users/<ÐаÑе ÐžÐŒÑ Ð¿ÐŸÐ»ÑзПваÑелÑ>/.ssh/id_rsa.pub
(ááá¯á·ááá¯ááºááá¯ážááá¯ážáá±ážcat ~/.ssh/id_rsa.pub
) á¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááᯠáá±á¬áºáá®áá°ážááŒá®áž áááºáááºááŸá áááºážááá¯ážááœáẠáá°ážááá·áºáá«á áá¬áááºáá áºáá¯áá¯áá¡á ááºá¡ááŒá±á¬ááºá¡ááœáẠáááºáá¬ááá¬á¡áááºáá áºáᯠáá±á«áºáá¬áá«áááºá
á á¬áááºáááºážáá»á¬áž Droplet áááºáá®ážáá«á
á¡áá¯á¶ážááŒá¯áá°á¡áá áºáááºáá®ážáá«á
ssh root@[IP-аЎÑÐµÑ Ð²Ð°ÑегП ÐŽÑПплеÑа]
- (áá¯ááº/ááá¯ááº/[áááºááœá±]) ááᯠáááºáááºáá»áááºáááºááá¯áááºááŸá¬ áá±áá»á¬áá«ááá¬ážá
yes
- áááºá SSH á áá¬ážááŸááºááᯠááá·áºáá«á
- á¡áá¯á¶ážááŒá¯áá°áááºáá®ážáá«á ááá¯ážáá±á¬ááºáž:
adduser laravel
- ááá·áºá áá¬ážááŸááºááŸáá·áº á¡ááŒá¬ážá¡áá»ááºá¡áááºáá»á¬ážááᯠááá·áºááœááºážáá« (áá»áœááºá¯ááºááẠáá¬áááºá¡ááŒáá·áºá¡á á¯á¶ááá¯áᬠááá·áºáá«)
- á¡áá¯á¶ážááŒá¯áá°ááᯠsudo á¡á¯ááºá
á¯ááá¯á· ááá·áºáá«-
usermod -aG sudo laravel
á¡áá¯á¶ážááŒá¯áá°á¡áá áºá¡ááœáẠSSH
- á¡áá¯á¶ážááŒá¯áá°á¡áá
áºááá¯á· ááŒá±á¬ááºážáá«-
su laravel
laravel á¡áá¯á¶ážááŒá¯áá°ááá¯ááºá
á¬áž áá±á¬ááºážáá«ážá¡áá¯á¶ážá¡áá áá¯ááºáá±á¬ááºáá»ááºá¡á¬ážáá¯á¶ážááᯠáááºáááºáá±á¬ááºááœááºáá«áááºá ááá¯á·ááŒá±á¬áá·áº áááºááẠáá¯ááºáááẠá¡ááŸá±á¬áá·áºá¡ááŸááºááŒá
áºáá»áŸáẠááŒááºáááºáááºáá±á¬ááºááŒá®áž áááºáá±á¬ááºáá«á su laravel
mkdir ~/.ssh
chmod 700 ~/.ssh
vim ~/.ssh/authorized_keys
ááá¯ááºááᯠVim. á¡á²áá«ááᯠáá¯á¶ážáááááá±ážááẠNano ááŸá¬ á¡áá¯ááºáá¯ááºááá¯á· ááá«áááºá.
á¡ááŒá±áá¶á¡áá»áá¯á¶áž Vim commands áá»á¬áž
áá±á¬ááºážáá«ážáá áºáá»áŸá±á¬ááºáá¯á¶áž Vim editor ááá¯á¡áá¯á¶ážááŒá¯áááºá¡ááœááºá áááºááẠá¡á±á¬ááºáá«ááá¯á·ááᯠáááááºááá¯á¡ááºáá«áááºá
- Vim ááœáẠááá°áá®áá±á¬áá¯ááºáá»á¬áž ááŸááááº- áá¯á¶ááŸááºáá¯ááºá áááºááẠá¡áááá·áºáá±ážáá»ááºáá»á¬ážááᯠááá·áºááœááºážááŒá®áž áá¯ááºáá»á¬ážááŸáá·áº á¡ááŒá¬ážá¡áá¬áá»á¬ážááᯠááœá±ážáá»ááºáá«á
- áááºááá·áºáá¯ááºá០ááœááºááŒá®áž áá¯á¶ááŸááºáá¯ááºááá¯á· ááŒááºááœá¬ážáááºá ááŸáááºáá¯á¶áá¬ááŒá
áºáááºá
Esc
- ááœáŸá±á·áá«- ááŒáŸá¬ážáá»á¬ážááá¯áᬠáá¯á¶ážááá¯ááºáááºá
- áááááºážáá² ááœááºááá¯ááºáá«á
<Normal mode>
::q!
- ááœááºááŒá®áž ááááºážáá«á
<Normal mode>
::wq
- á
á¬áá¬ážááá·áºááœááºážááŸá¯áá¯ááºááá¯á· ááŒá±á¬ááºážáá«á
<Normal mode>
:i
(á¡ááºá¹áááááºááŸ) ááá·áºááœááºáž)
- áá»áœááºá¯ááºááá¯á·á á¡áá»á¬ážáá°ááŸá¬áá±á¬á·ááᯠááá·áºáá« (á¡áááºáá«á¡ááá¯ááºáž)
- á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááᯠáá»áœááºá¯ááºááá¯á· áá¬ááœááºáááº-
chmod 600 ~/.ssh/authorized_keys
Firewall áááºáááºááŒááºážá
- áááŸáááá¯ááºáá±á¬ áááºáááºáá»á¬ážá¡á¬ážáá¯á¶ážááᯠááŒáá·áºááŒáá«á
áá¯á·á
sudo ufw app list
- OpenSSH ááᯠááœáá·áºááŒá¯áá« (ááá¯á·ááá¯ááºáá«á áááºážááẠáá»áœááºá¯ááºááá¯á·á¡á¬áž áá±á¬á·ááºáá»áááá·áºáááº)
sudo ufw allow OpenSSH
- Firewall ááá¯ááœáá·áºááŒáá«á
áá¯á·á
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
Firewall áááºáááºáá»á¬ážááá¯á· 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
- á¡ááá¯á¡áá»á±á¬áẠá¡áá¬á¡ááœáẠscript ááᯠá
áááºáá±áá«áááºá
sudo mysql_secure_installation
áá±ážáá²á·áá±ážááœááºážááœá±ááᯠááŒá±áá«á áááºáá¬ááŒá±áááŸááºážááááá«áá á¡ááŒá¶ááŒá¯áá¬ážáá±á¬ááœá±ážáá»ááºá áá¬á¡áá»áá¯á·ááŸá¬ á¡á±á¬ááºáá«á¡ááá¯ááºážááŒá áºáááº-
-
á áá¬ážááŸááºááááºá¡ááºááᯠá¡áááºááŒá¯áá« -
N
-
á¡áááºáááá¡áá¯á¶ážááŒá¯áá°áá»á¬ážááᯠáááºááŸá¬ážááá¬ážá â
Y
-
á¡áá±ážá០á¡ááŒá áºáááºáá±á¬ááºááŒááºážááᯠááœáá·áºáááŒá¯áá°ážáá¬ážá â
N
-
á ááºážáááºáá±áá¬áá±á·á áºááᯠáááºááŸá¬ážááŒá®áž áááºážááᯠáááºáá±á¬ááºá¡áá¯á¶ážááŒá¯ááá¯áá«ááá¬ážá â
N
-
á¡áá°ážá¡ááœáá·áºá¡áá±ážááá¬ážáá»á¬ážááᯠááᯠááŒááºáááºá áááºááá¯áá«ááá¬ážá â
Y
-
MySQL ááá¯ááœá¬ážáá¡á±á¬ááºá
sudo mysql
-
á¡áá¯á¶ážááŒá¯ááœáá·áºáááºážáááºážáá»á¬ážááᯠááŒáá·áºááŒáá«á áá¯á·á
SELECT user,authentication_string,plugin,host FROM mysql.user;
-
root á¡ááœáẠá áá¬ážááŸááºáá áºáᯠáááºááŸááºáá«-
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 ááᯠââááá·áºááœááºážááŒááºážá
Third-party repository ááá± áá¯á¶ážááŒáá·áºáá¡á±á¬ááº
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>" á¡á
á¬áž 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
.
Port 80 ááᯠááœáá·áºááŒá®áž áá¬ážáá±á¬ááºáá«á server_name
root áá±á¬ááºážááá¯ááŸá¯ááá¯á·áá±á¬ááºááŸááá±á¬á¡áá« /var/www/html
á¡ááœáŸááºážááá¯ááºááá¯áá°áá«á ááŒá®ážááá¯á·ááŸáááẠserver_name
áá
áºáá¯áá¯ááŸááá«áááºá áá«ááá¯á·áááºááá¯áá²á·ááá¯á·áá±á¬ááá¯ááºááá¯ááŸá¬ááœá±áá±áá«áááºá áááœá±á·ááẠ404 áá²á· á¡áá¯á¶ážáááºáááºá .php
, ááŒá±áž fpm
... ááŸááá»áŸáẠ.ht
á(ááá)á
- ááá·áºááá± áá¯ááºáá±áá«áááºá
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 ááᯠinstall áá¯ááºáá«á
-
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
-
á¡áááºááŒáá·áº áá±áá¬áá±á·á áºáá áºáá¯ááᯠáááºáá®ážáá«á ááá¯ážáá±á¬ááºáž:
CREATE DATABASE laravel DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
-
áá»áœááºá¯ááºááá¯á·ááẠroot access ááá¯áá±ážáá«áááºá ááá¯ážáá±á¬ááºáž:
GRANT ALL ON laravel.* TO 'root'@'localhost' IDENTIFIED BY '<ÐÐ°Ñ Ð¿Ð°ÑÐŸÐ»Ñ ÐŸÑ MySQL>';
-
FLUSH PRIVILEGES;
-
exit
-
cd /var/www/html
-
ááá±á¬áá»ááºá¡ááœáẠááá¯ááºááœá²áá áºáᯠáááºáá®ážáá«-
sudo mkdir -p <ÐÐŒÑ Ð¿ÑПекÑа>
-
áá»áœááºá¯ááºááá¯á·ááẠá¡áá¯á¶ážááŒá¯áá°ááᯠáá±ážáá±á¬ááºáááºá ááá¯ážáá±á¬ááºáž ááá±á¬áá»ááºá¡ááœáẠáá¯ááºááá¯ááºááœáá·áºáá»á¬áž-
sudo chown laravel:laravel <ÐÐŒÑ Ð¿ÑПекÑа>
ááá¯á·áá±á¬áẠááá±á¬áá»ááºááᯠááœáŸá²ááŒá±á¬ááºážááẠááá¯á¡ááºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá Github á០cloning á
cd ./<ÐÐŒÑ Ð¿ÑПекÑа>
git clone <ÑÑÑлка Ма пÑПекÑ> .
á¡áááºá áááºááẠstatic ááá¯ááºáá»á¬ážááá¯áááááºážáááºážáá²á·áá«á (á¥ááá¬á á០/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;
}
}
á¡áááºá áááºááẠáá¬ážááŸááºáž 7.3 ááᯠá¡á
á¬ážááá¯ážáá«á ááááºá¡áá»áááºáá²á·ááá¯á·ááẠááŒá
áºáááºá php7.4-fpm.sock
áá±ážáá«á php7.4-fpm.sock
.
DigitalOcean ááœáẠááá¯ááááºážáá áºáᯠáááºááŸááºááŒááºážá
á¡áá¬á¡á¬ážáá¯á¶ážáᬠááááºáá±á¬á· á¡áááºážááá¯ážááŸááºážáá«áááºá áááºááẠááá¯ááááºážáá áºáᯠ(áááºáá±áá¬ááŸá¬áááᯠáááºáá«)á DigitalOcean ááá¯á· ááŒá±á¬ááºážáá«á áááºáá®áž->ááá¯ááááºáž/DNSááá Пле ááá¯ááááºážáá áºáá¯ááá·áºáá«á áááºááẠá€ááá¯ááááºážááᯠááá·áºááœááºážááŒá®áž add ááá¯ááŸáááºáá«á ááá¯á·áá±á¬áẠááá¯ááááºážáááºáááºáá»á¬ážááŸáá·áº á¡ááœááºááá¯á·ááœá¬ážáá«á áááºáá¶áá°á¡ááẠáááºáá«á @. ááá±á¬áá»ááºáá áºáá¯ááᯠááœá±ážáá»ááºááŒá®áž ááá áºááŸáááºáá«á ááŸááºáááºážáááºáá®ážáá«á.
ááᯠááẠááá¯ááááºážááᯠáááºáá°ááá·áº ááá¯ááºááá¯á· ááœá¬ážáá«á ááá¯áá±áá¬ááœáẠâDNS áá¬áá¬áá»á¬ážâ ááᯠááŸá¬áá« (ááá¯á·ááá¯áẠá¡áá¬ážáá° áá áºáá¯áá¯) ááŸáá·áº DigitalOcean áá¬áá¬áá»á¬ážááᯠááá·áºáá« (ááá¯ááá¯áááºááŸá¬áns1.digitalocean.com
,ns2.digitalocean.com
,ns3.digitalocean.com
) ááá¯á€áááºáááºáá»á¬ážááá¯áááºáá¶áááºá¡áááááºá¡áááºážááẠ(ááá¯á·ááá¯ááºá¡áá»á¬ážááŒá®áž) á á±á¬áá·áºáááºááá¯á¡ááºáááºá á¡áááºááá·áºá
áá áºáá¯áááºážáá±á¬ááŒá¿áá¬ááŸá¬ ááá·áºááá¯ááºááᯠHTTP á¡ááŒá áºáᬠááœáá·áºáá¬ážááŒááºážááŒá áºáááºá HTTPS ááŸááááºá áá±á¬ááºá¡ááá¯ááºážááá¯á· áááºááœá¬ážáá«á
HTTPS á áá áºááá·áºááœááºážááŒááºážá
certbot ááᯠinstall áá¯ááºááŒá®áž domain name (format mysite.ru
) ááŸáá·áº www ( ááá¯ááááºážá¡áááºáwww.mysite.ru
).
sudo add-apt-repository ppa:certbot/certbot
sudo apt install python-certbot-nginx
sudo certbot certonly --webroot --webroot-path=/var/www/html/<ÐÐŒÑ Ð¿ÑПекÑа>/public -d <ÐÐ°Ñ ÐŽÐŸÐŒÐµÐœ> -d www.<ÐÐ°Ñ ÐŽÐŸÐŒÐµÐœ>
ááᯠááẠNginx ááᯠááŒááºáááºááŒááºáááºááẠááá¯á¡ááºááẠ(áááºááááºááá¯ážáá»á¬ážááᯠá¡á á¬ážááá¯ážááẠááá±á·áá«ááŸáá·áº)á
server {
listen 80;
listen [::]:80;
server_name <ÐÐ°Ñ ÐŽÐŸÐŒÐµÐœ> www.<ÐÐ°Ñ ÐŽÐŸÐŒÐµÐœ>;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name <ÐÐ°Ñ ÐŽÐŸÐŒÐµÐœ> www.<ÐÐ°Ñ ÐŽÐŸÐŒÐµÐœ>;
root /var/www/html/<ÐÐŒÑ Ð¿ÑПекÑа>/public;
ssl_certificate /etc/letsencrypt/live/<ÐÐ°Ñ ÐŽÐŸÐŒÐµÐœ>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<ÐÐ°Ñ ÐŽÐŸÐŒÐµÐœ>/privkey.pem;
ssl_protocols TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
ssl_prefer_server_ciphers on;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.php index.html index.htm index.nginx-debian.html;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~ /.ht {
deny all;
}
location ~ /.well-known {
allow all;
}
}
PHP 7.3 á¡ááœáẠááŒá±á¬ááºážáá²ááẠááá¯á¡ááºáááºáá»á¬ážááᯠáááºáá¬ážáááºááŒá®ážááŒá® áááºáá«áááºá
áá®áá±áá¬ááŸá¬ ááááºáá±á¬á· á¡áá¬á¡á¬ážáá¯á¶ážá ááá¯ážááŸááºážáá«áááºá áá»áœááºá¯ááºááá¯á·ááẠHTTP (port 80) á០áá±á¬ááºážááá¯ááŸá¯á¡á¬ážáá¯á¶ážááᯠHTTPS (port 443) ááá¯á· ááŒááºáááºááœáŸááºážáá±ážáá«áááºá ááŒá®ážáá±á¬á· ááá¯á¡áááºáááá¯áá«áá²á áá«áá±ááá·áº encryption áá²á· á¡á¬ážáá¯á¶ážáá¯ááºáááºá
áá»ááºáááºááŸá¬ firewall ááœááºááœáá·áºááŒá¯áá»ááºáá»á¬ážááá¯áááºááŸááºáááºááŒá áºáááº-
sudo nginx -t
sudo ufw app list
sudo ufw allow 'Nginx HTTPS'
sudo ufw status
sudo systemctl reload nginx
á¡áá¯áá±á¬á· á¡á¬ážáá¯á¶ážá áá¯ááºááá·áºáá¯ááºááá¯ááºáá¬ááᯠáá¯ááºááá·áºáááºá
[á¡ááá·áºááŒáá·áº] Node.js ááᯠááá·áºááœááºážááŒááºážá
á¡áááºá áááºááẠáá¬áá¬áá±á«áºááœáẠnpm ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááᯠáá¯ááºáááẠáá¯ááºáá±á¬ááºááẠááá¯á¡ááºáá«áá áááºááẠNode.js ááᯠááá·áºááœááºážááẠááá¯á¡ááºáááºá
sudo apt update
sudo apt install -y nodejs npm
nodejs -v
áá«áá²á áá®á¡ááá·áºááŸá¬ áááºááá¯ááºáááºá áá°á¡ááá±á¬á· ááááºááᯠáá»á±áááºáá«áááºá áá¯ááŸá¬ážáá²á· ááá¯áá®ážááŒá®áž ááá¯á á»á±ážáááºáá¬áá²á· DigitalOcean ááá± ááŒá±á¬ááºážááŒá áºááá¯ááºáááºá ááá¯á·áá±á¬áº áá»áœááºá¯ááºááẠááá¯ááºáá±á«áºááŸá á áá á áºáá±áž ááŸáá·áºáááºááŸá¯áá»á¬ážá¡á¬ážáá¯á¶ážááᯠááŒááºáááºážááŒá®áž ááá¯áá±áá¬á á¡áá¬á¡á¬ážáá¯á¶ážááᯠáá¯ááºáá±á¬ááºáá²á·ááŒá®ážááŒá áºáá±á¬ááŒá±á¬áá·áº áááºážááá¯á·á¡á¬áž á¥ááá¬ááŒáá·áº ááŒááá²á·áá«áááºá ááá¯á·á¡ááŒááºá áááºážááá¯á·á $100 ááẠáá±á·áá»áá·áºáá±ážá¡ááœáẠá¡ááœááºáá±á¬ááºážááœááºáá±á¬ á áá®áá¬áá áºáá¯ááŒá áºáááºá
PS áá±ážáá¬ážáá°á¡á¬áž á¡áá°ážáá»á±ážáá°ážáááºááŸááá«áááºá
PPS á¡áááºá áááºááẠbash á¡áááá·áºáá»á¬ážááᯠááœá±ážáá±á¬áááºáá±á¬ ááááºáááºáž á¡ááºáá»ááºáá®áá¬áá áºáá±á¬ááºááŒá áºáá»áŸáẠáá»á±ážáá°ážááŒá¯á ááŒááºážáááºážá áœá¬ ááá¯á¶ážááŒááºáá«ááŸáá·áºá á€áá±á¬ááºážáá«ážááẠá¡ááá·áºá¡áááºážáááá·áºáá»áááºáᯠáááºááœá±á·ááá¯ááºáá±á¬áºáááºáž ááá¯á¡ááºáá±á¬á¡áá«ááœáẠáá áºáá¯ááŸá¬ááœá±á·ááá¯ááºááá·áºá¡ááœáẠáááºážáá¬áááá«áááºá ááá¯ážáááºááŸá¯á¡ááœáẠá¡ááŒá¶ááŒá¯áá»ááºáá»á¬áž ááŸááá«á áá»áœááºá¯ááºááẠáááºážá¡ááœááºáᬠááŒá áºáá«áááºá
source: www.habr.com