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

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


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

В этом разделе вы шаг за шагом проведете процесс установки для создания полноценной платформы веб-среды с помощью LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin) и с помощью USE-флаги, предоставляемые Portage Package Management, которые предлагают набор функций пакета в процессе компиляции — модули или настройки, необходимые для веб-платформы, сильно изменяют конфигурации сервера.

Требования

  1. Установка Gentoo с защищенным профилем для сервера с выходом в Интернет — Руководство по установке Gentoo.
  2. Сеть настроена со статическим IP-адресом.

Шаг 1. Установите веб-сервер Nginx

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

sudo su -
emerge --sync
emerge --update --deep --with-bdeps=y @world

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

emerge -pv nginx

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

equery uses nginx

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

emerge --ask nginx

Если вам нужны дополнительные модули (WebDAV, Fancyindex, GeoIP и т. д.), помимо модулей по умолчанию, с которыми будет компилироваться Nginx, добавьте их все в одну строку в файл make.conf Portage с помощью 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. После того, как Portage завершит работу с Nginx, запустите демон http и проверьте его, перейдя в браузере по адресу http://localhost.

Шаг 2. Установите PHP

4. Чтобы использовать язык динамического веб-программирования PHP с сервером Nginx, установите PHP-FastCGI Process Manager (FPM), добавив fpm и другие важные расширения PHP в USE-флагах Portage и обязательно удалите расширение 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, который соответствует localhost и прослушивает IP-адрес 127.0.0.1, и порекомендуйте всем его операторам выглядеть так, как показано на снимке экрана ниже.

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

Include /etc/nginx/sites-enabled/*.conf;

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

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

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

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), которые действуют как команды для активации или отключения виртуальных хостов Nginx.

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

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 с поддержкой сайтов со следующим содержимым.

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 на локальном корневом пути по умолчанию для веб-файлов (/var/www/localhost/htdocs) и перенаправьте свой браузер на https://localhost/info.php или http://localhost/info.php.

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

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

Шаг 4. Установите MySQL/MariaDB + PhpMyAdmin.

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

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

emerge -pv mariadb
emerge --ask mariadb

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

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 за пределами локального хоста, удалите анонимного пользователя/тестовую базу данных).

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, приведенная выше конфигурация должна вас удовлетворить.