
Libellum meum facere decrevi utens Laravel 7. Ut pagina principalis pagina descensionis esset, omnesque informationes in eo utentes tabula admin mutari possent. Non punctum. Res ad instruere. Duos bonorum tutorium inveni in quo hoc facerem in plena servo-procurvato cum omnibus molestiis. Instruere non multum valeo, plerumque plus fronte quam plenus acervus sum. Et, si adhuc scribere possum et probare in PHP, tunc ante dispono servo, etc. Non creverunt adhuc. Sed mihi videris.
Nunc per omnes gradus ibimus, incipientes cum via SSH deducunt et cum loco operantes finiendo. Omnes casus vitare conabimur.
Similes instructiones in online invenire poteris. Tandem inveni. Verum, non uno loco, non sine ope StackOverflow, et vix in Russian. passus sum. Quam ob rem statui vitam tuam simpliciorem reddere.
Делать мы всё будем с дроплетом на DigitalOcean. Это, конечно, необязательно, выбирайте любой хостинг. Дойдете до рабочего сервера на Ubuntu, возвращайтесь. Для тех, кто все же решил делать на DigitalOcean, будут еще советы по настройке домена. А также .
Omnes gradus DigitalOceani speciales in notis hisce tradentur.
Sit scriptor committitur.
TL, DR (praecepta tantum)
Creare a user
ssh root@[IP-адрес вашего дроплета]adduser laravelusermod -aG sudo laravelsu laravel
Adde SSH ad eam
mkdir ~/.sshchmod 700 ~/.sshvim ~/.ssh/authorized_keys- Clavis publica inserta
chmod 600 ~/.ssh/authorized_keys
Firewall
sudo ufw allow OpenSSHsudo ufw enablesudo ufw status
nginx
sudo apt updatesudo apt install -y nginxsudo ufw allow 'Nginx HTTP'sudo ufw status
MySQL
sudo apt install -y mysql-serversudo mysql_secure_installation,NYNNYsudo mysqlALTER 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 updatesudo apt install -y curl wget gnupg2 ca-certificates lsb-release apt-transport-httpssudo apt-add-repository ppa:ondrej/phpsudo apt update7.3:
sudo apt install -y php7.3-fpm php7.3-mysql7.4:
sudo apt install -y php7.4-fpm php7.4-mysqlsudo vim /etc/nginx/sites-available/<Ваш домен>
Basic setup:
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;
}
}Tantum HTTP setup pro 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 ambitus 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/defaultsudo nginx -tsudo systemctl reload nginx
Laravel
7.3:
sudo apt install -y php7.3-mbstring php7.3-xml composer unzip7.4:
sudo apt install -y php7.4-mbstring php7.4-xml composer unzipmysql -u root -pCREATE DATABASE laravel DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;GRANT ALL ON laravel.* TO 'root'@'localhost' IDENTIFIED BY '<Ваш пароль от MySQL>';FLUSH PRIVILEGES;exitcd /var/www/htmlsudo mkdir -p <Имя проекта>sudo chown laravel:laravel <Имя проекта>cd ./<Имя проекта>git clone <ссылка на проект> ./git clone -b <имя ветки> --single-branch <ссылка на проект> .composer installvim .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 migratephp artisan key:generatesudo chown -R $USER:www-data storagesudo chown -R $USER:www-data bootstrap/cachechmod -R 775 storagechmod -R 775 bootstrap/cache
HTTPS
sudo add-apt-repository ppa:certbot/certbotsudo apt install -y python-certbot-nginxsudo certbot certonly --webroot --webroot-path=/var/www/html/<Имя проекта>/public -d <Ваш домен> -d www.<Ваш домен>sudo nginx -tsudo ufw allow 'Nginx HTTPS'sudo ufw statussudo systemctl reload nginx
Guttam crea in DigitalOcean et subcriptio novam SSH key
Vere credo te instare quomodo cum DigitalOcean te subcriptio. Non facile, cum multae confirmationes et alia. Si constanter errorem retis cum documentis comprobans utens, omnia facere conare per VPN, debet adiuvare.
In tabula in summo, deprime Create->droplets. Elige Ubuntu.
Cum primum mandaveris, $100 in ratione vestra recipies. Sed ne seducamini. Tantummodo 60 dies habe. Et hoc parum. Potes, ut me, cariore consilio uti velis, ut postea, cum vera pecunia fluit, ad viliorem transire possis. Dicam tibi statim quod non laborabit. Augere potes, sed minuere non potes. Ita abscedit. Libet Latin->$5.
Eligo regionem nobis proximam Frankfurt. VPC Network->default-fra1
Nos statim authenticas faciendas per SSH. Click Nova SSH Key. Si SSH non habes, simplicissima sunt instructiones de iure. Aperi vercundus terminatio et crustulum
ssh-keygen. Inde itur ad tabellam cum clavis publicis/Users/<Ваше имя пользователя>/.ssh/id_rsa.pub(Or simplycat ~/.ssh/id_rsa.pub) effingo contenta et crustulum in fenestra ad sinistram. Quodvis nomen.Nos cum hostname ad guttam ascendimus.
torcular Create Droplet
Novam usor
ssh root@[IP-адрес вашего дроплета]- Certusne esne connectens continuare (ne/no/[fingerprint])?
yes - Nulla SSH password
- Creare a user laravel:
adduser laravel - Intrant es tesserae et aliae informationes (modo plena nomen intrant)
- Addere user coetus ad sudo:
usermod -aG sudo laravel
SSH ad novum user
- Transibit ad novum user:
su laravel
Omnes actiones ulterius exequimur, usque ad finem articuli, pro usuario laravel. Ergo, si subito intermittitur, re-incipe et intra su laravel
mkdir ~/.sshchmod 700 ~/.sshvim ~/.ssh/authorized_keys
tabella in Vim aperuimus. Si nota omnino non es, Nano tuo iure operari potes.
Praecipua Vim imperat
Ut Vim editor per totum articulum utatur, solum sequentia scire debes.
- Vim habet diversos modos: Normalis modus, quo intres mandata, et modos selectos et alios.
- Exire aliquem modum et redire ad modum communem, sicut torcular
Esc - Movere circa: sagittis uti potes
- Exit sine salute
<Normal mode>::q! - Exitus et salvare
<Normal mode>::wq - Vertas text initus modus
<Normal mode>:i(De Anglis. inserere)
- Clavem publicam nostram (quam supra fecimus) inserimus.
- Contra vices munimus:
chmod 600 ~/.ssh/authorized_keys
Installing firewall
- Intueamur omnes praesto occasus:
sudo ufw app list - Patitur OpenSSH (alioquin nos claudat);
sudo ufw allow OpenSSH - Demus firewall:
sudo ufw enable,y - reprehendo:
sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)Omnia est bonum.
installing Nginx
Per institutionem interdum rogaberis "Certus es?" Answer y (Bene, si certus es).
sudo apt updatesudo apt install nginx
Addit Nginx ad firewall occasus
sudo ufw app listsudo 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)Vade ad IP tuum. Si omnia bene sunt, sequentia videre debes.

installing MySQL
sudo apt install mysql-server- Lorem scriptor praesidio launching
sudo mysql_secure_installation
Responde interrogationes. Si nescis quid respondeas, hic quaedam optiones suggesserunt;
Validate password plugin -
NAnonymi users removere? -
YDisallow radix login remotius? -
NTest database removere et ad eam accedere? -
NReload nunc privilegiorum tabularum? -
YEamus ad MySQL;
sudo mysqlIntueamur accessum modi:
SELECT user,authentication_string,plugin,host FROM mysql.user;Radix in password pro pone:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<Ваш пароль для MySQL>';Intueamur accessum modos iterum:
SELECT user,authentication_string,plugin,host FROM mysql.user;Applicare mutationes et exitus MySQL;
FLUSH PRIVILEGES;иexitNunc, in MySQL log uti debes
mysql -u root -pet intrant tesseram
Installing PHP
Utamur tertia-pars repositio from
sudo apt updatesudo apt install -y curl wget gnupg2 ca-certificates lsb-release apt-transport-httpssudo apt-add-repository ppa:ondrej/phpsudo apt update
Nunc agamus. Pro Laravel 7, potes eligere PHP 7.3 vel 7.4. Sola differentia erit in numeris III et IV.
- 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 Processus Procurator (fpm) operatur cum petitionibus PHP. mysql, scilicet, ad operandum cum MySQL.
Posthac omnia faciam 7.4.
Occasus sursum Nginx
sudo vim /etc/nginx/sites-available/<Ваш домен>
Pro "dominium tuum>" intrant dominium (exempli gratia: mysite.ru) ut in posterum uti velis. Si non habes adhuc, scribe aliquid, tunc repete gradus in hoc capite pro dominio tuo cum illud eligis.
Haec intrant:
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;
}
}Si vis versionem 7.3 loco php7.4-fpm.sock scribe in * php7.4-fpm.sock.
Audi portum LXXX on server_namequando pervenimus ad radicem petitionem /var/www/html index lima accipe. si post server_name Aliquid est, talem fasciculum quaerimus. Si non invenimus, eicimus 404. Si desinit .php, transfixi fpm... Si est .htprohibent (403).
- Faciens nexum e
sites-availableвsites-enabled:sudo ln -s /etc/nginx/sites-available/<Ваш домен> /etc/nginx/sites-enabled/ - Vinculum removere ad
default:sudo unlink /etc/nginx/sites-enabled/default - Reprehendo pro erroribus:
sudo nginx -t - Reboot:
sudo systemctl reload nginx
Reperiens opus:
sudo vim /var/www/html/info.php- scribimus:
<?php phpinfo(); - Eamus in
<Ваш IP>/info.php
Videas aliquid simile hoc;

Iam hic fasciculus deleri potest: sudo rm /var/www/html/info.php
Install Laravel
7.3:
sudo apt install php7.3-mbstring php7.3-xml composer unzip7.4:
sudo apt install php7.4-mbstring php7.4-xml composer unzipEamus ad MySQL;
mysql -u root -pCreare database nomine laravel:
CREATE DATABASE laravel DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;Nos radix aditum praebere laravel:
GRANT ALL ON laravel.* TO 'root'@'localhost' IDENTIFIED BY '<Ваш пароль от MySQL>';FLUSH PRIVILEGES;exitcd /var/www/htmlCreare folder pro project:
sudo mkdir -p <Имя проекта>Nos user providere laravel iura ad propositum;
sudo chown laravel:laravel <Имя проекта>
Deinde opus est consilium transferre. Exempli gratia exquisitis a Github.
cd ./<Имя проекта>git clone <ссылка на проект> .
Operae pretium est considerare quod si tabulas statas non servasti (exempli gratia, ex /public) in Github, tunc naturaliter non habebis eas. Exempli gratia, filum separatum ad hoc solvendum creavi deploya quo iam cloned; git clone -b <имя ветки> --single-branch <ссылка на проект> ..
- clientelas installare:
composer install - Crea .env:
vim .env
Versio fundamentalis eius sic spectat:
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>Si .env imitaris, APP_ENV cum productione restitue, APP_DEBUG cum falsis et rectos terminos pro MySQL ingredere.
- Migrans database:
php artisan migrate - Codicem generans:
php artisan key:generate
Mutantur permissiones:
sudo chown -R $USER:www-data storagesudo chown -R $USER:www-data bootstrap/cachechmod -R 775 storagechmod -R 775 bootstrap/cache
Ultimum reliquum est Nginx reconfigure pro 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;
}
}Velut ultimo tempore, si versionem 7.3 loco legeres php7.4-fpm.sock scribe in * php7.4-fpm.sock.
DigitalOcean usque in domain
Omne quod actu est valde simplex. Emisti domain (usquam), switch ad DigitalOcean at Create->Dominia/DNS. поле Addere domain hanc aream intras et click addendi. Deinde ad occasus dominicum et in campum hostname intrare @. Eligere consilium quod click " Create record.
Nunc ite ad locum ubi dominium emisti, "DNS Server" ibi (vel quid simile) invenies et intres ministratores DigitalOceani (nempens1.digitalocean.com,ns2.digitalocean.com,ns3.digitalocean.com). Nunc opus est exspectare paululum (vel multum) donec haec loca recipiantur. Paratus!
Sola problema est ut situs tuus solum ut HTTP aperiet. Habendum HTTPS, transigendum ad alteram partem.
Occasus sursum HTTPS
Install certbot et consequentes domain nomen (format mysite.ru) et domain nomen cum www (www.mysite.ru).
sudo add-apt-repository ppa:certbot/certbotsudo apt install python-certbot-nginxsudo certbot certonly --webroot --webroot-path=/var/www/html/<Имя проекта>/public -d <Ваш домен> -d www.<Ваш домен>
Nunc opus est Nginx reconfigure (noli oblivisci bona tua substituere);
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;
}
}Puto te iam intelligere quid mutandum sit pro PHP 7.3.
Hic enim omnia simplicia sunt. Simpliciter nos omnes petitiones ab HTTP (port 80) ad HTTPS (portum 443) redigere. Et ibi omnia facimus sicut prius, sed encryption.
Reliquum est ut licentias in firewall statuas;
sudo nginx -tsudo ufw app listsudo ufw allow 'Nginx HTTPS'sudo ufw statussudo systemctl reload nginx
Omnia autem ut oportet operari.
[Advanced] Installing Node.js
Si subito debes currere npm directe in servo, debes Node.js instituere.
sudo apt updatesudo apt install -y nodejs npmnodejs -v
Hoc est, substiti in hac scena. Principio contentus sum effectu. Fortasse a DigitalOceano transibo alicubi propius ad Russiam et vilius. Sed quia iam peragravi omnes probationes circa locum et omnia ibi feci, exemplo monstravi. Praeterea initium eorum $100 optimum PETAURUM est ad erudiendum.
PS Special gratias auctoris que omnia predictarum actionum fulcimentum fuit. In quibusdam non laborat pro Laravel 7, certum est.
PPS Si forte fabrum summum esse qui in imperiosa cogitat, noli acriter iudicare. Articulum hunc in re minore licet invenire, sed unum cum opus fuerit invenire gavisus sum. Si suggestiones sunt ad emendationem, ego totus est.
Source: www.habr.com
