Базовые знания Linux админа
Примечание
В данной серии не будет теории и прочего
Это абсолютный базис-гайд по установке ОС и базовым навыкам в терминале
В конце будет рассмотрено несколько современных технологий в простых реализациях
После прохождения гайда у вас будет машина и несколько популярных сервисов
Все. Дальше - сами, книги, видео, стажировка
Этот гайд - выжимка на многолетние накопления вопросов на канале и сайте
Гайд будет доступен на моем сайте:
Видео будут доступны на моем канале YouTube:
https://www.youtube.com/channel/UCR6j95DKI80MFXIw2iJ3f1w
План:
7 часть — nginx
В этой части мы установим и минимально настроим веб-связку
Nginx + MySQL + PHP (версии 7)
Nginx - веб-сервер
MySQL - база данных
Php - язык, на котором пишутся сайты (связующее звено между nginx и mysql)
Начнем с баз данных MySQL
В них мы будем хранить саму базу данных, в ней таблицы, в которых будут данные, которые будут выводиться на сайте
Запрос будет приходить на веб-сервер Nginx, далее приложение на языке php будет обращаться к бд MySQL за данными, и php будет формировать страницу
Установка необходимого по:
sudo apt-get install mysql-server mysql-client mysql-common php7.4-mysql
Внимание, версия php7.4 может отличаться, посмотреть актуальную в вашей ОС - apt search php7 | grep mysql
При установке задайте пароль root - это суперпользователь самой БД MySQL
В /etc/mysql/mysql.conf.d/mysqld.cnf укажем локальный адрес нашей машины, на котором открыть порт для подключения:
bind-address=127.0.0.1
Мы не указываем ip 192.168.0.180 т.к. наш веб-сервер и приложение на php будут на одном сервере
Обращения к MySQL извне по сети нам ненужны
Добавим сервис mysql в автозапуск служб системы Linux:
sudo systemctl enable mysql
Запустим сервис mysql:
sudo systemctl start mysql
Проверяем:
Запускаем процесс первоначальной инициализации:
sudo mysql_secure_installation
Проверяем подключение под пользователем root:
sudo mysql -u root -p
Создаем базу данных :
CREATE DATABASE test_database;
Создим пользователя test_user с паролем 654321, дадим ему права на базу test_database:
CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'QwertY654o321!';
GRANT ALL ON test_database.* TO 'test_user'@'localhost';
Выйдите из сервера БД:
\q
Заходим под пользователем test_user:
sudo mysql -u test_user -p
Заходим в базу test_database:
USE test_database;
Создаем новую таблицу:
create table test_table ( id int not null, mess varchar(50) );
Добавим тестовые данные:
insert into test_table (mess,id) values('First mess',1);
insert into test_table (mess,id) values('Second mess',2);
\q
О бэкапах пару слов в MySQL
Сдать резервную копию базы данных MySQL:
sudo mysqldump -u root -p test_database >test_database_bac.sql
Процесс восстановления данных в новую, пустую базу "test_database_2":
sudo mysqladmin -u root -p create test_database_2
sudo mysql -u root -p test_database_2<test_database_bac.sql
Установка PHP
PHP-FPM - простой и надежный менеджер процессов FastCGI для PHP
Напоминаю, я ставлю конкретно версию 7.4, смотрите актуальную для свое ОС
Установка:
sudo apt-get install php7.4-fpm
Автозагрузка и старт сервиса:
sudo systemctl enable php7.4-fpm
sudo systemctl start php7.4-fpm
Приступим к установке веб-сервера nginx
Установка:
sudo apt-get install nginx
Добавим сервис nginx в автозапуск служб системы Linux:
sudo systemctl enable nginx
Запустим сервис nginx:
sudo service nginx start
Проверьте, url должен быть доступен:
Теперь отредактируем конфигурационный файл веб-сервера nginx сайта по умолчанию
sudo vi /etc/nginx/sites-available/default
server {
#Какой порт слушать (указан 80 по умолчанию для http)
listen 80 default_server;
listen [::]:80 default_server;
#В каком каталоге смотреть файлы приложения
root /var/www/html;
#Какие файлы по умолчанию будут отдаваться при обращении
index index.php index.html;
#На каком адресе будет работать сервис nginx
server_name _;
#Проверка наличия запрашиваемого файла в директории (указана /)
location / {
try_files $uri $uri/ =404;
}
#Запрошенные файлы с расширением php отправляем к обработчику php-fpm
location ~* \.php$ {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Тестовый файл /var/www/html/index.php:
<?php echo 'Test from PHP'; ?>
Тестовый файл /var/www/html/index_db.php подключения из php к mysql:
<?php
$conn = new mysqli("localhost", "test_user", "QwertY654o321!", "test_database");
if ($conn->connect_error) {
die("Ошибка: не удается подключиться: " . $conn->connect_error);
}
echo 'Подключен к базе данных<br>';
print "Сообщение:<br>";
foreach ($conn->query("SELECT id, mess FROM test_table") as $row) {
print "id: " . $row['id'] . ", mess: " . $row['mess'] . "<br>";
}
$conn = null;
$result->close();
$conn->close();
?>
Дадим права на каталог серверу nginx:
chown -R www-data:www-data /var/www
Перезапустите nginx:
sudo service nginx restart
Проверяем:
Немного о сетевых утилитах
sudo apt install net-tools
Список прослушиваемых TCP-портов сервером:
netstat -tl
Список прослушиваемых UDP-портов сервером:
netstat -ul
Только номер порта без расшифровки протокола (n):
netstat -ntul
Список всех соединений в любых состояниях:
netstat -ntua