How to install and configure PHP
PHP is a general-purpose scripting language well-suited for Web development since PHP scripts can be embedded into HTML. This guide explains how to install and configure PHP in an Ubuntu System with Apache2 and MySQL.
Prerequisites
Before installing PHP you should install Apache (or a preferred web server) and a database service such as MySQL.
- To install the Apache package, please refer to our Apache guide.
- To install and configure a MySQL database service, refer to our MySQL guide.
Install PHP
PHP is available on Ubuntu Linux, but unlike Python (which comes pre-installed), must be manually installed.
To install PHP – and the Apache PHP module – you can enter the following command into a terminal prompt:
sudo apt install php libapache2-mod-php
Install optional packages
The following packages are optional, and can be installed if you need them for your setup.
- PHP-CLI
You can run PHP scripts via the Command Line Interface (CLI). To do this, you must first install the php-cli package. You can install it by running the following command:
sudo apt install php-mysql
sudo apt install php-pgsql
Configure PHP
If you have installed the libapache2-mod-php or php-cgi packages, you can run PHP scripts from your web browser. If you have installed the php-cli package, you can run PHP scripts at a terminal prompt.
By default, when libapache2-mod-php is installed, the Apache2 web server is configured to run PHP scripts using this module. First, verify if the files /etc/apache2/mods-enabled/php8.*.conf and /etc/apache2/mods-enabled/php8.*.load exist. If they do not exist, you can enable the module using the a2enmod command.
Once you have installed the PHP-related packages and enabled the Apache PHP module, you should restart the Apache2 web server to run PHP scripts, by running the following command:
sudo systemctl restart apache2.service
Test your setup
To verify your installation, you can run the following PHP phpinfo script:
You can save the content in a file – phpinfo.php for example – and place it under the DocumentRoot directory of the Apache2 web server. Pointing your browser to http://hostname/phpinfo.php will display the values of various PHP configuration parameters.
Further reading
- For more in depth information see the php.net documentation.
- There are a plethora of books on PHP 7 and PHP 8. A good book from O’Reilly is Learning PHP, which includes an exploration of PHP 7’s enhancements to the language.
- Also, see the Apache MySQL PHP Ubuntu Wiki page for more information.
Как установить LAMP на Ubuntu 20.04
LAMP представляет собой набор серверных программ с открытым исходным кодом, который устанавливается на сервер как комплект софта, предназначенный для размещения веб-сайтов. Данная четырёхбуквенная аббревиатура обозначает, что:
- в операционной системе семейства Linux ( L )
- разворачивается веб-сервер Apache ( A )
- и устанавливается система управления базами данных MySQL ( M )
- для создания веб-страниц на языке PHP ( P ).
В качестве сервера будем использовать VPS, работающий под управлением Ubuntu Server 20.04. Предварительно, перед установкой LAMP, необходимо будет произвести первоначальную настройку операционной системы. О том, как это сделать, у нас есть специальное руководство.
Установка Apache
Основа LAMP — это веб-сервер, а именно, веб-сервер Apache, один из популярнейших веб-серверов, который до возникновения Nginx являлся стандартным веб-сервером для большей части сайтов в интернете.
Как всегда перед установкой нового софта необходимо обновить список пакетов нашего сервера:
Непосредственно установка Apache запускается следующей командой:
Настройка брандмауэра
Если вы производили настройки межсетевого экрана на основе нашей инструкции, то теперь вы можете воспользоваться одним из готовых профилей брандмауэра для Apache:
- Apache – открывает доступ на 80-й порт;
- Apache Full – открывает доступ на 80-й и 443-й порт;
- Apache Secure – открывает доступ только на 443-й порт.
В случае, если для доступа к своим веб-ресурсам вы планируете использовать сертификат SSL, то вам потребуется открыть доступ к портам 80 и 443. Если такой необходимости нет, то достаточно открыть доступ только к порту 80. В нашем примере мы применяем настройку брандмауэра по первому варианту:
Увидеть, какие порты открыты в UFW, можно с помощью следующей команды:
Теперь можно будет проверить работу веб-сервера. Для этого необходимо перейти в браузере на страницу вашего сервера:
В данном случае, XXX.XXX.XXX.XXX – IP-адрес вашего VPS.
Если все было настроено правильно, вы увидите дефолтную страницу установленного веб-сервера:
Установка MySQL
Следующий этап — это установка системы управления базами данных, а именно, MySQL.
MySQL является довольно популярной СУБД. MySQL используется для хранения данных сайта и довольно часто используется в приложениях, написанных с помощью PHP.
Команда для инсталляции выглядит следующим образом:
$ sudo apt install mysql-server
После завершения процесса можно проверить версию установленного пакета:
Команда должна вернуть строку подобную следующей:
Теперь необходимо произвести настройку СУБД, которая позволит изменить некоторые параметры безопасности, используемые системой по умолчанию. Для того, чтобы это сделать, нужно запустить специальный скрипт. Запуск скрипта производится командой:
$ sudo mysql_secure_installation
Во-первых, скрипт попросит вас включить валидацию паролей пользователей. Для согласия на включение следует нажать y или Y .
Во-вторых, если вы включили компоненту валидации, потребуется выбрать её уровень. Выбирать нужно набирая цифры: 0 – низкий, 1 – средний, 2 – высокий.
Далее, система запросит установить пароль для учётной записи root , которая будет использоваться при подключении к MySQL.
Для всех остальных вопросов нужно выбирать Y и нажимать в каждом из шагов диалога. Выбрав эти ответы, вы удалите анонимных пользователей, тестовую базу данных, а так же отключите возможность удаленного входа для пользователя root , после чего новые правила будут активированы в MySQL.
В некоторых случаях на этапе установки нового пароля для учётной записи root система выдаёт сообщение следующего вида:
… Failed! Error: SET PASSWORD has no significance for user ‘root’@’localhost’ as the authentication method used doesn’t store authentication data in the MySQL server. Please consider using ALTER USER instead if you want to change authentication parameters.
Чтобы устранить данную ошибку, необходимо:
● прервать работу скрипта завершив SSH-сессию
● подключиться к MySQL: sudo mysql
● сбросить пароль root ‘а: ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password by ‘NewPassForRoot’; (здесь NewPassForRoot – новый пароль, вместо которого вам, конечно же, необходимо придумать и ввести свой)
● выйти из MySQL: exit
● повторно запустить на исполнение скрипт: sudo mysql_secure_installation
В качестве проверки работоспособности MySQL попробуйте подключиться к нему из командной строки. Для подключения вам понадобится пароль пользователя root :
Для выхода из консоли MySQL используйте следующую команду:
Более подробно процесс установки и настройки MySQL на Ubuntu 20.04 описан в нашей статье, посвящённой именно этой СУБД.
Установка PHP
PHP — скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений. Поддерживается большинством провайдеров и позволяет выполнять приложения написанные на PHP.
Для дальнейшей работы вам также понадобится библиотека libapache2-mod-php для обработки PHP в Apache и библиотека php-mysql для PHP, используемая для подключения к MySQL из PHP.
Чтобы проинсталлировать PHP, а также необходимые библиотеки, используйте следующую команду:
$ sudo apt install php libapache2-mod-php php-mysql
По завершению установки есть возможность посмотреть версию установленного пакета:
На данном этапе уже можно использовать связку LAMP для своей работы. Однако, для того, чтобы, провести тест работоспособности PHP, логично было бы предварительно настроить виртуальный хост Apache. В нём будут содержаться каталоги и файлы вашего сайта.
Создание виртуального хоста для сайта
В этом разделе мы создадим виртуальный хост с использованием веб-сервера Apache, в котором будут инкапсулироваться данные конфигурации нашего веб-сайта. В качестве сайта мы будем использовать my-domain.host . Естественно, вместо него на своём сервере вы должны использовать имя вашего онлайн-ресурса.
По умолчанию на веб-сервере Apache присутствует единственный серверный блок, конфигурация которого настроена на каталог /var/www/html . Если вы уверены, что на вашем сервере будет работать только один веб-сайт, то можно разместить его там. Мы же поместим наш хост в отдельную директорию, а /var/www/html оставим в качестве дефолтного каталога.
Для начала необходимо создать директорию для нашего сайта (не забывайте подставлять имя своего хоста вместо my-domain.host ):
$ cd /var/www $ sudo mkdir my-domain.host
Далее, нужно будет назначить соответствующие права на созданный каталог. Права будем назначать при помощи переменной среды $USER . Через эту переменную владеть директорией сможет текущий системный пользователь:
$ sudo chown -R $USER:$USER /var/www/my-domain.host
На следующем шаге необходимо создать конфигурационный файл в каталоге веб-сервера. Создавать его будем при помощи редактора nano :
$ cd /etc/apache2/sites-available $ sudo nano my-domain.host.conf
В пустой созданный файл вставьте следующий текст (не забывайте про то, что нужно подставлять имя именно вашего сайта):
ServerName my-domain.host ServerAlias www.my-domain.host ServerAdmin webmaster@localhost DocumentRoot /var/www/my-domain.host ErrorLog $/error.log CustomLog $/access.log combined
При выходе из текстового редактора сохраните внесённые в файл изменения.
Теперь можно активировать новый виртуальный хост:
$ sudo a2ensite my-domain.host
Если есть необходимость отключить дефолтный виртуальный хост, то сделать это можно при помощи команды:
$ sudo a2dissite 000-default
Далее, нужно проверить конфигурацию нашего хоста на предмет отсутствия синтаксических ошибок:
$ sudo apache2ctl configtest
Если проверка выдаст сообщение вида Syntax OK , то перезапустите веб-сервер для применения внесённых изменений:
$ sudo systemctl reload apache2
Таким образом, мы активировали наш сайт, но он ещё не имеет никакого содержимого. Поэтому теперь необходимо создать для него стартовую страницу. Для этого в директории /var/www/ my-domain.host нужно будет создать файл index.html :
$ cd /var/www/my-domain.host $ nano index.html
В качестве примера наполните созданный файл следующим содержимым:
My Apache site - my-domain.host
You see my Apache site my-domain.host on Ubuntu 20.04
Закройте файл сохранив изменения, после чего попробуйте перейти на созданную страницу. Для этого введите IP-адреса вашего VPS в строке браузера. Более того, если имя вашего сайта имеет привязку A-записи к IP-адресу вашего сервера, то вы сможете перейти на страницу вашего сайта набрав в строке браузера его имя.
Отображение браузером страницы, созданной при помощи файла index.html , будет означать, что ваш виртуальный хост функционирует.
Поскольку мы настаиваем веб-сервер для создания сайта на PHP, то скорее всего ваша начальная страница будет содержаться в файле вида index.php . Когда такой файл вы поместите в каталог вашей онлайн-страницы, файл index.html можно будет удалить. Вернее, это нужно будет сделать, так как по умолчанию index.html имеет приоритет над файлом index.php . С другой стороны, настройку приоритетов тоже можно будет изменить.
Таким образом, можно переходить к проверке корректности установки и настройке пакета PHP.
Настройка PHP
Теперь мы поместим на наш ресурс тестовый PHP-скрипт, который поможет нам убедиться, что веб-сервер Apache способен работать с PHP.
В директории /var/www/my-domain.host/ (вместо my-domain.host вам нужно использовать имя своего хоста) создайте файл info.php :
$ cd /var/www/my-domain.host $ nano info.php
Файл info.php должен содержать следующий текст:
Закройте файл сохранив внесённые в него изменения, после чего перейдите в браузере по адресу http://XXX.XXX.XXX.XXX/info.php , где XXX.XXX.XXX.XXX – IP-адрес вашего виртуального сервера. В результате в вашем браузере должна открыться конфигурационная страница PHP:
Поскольку на выведенной странице содержится большое количество конфиденциальной информации о вашей системе, лучше удалить файл info.php после того, как вы теперь убедились, что PHP настроен корректно:
$ sudo rm /var/www/my-domain.host/info.php
Заключение
Таким образом, в результате проделанной работы мы развернули универсальный инструмент для хостинга и разработки онлайн-ресурсов. В итоге, теперь вы можете создавать веб-страницы на PHP, используя MySQL в качестве системы управления базами данных. При этом как веб-сервер в данном мануале мы использовали такое программное обеспечение как Apache.