Рассмотрим установку сервера Apache и PHP на Linux на примере Ubuntu. Данные компоненты устанавливаются через пакеты, поэтому прежде всего нам надо убедиться, что нам доступны новые пакеты. Для этого выполним следующие команды:
sudo apt update sudo apt upgrade
Для установки Apache выполним команду
sudo apt install apache2
После установки в папке /etc/apache2/ мы сможем найти ряд файлов конфигурации веб-сервера:
eugene@Eugene:/etc/apache2$ ls -l total 80 -rw-r--r-- 1 root root 7178 Feb 20 23:11 apache2.conf drwxr-xr-x 2 root root 4096 Feb 20 21:29 conf-available drwxr-xr-x 2 root root 4096 Feb 20 21:29 conf-enabled -rw-r--r-- 1 root root 1782 Jul 21 2023 envvars -rw-r--r-- 1 root root 31063 Jul 21 2023 magic drwxr-xr-x 2 root root 12288 Feb 20 21:29 mods-available drwxr-xr-x 2 root root 4096 Feb 20 21:29 mods-enabled -rw-r--r-- 1 root root 274 Jul 21 2023 ports.conf drwxr-xr-x 2 root root 4096 Feb 20 23:12 sites-available drwxr-xr-x 2 root root 4096 Feb 20 22:52 sites-enabled
apache2.conf: основной файл конфигурации Apache, который определяет глобальные настройки (на Windows ему соответствует httpd.conf)
envvars: файл, который задает переменные окружения для веб-сервера
magic: задает инструкции для определения MIME-типа на основании первых нескольких байт файла
ports.conf: определяет TCP-порт, на котором будет запущен Apache2
Например, откроем файл ports.conf в каком-нибудь текстовом редакторе. И по умолчанию файл имеет следующее содержимое:
# If you just change the port or add more ports here, you will likely also # have to change the VirtualHost statement in # /etc/apache2/sites-enabled/000-default.conf Listen 80 <IfModule ssl_module> Listen 443 </IfModule> <IfModule mod_gnutls.c> Listen 443 </IfModule>
Здесь строка "Listen 80" указывает, что веб-сервер будет запущен на порту 80. И сразу после установки Apache мы можем использовать этот порт для обращения к веб-серверу в бразере. Для обращения к локальному серверу по умолчанию применяется имя "localhost" или адрес "127.0.0.1". Поэтому введем в адресной строке адрес "http://localhost:80" или "http://127.0.0.1:80". Нам отобразится некоторое стандартное содержимое:
Так как 80 порт - стандартный, то при наборе адреса можно просто использовать "http://localhost".
А если нам потребуется изменить номер порта с 80 на какой-то другой, то для этого надо будет изменить номер порта в строке "Listen 80" и перезапустить веб-сервер.
Кроме того, в папке sites-available расположен файл 000-default.conf - файл конфигурации единственного хоста по умолчанию - хоста, который запускается по адресу http://localhost.
Если нужно будет разрешить входящий трафик для Apache по сети (например, из других компьютеров, которые подключены к локальной сети), надо добавить соответствующие правила для файервола.
Как правило, в качестве файервола применяется UFW (Uncomplicated Firewall). Для добавления исключений для Apache выполним следующую команду:
sudo ufw allow 'Apache Full'
Последняя часть команды - Apache Full указывает на тип сервера. Здесь мы можем использовать следующие типы:
Apache: Открывает только порт 80 (HTTP).
Apache Full: Открывает как порт 80 (HTTP), так и порт 443 (HTTPS).
Apache Secure: Открывает только порт 443 (HTTPS).
Затем может потребоваться перезагрузить UFW:
sudo ufw enable
Теперь, когда Apache установлен и работает, также установим PHP и необходимые модули для интеграции с Apache. Для этого установим следующие пакеты:
sudo apt install php libapache2-mod-php
Здесь устанавливается два пакета:
php: Базовый пакет PHP
libapache2-mod-php: Модуль, который позволяет Apache обрабатывать PHP-файлы
После установки, возможно, потребуется перезапустить Apache, чтобы он загрузил новый модуль PHP:
sudo systemctl restart apache2
Стоит отметить, что также можно установить ряд дополнительных пакетов:
sudo apt install php-mysql php-pgsql php-cli php-curl php-json php-gd php-mbstring php-xml php-zip php-cgi
php-mysql: Модуль для работы с базами данных MySQL/MariaDB.
php-pgsql: Модуль для работы с базами данных PostgreSQL.
php-cli: Интерфейс командной строки PHP, полезный для тестирования сценариев.
php-cgi: Модуль для выполнения скриптов PHP без необходимости установки модуля PHP для Apache.
php-curl: Позволяет PHP отправлять запросы по URL.
php-json: Модуль для обработки данных JSON.
php-gd: Модуль для работы с изображениями.
php-mbstring: Модуль для поддержки многобайтовых строк.
php-xml: Модуль для работы с XML.
php-zip: Модуль для работы с ZIP-архивами.
После установки PHP перезапустим Apache командой:
sudo systemctl restart apache2.service
Чтобы убедиться, что PHP работает правильно с Apache, создадим простой скрипт PHP:
sudo nano /var/www/html/phpinfo.php
В открывшемся редакторе Nano (можно использовать любой другой текстовый редактор) вставим следующий код:
<?php phpinfo(); ?>
С помощью тегов <?php и ?> определяем область, где будет располагаться код на языке PHP. В частности, функция
phpinfo() выводит всю информацию об интерпретаторе и системе.
Сохраним файл (Ctrl+O, затем Enter) и выйдите из редактора (Ctrl+X).
Теперь откроем веб-браузер и перейдем по адресу http://localhost/phpinfo.php. Мы должны увидеть подробную страницу с информацией об установке PHP.
По умолчанию корневая директория веб-сервера Apache находится по адресу /var/www/html, так как данный путь указан в файле "/etc/apache2/sites-available/000-default.conf". Это место, куда по умолчанию помещаются скрипты php и другие файлы сервера, как статические html-страницы, файлы css, javascript и т.д. Для простого веб-сайта часто достаточно использовать /var/www/html. Но мы можем изменить этот путь на другой каталог. Например, создадим в домашнем каталоге Home новую папку "localhost" с помощью следующей команды:
mkdir ~/localhost
Откроем файл /etc/apache2/sites-available/000-default.conf и изменим в нем строку
DocumentRoot /var/www/html
на
DocumentRoot /home/[USER]/localhost
Здесь вместо [USER] указывается имя текущего пользователя. Например, в моем случае это "eugene", соответственно я указываю
DocumentRoot /home/eugene/localhost
Далее настроим доступ к папке localhost. Откроем файл /etc/apache2/apache2.conf и найдем в нем строки:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<Directory /home/eugene/localhost/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
Allow from all
</Directory>
и заменим их на
<Directory /home/[USER]/localhost/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
Allow from all
</Directory>
Где вместо [USER] также указывается имя текущего пользователя, то есть путь к папке.
Также убедимся, что для папки пользователя установлены соответствующие права доступа, выполнив команду
chmod 755 $HOME
Для теста создадим в папке localhost файл index.html с простейшим содержимым. Для этого выполним следующую команду:
echo "Hello METANIT.COM" > ~/localhost/index.html
Перезапустим веб-сервер с помощью команды
sudo systemctl restart apache2ls -la.service
Далее обратимся к браузере по адресу "http://localhost":