Установка 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, которые предлагают набор функций пакета в процессе компиляции — модули или настройки, необходимые для веб-платформы, сильно изменяют конфигурации сервера.
Требования
- Установка Gentoo с защищенным профилем для сервера с выходом в Интернет — Руководство по установке Gentoo.
- Сеть настроена со статическим 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, приведенная выше конфигурация должна вас удовлетворить.