Поиск по сайту:

Как установить Nginx с PHP и MariaDB (стек LEMP) на Fedora 31


Это руководство существует для этих версий ОС

  • Федора 17

На этой странице

  1. Предпосылки
  2. Настройка брандмауэра
  3. Установить PHP
  4. Установить MariaDB
  5. Установите Nginx
  6. Настройка Nginx
  7. Настройка PHP-FPM
  8. Заключение

Программный стек LEMP — это группа программного обеспечения с открытым исходным кодом, которое устанавливается вместе, чтобы позволить серверу размещать веб-сайты и приложения. Это аббревиатура от Linux, сервера ENginx, MySQL (здесь используется MariaDB) и PHP.

В этом руководстве вы установите стек LEMP на сервер на базе Fedora 31. Мы также установим PHPMyAdmin, Redis и Opcache.

Предпосылки

  • A server running Fedora 31.

  • A non-root sudo user.

  • Make sure everything is updated.

    $ sudo dnf upgrade
    
  • Few packages that your system needs.

    $ sudo dnf install wget curl nano -y
    

    Some of these packages may already be installed on your system.

  • Disable SELinux.

    $ sudo setenforce 0
    

Настроить брандмауэр

Первым шагом является настройка брандмауэра. Сервер Fedora поставляется с предустановленным брандмауэром Firewalld.

Проверьте, работает ли брандмауэр.

$ sudo firewall-cmd --state

Вы должны получить следующий вывод.

running

Установите общедоступную зону брандмауэра по умолчанию.

$ sudo firewall-cmd --set-default-zone=public

Проверьте текущие разрешенные службы/порты.

$ sudo firewall-cmd --zone=public --permanent --list-services

Он должен показать следующий вывод.

dhcpv6-client mdns ssh

Разрешить порты HTTP и HTTPS.

$ sudo firewall-cmd --zone=public --permanent --add-service=http
$ sudo firewall-cmd --zone=public --permanent --add-service=https

Еще раз проверьте состояние брандмауэра.

$ sudo firewall-cmd --zone=public --permanent --list-services

Вы должны увидеть аналогичный вывод.

dhcpv6-client http https mdns ssh

Перезагрузите брандмауэр.

$ sudo systemctl reload firewalld

Установить PHP

Fedora 31 по умолчанию поставляется с PHP 7.3. Но мы хотим установить PHP 7.4, для чего нам нужно добавить репозиторий REMI.

Установите репозиторий REMI, который является официальным репозиторием Fedora для установки пакетов PHP.

$ sudo dnf -y install https://rpms.remirepo.net/fedora/remi-release-31.rpm

Включите репозитории remi и remi-php74 и отключите репозиторий remi-modular. Это включает репозиторий, необходимый для установки пакетов PHP 7.4.

$ sudo dnf config-manager --set-enabled remi
$ sudo dnf config-manager --set-enabled remi-php74
$ sudo dnf config-manager --set-disabled remi-modular

Установите PHP 7.4 вместе с некоторыми дополнительными пакетами.

$ sudo dnf install -y php-cli php-fpm php-mysqlnd

Проверьте, правильно ли работает PHP.

$ php --version

Вы должны увидеть аналогичный вывод.

PHP 7.4.3 (cli) (built: Feb 18 2020 11:53:05) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

Установить MariaDB

MariaDB является заменой MySQL, что означает, что команды для запуска и работы с MariaDB такие же, как и для MySQL.

Fedora 31 по умолчанию поставляется с MariaDB 10.3, но мы также можем установить последнюю версию 10.4 (доступную на момент написания этого руководства). Для этого нам нужно добавить официальный репозиторий MariaDB.

Создайте MariaDB.repo в каталоге /etc/yum.repos.d/.

$ sudo nano /etc/yum.repos.d/MariaDB.repo

Добавьте в него следующий код.

# MariaDB 10.4 Fedora repository list
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/fedora31-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

Чтобы установить MariaDB, введите следующие команды

$ sudo dnf install MariaDB-server -y

Обратите внимание на команду. Если вы хотите установить копию (10.3) в репозиторий Fedora, вам следует использовать sudo dnf install mariadb-server, но для версии 10.4 мы используем sudo dnf install MariaDB-server.

Проверьте правильность установки MariaDB.

$ mysql --version

Вы должны увидеть следующий вывод.

mysql  Ver 15.1 Distrib 10.4.12-MariaDB, for Linux (x86_64) using  EditLine wrapper

Включите и запустите службу MariaDB.

$ sudo systemctl enable mariadb
$ sudo systemctl start mariadb

Выполните следующую команду, чтобы выполнить настройку по умолчанию, например задать пароль root, удалить анонимных пользователей, запретить удаленный вход в систему root и удалить тестовые таблицы.

$ sudo mysql_secure_installation

В MariaDB 10.4 вам будет предложено использовать пароль root или плагин unix_socket. Плагин unix_socket позволяет вам войти в MariaDB с вашими учетными данными пользователя Linux. Это считается более безопасным, хотя вам потребуется традиционное имя пользователя/пароль для использования сторонних приложений, таких как PhpMyAdmin. В этом руководстве мы будем использовать плагин unix_socket. Вы по-прежнему можете использовать PhpMyAdmin через любого пользователя, которого вы создаете для своих баз данных.

Нажатие Enter выбирает вариант по умолчанию (тот, который пишется с большой буквы, в данном случае Y).

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): [PRESS ENTER]
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] [PRESS ENTER]
Enabled successfully!
Reloading privilege tables..
 ... Success!

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] [ANSWER n]

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] [PRESS ENTER]
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] [PRESS ENTER]
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] [PRESS ENTER]
 \- Dropping test database...
 ... Success!
 \- Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] [PRESS ENTER]
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Вот и все. В следующий раз, когда вы захотите войти в MySQL, используйте следующую команду

$ sudo mysql

Введите пароль root при появлении запроса.

Установите Nginx

Fedora 31 по умолчанию поставляется со стабильной версией Nginx (1.16.1). Если вы хотите установить основную версию Nginx, следуйте нашему руководству по сборке Nginx из исходного кода. Убедитесь, что у вас установлена последняя версия Nginx и зависимости, упомянутые в руководстве. Остальные инструкции останутся прежними (соответственно измените имена путей во время команды ./configure). В этом уроке мы будем использовать стабильную версию Nginx.

Установите сервер Nginx.

$ sudo dnf install nginx -y

Проверьте, правильно ли он работает.

$ nginx -v

Вы должны увидеть следующий вывод.

nginx version: nginx/1.16.1

Запустите и включите Nginx.

$ sudo systemctl start nginx
$ sudo systemctl enable nginx

Откройте IP-адрес вашего сервера в браузере, чтобы увидеть следующую страницу. Это означает, что Nginx работает правильно.

Настроить Nginx

Настройте каталоги, в которых будут храниться серверные блоки.

$ sudo mkdir /etc/nginx/sites-available
$ sudo mkdir /etc/nginx/sites-enabled

Создайте каталог, в котором будет жить ваш сайт.

$ sudo mkdir /var/www/example.com/html -p

Использование директивы -p создает родительские каталоги, которых раньше не было.

Выполните следующую команду, чтобы добавить файл конфигурации для вашего сайта.

$ sudo nano /etc/nginx/sites-available/example.com.conf

Вставьте следующий код в редактор.

server {
  listen          *:80;
  server_name     example.com;
  root            /var/www/example.com/html;
  index           index.php index.html;

  location / {
    try_files   $uri $uri/ =404;
  }
    
  access_log /var/log/nginx/example.com.access.log;
  error_log /var/log/nginx/example.com.error.log;

  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass  unix:/run/php-fpm/www.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_index index.php;
    include  fastcgi_params;
  }
}

Этот файл предполагает, что мы будем размещать example.com в каталоге /var/www/html. Если вы не собираетесь использовать какой-либо домен и настраиваете свой сервер так, чтобы он был доступен только через IP-адрес/локальный хост, вам нужно будет удалить соответствующие настройки блока сервера из файла nginx.conf, иначе это приведет к беспорядку. с блоком сервера, который вы создадите.

Активируйте этот файл конфигурации, связав его с каталогом sites-enabled.

$ sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/

Откройте файл /etc/nginx/nginx.conf для редактирования.

$ sudo nano /etc/nginx/nginx.conf	

Вставьте следующие строки после строки include /etc/nginx/conf.d/*.conf.

include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;

Измените значение types_hash_max_size с 2048 на 4096.

types_hash_max_size 4096;

Нажмите Ctrl + X, чтобы закрыть редактор, и нажмите Y, когда будет предложено сохранить файл. Протестируйте конфигурацию Nginx.

$ sudo nginx -t

Вы должны увидеть следующий вывод, указывающий, что ваша конфигурация верна.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Перезагрузите службу Nginx.

$ sudo systemctl reload nginx

Настроить PHP-FPM

Откройте файл /etc/php-fpm.d/www.conf.

$ sudo nano /etc/php-fpm.d/www.conf

Нам нужно установить для пользователя/группы Unix процессов PHP значение nginx. Найдите в файле строки user=apache и group=apache и измените их на nginx.

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

Кроме того, установите права владения для сокета unix на nginx и удалите ; перед ними.

listen.owner = nginx
listen.group = nginx

Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

Перезапустите процесс PHP-fpm.

$ sudo systemctl restart php-fpm

Чтобы проверить настройку PHP, создайте файл test.php в папке html.

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

Добавьте в него следующее содержимое и сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

<?php phpinfo();

Запустите http:///test.php в своем веб-браузере, и вы должны увидеть следующее.

Заключение

Вот и все для этого урока. Настройка LEMP завершена, и вы можете приступить к созданию и размещению своих веб-сайтов и приложений.