Как да инсталирате LEMP стека и да разгърнете приложението си Laravel в DigitalOcean (Ubuntu 18.04): Част 3

Как да инсталирате LEMP стека и да разположите приложението си Laravel в DigitalOcean (Ubuntu 18.04)

Част 2: Настройте нашия сървър

В последната част настроихме нашия сървър и нов потребител за целите на сигурността. За тази трета част от Как да инсталирате LEMP стека и да разгърнете приложението си Laravel в DigitalOcean (Ubuntu 18.04), ние ще настроим сега LEMP стека (Linux, Nginx, MySQL, PHP).

Част от тази история е базирана на тази връзка.

Нека актуализираме първо нашия подходящ

$ sudo подходяща актуализация

След като актуализирате apt на вашия сървър, нека инсталираме Nginx.

$ sudo apt инсталирате nginx
// Терминалът ще ви попита Искате ли да продължите? [Y / n]: Y,
// Въведете y или Y и въведете, изчакайте да инсталирате nginx
// Разрешаване на Nginx HTTP
$ sudo ufw позволяват „Nginx HTTP“

След като инсталирате nginx, опитайте се да посетите нашия IP адрес до всеки браузър, който предпочитате. В моя случай това е резултатът.

Nginx Инсталиран резултат

Да инсталираме MySQL сървър сега.

$ sudo apt инсталирате mysql-сървър
// Терминалът ще ви попита Искате ли да продължите? [Y / n]: Y,
// Въведете y или Y и въведете, изчакайте да инсталирате mysql-сървър

След като инсталирате MySQL сървър, нека да настроим нашия основен и нов акаунт.

Следвайте стъпките по-долу, за да настроите mysql акаунта на сървъра.

$ sudo mysql_secure_installation
Осигуряване на внедряването на MySQL сървъра.
Свързване към MySQL с помощта на празна парола.
VALIDATE PASSWORD PLUGIN може да се използва за тестване на пароли
и подобряване на сигурността. Той проверява силата на паролата
и позволява на потребителите да задават само онези пароли, които са
достатъчно сигурен. Искате ли да настроите валиден PASSWORD плъгин?
Натиснете y | Y за Да, всеки друг клавиш за Не: Y
Има три нива на политика за валидиране на паролата:
LOW дължина> = 8
MEDIUM дължина> = 8, числови, смесени букви и специални знаци
STRONG Дължина> = 8, цифров, смесен регистър, специални символи и речник
Моля, въведете 0 = ниско, 1 = среден и 2 = силен: 0
Моля, задайте паролата за root тук.
Нова парола: 
Въведете отново нова парола: 
Прогнозна сила на паролата: 25
Искате ли да продължите с предоставената парола? (Натиснете y | Y за Да, всеки друг клавиш за Не): y
По подразбиране инсталацията на MySQL има анонимен потребител,
което позволява на всеки да влезе в MySQL, без да се налага
потребителски акаунт, създаден за тях. Това е предназначено само за
тестване и да направим инсталацията малко по-гладка.
Трябва да ги премахнете, преди да преминете в производство
околен свят.
Премахване на анонимни потребители? (Натиснете y | Y за Да, всеки друг клавиш за Не): Y
Успех.
Обикновено root трябва да бъде разрешено да се свързва само от
"Localhost". Това гарантира, че някой не може да се досети
главната парола от мрежата.
Да се ​​забрани дистанционното влизане в корен? (Натиснете y | Y за Да, всеки друг клавиш за Не): Y
Успех.
По подразбиране MySQL идва с база данни, наречена „тест“
всеки може да има достъп. Това е предназначено и само за тестване,
и трябва да бъдат премахнати, преди да преминете в производство
околен свят.
Премахване на тестовата база данни и достъп до нея? (Натиснете y | Y за Да, всеки друг клавиш за Не): Y
 - Изпускане на тестовата база данни ...
Успех.
- Премахване на привилегии от тестовата база данни ...
Успех.
Презареждането на привилегированите таблици ще гарантира, че всички промени
направено досега ще влезе в сила веднага.
Да се ​​зареди ли отново таблицата с привилегии? (Натиснете y | Y за Да, всеки друг клавиш за Не): Y
Успех.
Готово

Промяна на парола за root и добавяне на нов потребител.

$ sudo mysql
mysql> ALTER USER 'root' @ 'localhost' ИДЕНТИФИЦИРАНИ С mysql_native_password BY '';
Заявка ОК, засегнати 0 реда (0,00 сек)
mysql> ПРЕДАВАНЕ НА ВСИЧКИ ПРИВИЛЕГИ НА *. * ДО 'newusername' @ 'localhost' ИДЕНТИФИЦИРАНИ ОТ '';
Заявка ОК, засегнати 0 реда (0,00 сек)
mysql> ФЛУШИ ПРИВИЛЕГИ;
Заявка ОК, засегнати 0 реда (0,00 сек)
mysql> изход;
Чао

В моя случай използвах newusername за новия си потребител в моята база данни, сега се опитайте да се свържете в MySQL.

$ sudo mysql -u newusername -p
Въведете парола: 
// След като въведете вашата парола, терминалът ще пренасочи към MySQL сървъра. Нека създадем база данни.
mysql> CREATE DATABASE laravel;
Заявка ОК, засегнат 1 ред (0,00 сек.)
mysql> изход;
Чао

Сега, когато настроихме нашата база данни, да преминем към инсталирането на PHP

$ sudo apt инсталирате php-fpm php-mysql php-xml
// Терминалът ще ви попита Искате ли да продължите? [Y / n]: Y,
// Въведете y или Y и въведете, изчакайте да инсталирате php

Чрез редактиране на нов конфигурационен файл на сървърния блок, вместо да редактирате стандартния, ще можете лесно да възстановите конфигурацията по подразбиране, ако някога се наложи.

Добавете следното съдържание, което е взето и леко променено от конфигурационния файл на сървърния блок по подразбиране, към вашия нов конфигурационен файл на сървърния блок:

$ sudo nano /etc/nginx/sites-available/example.com
сървър {
        слушайте 80;
        root / var / www / html;
        index index.php index.html index.htm index.nginx-debian.html;
        server_name example.com;

        местоположение / {
                try_files $ uri $ uri / = 404;
        }

        местоположение ~ \ .php $ {
                включете фрагменти / fastcgi-php.conf;
                fastcgi_pass unix: /var/run/php/php7.2-fpm.sock;
        }

        местоположение ~ /\.ht {
                отричат ​​всички;
        }
}

Ето какво правят всяка от тези директиви и блокове за местоположение:

  • слушане - Определя какъв порт Nginx ще слуша. В този случай той ще слуша на порт 80, порт по подразбиране за HTTP.
  • root - Определя корена на документа, където се съхраняват файловете, обслужвани от уебсайта.
  • index - Конфигурира Nginx да дава приоритет на обслужващите файлове с име index.php, когато е поискан файл с индекс, ако те са налични.
  • server_name - Определя кой блок на сървъра трябва да се използва за дадена заявка към вашия сървър. Насочете настоящата директива към името на домейна или публичния IP адрес на вашия сървър.
  • location / - Първият блок за местоположение включва директива try_files, която проверява наличието на файлове, отговарящи на заявка за URI. Ако Nginx не успее да намери подходящия файл, той ще върне грешка 404.
  • location ~ \ .php $ - Този блок за местоположение обработва действителната обработка на PHP, като насочва Nginx към конфигурационния файл fastcgi-php.conf и файла php7.2-fpm.sock, който декларира кой сокет е свързан с php-fpm.
  • location ~ /\.ht - Последният блок за местоположение се занимава с .htaccess файлове, които Nginx не обработва. Като добавите директивата за отказ на всички, ако има някакви .htaccess файлове, попаднат в корена на документа, те няма да бъдат обслужвани за посетители.

След добавяне на това съдържание, запазете и затворете файла. Активирайте новия си сървърен блок чрез създаване на символна връзка от вашия нов конфигурационен файл на сървърния блок (в / etc / nginx / сайтове-налични / директория) към / etc / nginx / enable-sites / директория:

$ sudo ln -s /etc/nginx/sites-available/example.com / и т.н. / nginx / активирани сайтове /

След това прекратете връзката на конфигурационния файл по подразбиране от / сайтовете, активирани / директория:

$ sudo unlink / etc / nginx / сайтове с активиран / по подразбиране

Тествайте вашия нов конфигурационен файл за грешки в синтаксиса, като въведете:

$ sudo nginx -t

Ако се съобщават за грешки, върнете се и проверете отново файла си, преди да продължите.

Когато сте готови, презаредете Nginx, за да направите необходимите промени:

$ sudo systemctl презареждане nginx

Да тестваме нашия PHP сега. Използвам nano за създаване на тестов файл за php.

$ sudo nano /var/www/html/test.php

натиснете Ctrl + O и въведете (за да запазите)
натиснете Ctrl + X (за да излезете)

Сега можем да посетим тази страница в нашия уеб браузър, като посетим името на домейна или публичния IP адрес на вашия сървър, последвано от /test.php

http://198.211.109.82/test.php

В моя случай използвам собствен IP адрес и резултатът трябва да бъде такъв:

PHP е инсталиран

За да премахнете файла test.php.

$ sudo rm /var/www/html/test.php

Край на част 3.

Част 4 (Последната част): Разгърнете нашето приложение Laravel в нашия сървър.