แแ แแแแแแฌแงแแแขแ แจแแแแฅแแแ แฉแแแ แแแ แขแคแแแแ Laravel 7-แแก แแแแแงแแแแแแ. แแกแ, แ แแ แแแแแแ แ แแแแ แแ แงแแคแแแแงแ แกแแแแกแแแขแ แแแแ แแ แแ แแแกแแ แแ แกแแแฃแแ แงแแแแ แแแคแแ แแแชแแ แจแแแชแแแแแก แแแแแแแกแขแ แแชแแฃแแ แแแแแแแก แแแแแงแแแแแแ. แแ แแ แแก แฌแแ แขแแแ. แกแแฅแแ แแแแแแแแแแแแ แแแแแแ. แแ แแแแแแ แ แแแแแแแแ แแแ แแ แแแแแแแแแ, แแฃ แ แแแแ แฃแแแ แแแแแแแแแ แแก แกแ แฃแแคแแกแแแแ แกแแ แแแ แแ แงแแแแ แฃแกแแแแแแแแแแ. แแ แแ แแแ แซแแแแแ แซแแแแ แ แแแแแแแแแแจแ; แแ แแแแแแแ แฃแคแ แ แฌแแ แแแ , แแแแ แ แกแ แฃแแ แกแขแแแ. แแ แแฃ แแแแแช แจแแแแซแแแ PHP-แจแ แฌแแ แ แแ แขแแกแขแแ แแแ, แแแจแแ แกแแ แแแ แแก แแแ แแแแแแ แแ แ.แจ. แฏแแ แแ แแแแแ แแแแแแ . แแแแ แแ แแ แฃแแแ แแแแแ แแแแ.
แแฎแแ แฉแแแ แแแแแแแแ แงแแแแ แกแแคแแฎแฃแ แก, แแแฌแงแแแฃแแ SSH-แแ แแแจแแแแแ แแ แกแแแฃแจแแ แกแแแขแแ แแแแแแแ แแแฃแแ. แฉแแแ แแแชแแแแแ แแแแแแแ แแแแชแแแแ แงแแแแ แฎแแคแแแ.
แแฅแแแ แจแแแแซแแแแ แแแแแแ แแกแแแแกแ แแแกแขแ แฃแฅแชแแแแ แแแขแแ แแแขแจแ. แแแแแก แแ แแแแแก, แแแแแก แแแแแแ. แแแ แแแแแ, แแ แ แแ แ แแแแแแแก, แแ แช StackOverflow-แแก แแแฎแแแ แแแแก แแแ แแจแ แแ แซแแแแแ แ แฃแกแฃแแแ. แแแแแแชแแ. แแแแขแแ แแแแแแฌแงแแแขแ แจแแแ แชแฎแแแ แแแ แแแแแแแ แขแแแแแแแ.
แฉแแแ แงแแแแแคแแ แก แแแแแแแแแแ แฌแแแแแ DigitalOcean-แแ. แแก, แ แ แแฅแแ แฃแแแ, แแ แแ แแก แแฃแชแแแแแแแ; แแแ แฉแแแ แแแแแกแแแแ แ แฐแแกแขแแแแ. แ แแแแกแแช 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
แแแแแฅแกแ
sudo apt update
sudo apt install -y nginx
sudo ufw allow 'Nginx HTTP'
sudo ufw status
MySQL
sudo apt install -y mysql-server
sudo mysql_secure_installation
,NYNNY
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<ะะฐั ะฟะฐัะพะปั ะดะปั MySQL>';
SELECT user,authentication_string,plugin,host FROM mysql.user;
FLUSH PRIVILEGES;
exit
PHP
-
sudo apt update
-
sudo apt install -y curl wget gnupg2 ca-certificates lsb-release apt-transport-https
-
sudo apt-add-repository ppa:ondrej/php
-
sudo apt update
-
7.3:
sudo apt install -y php7.3-fpm php7.3-mysql
-
7.4:
sudo apt install -y php7.4-fpm php7.4-mysql
-
sudo vim /etc/nginx/sites-available/<ะะฐั ะดะพะผะตะฝ>
แซแแ แแแแแ แแแงแแแแแ:
server {
listen 80;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name <ะะฐั ะดะพะผะตะฝ ะธะปะธ IP>;
location / {
try_files $uri $uri/ =404;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~ /.ht {
deny all;
}
}
แแฎแแแแ HTTP แแแงแแแแแ Laravel-แแกแแแแก:
server {
listen 80;
listen [::]:80;
root /var/www/html/<ะะผั ะฟัะพะตะบัะฐ>/public;
index index.php index.html index.htm index.nginx-debian.html;
server_name <ะะฐั ะดะพะผะตะฝ ะธะปะธ IP>;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~ /.ht {
deny all;
}
}
HTTPS แแแ แแแแขแ แ Laravel-แแกแแแแก:
server {
listen 80;
listen [::]:80;
server_name <ะะฐั ะดะพะผะตะฝ> www.<ะะฐั ะดะพะผะตะฝ>;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name <ะะฐั ะดะพะผะตะฝ> www.<ะะฐั ะดะพะผะตะฝ>;
root /var/www/html/<ะะผั ะฟัะพะตะบัะฐ>/public;
ssl_certificate /etc/letsencrypt/live/<ะะฐั ะดะพะผะตะฝ>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<ะะฐั ะดะพะผะตะฝ>/privkey.pem;
ssl_protocols TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
ssl_prefer_server_ciphers on;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.php index.html index.htm index.nginx-debian.html;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~ /.ht {
deny all;
}
location ~ /.well-known {
allow all;
}
}
sudo ln -s /etc/nginx/sites-available/<ะะฐั ะดะพะผะตะฝ> /etc/nginx/sites-enabled/
sudo unlink /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl reload nginx
Laravel
-
7.3:
sudo apt install -y php7.3-mbstring php7.3-xml composer unzip
-
7.4:
sudo apt install -y php7.4-mbstring php7.4-xml composer unzip
-
mysql -u root -p
-
CREATE DATABASE laravel DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
-
GRANT ALL ON laravel.* TO 'root'@'localhost' IDENTIFIED BY '<ะะฐั ะฟะฐัะพะปั ะพั MySQL>';
-
FLUSH PRIVILEGES;
-
exit
-
cd /var/www/html
-
sudo mkdir -p <ะะผั ะฟัะพะตะบัะฐ>
-
sudo chown laravel:laravel <ะะผั ะฟัะพะตะบัะฐ>
-
cd ./<ะะผั ะฟัะพะตะบัะฐ>
-
git clone <ัััะปะบะฐ ะฝะฐ ะฟัะพะตะบั> .
/git clone -b <ะธะผั ะฒะตัะบะธ> --single-branch <ัััะปะบะฐ ะฝะฐ ะฟัะพะตะบั> .
-
composer install
-
vim .env
APP_NAME=Laravel
APP_ENV=production
APP_KEY=
APP_DEBUG=false
APP_URL=http://<ะะฐั ะดะพะผะตะฝ>
LOG_CHANNEL=stack
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=<ะะฐั ะฟะฐัะพะปั ะพั MySQL>
-
php artisan migrate
-
php artisan key:generate
-
sudo chown -R $USER:www-data storage
-
sudo chown -R $USER:www-data bootstrap/cache
-
chmod -R 775 storage
-
chmod -R 775 bootstrap/cache
HTTPS
-
sudo add-apt-repository ppa:certbot/certbot
-
sudo apt install -y python-certbot-nginx
-
sudo certbot certonly --webroot --webroot-path=/var/www/html/<ะะผั ะฟัะพะตะบัะฐ>/public -d <ะะฐั ะดะพะผะตะฝ> -d www.<ะะฐั ะดะพะผะตะฝ>
-
sudo nginx -t
-
sudo ufw allow 'Nginx HTTPS'
-
sudo ufw status
-
sudo systemctl reload nginx
แจแแฅแแแแแ แฌแแแแ DigitalOcean-แแ แแ แแแแ แแแแกแขแ แแ แแ แแฎแแแ SSH แแแกแแฆแแแ
แแ แแแแแแแแแ แแฏแแ แ, แ แแ แแฅแแแ แแแแแ แแแแแแแ แ แแแแ แแแ แแแแกแขแ แแ แแแ DigitalOcean-แจแ. แแก แแ แแ แแก แแแแแแ, แแแแ แ แแแแแแแฌแแแแแ แแ แกแฎแแ แ แแแแ. แแฃ แแฃแแแแแแ แแฆแแแ แฅแกแแแแก แจแแชแแแแแก แแแแฃแแแแขแแแแก แแแแแงแแแแแแ แแแแแแแฌแแแแแกแแก, แกแชแแแแ แงแแแแแคแแ แ แแแแแแแแ VPN-แแก แกแแจแฃแแแแแแ, แแก แฃแแแ แแแแแฎแแแ แแ.
แแแแแฃแจแ แแแแ, แแแแฌแแแแฃแแแ แจแแฅแแแ->แฌแแแแแแ. แแแ แฉแแแ Ubuntu.
แ แแแแ แช แแ แแแ แแแแกแขแ แแ แแแแแ, แแฅแแแแก แแแแแ แแจแแ แแแแฆแแแ $100-แก. แแแแ แแ แแ แแแแแขแงแฃแแ. แแฅแแแ แแฎแแแแ 60 แแฆแ แแแฅแแ แแแก แแแกแแขแแ แแแแแ. แแ แแก แซแแแแแ แชแแขแแ. แแฅแแแแช แฉแแแกแแแแ แแกแฃแ แ แแแแแแงแแแแ แฃแคแ แ แซแแแ แ แแแแแ, แ แแแ แแแแแแแแแแแ, แ แแชแ แ แแแแฃแ แ แคแฃแแ แแแแฌแงแแแก แแแแแแแก, แแแแแฎแแแแแ แฃแคแ แ แแแคแแ. แแแจแแแแ แแแขแงแแแ, แ แแ แแก แแ แแแฃแจแแแแแก. แจแแแแซแแแ แแแแแ แแ, แแแแ แแ แแแ แจแแแแชแแ แ. แแกแ แแแแแก. แแ แแแ แฉแแ แกแขแแแแแ แขแฃแแ->$5.
แฉแแแแแแ แงแแแแแแ แแฎแแแก แแแ แฉแแ แ แแแแแแก Frankfurt. VPC แฅแกแแแ->แแแแฃแแแกแฎแแแแ-fra1
แฉแแแ แแแฃแงแแแแแแแแ แจแแแแกแ แฃแแแแ แแแแแแขแแคแแแแชแแแก SSH-แแก แกแแจแฃแแแแแแ. แแแแฌแแแแฃแแแ แแฎแแแ SSH แแแกแแฆแแแ. แแฃ แแ แแแฅแแ SSH, แแแ แฏแแแแ แแ แแก แซแแแแแ แแแ แขแแแ แแแกแขแ แฃแฅแชแแแแ. แแแฎแกแแแแ แแแจแแก แขแแ แแแแแแ แแ แฉแแกแแแ
ssh-keygen
. แจแแแแแ แแแแแแแแแแ แ แคแแแแแ แกแแฏแแ แ แแแกแแฆแแแแ/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
แฉแแแ แแแฎแแ แชแแแแแแ แงแแแแ แแแฅแแแแแแแก แจแแแแแแแจแ, แกแขแแขแแแก แแแแแแแ, แแแ แแแแแแก แแแแฎแแแ แแแแแก แกแแฎแแแแ. แแแแขแแ, แแฃ แแแฃแแแแแแแแ แจแแแแจแแแแ, แฎแแแแฎแแ แจแแแแ แกแแกแขแแแแจแ แแ แจแแแแ 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
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
Nginx-แแก แแแแแขแแแ firewall-แแก แแแ แแแแขแ แแแจแ
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
-
แแ แแแฎแแแก root แจแแกแแแ แแแกแขแแแชแแฃแ แแ? -
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-แแก แแแกแขแแแแชแแ
แแแแแ แแแแแแแงแแแแ แแแกแแแ แแฎแแ แแก แกแแชแแแ
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/<ะะฐั ะดะพะผะตะฝ>
"<แแฅแแแแ แแแแแแ>"-แแก แแแชแแแแ แจแแแงแแแแแ แแแแแแ (แแแแแแแแแ, 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
แ แแแแกแแช แแแแแฆแฌแแแ root แแแแฎแแแแแก /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
-
แจแแฅแแแแแ แแแแแชแแแแ แแแแ แกแแฎแแแแ แแแ แแแแแ:
CREATE DATABASE laravel DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
-
แฉแแแ แแฃแแ แฃแแแแแงแแคแ root แฌแแแแแแก แแแ แแแแแ:
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-แแแ.
cd ./<ะะผั ะฟัะพะตะบัะฐ>
git clone <ัััะปะบะฐ ะฝะฐ ะฟัะพะตะบั> .
แแแกแแแแแแแกแฌแแแแแแแแ, แ แแ แแฃ แแ แจแแแแแฎแแ แกแขแแขแแแฃแ แ แคแแแแแแ (แแแแแแแแแ, แแแ /public
) Github-แแ, แแแจแแ แแฃแแแแ แแแแ แแ แแแฅแแแแแ แแกแแแ. แแแแแแแแแ, แแ แจแแแฅแแแแ แชแแแแ แแแแ แแแแก แแแกแแแแแ แแแแแ deploy
, แกแแแแแแแช แแ แฃแแแ แแแแแแ แแแฃแแ แแแ : git clone -b <ะธะผั ะฒะตัะบะธ> --single-branch <ัััะปะบะฐ ะฝะฐ ะฟัะพะตะบั> .
.
- แแแแแแแแแแฃแแแแแแแก แแแงแแแแแ:
composer install
- แจแแฅแแแแแ .env:
vim .env
แแแกแ แซแแ แแแแแ แแแ แกแแ แแกแ แแแแแแงแฃแ แแแ:
APP_NAME=Laravel
APP_ENV=production
APP_KEY=
APP_DEBUG=false
APP_URL=http://<ะะฐั ะดะพะผะตะฝ>
LOG_CHANNEL=stack
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=<ะะฐั ะฟะฐัะพะปั ะพั MySQL>
แแฃ แแแแแแแแ แแแ แแฅแแแแก .env-แก, แจแแชแแแแแ APP_ENV แแ แแแฃแฅแชแแแ, APP_DEBUG false-แแ แแ แจแแแงแแแแแ แกแฌแแ แ แแแ แแแแขแ แแแ MySQL-แแกแแแแก.
- แแแแแชแแแแ แแแแแก แแแแ แแชแแ:
php artisan migrate
- แแแแแก แแแแแ แแ แแแ:
php artisan key:generate
แแแแแ แแแแแแก แจแแชแแแ:
sudo chown -R $USER:www-data storage
sudo chown -R $USER:www-data bootstrap/cache
chmod -R 775 storage
chmod -R 775 bootstrap/cache
แแแแ แ แแช แแแ แฉแ แแ แแก Nginx-แแก แฎแแแแฎแแ แแแแคแแแฃแ แแชแแ Laravel-แแกแแแแก:
sudo vim /etc/nginx/sites-available/<ะะฐั ะดะพะผะตะฝ>
server {
listen 80;
listen [::]:80;
root /var/www/html/<ะะผั ะฟัะพะตะบัะฐ>/public;
index index.php index.html index.htm index.nginx-debian.html;
server_name <ะะฐั ะดะพะผะตะฝ ะธะปะธ IP>;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~ /.ht {
deny all;
}
}
แแกแแแ แ แแแแ แช แฌแแแ แฏแแ แแ, แแฃ แแแแก แแแชแแแแ แแแ แฉแแ แแแ แกแแ 7.3 php7.4-fpm.sock
แฉแแฌแแ แแ php7.4-fpm.sock
.
แแแแแแแก แแแงแแแแแ DigitalOcean-แแ
แกแแแแแแแแแแจแ แงแแแแแคแแ แ แซแแแแแ แแแ แขแแแแ. แแฅแแแ แงแแแฃแแแแ แแแแแแก (แกแแแแ), แแแแแแแ DigitalOcean-แแ แจแแฅแแแ->แแแแแแแแ/DNSแ แ ะ ะฟะพะปะต แแแแแแขแแ แแแแแแ แจแแแแฎแแ แ แแ แแแแแแจแ แแ แแแแญแแ แแ แแแแแขแแแแก. แจแแแแแ แแแแแแแ แแแแแแแก แแแ แแแแขแ แแแแ แแ แแแแแ แฒแฒแฒกแฒแฒแฒแฒซแฒแฒแฒก แฒกแฒแฒฎแฒแฒแฒ แจแแแ @. แแแ แฉแแแ แแ แแแฅแขแ แแ แแแแฌแแแแฃแแแ แฉแแแแฌแแ แแก แจแแฅแแแ.
แแฎแแ แแแแแแแ แกแแแขแแ, แกแแแแช แแงแแแแ แแแแแแ, แแแแแแ แแฅ โDNS แกแแ แแแ แแแโ (แแ แแกแแแแกแ แ แแ) แแ แจแแแงแแแแแ DigitalOcean แกแแ แแแ แแแ (แแแ แซแแ.ns1.digitalocean.com
,ns2.digitalocean.com
,ns3.digitalocean.com
). แแฎแแ แแฅแแแ แฃแแแ แแแแแแแแ แชแแขแ (แแ แแแแ แ) แกแแแแ แแก แแแ แแแแขแ แแแ แแ แแแแฆแแแ. แแแแแแ!
แแ แแแแแ แแ แแ แแแแแแ แแก แแ แแก, แ แแ แแฅแแแแ แกแแแขแ แแแแฎแกแแแแ แแฎแแแแ HTTP แกแแฎแแ. HTTPS แ แแ แแฅแแแแแ, แแแแแแแ แจแแแแแ แแแฌแแแแ.
HTTPS-แแก แแแงแแแแแ
แแแแแแกแขแแแแ แแ certbot แแ แแแแแแชแแ แแแแแแแก แกแแฎแแแ (แคแแ แแแขแ 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). แแ แแฅ แฉแแแ แแแแแแแแ แงแแแแแคแแ แก แแกแแแ, แ แแแแ แช แแแ แ, แแแแ แแ แแแจแแคแแ แแ.
แ แฉแแแ แแฎแแแแ แแแแแ แแแแแแก แแแงแแแแแ firewall-แจแ:
sudo nginx -t
sudo ufw app list
sudo ufw allow 'Nginx HTTPS'
sudo ufw status
sudo systemctl reload nginx
แแฎแแ แงแแแแแคแแ แ แแกแ แฃแแแ แแฃแจแแแแแแก, แ แแแแ แช แฃแแแ.
[Advanced] Node.js-แแก แแแกแขแแแแชแแ
แแฃ แแแฃแแแแแแแแ แแแแญแแ แแแแแ npm แแ แซแแแแแแแแก แแแ แแแแแ แกแแ แแแ แแ แแแจแแแแ, แฃแแแ แแแแแแกแขแแแแ แแ Node.js.
sudo apt update
sudo apt install -y nodejs npm
nodejs -v
แแกแ แแแ, แแ แแขแแแแ แแแแฉแแ แแ. แแ แแแชแแแจแ, แจแแแแแแ แแแแงแแคแแแ แแแ . แแแแแ DigitalOcean-แแแ แแแแแแแแ แกแแแแ แ แฃแกแแแแแ แฃแคแ แ แแฎแแแก แแ แแแคแแ. แแแแ แแ แ แแแแแ แแ แฃแแแ แแแแแแ แ แงแแแแ แแแแแแแฌแแแแแก แ แแฃแแแ แกแแแขแแ แแ แงแแแแแคแแ แ แแแแแแแแ แแฅ, แแ แแแ แแแแแแแแแ แแแฉแแแแ. แแแ แแ แแแแกแ, แแแแ แกแแฌแงแแกแ 100 แแแแแ แ แจแแกแแแแจแแแแ แแแแชแแแ แแแ แแแ แฏแแจแแกแแแแก.
PS แแแแกแแแฃแแ แแแฃแแ แแแแแแแ แแแขแแ แก
PPS แแฃ แแฅแแแ แฎแแ แ แขแแ แแแแแแแ แ, แ แแแแแแช แคแแฅแ แแแก bash แแ แซแแแแแแแจแ, แแแฎแแแ, แแแแชแ แแ แแฃ แแแแกแฏแแ. แจแแแซแแแแ แแก แกแขแแขแแ แแแแแแ แแแแแก แแแแแฉแแแแแ, แแแแ แแ แกแแแแแแแแแแ แแแแแแแแแ, แ แแชแ แแแแญแแ แแแแแแ. แแฃ แแ แกแแแแแก แฌแแแแแแแแแแแ แแแฃแแฏแแแแกแแแแก แจแแกแแฎแแ, แแ แแแแก แแแแฎแ แ แแแ .
แฌแงแแ แ: www.habr.com