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

Эта тема проведет вас через пошаговый процесс установки для создания полной платформы среды веб-среды с LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin), и с помощью флагов USE flags, предоставленных управлением пакетами Портаж, которые предлагают набор функциональности пакета в процессе компиляции – модули или настройки, необходимые для веб-платформы, значительно изменят конфигурации сервера.
Требования
- Установка Генту с жестким профилем для сервера, доступного в Интернете – Руководство по установке Генту.
- Настроенная сеть с статическим IP-адресом.
Шаг 1: Установка веб-сервера Nginx
1. Прежде чем приступить к установке Nginx, убедитесь, что ваш сетевой интерфейс настроен с использованием статического IP-адреса, и убедитесь, что исходные файлы Portage и ваша система обновлены.
$ sudo su - # emerge --sync # emerge --update --deep --with-bdeps=y @world

2. После завершения процесса обновления, приступайте к установке Nginx, выбирая предпочтительные настройки и модули, указывая флаги USE Nginx в файле make.conf Portage. Сначала перечислите модули установки Nginx по умолчанию, запустив следующую команду.
# emerge -pv nginx
Для получения подробной информации о модулях (флагах USE для пакетов) используйте команду equery.
# equery uses nginx

Затем установите Nginx следующей командой.
# emerge --ask nginx

Если вам нужны дополнительные модули (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

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

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

# equery uses php

# 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 и закомментируйте все его операторы, чтобы он выглядел так, как на скриншоте ниже.

Не закрывайте файл и перейдите в самый конец, добавив следующий оператор перед последней закрывающей фигурной скобкой “ } “.
Include /etc/nginx/sites-enabled/*.conf;

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 } }

Для локального хоста с 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; } }

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

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

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

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

Используя файлы конфигурации виртуальных хостов 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

В случае конфликта пакетов с 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;

16. Если вы не слишком хорошо разбираетесь в командной строке MySQL, установите веб-интерфейс PhpMyAdmin, выполнив следующие команды.
# emerge -pv dev-db/phpmyadmin # echo “dev-db/phpmyadmin setup vhosts” >> /etc/portage/package.use # emerge --ask dev-db/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

# ln -s /usr/share/webapps/phpmyadmin/4.2.2/htdocs/ /var/www/localhost/htdocs/phpmyadmin

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

19. Последним шагом является включение служб в системе, чтобы они автоматически запускались после перезагрузки.
# rc-update add nginx default # rc-update add php-fpm default # rc-update add mysql default

Теперь у нас есть минимальная среда настройки для веб-хостинга, и если вам нужны только HTML, JavaScript и динамически генерируемые страницы PHP, и вам не нужны веб-сайты SSL, то вышеуказанная конфигурация должна вас удовлетворить.
Source:
https://www.tecmint.com/install-lemp-in-gentoo-linux/