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

Установка Lighttpd с PHP 7 (PHP-FPM) и MySQL 5.7 в Ubuntu 16.04 LTS


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

  • Ubuntu 10.04 (Lucid Lynx)

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

  1. 1 Предварительное примечание
  2. 2 Установка MySQL 5.7
  3. 3 Установка Lighttpd
  4. 4 Установка PHP 7.0
  5. 5 Настройка Lighttpd и PHP 7.0
  6. 6 Тестирование PHP 7.0/Получение сведений об установке PHP
  7. 7 Получение поддержки MySQL в PHP
  8. 8 phpMyAdmin
  9. 9 Заставьте PHP-FPM использовать TCP-соединение (необязательно)
  10. 10 ссылок

Lighttpd — это безопасный, быстрый, соответствующий стандартам веб-сервер, разработанный для сред, критичных к скорости. В этом руководстве показано, как установить Lighttpd на сервер Ubuntu 16.04 с поддержкой PHP 7 (через PHP-FPM) и MySQL 5.7. PHP-FPM (FastCGI Process Manager) — это альтернативная реализация PHP FastCGI с некоторыми дополнительными функциями, полезными для сайтов любого размера, особенно для загруженных сайтов. В этом руководстве я использую PHP-FPM вместо Lighttpds spawn-fcgi.

1 Предварительное примечание

В этом руководстве я использую имя хоста server1.example.com с IP-адресом 192.168.1.100. Эти настройки могут отличаться для вас, поэтому вам придется заменить их там, где это необходимо.

Я выполняю все шаги в этом руководстве с привилегиями root, поэтому убедитесь, что вы вошли в систему как root:

sudo -s

2 Установка MySQL 5.7

Сначала мы устанавливаем MySQL следующим образом:

apt-get -y install mysql-server mysql-client

Вам будет предложено ввести пароль для пользователя root MySQL — этот пароль действителен для пользователя [email , поэтому нам не нужно указывать пароль root MySQL вручную позже:

Новый пароль для пользователя \root\ MySQL: <-- yourrootsqlpassword
Повторите пароль для пользователя \root\ MySQL: <-- yourrootsqlpassword

Программа установки установила корневой пароль MySQL, но есть еще несколько параметров, которые следует изменить для безопасной установки MySQL. Это можно сделать с помощью команды mysql_secure_installation.

mysql_secure_installation

Команда интерактивна:

:~# mysql_secure_installation
Securing the MySQL server deployment.
Enter password for user root: <-- Enter the MySQL root password
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No: <-- Press y if you want this function or press Enter otherwise.
Using existing password for root.
Change the password for root ? ((Press y|Y for Yes, any other key for No) : <-- Press enter
... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL 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? (Press y|Y for Yes, any other key for No) : <-- y
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? (Press y|Y for Yes, any other key for No) : <-- y
Success.
By default, MySQL 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? (Press y|Y for Yes, any other key for No) : <-- y
- 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? (Press y|Y for Yes, any other key for No) : <-- y
Success.
All done!

3 Установка Lighttpd

Lighttpd доступен в виде пакета Ubuntu. Поэтому мы можем установить его напрямую с помощью apt из репозитория пакетов Ubuntu Xenial Xerus:

apt-get -y install lighttpd

Теперь направьте свой браузер на http://192.168.1.100/, и вы должны увидеть страницу-заполнитель Lighttpd:

Корень документа Lighttpds по умолчанию — /var/www/html в Ubuntu, а файл конфигурации — /etc/lighttpd/lighttpd.conf. Дополнительные конфигурации хранятся в файлах в каталоге /etc/lighttpd/conf-available — эти конфигурации можно включить с помощью команды lighttpd-enable-mod, которая создает символическую ссылку из каталога /etc/lighttpd/conf-enabled на соответствующую конфигурацию. файл в /etc/lighttpd/conf-available. Вы можете отключить конфигурации с помощью команды lighttpd-disable-mod.

4 Установка PHP 7.0

Мы можем заставить PHP работать в Lighttpd через PHP-FPM, который мы устанавливаем следующим образом:

apt-get -y install php7.0-fpm php7.0

PHP-FPM — это процесс-демон (со сценарием инициализации php5-fpm), который запускает сервер FastCGI в сокете /var/run/php/php7.0-fpm.sock.

5 Настройка Lighttpd и PHP 7.0

Чтобы включить PHP в Lighttpd, мы должны изменить /etc/php/7.0/fpm/php.ini и раскомментировать строку cgi.fix_pathinfo=1:

nano /etc/php/7.0/fpm/php.ini
[...]
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI.  PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is.  For more information on PATH_INFO, see the cgi specs.  Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec.  A setting
; of zero causes PHP to behave as before.  Default is 1.  You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo=1
[...]

Файл конфигурации Lighttpd для PHP /etc/lighttpd/conf-available/15-fastcgi-php.conf подходит для использования с spawn-fcgi, однако мы хотим использовать PHP-FPM, поэтому создаем резервную копию файла ( с именем 15-fastcgi-php.conf.bak) и измените 15-fastcgi-php.conf следующим образом:

cd /etc/lighttpd/conf-available/
cp 15-fastcgi-php.conf 15-fastcgi-php.conf.bak
nano 15-fastcgi-php.conf
# /usr/share/doc/lighttpd-doc/fastcgi.txt.gz
# http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions#mod_fastcgi-fastcgi

## Start an FastCGI server for php (needs the php7.0-cgi package)
fastcgi.server += ( ".php" =>
        ((
                "socket" => "/var/run/php/php7.0-fpm.sock",
                "broken-scriptfilename" => "enable"
        ))
)

Чтобы включить конфигурацию fastcgi, выполните следующие команды:

lighttpd-enable-mod fastcgi
lighttpd-enable-mod fastcgi-php

Это создает символические ссылки /etc/lighttpd/conf-enabled/10-fastcgi.conf, которые указывают на /etc/lighttpd/conf-available/10-fastcgi.conf и /etc/lighttpd/conf-enabled/15-fastcgi-php. .conf, который указывает на /etc/lighttpd/conf-available/15-fastcgi-php.conf:

ls -l /etc/lighttpd/conf-enabled
:/etc/lighttpd/conf-available#

Затем перезагружаем Lighttpd:

service lighttpd force-reload

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

apt-get -y install language-pack-en-base  
dpkg-reconfigure locales

6 Тестирование PHP 7.0/Получение подробной информации об установке PHP

Корень документа веб-сайта по умолчанию — /var/www/html. Теперь мы создадим небольшой файл PHP (info.php) в этом каталоге и вызовем его в браузере. Файл будет отображать множество полезных сведений о нашей установке PHP, например, установленную версию PHP.

nano /var/www/html/info.php
<?php
phpinfo();
?>

Теперь мы вызываем этот файл в браузере (например, http://192.168.1.100/info.php):

Как видите, PHP 7.0 работает и работает через FPM/FastCGI, как показано в строке API сервера. Если вы прокрутите дальше вниз, вы увидите все модули, которые уже включены в PHP5. MySQL там не указан, что означает, что у нас пока нет поддержки MySQL в PHP.

7 Получение поддержки MySQL в PHP

Чтобы получить поддержку MySQL в PHP, мы можем установить пакет php7.0-mysql. Это хорошая идея, чтобы установить некоторые другие модули PHP, а также они могут вам понадобиться для ваших приложений. Вы можете искать доступные модули PHP следующим образом:

apt-cache search php7.0

Выберите те, которые вам нужны, и установите их следующим образом:

apt-get -y install php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php-imagick php7.0-imap php7.0-mcrypt php-memcache  php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-mbstring php-gettext

APCu – это расширение для модуля PHP Opcache, входящее в состав PHP 7. Оно добавляет некоторые функции совместимости для программного обеспечения, поддерживающего кэш APC (например, подключаемые модули кеша Wordpress).

APCu можно установить следующим образом:

apt-get -y install php-apcu

Теперь перезагрузите PHP-FPM:

service php7.0-fpm reload

Теперь перезагрузите http://192.168.1.100/info.php в браузере и снова прокрутите вниз до раздела модулей. Теперь вы должны найти там много новых модулей, включая модуль mysqli и mysqlnd:

8 phpMyAdmin

phpMyAdmin — это веб-интерфейс, через который вы можете управлять своими базами данных MySQL. Это хорошая идея, чтобы установить его:

apt-get -y install phpmyadmin

Вы увидите следующие вопросы:

Web server to reconfigure automatically: <-- lighttpd
Configure database for phpmyadmin with dbconfig-common? <-- Yes
MySQL application password for phpmyadmin: <-- Press Enter

Если вы получаете следующую ошибку:

Run /etc/init.d/lighttpd force-reload to enable changes
dpkg: error processing package phpmyadmin (--configure):
subprocess installed post-installation script returned error exit status 2
E: Sub-process /usr/bin/dpkg returned an error code (1)

Затем выполните эти команды:

/etc/init.d/lighttpd force-reload
apt-get -y install phpmyadmin

После этого вы можете получить доступ к phpMyAdmin по адресу http://192.168.1.100/phpmyadmin/:

9 Заставить PHP-FPM использовать TCP-соединение (необязательно)

По умолчанию PHP-FPM прослушивает сокет /var/run/php/php7.0-fpm.sock. Также можно заставить PHP-FPM использовать TCP-соединение. Для этого откройте /etc/php/7.0/fpm/pool.d/www.conf...

nano /etc/php/7.0/fpm/pool.d/www.conf

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

[...]
;listen = /var/run/php/php7.0-fpm.sock
listen = 127.0.0.1:9000
[...]

Это заставит PHP-FPM прослушивать порт 9000 на IP 127.0.0.1 (localhost). Убедитесь, что вы используете порт, который не используется в вашей системе.

Затем перезагрузите PHP-FPM:

service php7.0-fpm reload

Затем откройте файл конфигурации PHP Lighttpds /etc/lighttpd/conf-available/15-fastcgi-php.conf и замените строку сокета строками хоста и порта:

nano /etc/lighttpd/conf-available/15-fastcgi-php.conf
# /usr/share/doc/lighttpd-doc/fastcgi.txt.gz
# http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions#mod_fastcgi-fastcgi

## Start an FastCGI server for php (needs the php7.0-cgi package)
fastcgi.server += ( ".php" =>
        ((
                "host" => "127.0.0.1",
                "port" => "9000",
                "broken-scriptfilename" => "enable"
        ))
)

Наконец, перезагрузите Lighttpd:

service lighttpd force-reload

10 ссылок

  • Lighttpd: http://www.lighttpd.net/
  • PHP: http://www.php.net/
  • PHP-FPM: http://php-fpm.org/
  • MySQL: http://www.mysql.com/
  • Убунту: http://www.ubuntu.com/
  • phpMyAdmin: http://www.phpmyadmin.net/