Установка сервера в связке: apache 2, php 5 и mysql 5

Шаг 4 — Создание виртуального хоста для сайта

При использовании веб-сервера Apache вы можете создать виртуальные хосты (аналогичные серверным блокам в Nginx) для инкапсуляции данных конфигурации и размещения на одном сервере нескольких доменов. Мы настроим домен your_domain, но вы должны заменить это имя собственным доменным именем.


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

Создайте следующий каталог для your_domain:

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

После этого откройте новый файл конфигурации в директории Apache с помощью любого редактора командной строки. Мы будем использовать :

В результате будет создан новый пустой файл. Вставьте следующую пустую конфигурацию:

/etc/apache2/sites-available/your_domain.conf

Эта конфигурация указывает Apache обслуживать , используя в качестве корневого каталога. Если вы хотите протестировать Apache без доменного имени, вы можете удалить или закомментировать опции и , добавляя символ в начале строк опций.

Теперь вы можете использовать для активации нового виртуального хоста:

Возможно, вы захотите отключить сайт по умолчанию, устанавливаемый с Apache. Это требуется, если вы не используете собственное доменное имя, поскольку в таком случае конфигурация Apache по умолчанию перезаписывает ваш виртуальный хост. Чтобы отключить сайт Apache по умолчанию, введите следующую команду:

Чтобы убедиться в отсутствии ошибок синтаксиса в вашем файле конфигурации, выполните команду:

В заключение перезагрузите Apache, чтобы эти изменения вступили в силу:

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

Внесите в файл следующее:

/var/www/your_domain/index.html

Откройте браузер и введите в адресную строку доменное имя вашего сервера или IP-адрес:

Страница будет выглядеть следующим образом:

Если вы видите эту страницу, это означает, что виртуальный хост Apache работает, как и ожидалось.

Вы можете оставить этот файл в качестве временной начальной страницы для вашего приложения, пока не настроите файл для его замены. Как только вы сделаете это, не забудьте удалить или переименовать файл из корневого каталога документов, так как он будет иметь приоритет перед файлом по умолчанию.

Примечание о в Apache

Если в Apache используются настройки по умолчанию, файл всегда будет иметь приоритет по сравнению файлом . Это полезно при настройке страниц техобслуживания приложений PHP посредством создания временного файла с информационным сообщением для посетителей. Поскольку эта страница будет иметь приоритет перед страницей , она станет начальной страницей приложения. После завершения обслуживания файл можно переименовать или удалить из корневого каталога документов, в результате чего восстановится обычная начальная страница приложения.

Если вы хотите изменить это поведение, отредактируйте файл и измените порядковое расположение файла в директиве :

/etc/apache2/mods-enabled/dir.conf

После сохранения и закрытия файла вам нужно будет перезагрузить Apache, чтобы изменения вступили в силу:

На следующем шаге мы создадим скрипт PHP для тестирования правильности установки и настройки PHP на вашем сервере.

Шаг 4 — Тестирование работы PHP на вашем веб-сервере


Чтобы проверить, что наша система сконфигурирована должным образом, мы можем создать простой PHP скрипт.

Назовем скрипт . Чтобы Apache нашел и обработал файл корректно, он должен быть сохранен в специальную директорию, которая называется “web root”.

В Ubuntu 16.04 данная директория находится по адресу . Мы можем создать там файл введя следующую команду:

Откроется пустой файл. Мы хотим ввести в файл следующий текст, который является корректным PHP кодом:

info.php

После внесения изменений сохраните и закройте файл.

Теперь мы можем проверить, может ли веб-сервер корректно отображать контент, сгенерированный PHP скриптом. Для проверки нам просто нужно открыть данную страницу в веб-браузере. Вам снова потребуется публичный IP-адрес сервера.

Откроем этот адрес:

Страница, на которую вы попадете, должна выглядеть похожим образом:

Данная страница содержит информацию о вашем сервере с точки зрения PHP. Она полезна для отладки и чтобы удостовериться в корректности применения настроек.

Если все прошло успешно, значит ваш PHP работает корректно.

Вы, возможно, захотите удалить этот файл после теста, т.к. он может дать информацию о вашем сервере неавторизованным пользователям. Для удаления файла введите команду:

Вы всегда сможете заново создать этот файл, если вам снова потребуется доступ к этой информации.

Настройка виртуальных хостов

Перейдем в директорию , которая содержит внутри себя директорию с файлом . И создадим еще две директории и . И внутри каждой директории создадим файл :

$ cd /var/www
$ sudo su
# mkdir host1.loc
# mkdir host2.loc
# cd host1.loc
# nano index.php
<h1>Сайт host1.loc</h1>
<?php phpinfo(); ?>
# cd host2.loc
# nano index.php
<h1>Сайт host2.loc</h1>
<?php phpinfo(); ?>

Теперь перейдем в директорию с настройками Apache:

# cd /etc/apache2
# ls -l
-rw-r--r-- 1 root root  7224 сен 16 15:58 apache2.conf
drwxr-xr-x 2 root root  4096 ноя 11 09:32 conf-available
drwxr-xr-x 2 root root  4096 ноя 11 09:32 conf-enabled
-rw-r--r-- 1 root root  1782 июл 16 21:14 envvars
-rw-r--r-- 1 root root 31063 июл 16 21:14 magic
drwxr-xr-x 2 root root 12288 ноя 11 12:29 mods-available
drwxr-xr-x 2 root root  4096 ноя 11 12:29 mods-enabled
-rw-r--r-- 1 root root   320 июл 16 21:14 ports.conf
drwxr-xr-x 2 root root  4096 ноя 11 09:32 sites-available
drwxr-xr-x 2 root root  4096 ноя 11 09:32 sites-enabled
  • : главный конфигурационный файл Apache. Изменения в этом файле влияют на глобальную конфигурацию Apache. Этот файл отвечает за загрузку многих других файлов из конфигурационной директории.
  • : этот файл определяет порты, которые Apache будет слушать. По умолчанию Apache слушает порт 80, а также порт 443 при условии, что модуль для работы с SSL включен.
  • : в этой директории хранятся файлы виртуальных хостов. Apache не использует файлы из этой директории, если ссылки на них нет в директории . Обычно настройка всех файлов виртуальных хостов осуществляется в этой директории, а активация хоста происходит путём создания ссылки в другой директории командой .
  • : директория, в которой хранятся активированные виртуальные хосты. Обычно это делается путём создания ссылки на файл конфигурации хоста из директории с помощью команды . Apache читает конфигурационный файлы и ссылки из этой директории при запуске или перезапуске.
  • , : эти директории связаны друг с другом так же, как и и связаны друг с другом, но используются для хранения фрагментов конфигурации, которые не принадлежат виртуальным хостам. Файлы в директории могут быть включены командой и выключены командой .
  • , : эти директории содержат, соответственно, доступные и активные модули. Файлы, оканчивающиеся на , содержат фрагменты для загрузки конкретных модулей, а файлы, оканчивающиеся на , содержат настройки этих модулей. Модули можно активировать командой и деактивировать командой .

Посмотрим, какие сайты могут быть активированы командой :

# cd /etc/apache2/sites-available
# ls -l
-rw-r--r-- 1 root root 1332 июл 16 21:14 000-default.conf
-rw-r--r-- 1 root root 6338 июл 16 21:14 default-ssl.conf

И какие сайты сейчас доступны, т.е. были активированы командой :

# cd /etc/apache2/sites-enabled
# ls -l
lrwxrwxrwx 1 root root 35 ноя 11 09:32 000-default.conf -> ../sites-available/000-default.conf

В директории только одна ссылка, значит доступен только один сайт по адресу . Создадим два файла конфигурации виртуальных хостов:

# cd /etc/apache2/sites-available
# cp 000-default.conf host1.loc.conf
# cp 000-default.conf host2.loc.conf

И отредактируем эти файлы:

# nano host1.loc.conf
<VirtualHost *:80>
    ServerName host1.loc
    ServerAdmin webmaster@host1.loc
    DocumentRoot /var/www/host1.loc
    ServerAlias www.host1.loc
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
# nano host2.loc.conf
<VirtualHost *:80>
    ServerName host2.loc
    ServerAdmin webmaster@host2.loc
    DocumentRoot /var/www/host2.loc
    ServerAlias www.host2.loc
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Активируем два наших сайта:

# a2ensite host1.loc
Enabling site host1.loc.
To activate the new configuration, you need to run:
  systemctl reload apache2
# a2ensite host2.loc
Enabling site host2.loc.
To activate the new configuration, you need to run:
  systemctl reload apache2

Перед тем, как перезагрузить Apache, отредактируем файл :

# nano /etc/hosts
127.0.0.1   localhost
127.0.1.1   ubuntu-lamp

127.0.0.1   host1.loc www.host1.loc
127.0.0.1   host2.loc www.host2.loc

Перезагружаем Apache:

# systemctl reload apache2

И проверяем работу сайтов:

Установка OCI8 в виде подгружаемого (shared) расширения

Указание опции конфигурации shared позволяет собрать OCI8 в виде динамически подгружаемой библиотеки. Сборка в виде подгружаемого расширения позволяет легко обновлять OCI8 без пересборки всего PHP.

Соберите OCI8 с помощью одной из следующих опций.

  • При использовании бесплатных библиотек »  Oracle Instant Client:

    Если Instant Client установлен из ZIP-архива, не забудьте в первую очередь создать символическую ссылку на библиотеку, например, так: ln -s libclntsh.so.11.1 libclntsh.so.

    Если Oracle Instant Client был установлен с помощью RPM, команда конфигурации будет выглядеть так:

    Например, —with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client/lib

    Учтите, что поддержка Oracle Instant Client появилась только начиная с версий PHP 4.3.11 и 5.0.4 и ранее использовалась с опцией —with-oci8-instant-client.

  • При использовании базы данных Oracle database или полной установке Oracle Client:

    Убедитесь, что пользователь, под которым запущен веб-сервер, (nobody, www) имеет доступ к библиотекам, файлам инициализации и tnsnames.ora (если используется) в папке $ORACLE_HOME. При использовании Oracle 10gR2, может понадобиться запуск утилиты $ORACLE_HOME/install/changePerm.sh для получения доступа к этой папке.

После настройки следуйте обычной процедуре сборки PHP, например, make install, после чего будет создано подгружаемая библиотека oci8.so. Возможно, вам потребуется вручную перенести ее в папку расширений PHP, указанную опцией вашего php.ini.

Для завершения установки OCI8 добавьте следующую строку в php.ini:

Установка окружения Oracle

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

В Red Hat Linux и его вариантах, экспортируйте переменные в конце файла /etc/sysconfig/httpd. Другие системы с Apache 2 могут использовать скрипт envvars из папки bin в дистрибутиве Apache. Третьим вариантом является директива Apache SetEnv в файле httpd.conf, на каких-то системах она может работать, однако, известно, что на некоторых ее недостаточно.

Чтобы удостовериться в корректной настройке переменных окружения, используйте функцию phpinfo() и проверьте, что раздел Environment (не Apache Environment) содержит ожидаемые переменные.

Следующая таблица содержит переменные, которые могут вам потребоваться. За подробностями обо всех доступных переменных обращайтесь к документации Oracle.

Общие переменные окружения Oracle
Название Цель
ORACLE_HOME Указывает на папку, с полностью установленной базой данных Oracle. Не устанавливайте эту переменную при использовании Oracle Instant Client, т.к. в этом нет необходимости и может вызвать проблемы при установке.
ORACLE_SID Содержит имя базы данных на локальной машине, к которой идет подключение. Нет необходимости устанавливать эту переменную при использовании Oracle Instant Client, или всегда передавать в параметрах соединения в функцию oci_connect().
LD_LIBRARY_PATH Установите эту переменную (или ее эквивалент на используемой платформе, например, DYLD_LIBRARY_PATH, LIBPATH или SHLIB_PATH) в местоположение библиотек Oracle, например, $ORACLE_HOME/lib или /usr/lib/oracle/11.1/client/lib. В этой переменной нет необходимости, если библиотеки указываются другим механизмом поиска, например, ldconfig или LD_PRELOAD.
NLS_LANG Это основная переменная, используемая для указания кодировки и настроек глобализации в библиотеках Oracle.
ORA_SDTZ Устанавливает временную зону сессии Oracle.
TNS_ADMIN Содержит папку, в которой хранятся конфигурационные файлы Oracle Net Services, такие как tnsnames.ora и sqlnet.ora. В ней нет необходимости, если строка соединения в функции oci_connect() использует синтаксис Easy Connect, такой как, например, localhost/XE. В ней также нет необходимости, если сетевые конфигурационные файлы содержатся в местах хранения по умолчанию, таких как $ORACLE_HOME/network/admin или /etc.

TWO_TASKORA_TZFILENLS*

Настройка PHP-сервера

1. Установка

На текущий момент последней стабильной версией PHP является php 7.4.5, которая отсутствует в официальных репозиториях Ubuntu. Подключим сторонний репозиторий и установим последнюю версию PHP.

2. Проверка

Для того, чтобы PHP код мог быть исполнен, файл веб страницы должен иметь расширение “.php”. Переименовываем тестовою страницу

Добавляем в файл “/var/www/sites/site1/index.php” строку php-кода. В результате содержимое файла будет таким:

Сохраняем изменения и проверяем результат в браузере.

Если вы видите результат работы функции “phpinfo()”, значит интерпретатор PHP работает корректно. Приступаем к следующему этапу.

Установка MySQL

Установка сервера БД MySQL:

$ sudo apt install mysql-server

Эта команда установит MySQL, но при этом не предложит задать пароль или внести какие-либо правки в конфигурацию. Далее запускаем скрипт безопасности, который изменит некоторые настройки по умолчанию на более безопасные:

$ sudo mysql_secure_installation

Надо ответить на вопросы:

  • Установить плагин проверки надежности паролей?
  • Пароль для пользователя ?
  • Подтверждение пароля для ?
  • Удалить анонимного пользователя?
  • Запретить подключаться удаленно?
  • Удалить тестовую базу данных?

По умолчанию пользователь может подключаться только локально, т.е. с хоста .

Начиная с версии 5.7 пользователь подключается с помощью плагина , а не по паролю:

$ sudo mysql
> SELECT user, authentication_string, plugin, host FROM mysql.user;
+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *76370DCD37985A94742AE45C0F4C890251AB21FA | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Изменим это:

> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'qwerty';
Query OK, 0 rows affected (0.00 sec)
> SELECT user, authentication_string, plugin, host FROM mysql.user;
+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *AA1420F182E88B9E5F874F6FBE7459291E8F4601 | mysql_native_password | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *76370DCD37985A94742AE45C0F4C890251AB21FA | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)
> FLUSH PRIVILEGES;
> exit

Проверим вход по паролю:

$ mysql -uroot -pqwerty
mysql:  Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.27-0ubuntu0.18.04.1 (Ubuntu)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
> exit

Остановка сервера:

$ sudo systemctl stop mysql

Запуск сервера:

$ sudo systemctl start mysql

Перезагрузить конфигурацию:

$ sudo systemctl reload mysql

Перезагрузить сервер:

$ sudo systemctl restart mysql

Проверить состояние:

$ systemctl is-active mysql

Включить автозапуск:

$ sudo systemctl enable mysql

Отключить автозапуск:

$ sudo systemctl disable mysql

Посмотреть информацию о версии:

$ mysql -V
mysql Ver 14.14 Distrib 5.7.27, for Linux (x86_64) using  EditLine wrapper

Add MySQL to your path

After installation, in order to use MySQL commands without typing the full path to the commands, you need to add the directory to your shell path.

This is an optional step, and done in your file in your home directory.


If you don’t have that file just create it using Vi or Nano:

cd ; nano .bash_profileexport PATH="/usr/local/mysql/bin:$PATH"

The first command brings you to your home directory and opens the file (or creates a new one if it doesn’t exist), then add in the line above, which adds the MySQL binary path to commands that you can run.

Exit the file with and, when prompted to save the change, by typing .

The last thing to do here is to reload the shell for the above to work straight away.

source ~/.bash_profile

Установка phpMyAdmin

phpMyAdmin это специальное веб-приложение для администрирования MySQL. Оно позволяет прямо из браузера управлять базами данных MySQL, выполнять SQL запросы, просматривать данные и многое другое. Для установки phpMyAdmin выполните команду:

Начнется установка phpMyAdmin. В конце установки появится окошко, в котором нужно выбрать сервер apache2 (клавишей Пробел; должна появится звездочка напротив строки apache2) и нажать Enter.

Далее вам предложат создать базу данных для phpMyAdmin. Выберите Да и нажмите Enter.

Далее введите пароль административной учетной записи для этой базы данных.

Затем введите пароль для регистрации phpMyAdmin на сервере баз данных и в следующем окошке подтверждение пароля.

Проверка работоспособности phpMyAdmin

В браузере наберите адрес http://localhost/phpmyadmin. Откроется форма ввода пароля и логина пользователя MySQL для входа в phpMyAdmin. В качестве имени пользователя введите root, а пароль тот, который вы указали для пользователя root при установке MySQL.

Установка OCI8 в Windows

При использовании клиентских библиотек Oracle 10gR2 в Windows, раскомментируйте в php.ini строку extension=php_oci8.dll. При использовании клиентских библиотек Oracle 11gR2 и новее, раскомментируйте extension=php_oci8_11g.dll или extension=php_oci8.dll. С библиотеками Oracle 12c используйте extension=php_oci8_12c.dll или extension=php_oci8_11g.dll или extension=php_oci8.dll. Одновременно можно включить только одну из этих библиотек. DLL файлы с более высокой версией могут содержать больше функций. Не все библиотеки доступны во всех версиях PHP. Убедитесь, что директива php.ini установлена на папку с DLL файлами расширений PHP.

Шаг 3 — Установка PHP

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

Мы можем вновь воспользоваться менеджером пакетов для установки компонентов. Мы также добавим некоторые вспомогательные пакеты:

Данная команда должна установить PHP без каких либо проблем. Вскоре мы это проверим.

В большинстве случаев, мы захотим изменить способ, который использует Apache для поиска файлов при запросе директории. На данный момент, если пользователь запрашивает директорию с сервера, Apache в первую очередь будет искать файл с названием . Мы хотим, чтобы наш веб-сервер отдавал предпочтение PHP файлам, так что мы настроим Apache таким образом, чтобы сначала он искал файлы .

Для этого введите следующую команду, чтобы открыть файл в текстовом редакторе с привилегиями root-пользователя:

Содержимое файла будет выглядеть следующим образом:

Мы хотим переместить PHP файл , выделенный выше, на первое место после спецификации следующим образом:

После внесения правок сохраните и закройте файл сочетанием клавиш “CTRL-X”. Вам придется подтвердить операцию вводом “Y” и затем нажатием клавиши “ENTER” для подтверждения места сохранения файла.

После этого нам необходимо перезапустить Apache для применения внесенных изменений. Вы можете сделать это при помощи команды:

Установка модулей PHP

Чтобы расширить функциональность PHP, мы можем установить некоторые дополнительные модули.

Для просмотра доступных опций для модулей и библиотек PHP вы можете ввести следующую команду:


В результате вам будут показаны все опциональные компоненты, которые можно установить, сопровождаемые коротким описанием для каждого:

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

Ответ будет содержать много текста, среди которого есть поле . Именно оно и будет содержать расширенное описание функциональности, предоставляемой модулем.

Например, чтобы узнать назначение модуля , мы можем выполнить команду:

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

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

Если мы решили, что хотим установить , мы можем ввести команду:

Для установки сразу нескольких модулей, вы можете перечислить их через пробелы следом за командой следующим образом:

Теперь ваш стек LAMP установлен и сконфигурирован. Однако нам еще предстоит протестировать PHP.

User level root

Type the below code to find your username (it is “home” in my case).

whoami

Create folder in username:

sudo mkdir ~/Sites

Open Apache folder and create in the directory:

cd /etc/apache2/userssudo nano username.conf

Add the text below in and save it ().

<Directory "/Users/username/Sites/">AllowOverride AllOptions Indexes MultiViews FollowSymLinksRequire all granted</Directory>

Now open ,

sudo nano /etc/apache2/httpd.conf

and uncomment the following module:

LoadModule authz_core_module libexec/apache2/mod_authz_core.soLoadModule authz_host_module libexec/apache2/mod_authz_host.soLoadModule userdir_module libexec/apache2/mod_userdir.soLoadModule include_module libexec/apache2/mod_include.soLoadModule rewrite_module libexec/apache2/mod_rewrite.so

Related

  • Tutorial

    Django — это мощная веб-система, помогающая создать приложение или сайт Python с нуля. Django включает упрощенный сервер разработки для локального тестирования кода, однако для серьезных производственных задач требуется более защищенный и мощный веб-сервер. В этом руководстве…

  • Tutorial

    Автор выбрал фонд Free and Open Source Fund для получения пожертвования в рамках программы Write for DOnations. Discourse — это платформа для обсуждений с открытым…

  • Tutorial

    Автор выбрал фонд Electronic Frontier Foundation для получения пожертвований в рамках программы Write for DOnations. Cloudflare — это…

  • Tutorial
    Создание самоподписанных сертификатов SSL для Apache в Ubuntu 20.04

    TLS или протокол безопасности транспортного уровня и предшествующий ему протокол SSL используются для заключения обычного трафика в защищенную оболочку с шифрованием. Используя эту технологию, серверы могут безопасно отправлять информацию клиентам без перехвата сообщений и…


С этим читают