Как установить Nginx, PHP и MySQL (стек LEMP) на OpenSUSE Leap 42.1
На этой странице
- Шаг 1. Установите и настройте SuSEfirewall2
- Шаг 2. Установите и настройте Nginx
- Шаг 3. Установите и настройте MariaDB
- Шаг 4. Установка и настройка PHP-FPM
- Шаг 5. Настройка виртуального хоста Nginx
- Шаг 6. Установите и настройте phpMyAdmin
- Справочник
LEMP или Linux, Engine-x, MySQL и PHP — это набор программного обеспечения, установленного в операционной системе Linux для запуска и запуска ваших веб-приложений на основе PHP на быстром веб-сервере Nginx. Стек LEMP обеспечивает быструю и надежную основу для размещения веб-приложений. LEMP — это набор программного обеспечения с открытым исходным кодом, который имеет полный набор документации, поэтому вы можете легко узнать больше о различных приложениях и о том, как они сочетаются друг с другом.
В этом руководстве я покажу вам, как установить Nginx, MariaDB и PHP-FPM на openSUSE jump 42.1. Затем я настрою брандмауэр OpenSUSE с помощью SuSEfirewall2, чтобы разрешить доступ к веб-серверу Nginx, и покажу вам, как добавить новую конфигурацию виртуального хоста на веб-сервер Nginx.
Наконец, мы установим phpMyAdmin как простой в использовании инструмент администрирования базы данных и защитим его, изменив веб-каталог и включив HTTP-аутентификацию для каталога phpMyAdmin.
Предпосылка
- Переход OpenSUSE 42.1.
- Привилегии root.
- Знакомство с командой zypper.
Шаг 1. Установите и настройте SuSEfirewall2.
SuSEfirewall2 — это скрипт, который генерирует правила iptables на основе файла конфигурации \/etc/sysconfig/SuSEfirewall2\. Мы установим и настроим его для предотвращения сетевых атак на порт сервера.
Установите SuSEfirewall2 с zypper:
zypper in SuSEfirewall2
Когда установка будет завершена, нам нужно открыть несколько портов для веб-приложений и SSH. Мы откроем порт 22 для службы ssh и порты 80 и 443 для http и https. Перейдите в каталог \/etc/sysconfig/\ и отредактируйте файл \SuSEfirewall2\:
cd /etc/sysconfig/
vim SuSEfirewall2
В строке 253 добавьте номера портов сервисов через пробел:
FW_SERVICES_EXT_TCP="22 80 443"
Сохраните файл и выйдите.
Перезапустите SuSEfirewall2 и службу SSH, затем проверьте конфигурацию порта, подключившись к серверу с помощью telnet.
Перезапустите SuSEfirewall2 и службу SSH:
/sbin/rcSuSEfirewall2 restart
systemctl restart sshd
Тестирование ssh-соединения с telnet на порту 22:
telnet 192.168.1.101 22
Шаг 2 — Установите и настройте Nginx
Nginx или engine x — это высокопроизводительный HTTP- и прокси-сервер с низким потреблением памяти. Он используется крупными веб-сайтами, такими как Netflix, Pinterest, CloudFlare, Github и т. д. Nginx имеет простой для изучения синтаксис конфигурации и может также выступать в качестве балансировщика нагрузки с проверками работоспособности и обратным прокси-сервером с функциями кэширования.
На этом этапе мы установим nginx и добавим его для запуска во время загрузки. Установите его с помощью команды \zypper in\:
zypper in nginx
Запустите nginx и включите его во время загрузки:
systemctl start nginx
systemctl enable nginx
Теперь Nginx запущен, но если вы попытаетесь получить к нему доступ через веб-браузер, вы получите ошибку 403 запрещен. Эта ошибка возникает из-за отсутствия стандартного индексного документа в корневой веб-папке. Чтобы решить эту проблему, создайте новый индекс html в корневой веб-директории \/srv/www/htdocs\. Перейдите в каталог и создайте файл index.html:
cd /srv/www/htdocs/
echo "<h1>This is Nginx OpenSUSE Leap 42.1</h1>" > index.html
Откройте веб-браузер и введите IP-адрес вашего сервера, и вы получите индексную страницу:
Шаг 3 — Установите и настройте MariaDB
MariaDB — это СУБД с открытым исходным кодом (система управления реляционными базами данных), созданная на базе MySQL под лицензией GNU GPL. В этом руководстве мы установим MariaDB и настроим пароль root для оболочки MariaDB.
Установите MariaDB с помощью команды zypper:
zypper in mariadb mariadb-client
Запустите MariaDB/MySQL и добавьте его в автозагрузку с помощью команды systemctl ниже:
systemctl start mysql
systemctl enable mysql
Затем настройте пароль администратора для MariaDBb/MySQL с помощью команды mysqladmin. Другой вариант, который вы можете использовать для этой цели, — это mysql_secure_installation. На этом этапе я буду использовать mysqladmin:
/usr/bin/mysqladmin -u root password 'aqwe123'
Примечание:
\aqwe123\ - новый пароль для MariaDB/MySQL.
Затем войдите в оболочку mysql с пользователем root и паролем aqwe123:
mysql -u root -p
TYPE PASSWORD 'aqwe123'
Теперь MariaDB/MySQL установлена и настроена с нашим новым паролем.
Шаг 4 — Установите и настройте PHP-FPM
PHP-FPM или FastCGI Process Manager — это альтернатива старому PHP FastCGI с дополнительными функциями и улучшениями скорости. PHP-FPM хорошо подходит для небольших и крупных сайтов, основанных на языке программирования PHP.
На этом этапе мы установим php5-fpm с некоторыми дополнительными расширениями, необходимыми для phpMyAdmin. Установите php5-fom и расширения с помощью zypper:
zypper in php5 php5-mysql php5-fpm php5-gd php5-mbstring
После завершения установки перейдите в каталог php5-fpm и скопируйте файл конфигурации:
cd /etc/php5/fpm/
cp php-fpm.conf.default php-fpm.conf
Отредактируйте конфигурацию с помощью команды vim:
vim php-fpm.conf
Раскомментируйте строку 32, чтобы включить журнал php-fpm, префикс по умолчанию — /var, и если у вас есть какие-либо проблемы с php5-fpm, вы можете проверить файл журнала \/var/log/php-fpm.log\.
error_log = log/php-fpm.log
В строке 148 мы настроим владельца процесса nginx на пользователя Nginx. Измените пользователя и группу процесса на nginx:
user = nginx
group = nginx
Строка 159: настройте php-fpm для работы с файлом сокета, а не с портом. Измените эту строку следующим образом:
listen = /var/run/php-fpm.sock
И в строке 170 измените разрешения для сокета unix на пользователя и группу nginx с режимом 0660.
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Сохраните файл и выйдите из редактора.
Затем перейдите в каталог PHP cli и отредактируйте файл php.ini с помощью vim:
cd /etc/php5/cli/
vim php.ini
Из соображений безопасности измените значение cgi.fix_pathinfo на ноль. строка 178:
cgi.fix_pathinfo=0
Сохранить и выйти.
Скопируйте php.ini в каталог conf.d:
cp php.ini /etc/php5/conf.d/
На этом этапе конфигурация PHP-FPM выполнена, но нам еще нужно настроить Nginx. Нам нужно настроить Nginx для работы с php-fpm.
Перейдите в каталог конфигурации nginx и сделайте резервную копию файла конфигурации с помощью команды cp:
cd /etc/nginx/
cp nginx.conf nginx.conf.backup
Отредактируйте nginx.conf с помощью vim:
vim nginx.conf
Добавьте index.php в строку 48:
index index.php index.html index.htm;
Добавьте новый раздел конфигурации php в строке 68, это конфигурация для обработки запросов файлов .php.
location ~ \.php$ {
root /srv/www/htdocs;
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
Сохраните файл и выйдите.
Затем проверьте синтаксис файла конфигурации nginx, чтобы убедиться в отсутствии ошибок. Затем запустите демон php-fpm и перезапустите Nginx:
nginx -t
systemctl start php-fpm
systemctl restart nginx
Чтобы убедиться, что php-fpm и nginx работают правильно, мы добавим новый тестовый файл php. Перейдите в каталог DocumentRoot и создайте файл phpinfo с именем info.php:
cd /srv/www/htdocs/
echo "<?php phpinfo(); ?>" > info.php
Откройте веб-браузер и введите IP-адрес вашего сервера:
Nginx и php-fpm работают.
Шаг 5. Настройте виртуальный хост Nginx.
На этом этапе я покажу вам, как добавить конфигурацию виртуального хоста для веб-сайта. Мы настроим новый домен \www.example.com\ и каталог webroot в \/srv/www/example/\. Пожалуйста, замените example и example.com своим собственным доменным именем.
GNginx nginx и создайте новый каталог для конфигурации виртуального хоста.
cd /etc/nginx/
mkdir vhosts.d/
cd vhosts.d/
Затем создайте новый файл example.conf для виртуального хоста с доменным именем \example.com\.
vim example.conf
вставьте конфигурацию виртуального хоста ниже:
server {
server_name example.com;
return 301 $scheme://www.example.com$request_uri;
}
server {
listen 80;
root /srv/www/example;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Сохраните файл и выйдите.
Теперь создайте каталог для сайта \example.com\ в каталоге /srv/www/ и создайте новый индексный файл.
mkdir -p /srv/www/example/
cd /srv/www/example/
echo "<h1>This is www.example.com site.</h1>" > index.html
echo "<?php phpinfo(); ?>" > info.php
Теперь откройте веб-браузер и посетите домен:
пример.com
Вы будете перенаправлены на домен www, и теперь получите доступ к файлу php:
Шаг 6 – Установите и настройте phpMyAdmin
PhpMyAdmin — это приложение на основе PHP для управления базами данных MySQL или MariaDB из веб-браузера. На этом шаге я настрою phpMyAdmin для работы под управлением php-fpm, а затем сделаю PHPMyAdmin безопасным, ограничив доступ к странице входа в phpMyAdmin.
Установите phpMyAdmin с помощью команды zypper:
zypper in phpMyAdmin
Команда установит все пакеты, необходимые phpMyAdmin, в том числе apache2-utils, необходимые для создания файла паролей.
Теперь у нас в системе установлен phpMyAdmin. Далее мы создадим новый файл htpasswd с помощью команды htpasswd.
создать файл паролей htpasswd:
htpasswd -c /etc/nginx/htpasswd megumi
TYPE YOUR PASSWORD for user megumi
Затем нам нужно настроить Nginx для использования базовой HTTP-аутентификации для каталога phpmyadmin. Мы ограничим доступ к странице входа в phpMyAdmin с помощью auth_basic, и только пользователи, указанные в файле \htpasswd\, смогут войти в phpMyAdmin.
Перейдите в каталог конфигурации Nginx и отредактируйте файл nginx.conf:
cd /etc/nginx/
vim nginx.conf
Определите корневой веб-каталог внутри раздела сервера, добавив новую строку под строкой 40 (имя_сервера):
server_name localhost;
root /srv/www/htdocs; #newline config
Затем добавьте конфигурацию phpMyAdmin для nginx в строке 60:
location ~ ^/phpMyAdmin/.*\.php$ {
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/htpasswd;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Сохраните файл и выйдите из редактора.
Проверьте конфигурацию nginx и перезапустите nginx:
nginx -t
systemctl restart nginx
Затем откройте веб-браузер и перейдите по URL-адресу phpMyAdmin, вам будет предложено ввести имя пользователя и пароль для страницы входа.
Затем войдите в систему, используя свое имя пользователя и пароль MySQL.
phpMyAdmin был успешно установлен, и только пользователь в htpasswd может войти в систему.