Установка LEMP (Linux, Nginx, MySQL/MariaDB, PHP/PHP-FPM и PhpMyAdmin) в Gentoo Linux

Генту – один из самых быстрых дистрибутивов Linux благодаря его ориентации на сборку из исходных кодов и программе управления программным обеспечением – Портаж – предоставляет определенные инструменты, необходимые для создания полной платформы веб-разработчика, которая работает очень быстро, а также обладает высокой степенью настраиваемости.

Install Nginx in Gentoo Linux

Эта тема проведет вас через пошаговый процесс установки для создания полной платформы среды веб-среды с LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin), и с помощью флагов USE flags, предоставленных управлением пакетами Портаж, которые предлагают набор функциональности пакета в процессе компиляции – модули или настройки, необходимые для веб-платформы, значительно изменят конфигурации сервера.

Требования

  1. Установка Генту с жестким профилем для сервера, доступного в Интернете – Руководство по установке Генту.
  2. Настроенная сеть с статическим IP-адресом.

Шаг 1: Установка веб-сервера Nginx

1. Прежде чем приступить к установке Nginx, убедитесь, что ваш сетевой интерфейс настроен с использованием статического IP-адреса, и убедитесь, что исходные файлы Portage и ваша система обновлены.

$ sudo su -
# emerge --sync
# emerge --update --deep --with-bdeps=y @world
Update Gentoo Linux

2. После завершения процесса обновления, приступайте к установке Nginx, выбирая предпочтительные настройки и модули, указывая флаги USE Nginx в файле make.conf Portage. Сначала перечислите модули установки Nginx по умолчанию, запустив следующую команду.

# emerge -pv nginx

Для получения подробной информации о модулях (флагах USE для пакетов) используйте команду equery.

# equery uses nginx
List All Flag Modules

Затем установите Nginx следующей командой.

# emerge --ask nginx
Install Nginx Web Server

Если вам нужны дополнительные модули (WebDAV, fancyindex, GeoIP и т. д.) помимо тех, что компилируются по умолчанию с Nginx, добавьте их все в строку в файл make.conf портежа с директивой NGINX_MODULES_HTTP, затем перекомпилируйте Nginx с новыми модулями.

# echo 'NGINX_MODULES_HTTP="dav auth_pam fancyindex geoip fastcgi uwsgi gzip rewrite"' >> /etc/portage/make.conf
# emerge --ask nginx
Compile Nginx for New Modules

3. После завершения установки Nginx с помощью портежа, запустите веб-демон и проверьте его, направив браузер на http://localhost.

Verify Nginx Web Server

Шаг 2: Установить PHP

4. Чтобы использовать динамический веб-язык программирования PHP с сервером Nginx, установите PHP-FastCGI Process Manager (FPM), добавив fpm и другие важные расширения PHP в флаги USE портежа и убедитесь, что вы удалили расширение Apache.

# emerge -pv php
Install PHP in Gentoo
# equery uses php
PHP Extension Selection
# echo " dev-lang/php fpm cgi curl gd imap mysql mysqli pdo zip json xcache apc zlib zip truetype -apache2 " >> /etc/portage/package.use
# emerge --ask php

5. Прежде чем запустить PHP-FPM, нужно внести некоторые изменения в файл конфигурации службы. Откройте файл конфигурации php-fpm и внесите следующие изменения.

# nano /etc/php/fpm-php5.5/php-fpm.conf

Найдите и раскомментируйте следующие директивы, чтобы они выглядели таким образом.

error_log = /var/log/php-fpm.log
listen = 127.0.0.1:9000    ## Here you can use any HTTP socket (IP-PORT combination ) you want  ##
pm.start_servers = 20

6. После редактирования файла конфигурации PHP-FPM, измените разрешения на файл журнала PHP-FPM и запустите службу.

# chmod 755 /var/log/php-fpm.log
# /etc/init.d/php-fpm start

Даже если служба PHP-FPM запущена, Nginx не может взаимодействовать с шлюзом PHP, поэтому нужно внести некоторые изменения в файлы конфигурации Nginx.

Шаг 3: Редактирование конфигураций Nginx

7. Конфигурационный файл шаблона по умолчанию Nginx предоставляет только базовый HTTP сокет для локального хоста. Чтобы изменить это поведение и включить виртуальные хосты, откройте файл nginx.conf, находящийся по пути /etc/nginx/ и внесите следующие настройки.

# nano /etc/nginx/nginx.conf

Найдите первый блок server, который соответствует локальному хосту и прослушивает IP-адрес 127.0.0.1 и закомментируйте все его операторы, чтобы он выглядел так, как на скриншоте ниже.

Disable Basic HTTP Configuration

Не закрывайте файл и перейдите в самый конец, добавив следующий оператор перед последней закрывающей фигурной скобкой “ } “.

Include /etc/nginx/sites-enabled/*.conf;
Enable Nginx Virtual Host

8. Затем создайте директории sites-enabled и sites-available (для неиспользуемых виртуальных хостов) и файлы конфигурации для локального хоста на протоколах HTTP и HTTPS.

# mkdir /etc/nginx/sites-available
# mkdir /etc/nginx/sites-enabled

Создайте следующий файл конфигурации для локального хоста.

# nano /etc/nginx/sites-available/localhost.conf

Добавьте следующее содержимое файла.

server {
               listen 80;
               server_name localhost;

               access_log /var/log/nginx/localhost_access_log main;
               error_log /var/log/nginx/localhost_error_log info;

               root /var/www/localhost/htdocs;

                location / {
                index index.html index.htm index.php;
                autoindex on;
                autoindex_exact_size off;
                autoindex_localtime on;

                                }

                         location ~ \.php$ {
                       # Test for non-existent scripts or throw a 404 error
                       # Without this line, nginx will blindly send any request ending in .php to php-fpm
                       try_files $uri =404;
                        include /etc/nginx/fastcgi.conf;
                       fastcgi_pass 127.0.0.1:9000;  ## Make sure the socket corresponds with PHP-FPM conf file
                        }
                }
Create Nginx Virtual Host Configuration

Для локального хоста с SSL создайте следующий файл конфигурации.

# nano /etc/nginx/sites-available/localhost-ssl.conf

Добавьте следующее содержимое файла.

server {
               listen 443 ssl;
               server_name localhost;

            ssl on;
               ssl_certificate /etc/ssl/nginx/nginx.pem;
               ssl_certificate_key /etc/ssl/nginx/nginx.key;

               access_log /var/log/nginx/localhost.ssl_access_log main;
               error_log /var/log/nginx/localhost.ssl_error_log info;

               root /var/www/localhost/htdocs;

                                location / {
                index index.html index.htm index.php;
                autoindex on;
                autoindex_exact_size off;
                autoindex_localtime on;
                                 }                                                

                      location ~ \.php$ {
                       # Test for non-existent scripts or throw a 404 error
                       # Without this line, nginx will blindly send any request ending in .php to php-fpm
                       try_files $uri =404;
                       include /etc/nginx/fastcgi.conf;
                       fastcgi_pass 127.0.0.1:9000;
                                }
                }
Create SSL Nginx Virtual Host

9. Теперь пришло время создать два сценария в пути системного исполнения ($PATH shell variable), которые будут действовать как команды для активации или деактивации виртуальных хостов Nginx.

Создайте первый сценарий Bash под названием n2ensite, который будет включать файлы конфигурации виртуальных хостов, создавая символическую ссылку между указанными хостами из sites-available и sites-enabled.

# nano /usr/local/bin/n2eniste

Добавьте следующее содержимое файла.

#!/bin/bash
if test -d /etc/nginx/sites-available && test -d /etc/nginx/sites-enabled  ; then
echo "-----------------------------------------------"
else
mkdir /etc/nginx/sites-available
mkdir /etc/nginx/sites-enabled
fi

avail=/etc/nginx/sites-available/$1.conf
enabled=/etc/nginx/sites-enabled/
site=`ls /etc/nginx/sites-available/`

if [ "$#" != "1" ]; then
                echo "Use script: n2ensite virtual_site"
                echo -e "\nAvailable virtual hosts:\n$site"
                exit 0
else

if test -e $avail; then
sudo ln -s $avail $enabled
else
echo -e "$avail virtual host does not exist! Please create one!\n$site"
exit 0
fi

if test -e $enabled/$1.conf; then
echo "Success!! Now restart nginx server: sudo /etc/init.d/ nginx restart"
else
echo  -e "Virtual host $avail does not exist!\nPlease see available virtual hosts:\n$site"
exit 0
fi
fi
Create Virtual Host Enable Script

10. Затем создайте второй скрипт под названием n2dissite, который будет удалять указанные активные виртуальные хосты из пути Nginx sites-enabled со следующим содержимым.

# nano /usr/local/bin/n2dissite

Добавьте следующее содержимое.

#!/bin/bash
avail=/etc/nginx/sites-enabled/$1.conf
enabled=/etc/nginx/sites-enabled
site=`ls /etc/nginx/sites-available/`

if [ "$#" != "1" ]; then
                echo "Use script: n2dissite virtual_site"
                echo -e "\nAvailable virtual hosts: \n$site"
                exit 0
else

if test -e $avail; then
sudo rm  $avail
else
echo -e "$avail virtual host does not exist! Exiting!"
exit 0
fi

if test -e $enabled/$1.conf; then
echo "Error!! Could not remove $avail virtual host!"
else
echo  -e "Success! $avail has been removed!\nPlease restart Nginx: sudo /etc/init.d/nginx restart"
exit 0
fi
fi
Create Virtual Host Disable Script

11. После окончания редактирования сценариев Bash добавьте разрешения на выполнение и активируйте виртуальные хосты localhost – использовать имя файла конфигурации виртуального хоста без расширения .conf, затем перезапустите службы Nginx и PHP-FPM для применения изменений.

# chmod +x /usr/local/bin/n2dissite
# chmod +x /usr/local/bin/n2ensite
# n2ensite localhost
# n2ensite localhost-ssl
# service nginx restart
# service php-fpm restart
Restart Nginx and PHP-FPM

12. Для тестирования конфигураций создайте файл информации PHP в корневом пути по умолчанию для веб-файлов localhost (/var/www/localhost/htdocs), и перенаправьте свой браузер на https://localhost/info.php или http://localhost/info.php.

echo "<?php phpinfo(); ?>" /var/www/localhost/htdocs/info.php
Verify PHP Configuration

Используя файлы конфигурации виртуальных хостов localhost в качестве шаблонов и утилиты n2enmod и n2dismod, теперь можно легко добавлять столько веб-сайтов, сколько вам нужно, но убедитесь, что у вас есть действующие указатели DNS для интернет-сервера веб-сайтов или используйте записи локально в файле hosts системы.

Шаг 4: Установка MySQL/MariaDB + PhpMyAdmin

Для установки базы данных MySQL и веб-интерфейса PhpMyAdmin для MySQL используйте ту же процедуру, представленную в Установка LAMP на Gentoo.

13. В случае, если вы хотите использовать MariaDB, замену для MySQL, используйте следующие команды для получения USE flags и установите ее.

# emerge -pv mariadb
# emerge --ask mariadb
Install MariaDB Database

В случае конфликта пакетов с MySQL добавьте следующие строки в файл package.accept.keywords Portage.

# echo “=dev-db/mariadb-5.5.37-r1 ~amd64” >> /etc/portage/package.accept.keywords
# echo “=virtual/mysql-5.5 ~amd64” >> /etc/portage/package.accept.keywords
# emerge --ask mariadb

14. После установки базы данных MySQL запустите службу и обеспечьте ее безопасность с помощью команды mysql_secure_installation (измените пароль root, отключите вход root вне localhost, удалите анонимного пользователя/тестовую базу данных).

# service mysql start
# mysql_secure_installation

15. Войдите в базу данных MySQL, используя команду mysql -u root -p, чтобы протестировать его функциональность, и покиньте его с помощью команды exit.

# mysql -u root -p

MariaDB > show databases;
MariaDB > exit;
Verify MySQL Connectivity

16. Если вы не слишком хорошо разбираетесь в командной строке MySQL, установите веб-интерфейс PhpMyAdmin, выполнив следующие команды.

# emerge -pv dev-db/phpmyadmin
# echo “dev-db/phpmyadmin setup vhosts” >> /etc/portage/package.use
# emerge  --ask dev-db/phpmyadmin
Install PhpMyAdmin

17. После завершения установки PhpMyAdmin создайте файл конфигурации на основе образца конфигурационного файла, измените пароль blowfish_secret на случайную строку, затем создайте символическую ссылку из /usr/share/webapps/phpmyadmin/phpmyadmin_version_number/htdocs/ в корневой путь документа виртуального хоста, через который вы хотите получить доступ к веб-интерфейсу PhpMyAdmin.

# cd /usr/share/webapps/phpmyadmin/4.2.2/htdocs/
# cp config.sample.inc.php  config.inc.php
# nano config.inc.php
Configure PHPMyAdmin
# ln -s /usr/share/webapps/phpmyadmin/4.2.2/htdocs/  /var/www/localhost/htdocs/phpmyadmin
Create a PhpMyAdmin Symbolic Link

18. Чтобы получить доступ к базе данных MySQL через веб-интерфейс PhpMyAdmin, откройте браузер и используйте следующий адрес URL https://localhost/phpmyadmin.

Verify PhpMyAdmin Login

19. Последним шагом является включение служб в системе, чтобы они автоматически запускались после перезагрузки.

# rc-update add nginx default
# rc-update add php-fpm default
# rc-update add mysql default
Enable Services System Wide

Теперь у нас есть минимальная среда настройки для веб-хостинга, и если вам нужны только HTML, JavaScript и динамически генерируемые страницы PHP, и вам не нужны веб-сайты SSL, то вышеуказанная конфигурация должна вас удовлетворить.

Source:
https://www.tecmint.com/install-lemp-in-gentoo-linux/