Установка phpMyAdmin 3.5.0
Статья описывает процесс установки и первоначальной настройки на локальном компьютере, работающим под операционной системой Windows XP, прекрасно зарекомендовавшей себя связки программ, используемых при создании, как крупных, так и средних веб-проектов: Apache, MySQL, PHP и phpMyAdmin.
- Предисловие
- Установка MySQL 5.5.23
- Установка PHP 5.3.10
- Установка Apache HTTP Server 2.2.22
- Установка phpMyAdmin 3.5.0
- Послесловие, полезные ресурсы
- Скачать статью в формате .pdf (596 Kb)
Вместо тестирования нашего хозяйства, предлагаю установить скрипт phpMyAdmin для управления базой данных MySQL. Если он будет работать, значит мы все сделали правильно и можем собой гордиться. Ну а если работать не будет, значит во всем виновато трудное детство и недостаток витаминов, на чем и порешим.
Остановите сервис Apache выполнив в командной строке «C:\Apache2\bin\httpd.exe -k stop», либо с помощью пакетного файла «stop-webserver.bat». Распакуйте архив в каталог «C:\apache\localhost\www\». Появившуюся папку, для большего удобства, желательно переименовать в «phpmyadmin». Далее, в каталоге «C:\apache\localhost\www\phpmyadmin» создайте файл «config.inc.php» следующего содержания (не забудьте вписать пароль пользователя «root», который вы создавали при установке MySQL):
$i = 0;
$i++;
$cfg[‘Servers’][$i][‘host’] = ‘localhost’;
$cfg[‘Servers’][$i][‘extension’] = ‘mysqli’;
$cfg[‘Servers’][$i][‘connect_type’] = ‘tcp’;
$cfg[‘Servers’][$i][‘compress’] = false;
$cfg[‘Servers’][$i][‘auth_type’] = ‘config’;
$cfg[‘Servers’][$i][‘user’] = ‘root’;
$cfg[‘Servers’][$i][‘password’] = ‘пароль’; // Пароль пользователя root
?>
Обратите внимание (!) , что при подключении мы указываем phpMyAdmin, использовать расширение «mysqli», так как установленный нами MySQL 5, и произведенные выше настройки PHP 5, позволяют полноценно работать с функциями данного расширения.
Далее откройте многострадальный httpd.conf и добавьте в блок начинающийся строкой:
Следующую строку:
Alias /pma «C:/apache/localhost/www/phpmyadmin»
Теперь запустите сервисы с помощью пакетного файла start-webserver.bat и введите в адресной строке браузера «localhost/phpmyadmin». Вы увидите основное окно скрипта phpMyAdmin для управления базами данных MySQL. Благодаря добавленной нами выше строке в конфигурационный файл Apache (так называемый алиас), мы также можем попасть в phpMyAdmin из любого хоста, для чего понадобится установить виртуальный хост и ввести в адресной строке браузера адрес вида: «имя хоста»/pma. Например: http://www.test.ru/pma.
Далее мы воспользуемся возможностью установить расширение функциональности phpMyAdmin, позволяющее работать с закладками, историями вводимых команд, дизайнером связанных таблиц и некоторыми другими дополнительными функциями.
Для установки расширения сперва необходимо создать базу данных «phpmyadmin» и импортировать в нее специально предназначенные таблицы, для чего выберите на главной странице ссылку «Import» («Импорт»), на открывшейся странице, в разделе «File to import» («Импортируемый файл») нажмите кнопку «Browse. » («Обзор. «), выберите файл «create_tables.sql», находящийся в каталоге «examples», и нажмите кнопку «Go» («OK»).
Следующим шагом необходимо создать специального пользователя с именем «pma» и наделить его соответствующими правами, для чего нажмите «Privileges» («Привилегии»), на открывшейся странице нажмите ссылку «Add a new User» («Добавить нового пользователя»), в разделе «Login Information» («Информация учетной записи») заполните поля следующим образом:
User name (Имя пользователя): pma
Host (Хост): localhost
Password (Пароль): придумайте пароль
Нажмите кнопку «Go» (OK).
На открывшейся странице, в разделе «Database-specific privileges» («Привилегии уровня базы данных») из ниспадающего меню «Add privileges on the following database:» («Добавить привилегии на следующую базу») выберите «phpmyadmin». Откроется следующая страница, где в разделе «Database-specific privileges» («Привилегии уровня базы данных»), в блоке «Data» («Данные»), поставьте галочки рядом с опциями: SELECT, INSERT, UPDATE, DELETE и нажмите «Go» («OK»).
И последнее что надо сделать – это вновь открыть конфигурационный файл phpMyAdmin «config.inc.php» и добавить несколько новых директив. Все содержимое конфигурационного файла должно будет выглядеть примерно так:
$i = 0;
$i++;
$cfg[‘Servers’][$i][‘host’] = ‘localhost’;
$cfg[‘Servers’][$i][‘extension’] = ‘mysqli’;
$cfg[‘Servers’][$i][‘connect_type’] = ‘tcp’;
$cfg[‘Servers’][$i][‘compress’] = false;
$cfg[‘Servers’][$i][‘auth_type’] = ‘config’;
$cfg[‘Servers’][$i][‘user’] = ‘root’;
$cfg[‘Servers’][$i][‘password’] = ‘пароль’; /* Пароль пользователя root. */
$cfg[‘Servers’][$i][‘controlhost’] = ‘localhost’;
$cfg[‘Servers’][$i][‘controluser’] = ‘pma’; /* Имя созданного вами только что пользователя для доступа к расширенным таблицам. */
$cfg[‘Servers’][$i][‘controlpass’] = ‘пароль’; /* А здесь его пароль. */
$cfg[‘Servers’][$i][‘pmadb’] = ‘phpmyadmin’;
$cfg[‘Servers’][$i][‘bookmarktable’] = ‘pma_bookmark’;
$cfg[‘Servers’][$i][‘relation’] = ‘pma_relation’;
$cfg[‘Servers’][$i][‘table_info’] = ‘pma_table_info’;
$cfg[‘Servers’][$i][‘table_coords’] = ‘pma_table_coords’;
$cfg[‘Servers’][$i][‘pdf_pages’] = ‘pma_pdf_pages’;
$cfg[‘Servers’][$i][‘column_info’] = ‘pma_column_info’;
$cfg[‘Servers’][$i][‘history’] = ‘pma_history’;
$cfg[‘Servers’][$i][‘tracking’] = ‘pma_tracking’;
$cfg[‘Servers’][$i][‘designer_coords’] = ‘pma_designer_coords’;
$cfg[‘Servers’][$i][‘userconfig’] = ‘pma_userconfig’;
$cfg[‘Servers’][$i][‘recent’] = ‘pma_recent’;
$cfg[‘Servers’][$i][‘table_uiprefs’] = ‘pma_table_uiprefs’;
?>
Теперь у вас будет возможность воспользоваться всеми дополнительными функциями скрипта phpMyAdmin.
Вот и всё. Полная установка и настройка скрипта phpMyAdmin – завершена, как и всего комплекса веб-разработчика в целом. Примите мои поздравления. И заметьте — никто не умер.
Как установить и настроить phpMyAdmin в Ubuntu 20.04
Рассказываем, как настроить сервер phpMyAdmin на операционной системе Ubuntu 20.04 на облачном сервере, как работать с пользователями и осуществлять начальные настройки безопасности.
Введение
Данная инструкция рассказывает о процессе установки инструмента phpMyAdmin в операционной системе Ubuntu 20.04. Установку выполняем в облачной инфраструктуре Selectel. Нам потребуется настроенный сервер LAMP. О том, как его развернуть, написали в статье.
PhpMyAdmin — бесплатный инструмент, созданный на языке php, для администрирования MySQL с использованием браузера.
В комплекте — огромный пул возможных операций с MySQL и MariaDB. На данный момент актуальная стабильная версия — phpMyAdmin 5.1.1.
Установка phpMyAdmin
Первый шаг — установка модуля расширения php-mbstring. Mbstring предоставляет функции для работы с многобайтными строками, которые облегчают обработку многобайтовых кодировок в php.
sudo apt install php-mbstring -y
Вывод успешной установки:
vlan48@apachi:~$ sudo apt install php-mbstring -y [sudo] password for vlan48: Reading package lists. Done Building dependency tree Reading state information. Done The following additional packages will be installed: libonig5 php7.4-mbstring The following NEW packages will be installed: libonig5 php-mbstring php7.4-mbstring 0 upgraded, 3 newly installed, 0 to remove and 27 not upgraded. Need to get 541 kB of archives. After this operation, 1709 kB of additional disk space will be used. Get:1 http://mirror.selectel.ru/ubuntu focal/universe amd64 libonig5 amd64 6.9.4-1 [142 kB] Get:2 http://mirror.selectel.ru/ubuntu focal-updates/universe amd64 php7.4-mbstring amd64 7.4.3-4ubuntu2.6 [397 kB] Get:3 http://mirror.selectel.ru/ubuntu focal/universe amd64 php-mbstring all 2:7.4+75 [2012 B] Fetched 541 kB in 0s (12.1 MB/s) Selecting previously unselected package libonig5:amd64. (Reading database . 45001 files and directories currently installed.) Preparing to unpack . /libonig5_6.9.4-1_amd64.deb . Unpacking libonig5:amd64 (6.9.4-1) . Selecting previously unselected package php7.4-mbstring. Preparing to unpack . /php7.4-mbstring_7.4.3-4ubuntu2.6_amd64.deb . Unpacking php7.4-mbstring (7.4.3-4ubuntu2.6) . Selecting previously unselected package php-mbstring. Preparing to unpack . /php-mbstring_2%3a7.4+75_all.deb . Unpacking php-mbstring (2:7.4+75) . Setting up libonig5:amd64 (6.9.4-1) . Setting up php7.4-mbstring (7.4.3-4ubuntu2.6) . Creating config file /etc/php/7.4/mods-available/mbstring.ini with new version Setting up php-mbstring (2:7.4+75) . Processing triggers for libc-bin (2.31-0ubuntu9.2) . Processing triggers for libapache2-mod-php7.4 (7.4.3-4ubuntu2.6) . Processing triggers for php7.4-cli (7.4.3-4ubuntu2.6) .
Следующим этапом станет инсталляция phpMyAdmin в систему. Выполняется это командой:
sudo apt install phpmyadmin -y
Обратить внимание на Validate Password
Во время инсталляции LAMP мог быть активирован плагин Validate Password. Это чревато ошибкой при создании пароля для пользователя phpmyadmin. Для деактивации плагина необходимо выполнить следующие шаги:
Открыть консоль управления MySQL:
sudo mysql
Если активна аутентификация по паролю суперпользователя root, команда будет выглядеть так:
mysql -u root -p
Теперь отправляем следующую команду:
UNINSTALL COMPONENT "file://component_validate_password";
Это действие произведет отключение плагина Validate Password.
Покинем консоль MySQL, команда:
exit
Можно продолжить установку phpMyAdmin. Эти действия следует производить только в случае возникновения ошибки, во всех остальных случаях в этом нет необходимости.
Продолжим установку. После отправки команды в терминал появится окно установщика, в котором потребуется ответить на ряд вопросов. Навигация в установщике осуществляется посредством использования клавиш Up down, выбор пунктов кнопка «Пробел», переход ниже — Tab. Ввод выбранного ответа — Enter.
На первый вопрос про используемый web-сервер, необходимо ответить — apache2.
Следующий вопрос про инсталляцию и настройку служебной базы данных для самой программы phpMyAdmin, отвечаем положительно.
Следующим пунктом будет установлен пароль ранее созданной базы данных для пользователя phpmyadmin:
Подтвердим созданный ранее пароль:
Вывод успешной работы программы:
vlan48@apachi:~$ sudo apt -y install phpmyadmin [sudo] password for vlan48: Reading package lists. Done Building dependency tree Reading state information. Done Suggested packages: www-browser php-recode php-gd2 php-pragmarx-google2fa php-bacon-qr-code php-samyoul-u2f-php-server Recommended packages: php-curl php-gd php-bz2 php-zip php-tcpdf The following NEW packages will be installed: phpmyadmin 0 upgraded, 1 newly installed, 0 to remove and 28 not upgraded. Need to get 4426 kB of archives. After this operation, 27.2 MB of additional disk space will be used. Get:1 http://mirror.selectel.ru/ubuntu focal/universe amd64 phpmyadmin all 4:4.9.5+dfsg1-2 [4426 kB] Fetched 4426 kB in 0s (34.8 MB/s) Preconfiguring packages . Determining localhost credentials from /etc/mysql/debian.cnf: succeeded. Selecting previously unselected package phpmyadmin. (Reading database . 46341 files and directories currently installed.) Preparing to unpack . /phpmyadmin_4%3a4.9.5+dfsg1-2_all.deb . Unpacking phpmyadmin (4:4.9.5+dfsg1-2) . Setting up phpmyadmin (4:4.9.5+dfsg1-2) . Determining localhost credentials from /etc/mysql/debian.cnf: succeeded. dbconfig-common: writing config to /etc/dbconfig-common/phpmyadmin.conf Creating config file /etc/dbconfig-common/phpmyadmin.conf with new version Creating config file /etc/phpmyadmin/config-db.php with new version checking privileges on database phpmyadmin for phpmyadmin@localhost: user creation needed. granting access to database phpmyadmin for phpmyadmin@localhost: success. verifying access for phpmyadmin@localhost: success. creating database phpmyadmin: success. verifying database phpmyadmin exists: success. populating database via sql. done. dbconfig-common: flushing administrative password apache2_invoke: Enable configuration phpmyadmin
Установка завершена. Прежде чем пойти далее, необходимо произвести проверку работоспособности на данном этапе, чтобы в случае возникновения проблем, их можно было решить с наименьшими трудозатратами.
Проверим. В любом браузере открываем phpMyAdmin по IP-адресу сервера:
ip_address/phpmyadmin
Теперь можно войти в систему с использованием учетной записи, созданной во время установки. Проверяем:
Для учетной записи root по умолчанию применяется доступ с использованием плагина auth_socket. Изменим это на аутентификацию с использованием пароля. В данном случае необходимо изменить тип аутентификации на аутентификацию с использованием пароля.
Откроем консоль MySQL:
sudo mysql
Произведем проверку таблицы пользователей, чтобы увидеть метод аутентификации для каждого пользователя:
SELECT user,plugin,host FROM mysql.user;
+-------------------------+----------------------------------+------------+ | user | plugin | host | +-------------------------+----------------------------------+------------+ | debian-sys-maint | caching_sha2_password | localhost | | mysql.infoschema | caching_sha2_password | localhost | | mysql.session | caching_sha2_password | localhost | | mysql.sys | caching_sha2_password | localhost | | phpmyadmin | caching_sha2_password | localhost | | root | auth_socket | localhost | +------------------------+----------------------------------+--------------+ 7 rows in set (0.00 sec)
Исходя из данных таблицы следует, что аутентификация пользователя root происходит с использованием плагина auth_socket.
Для изменения отправим следующую команду:
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
Password добавляем свой.
Вывод работы команды:
Query OK, 0 rows affected (0.03 sec)
В случае возникновения ошибки Plugin caching_sha2_password in not loaded следует обратиться к разделу «Возможные ошибки» в конце статьи.
SELECT user,plugin,host FROM mysql.user;
+-----------------------+-----------------------------------+-----------+ | user | plugin | host | +------------------------+----------------------------------+-----------+ | debian-sys-maint | caching_sha2_password | localhost | | mysql.infoschema | caching_sha2_password | localhost | | mysql.session | caching_sha2_password | localhost | | mysql.sys | caching_sha2_password | localhost | | phpmyadmin | caching_sha2_password | localhost | | root | caching_sha2_password | localhost | +------------------------+---------------------------------+-------------+ 7 rows in set (0.00 sec)
Теперь у пользователя root тип аутентификации — caching_sha2_password.
Работа с пользователями
Основная задача в работе с пользователями phpMyAdmin — создание и настройка прав. В качестве примера создадим пользователя с максимальными привилегиями.
Необходимо вернуться в терминал под пользователем с административными правами и отправить команду:
sudo mysql
Так мы запустим работу с базой данных от имени администратора. Потребуется ввод пароля.
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 14 Server version: 8.0.27-0ubuntu0.20.04.1 (Ubuntu) Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
Теперь необходимо добавить пользователя, а также его пароль. Выполнить это можно командой:
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
где user — новый пользователь, а password — пароль для этого пользователя.
В рабочем варианте отправленная команда выглядит так:
CREATE USER 'selectel'@'localhost' IDENTIFIED BY 's*****qq';
Query OK, 0 rows affected (0.02 sec)
Добавим необходимые привилегии для созданного пользователя. В данном случае это будут все привилегии для всех баз данных на сервере:
GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost';
Если пользователю необходимо разрешить создавать пользователей и назначать им привилегии, необходимо добавить опции:
GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost' WITH GRANT OPTION;
В данном примере в этом нет необходимости, поэтому будут только назначены полные привилегии для всех баз данных:
GRANT ALL PRIVILEGES ON *.* TO 'selectel'@'localhost';
Query OK, 0 rows affected (0.00 sec)
Остается только применить изменения в настройках привилегий для этого служит команда:
FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)
В некоторых случаях может потребоваться удаление ранее созданного пользователя.
Это выполняется с использованием команды:
DROP USER 'user'@'localhost';
Проверяем что пользователь существует:
SELECT user FROM mysql.user;
Отправленная команда осуществляет вывод списка текущих пользователей.
+--------------------------+ | user | +--------------------------+ | debian-sys-maint | | mysql.infoschema | | mysql.session | | mysql.sys | | phpmyadmin | | root | | selectel | +---------------------------+ 7 rows in set (0.01 sec)
Убедившись что пользователь ‘selectel’ активен, можно произвести удаление:
DROP USER 'selectel'@'localhost';
Query OK, 0 rows affected (0.01 sec)
Производим повторную проверку, убеждаясь в его отсутствии в списке.
+--------------------------+ | user | +--------------------------+ | debian-sys-maint | | mysql.infoschema | | mysql.session | | mysql.sys | | phpmyadmin | | root | +---------------------------+ 7 rows in set (0.00 sec)
На этом настройка пользователей завершена. Для выхода из mysql необходимо отправить команду exit.
Обеспечение безопасности phpMyAdmin
Если к серверу есть хоть какой-то доступ из интернета или ненадежной сети, необходимо обеспечить безопасность, добавив авторизацию.
Требуется создать файл .htaccess, который является конфигурационным файлом web-сервера Apache. Он дает возможность управлять web-сервером и настройками web-приложения с помощью директив, без изменения основного файла конфигурации web-сервера. В данной инструкции будет использован текстовый редактор nano.
Создаем файл .htaccess в директории /usr/share/phpmyadmin/ и вносим в него следующие директивы:
AuthType Basic Authname "Restricted Content" AuthUserFile /etc/phpmyadmin/.htpasswd Require valid-user
sudo nano /usr/share/phpmyadmin/.htaccess
AuthType Basic — авторизация по паролю;
Authname «Restricted Content» — сообщение для окна авторизации;
AuthUserFile /etc/phpmyadmin/.htpasswd — путь к файлу пароля, который будет использован для авторизации;
Require valid-user — директива указывает, что только авторизованные пользователи получат доступ к ресурсу.
Теперь необходимо установить пароль учетной записи.
sudo htpasswd -c /etc/phpmyadmin/.htpasswd user
где user — учетная запись.
sudo htpasswd -c /etc/phpmyadmin/.htpasswd selectel
и дважды вводим пароль.
Adding password for user selectel
Далее необходимо включить использование файлов .htaccess для директории /usr/share. Для этого откроем для редактирования файл apache2.conf и внесем изменения директивы для директории.
AllowOverride All Require all granted
По умолчанию файл выглядит так:
Options FollowSymLinks AllowOverride None Require all denied AllowOverride None Require all granted Options Indexes FollowSymLinks AllowOverride None Require all granted # # Options Indexes FollowSymLinks # AllowOverride None # Require all granted #
Вносим изменения в необходимую директиву:
AllowOverride All Require all granted
# This is the main Apache server configuration file. It contains the # configuration directives that give the server its instructions. # See http://httpd.apache.org/docs/2.4/ for detailed information about # the directives and /usr/share/doc/apache2/README.Debian about Debian specific # hints. # # # Summary of how the Apache 2 configuration works in Debian: # The Apache 2 web server configuration in Debian is quite different to # upstream's suggested way to configure the web server. This is because Debian's # default Apache2 installation attempts to make adding and removing modules, # virtual hosts, and extra configuration directives as flexible as possible, in # order to make automating the changes and administering the server as easy as # possible. # It is split into several files forming the configuration hierarchy outlined # below, all located in the /etc/apache2/ directory: # # /etc/apache2/ # |-- apache2.conf # | `-- ports.conf # |-- mods-enabled # | |-- *.load # | `-- *.conf # |-- conf-enabled # | `-- *.conf # `-- sites-enabled # `-- *.conf # # # * apache2.conf is the main configuration file (this file). It puts the pieces # together by including all remaining configuration files when starting up the # web server. # # * ports.conf is always included from the main configuration file. It is # supposed to determine listening ports for incoming connections which can be # customized anytime. # # * Configuration files in the mods-enabled/, conf-enabled/ and sites-enabled/ # directories contain particular configuration snippets which manage modules, # global configuration fragments, or virtual host configurations, # respectively. # # They are activated by symlinking available configuration files from their # respective *-available/ counterparts. These should be managed by using our # helpers a2enmod/a2dismod, a2ensite/a2dissite and a2enconf/a2disconf. See # their respective man pages for detailed information. # # * The binary is called apache2. Due to the use of environment variables, in # the default configuration, apache2 needs to be started/stopped with # /etc/init.d/apache2 or apache2ctl. Calling /usr/bin/apache2 directly will not # work with the default configuration. # Global configuration # # # ServerRoot: The top of the directory tree under which the server's # configuration, error, and log files are kept. # # NOTE! If you intend to place this on an NFS (or otherwise network) # mounted filesystem then please read the Mutex documentation (available # at ); # you will save yourself a lot of trouble. # # Do NOT add a slash at the end of the directory path. # #ServerRoot "/etc/apache2" # # The accept serialization lock file MUST BE STORED ON A LOCAL DISK. # #Mutex file:$ default # # The directory where shm and other runtime files will be stored. # DefaultRuntimeDir $ # # PidFile: The file in which the server should record its process # identification number when it starts. # This needs to be set in /etc/apache2/envvars # PidFile $ # # Timeout: The number of seconds before receives and sends time out. # Timeout 300 # # KeepAlive: Whether or not to allow persistent connections (more than # one request per connection). Set to "Off" to deactivate. # KeepAlive On # # MaxKeepAliveRequests: The maximum number of requests to allow # during a persistent connection. Set to 0 to allow an unlimited amount. # We recommend you leave this number high, for maximum performance. # MaxKeepAliveRequests 100 # # KeepAliveTimeout: Number of seconds to wait for the next request from the # same client on the same connection. # KeepAliveTimeout 5 # These need to be set in /etc/apache2/envvars User $ Group $ # # HostnameLookups: Log the names of clients or just their IP addresses # e.g., www.apache.org (on) or 204.62.129.132 (off). # The default is off because it'd be overall better for the net if people # had to knowingly turn this feature on, since enabling it means that # each client request will result in AT LEAST one lookup request to the # nameserver. # HostnameLookups Off # ErrorLog: The location of the error log file. # If you do not specify an ErrorLog directive within a # container, error messages relating to that virtual host will be # logged here. If you *do* define an error logfile for a # container, that host's errors will be logged there and not here. # ErrorLog $/error.log # # LogLevel: Control the severity of messages logged to the error_log. # Available values: trace8, . trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the log level for particular modules, e.g. # "LogLevel info ssl:warn" # LogLevel warn # Include module configuration: IncludeOptional mods-enabled/*.load IncludeOptional mods-enabled/*.conf # Include list of ports to listen on Include ports.conf # Sets the default security model of the Apache2 HTTPD server. It does # not allow access to the root filesystem outside of /usr/share and /var/www. # The former is used by web applications packaged in Debian, # the latter may be used for local directories served by the web server. If # your system is serving content from a sub-directory in /srv you must allow # access here, or in any related virtual host. Options FollowSymLinks AllowOverride None Require all denied AllowOverride All Require all granted Options Indexes FollowSymLinks AllowOverride None Require all granted # # Options Indexes FollowSymLinks # AllowOverride None # Require all granted # # AccessFileName: The name of the file to look for in each directory # for additional configuration directives. See also the AllowOverride # directive. # AccessFileName .htaccess # # The following lines prevent .htaccess and .htpasswd files from being # viewed by Web clients. # Require all denied # # The following directives define some format nicknames for use with # a CustomLog directive. # # These deviate from the Common Log Format definitions in that they use %O # (the actual bytes sent including headers) instead of %b (the size of the # requested file), because the latter makes it impossible to detect partial # requests. # # Note that the use of %i instead of %h is not recommended. # Use mod_remoteip instead. # LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%i\" \"%i\"" vhost_combined LogFormat "%h %l %u %t \"%r\" %>s %O \"%i\" \"%i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %O" common LogFormat "%i -> %U" referer LogFormat "%i" agent # Include of directories ignores editors' and dpkg's backup files, # see README.Debian for details. # Include generic snippets of statements IncludeOptional conf-enabled/*.conf # Include the virtual host configurations: IncludeOptional sites-enabled/*.conf
Сохраняем, перечитаем конфигурацию Apache2, отправкой команды:
sudo systemctl reload apache2
Если сервер пока не в активной работе можно перезапустить демона командой:
sudo systemctl restart apache2
При попытке попасть в phpMyAdmin теперь потребуется дополнительная авторизация.
После ввода верных учетных данных авторизация проходит успешно.
Удаление phpMyAdmin
Удаление происходит с использованием этих команд:
sudo apt remove phpmyadmin -y
Отвечаем на все вопросы положительно.
Reading package lists. Done Building dependency tree Reading state information. Done The following packages were automatically installed and are no longer required: dbconfig-common dbconfig-mysql libjs-jquery libjs-openlayers libjs-sphinxdoc libjs-underscore libxslt1.1 php php-google-recaptcha php-phpmyadmin-motranslator php-phpmyadmin-shapefile php-phpmyadmin-sql-parser php-phpseclib php-psr-cache php-psr-container php-psr-log php-symfony-cache php-symfony-cache-contracts php-symfony-expression-language php-symfony-service-contracts php-symfony-var-exporter php-twig php-twig-extensions php-xml php7.4 php7.4-xml Use 'sudo apt autoremove' to remove them. The following packages will be REMOVED: phpmyadmin 0 upgraded, 0 newly installed, 1 to remove and 41 not upgraded. After this operation, 27.2 MB disk space will be freed. (Reading database . 54693 files and directories currently installed.) Removing phpmyadmin (4:4.9.5+dfsg1-2) . Determining localhost credentials from /etc/mysql/debian.cnf: succeeded. dbconfig-common: dumping mysql database phpmyadmin to /var/tmp/phpmyadmin.phpmyadmin.2021-11-16-07.04.mysql.rTp4t6. dbconfig-common: dropping mysql database phpmyadmin. dropping database phpmyadmin: success. verifying database phpmyadmin was dropped: success. dbconfig-common: revoking privileges for user phpmyadmin on phpmyadmin. revoking access to database phpmyadmin from phpmyadmin@localhost: success. Conf phpmyadmin disabled. apache2_invoke postrm:Disable configuration phpmyadmin
Для очистки неиспользуемых зависимостей применяем:
sudo apt-get autoremove
Reading package lists. Done Building dependency tree Reading state information. Done The following packages will be REMOVED: dbconfig-common dbconfig-mysql libjs-jquery libjs-openlayers libjs-sphinxdoc libjs-underscore libxslt1.1 php php-google-recaptcha php-phpmyadmin-motranslator php-phpmyadmin-shapefile php-phpmyadmin-sql-parser php-phpseclib php-psr-cache php-psr-container php-psr-log php-symfony-cache php-symfony-cache-contracts php-symfony-expression-language php-symfony-service-contracts php-symfony-var-exporter php-twig php-twig-extensions php-xml php7.4 php7.4-xml 0 upgraded, 0 newly installed, 26 to remove and 41 not upgraded. After this operation, 20.5 MB disk space will be freed. Do you want to continue? [Y/n] y (Reading database . 52976 files and directories currently installed.) Removing dbconfig-mysql (2.0.13) . Removing dbconfig-common (2.0.13) . Removing libjs-sphinxdoc (1.8.5-7ubuntu3) . Removing libjs-jquery (3.3.1~dfsg-3) . Removing libjs-openlayers (2.13.1+ds2-7) . Removing libjs-underscore (1.9.1~dfsg-1ubuntu0.20.04.1) . Removing php-xml (2:7.4+75) . Removing php7.4-xml (7.4.3-4ubuntu2.7) . Removing libxslt1.1:amd64 (1.1.34-4) . Removing php (2:7.4+75) . Removing php-google-recaptcha (1.2.3-1) . Removing php-phpmyadmin-motranslator (5.0.0-1) . Removing php-phpmyadmin-shapefile (2.1-3) . Removing php-phpmyadmin-sql-parser (4.6.1-2) . Removing php-phpseclib (2.0.23-2) . Removing php-symfony-expression-language (4.3.8+dfsg-1ubuntu1) . Removing php-symfony-cache (4.3.8+dfsg-1ubuntu1) . Removing php-symfony-cache-contracts (1.1.8-1) . Removing php-psr-cache (1.0.1-2) . Removing php-symfony-service-contracts (1.1.8-1) . Removing php-psr-container (1.0.0-2) . Removing php-psr-log (1.1.2-1) . Removing php-symfony-var-exporter (4.3.8+dfsg-1ubuntu1) . Removing php-twig-extensions (1.5.4-1) . Removing php-twig (2.12.5-1) . Removing php7.4 (7.4.3-4ubuntu2.7) . Processing triggers for libc-bin (2.31-0ubuntu9.2) . Processing triggers for man-db (2.9.1-1) . Processing triggers for libapache2-mod-php7.4 (7.4.3-4ubuntu2.7) .
Перезапускаем демон apache2:
sudo service apache2 restart
PhpMyAdmin удален с сервера.
Возможные ошибки
В процессе изменения типа аутентификации учетной записи root:
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
Возможно возникновение ошибки:
Plugin caching_sha2_password in not loaded
Это вызвано тем, что в свежих версиях mysql тип аутентификации по умолчанию:
caching_sha2_password
Это не позволит произвести удаленное подключение к mysql и вызовет ошибку плагина:
caching_sha2_password
Возможным вариантом решения является установка типа аутентификации:
mysql_native_password
Команда выглядит так:
ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Теперь возможен доступ пользователя к mysql с localhost.
Для подключения с нескольких хостов необходимо изменить команду:
ALTER USER 'username'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
Для применения изменений необходимо использовать:
FLUSH PRIVILEGES;
Заключение
В этом мануале мы рассказали о настройке сервера phpMyAdmin на операционной системе Ubuntu 20.04 на облачном сервере от Selectel. Мы разобрали основные моменты, которых достаточно для того, чтобы быстро и качественно установить данный инструмент на сервер, а также рассмотрели настройки безопасности.
Зарегистрируйтесь в панели управления
И уже через пару минут сможете арендовать сервер, развернуть базы данных или обеспечить быструю доставку контента.
Читайте также:
Инструкция
Как автоматизировать подготовку к собеседованиям с помощью Telegram-бота
29 сентября 2023
Инструкция
Как реализовать очередь в Redis
14 сентября 2023
Инструкция
Как генерировать истории с помощью ChatGPT и Telegram
Установка и настройка phpMyAdmin
Если Вам понравился данный материал, поделитесь им с вашими друзьями в соц сетях
В предыдущих материалах были описаны установка и запуск локального веб-сервер Apache на ОС Microsoft Windows 7, а так же, к веб-серверу был подключен модуль языка программирования PHP и СУБД (систему управления базами данных) MySQL.
Теперь нам необходимо ‘обзавестись’ удобным средством управления базами данных MySQL, одним из таких средств, получившим большую популярность, является phpMyAdmin.
phpMyAdmin — веб-приложение с открытым кодом, написанное на языке PHP и представляющее собой веб-интерфейс для администрирования СУБД MySQL. PHPMyAdmin позволяет через браузер осуществлять администрирование сервера MySQL, запускать команды SQL и просматривать содержимое таблиц и баз данных. Приложение пользуется большой популярностью у веб-разработчиков, так как позволяет управлять СУБД MySQL без непосредственного ввода SQL команд, предоставляя дружественный интерфейс.
Скачивание и установка phpMyAdmin
Скачиваем последнюю версию phpMyAdmin, для этого перейдем по ссылки http://phpmyadmin.net/home_page/downloads.php и найдем на странице дистрибутив, имя которого имеет формат «phpMyAdmin-X-X-X-all-languages.*».
Распакуем директорию скаченного архива в «C:\Apache24\htdocs\» и переименуем распакованную директорию в «phpmyadmin». В итоге файлы скаченного нами архива должны располагаться в директории «C:\Apache24\htdocs\phpmyadmin»
скачивание и установка phpMyAdmin
В пункте «Работа с конфигурационным файлом php.ini» материала Подключение PHP к Apache нами был рассмотрен пример подключения динамически загружаемых расширений. Для дальней работой с phpMyAdmin в конфигурационном файле php «C:\php\php.ini» необходимо подключить следующие расширения (после подключения расширений необходимо перезагрузить веб-сервер):
в файле php.ini найдем блок Dynamic Extensions (Динамические Расширения)
;;;;;;;;;;;;;;;;;;;;;; ; Dynamic Extensions ; ;;;;;;;;;;;;;;;;;;;;;; . extension=php_mbstring.dll extension=php_mysql.dll extension=php_mysqli.dll extension=php_pdo_mysql.dll .
раскомментируем необходимые расширения
Запуск и настройка phpMyAdmin
Как и большинство веб-приложений, phpMyAdmin имеет конфигурационный файл, в котором хранятся необходимые для его запуска настройки. Предлагаю Вам, сначала попробывать запустить phpMyAdmin, а потом, исходя из неудачных попыток его запуска, создать и настроить его конфигурационный файл.
Откроем в браузере страницу http://localhost/phpmyadmin или страницу http://localhost/phpmyadmin/index.php. Перед Вами должна появиться страница с формой для авторизации. В форму необходимо внести имя пользователя и пароль MySQL.
Ранее в материале Подключение MySQL к Apache нами была установлена служба MySQL. В нашем случае, по умолчанию, MySQL имеет главного пользователя c именем root и не имеющего пароль. Исходя из этих данных, попробуем авторизоваться. Вводим имя пользователя — root и не указываем пароль.
После неудачной попытки авторизации в форму возвращаются информационные сообщения. В нашем случае, (случае отсутствия пароля), мы увидем сообщениие: «Вход без пароля запрещен при конфигурации (смотрите AllowNoPassword)». Данное сообщение указывает, что нельзя допускать отсутствие пароля.
Теперь давайте создадим и настроим конфигурационный файл phpMyAdmin.
Для этого нам необходимо создать, а точнее скопировать, существующий в корне данного приложения конфигурационный файл. В директории «C:\Apache24\htdocs\phpmyadmin» ищем файл «config.sample.inc.php» и создаем его копию с новым именем «config.inc.php».
Открываем файл «C:\Apache24\htdocs\phpmyadmin\config.inc.php» в текстовом редакторе и, так как при попытки авторизации нам было указано: «. (смотрите AllowNoPassword)», ищем данное значение и записываем в него true.
изменяем значение переменной на true
$cfg['Servers'][$i]['AllowNoPassword'] = true;
После изменения данного значения, при попытки входа пользователя без пароля в phpMyAdmin, конфигурация не будет «ругаться» на его отсутствие. Но стоит отметить, что это не означает, что пользователь имеющий пароль может его не указывать. Теперь можете авторизоваться.
Убираем авторизацию в phpMyAdmin
Так как мы установили phpMyAdmin на своем локальном веб-сервере и соответственно работать на нем будете только Вы, думаю, будет целесообразно отключить авторизацию в данном веб-приложении. На боевом веб-сервере, в целях безопасности, отключение авторизации делать конечно же не нужно.
Открываем файл «C:\Apache24\htdocs\phpmyadmin\config.inc.php» в текстовом редакторе и вносим следующие изменения.
/* автоматическая авторизация */ $cfg['Servers'][$i]['auth_type'] = 'config'; $cfg['Servers'][$i]['user'] = 'root'; $cfg['Servers'][$i]['password'] = '';
значение переменной $cfg[‘Servers’][$i][‘auth_type’] = ‘config’; означает, что данные для авторизации будут браться из конфигурационного файла, а именно из переменных указанных ниже.
По итогам изучения данного материала нами было скачено, установлено и запущено веб-приложение phpMyAdmin, которое позволяет осуществлять администрирование сервера MySQL через браузер. А так же, для базовой настройки phpMyAdmin нами были внесены изменения в конфигурационный файл «config.inc.php».
- Подключение MySQL к PHP
- Apache настройка виртуальных хостов
Установка Apache, PHP, MySQL и phpMyAdmin в Windows
Разберём, как установить веб-сервер Apache, препроцессор PHP, СУБД MySQL и инструмент взаимодействия с MySQL – phpMyAdmin.
- Подготовка
- Apache
- Что такое Apache?
- Скачивание
- Установка
- Виртуальные хосты
- Примеры работы с виртуальными хостами
- Пример 1 – сервер для локальной разработки
- Пример 2 – сервер в локальной сети
- Пример 3 – сервер, доступный из глобальной сети
- Что такое PHP?
- Скачивание
- Установка
- Расширения
- Проверка корректной установки
- Что такое MySQL?
- Скачивание
- Установка
- Защищённая инициализация
- Незащищённая инициализация
- Авторизация в защищённом режиме
- Авторизация в незащищённом режиме
- Смена пароля
- Смена пароля в старых версиях MySQL
- Что такое phpMyAdmin?
- Скачивание
- Установка
- Установка без виртуальных хостов Apache
- Установка с виртуальными хостами Apache
1. Подготовка
Дабы не разводить беспорядок на компьютере, давайте условимся, что упорядочим папки, в которых будут располагаться нужные нам компоненты веб-сервера.
В корне системного локального диска (диск C: ), создайте папку WebServer. Сюда мы засунем всё, что будет относиться к веб-серверу.
Внутри папки WebServer создайте две папки: core и sites. Внутри core мы будем хранить основные компоненты веб-сервера (Apache, PHP, MySQL, phpMyAdmin), а внутри sites – непосредственно Web-сайты (Apache поддерживает возможность разместить несколько веб-сайтов на одном веб-сервере).
Далее в папке core создайте четыре папки: apache, php, mysql и pma. Каждая из папок будет отвечать за свой компонент.
Таким образом мы получим следующее дерево папок:
2. Apache
2.1. Что такое Apache?
Apache HTTP Server, или просто Apache – это свободно распространяемый веб-сервер, который может быть установлен на различных операционных системах, включая Windows, macOS и Linux. Apache является одним из самых популярных веб-серверов в мире и используется для хостинга миллионов веб-сайтов.
Apache предоставляет возможность обрабатывать запросы от клиентов, которые могут быть отправлены через Интернет или через локальную сеть. При получении запроса Apache ищет соответствующий файл на сервере и отправляет его обратно клиенту.
Apache также поддерживает модульную архитектуру, что означает, что пользователи могут добавлять дополнительные функции и возможности, чтобы улучшить производительность и безопасность веб-сервера. Это делает Apache гибким и мощным инструментом, который может быть настроен на различные нужды и требования пользователей.
2.2. Скачивание
Скачать Apache можно с сайта Apache Lounge. Перейдите на данный сайт и нажмите в меню слева «Downloads»:
Здесь требуется определиться, какую версию Apache вы будете использовать. Выбирать версию Apache необходимо в зависимости от того, на какой операционной системе вы будете запускать Apache. Список версий и совместимых версий Windows приведён ниже.
VC10 VC11 VC14 VC15 VS16 VS17 Примечание Windows XP + – – – – – Windows Vista + + + + + + Требуется SP2 Windows 7 + + + + + + Требуется SP1 Windows 8 + + + + + + Windows 8.1 + + + + + + Windows 10 + + + + + + Windows 11 ~ ~ ~ + + + Windows Server 2003 + – – – – – Windows Server 2008 + + + + + + Требуется SP2 или R2 SP1 Windows Server 2012 + + + + + + Windows Server 2016 + + + + + + Windows Server 2019 ~ ~ + + + + Windows Server 2022 ~ ~ ~ + + + «–» – не поддерживается
«+» – поддерживается
«~» – поддержка официально не заявленаИ так, вы выбрали подходящую вам версию. Смело нажимайте на ссылку, которая начинается с «httpd-. » (1). Ссылок может быть две: для 32-разрядных систем и для 64-разрядных.
32-разрядный веб-сервер Apache запустится и на 32-разрядной системе, и на 64-разрядной (с ограничением используемой ОЗУ), а 64-разрядный запустится только на 64-разрядной системе.
Также обратите внимание: для работы Apache, вам необходимо установить библиотеки Visual C++. Ссылка на библиотеки нужной версии располагаются в верхней части той же страницы (2).
Если у вас установлена операционная система с 32-битной разрядностью, скачать необходимо только 32-разрядные библиотеки (обозначаются как x86 или 32bit), а если система 64-разрядная, то желательно скачать обе версии библиотек: и 32-бит, и 64-бит.
2.3. Установка
Откройте скачанный архив с Apache любым архиватором, например 7-Zip. Внутри вы увидите папку «Apache24». Скопируйте всё содержимое папки «Apache24» из архива в папку C:\WebServer\core\apache. Убедитесь в том, что вы скопировали не всю папку Apache24 целиком в папку apache, а лишь её содержимое.
Далее, чтобы избежать ошибки при установке Apache, откройте файл C:/WebServer/core/apache/conf/httpd.conf любым текстовым редактором (можно стандартным Блокнотом, но мы рекомендуем что-нибудь более продвинутое, например Notepad++, так как стандартный блокнот сохраняет файлы в кодировке Windows-1251, а файлы конфигурации по умолчанию в кодировке UTF-8, и их изменение в блокноте может привести к неожиданным ошибкам) и найдите строку, в которой аргументом будет стандартный путь к папке Apache:
"c:/Apache24"
Замените этот путь на путь, где вы разместили Apache. В нашем случае новый путь будет таков:
"C:/WebServer/core/apache"
Далее запустите командную строку от имени администратора и введите следующую команду:
C:\WebServer\core\apache\bin\httpd -k install
Данная команда установит сервис Apache, который будет автоматически запускать веб-сервер при каждой загрузке операционной системы.
Как можно заметить, при установке Apache как сервиса, возникло замечание проверки конфигурационного файла. Представленное замечание не критично и лишь говорит о том, что в конфигурационном файле не указана директива ServerName, которая не является обязательной.
Вернитесь в окно командной строки (запущенной от имени администратора) и введите команду, которая запустит сервис Apache:
net start Apache2.4
Вы должны получить сообщение о том, что служба успешно запущена или служба уже была запущена ранее:
После этого перейдите в браузере по адресу http://127.0.0.1/. Если всё установлено корректно, перед вами должна открыться страница с надписью «It works!»:
Данная страница означает, что веб-сервер успешно запустился и отобразил файл C:\WebServer\core\apache\htdocs\index.html. Для проверки, вы можете открыть данный файл текстовым редактором, что-нибудь написать, сохранить файл и перезагрузить страницу.
В принципе, вы уже можете пользоваться веб-сервером Apache, размещая необходимые вам файлы в каталоге C:\WebServer\core\apache\htdocs, однако это позволит развернуть лишь один сайт на веб-сервере. Если же вы хотите развернуть несколько сайтов – необходимы виртуальные хосты.
2.4. Виртуальные хосты
Виртуальные хосты позволяют развернуть на веб-сервере несколько сайтов. Это полезно, если вы хотите работать с несколькими проектами на одном компьютере, или же собираетесь «хостить» несколько сайтов на одном сервере.
Для включения виртуальных хостов, откройте в текстовом редакторе файл C:\WebServer\core\apache\conf\httpd.conf.
В этом файле найдите блок кода, отвечающий за подключение файла виртуальных хостов. Он выглядит так: «#Include conf/extra/httpd-vhosts.conf». Раскомментируйте данную строку, убрав из её начала символ «#».
Также найдите строку: «#LoadModule vhost_alias_module modules/mod_vhost_alias.so» и раскомментируйте её – это модуль псевдонимов для доменных имён виртуальных хостов, он нам пригодится:
В самом начале файла, где вы указывали путь к папке с Apache, вставьте следующую строку, заменив путь на каталог к папке с сайтами. Мы будем использовать эту переменную SITES для подстановки в пути в виртуальные хосты:
Define SITES "c:/WebServer/sites"
Также в этом же файле нужно найти строку DocumentRoot, закомментировать её и следующей за ней блок Directory:
А также нужно найти блок
и тоже его закомментировать: Также по желанию вы можете закомментировать строку ServerAdmin, поскольку она не влияет на работоспособность сервера:
На этом мы закончили с файлом httpd.conf. Далее откройте в текстовом редакторе файл с виртуальными хостами: C:\WebServer\core\apache\conf\extra\httpd-vhosts.conf
В этом файле вы увидите два стандартных блока виртуальных хостов (в начале файла будет около 20 строк комментариев, их можно удалить):
Разберём, из чего эти блоки состоят:
- Части
и отвечают за один виртуальный хост и описывают его. То есть это открывающий и закрывающий теги блока.
Комбинация символов астериска-двоеточия-цифр ( *:80 ) в данном контексте определяет, что Apache будет обрабатывать этим виртуальным хостом запросы, пришедшие на любой IP-адрес этого компьютера по 80 порту. - DocumentRoot – директория, из которой веб-сервер будет брать файлы при обращении к определённому виртуальному хосту.
- ServerName – основное имя домена, на который будет срабатывать виртуальный хост.
- ServerAlias – альтернативные имена домена, на которые будет срабатывать виртуальный хост. Может быть несколько, перечисленных через запятую. Для работы этой директивы необходимо подключить модуль mod_vhost_alias.so.
- ServerAdmin – электронная почта администратора сервера. Используется в основном при запросах с сервисов Whois.
- ErrorLog – путь к файлу лога ошибок при обращении к конкретно этому виртуальному хосту.
- CustomLog – путь к файлу пользовательских логов.
Давайте разберём небольшой простенький пример конфигурации виртуальных хостов:
- Первый виртуальный хост будет «заглушкой». Всё, что он будет делать – это загружать каталог C:\WebServer\sites\dummy в том случае, если клиент обращается к нашему веб-серверу, но на веб-сервере отсутствует виртуальный хост с таким именем (ServerName или ServerAlias).
- Второй виртуальный хост будет загружать каталог C:\WebServer\sites\example.com\www в том случае, если пользователь заходит по адресам http://example.com/ (ServerName) или http://www.example.com/ (ServerAlias).
- Третий виртуальный хост будет загружать каталок C:\WebServer\sites\example.com\second при обращении к адресу http://second.example.com/
Обратите внимание: обработка адресов виртуальных хостов (ServerName, ServerAlias) возможна только в том случае, если запрос от клиента приходит именно на наш сервер. Переадресация запросов с имени домена на ваш сервер возможна только в случае, если DNS-сервер, используемый клиентом, ассоциирует имя домена с IP-адресом вашего сервера.
Изменения, внесённые в конфигурационные файлы Apache и PHP, вступают в силу только после перезапуска службы Apache!
Для перезапуска можно использовать команду в командной строке:
net stop Apache2.4 & net start Apache2.4
2.5. Примеры работы с виртуальными хостами
2.5.1. Пример 1 – сервер для локальной разработки
Предположим, вы хотите запустить несколько сайтов, которые будут доступны только на вашем компьютере. Такой вариант полезен, например, для локальной разработки веб-сайтов, когда к ним не нужен доступ ни из локальной сети, ни из глобальной сети. То есть вы будете с ними работать единолично, всегда из под одного компьютера.
Предположим, что вы хотите развернуть три локальных сайта: mysite.com, client.mysite.com и myanothersite.com. В этом случае конфигурация виртуальных хостов будет представлять из себя что-то вроде:
При этом, должны существовать каталоги:
- C:\WebServer\sites\mysite.com\www – для mysite.com и www.mysite.com
- C:\WebServer\sites\mysite.com\client – для client.mysite.com
- C:\WebServer\sites\myanothersite.com\www – для myanothersite.com и www.myanothesite.com
Также вам нужно ассоциировать перечисленные адреса именно с вашим компьютером. То есть компьютер должен понимать: «Если я обращаюсь к домену mysite.com – значит я должен обратиться к своему же IP-адресу».
Если вы используете эти сайты именно для локальной разработки, то есть не обязательно, чтобы эти сайты работали из локальной или глобальной сети, вы можете использовать для этого файл C:\Windows\System32\drivers\etc\hosts.
Файл hosts играет роль простенького «DNS-сервера» (очень утрированно, но всё же). При обращении к любому доменному имени, система сначала проверяет, присутствует ли запись об этом доменном имени в файле hosts. Если такая запись присутствует – все запросы к этому доменному имени в будущем направляются на указанный в этом файле IP-адрес. В случае, если доменное имя в этом файле не указано, то отправляется запрос на DNS-сервер в локальной сети (если таковой существует), а далее – на глобальный DNS-сервер.
В контексте нашего примера, содержимое файла hosts будет представлять из себя следующее:
IP-адреса в диапазоне 127.X.X.X (кроме 127.0.0.0 и 127.255.255.255) всегда ссылается на текущий компьютер.
В случае, если вы внесли изменения и в файл виртуальных хостов, и в hosts, а также создали перечисленные папки, все перечисленные сайты откроются:
2.5.2. Пример 2 – сервер в локальной сети
Предположим, что вы хотите развернуть все те же самые сайты, что и в примере 1, но чтобы они были доступны в пределах локальной сети. Такое полезно, например, для организации веб-платформ внутри предприятия.
В этом случае конфигурация виртуальных хостов в Apache не изменится, однако необходимо каким-либо образом дать понять другим компьютерам в пределах локальной сети, что при обращении к mysite.com, они должны будут не искать этот домен на глобальных DNS-серверах, а отправляться на сервер внутри локальной сети.
Предположим, что Apache развёрнут на компьютере с именем Server и статическим IP-адресом 192.168.1.100. Остальные компьютеры в организации имеют имена и IP-адреса: PC1 — 192.168.1.101, PC2 — 192.168.1.102, PC3 — 192.168.1.103.
В этом случае есть два варианта:
-
Простой вариант. На всех компьютерах клиентов (PC1, PC2 и PC3) в файл hosts добавить строки, которые будут перенаправлять запросы к необходимым нам сайтам на IP-адрес 192.168.1.100 (IP-адрес сервера):
192.168.1.100 mysite.com 192.168.1.100 www.mysite.com 192.168.1.100 client.mysite.com 192.168.1.100 myanothersite.com 192.168.1.100 www.myanothersite.com
Также существует обходной, несколько «костыльный» вариант, не требующий редактирования файла hosts на клиентах, а также не требующий поднятия DNS-сервера. Однако данный вариант не позволяет использовать доменные имена. Доступ к сайтам в этом случае будет происходить по IP-адресам.
Для данного варианта необходимо задать сетевому адаптеру сервера несколько статических IP-адресов, например 192.168.1.10, 192.168.1.11, 192.168.1.12 (количество IP-адресов должно быть больше или равно количеству сайтов).
Конфигурацию виртуальных хостов же следует переделать, придав ей вид наподобие:
В этом случае, любой из клиентов, который зайдёт по адресу http://192.168.1.10/ попадёт в каталог C:\WebServer\sites\mysite.com\www, при входе на http://192.168.1.11/ – в каталог C:\WebServer\sites\mysite.com\client, а при входе на http://192.168.1.12/ – в каталог C:\WebServer\sites\myanothersite.com\www.
2.5.3. Пример 3 – сервер, доступный из глобальной сети
Предположим, что вы хотите, чтобы сайт был доступен из глобальной сети (пожалуй, самое популярное использование веб-серверов в принципе).
В этом случае вам необходимо приобрести домен у регистратора доменных имён. Регистраторов существует огромное множество, например: nic.ru, reg.ru, 2domains.ru, beget.com, timeweb.com и прочие. Вы можете приобрести у регистратора любой домен при условии, что данный домен свободен и доступен для покупки. Цена варьируется в зависимости от доменной зоны (.ru, .com, .net и пр.), а также от востребованности домена: например домен a.travel будет стоить значительно дороже, чем какой-нибудь HelloIAmVasyaPupkinThisIsMyFirstWebSite.ru.
Также необходимо, чтобы шлюз, через который сервер получает доступ к интернету, имел статический «белый» IP-адрес. Арендовать статический публичный IP-адрес можно у интернет-провайдера, который предоставляет доступ к интернету. Цены варьируются в зависимости от провайдера, региона и вашего юридического статуса (физическое или юридическое лицо). Кроме того, некоторые (в частности местечковые) провайдеры не предоставляют возможность аренды «белого» IP-адреса физическим лицам из-за ограниченного количества таких адресов «в наличии» – учитывайте это.
Предположим, вы хотите приобрести доменное имя mycompany.ru, и хотите, чтобы у вас работали непосредственно сам домен, а также поддомены: cabinet.mycompany.ru, landing.mycompany.ru и help.mycompany.ru.
В данном случае ваш алгоритм действий будет примерно следующим:
- Арендовать «белый» IP-адрес у провайдера
- Арендовать домен у регистратора доменных имён
- Запустить веб-сервер на компьютере в локальной сети, сконфигурировать виртуальные хосты. Одна из возможных реализаций файла виртуальных хостов:
- Настроить переадресацию портов на шлюзе, чтобы запросы, приходящие на шлюз, например на 80 порт, перенаправлялись на «серый» IP-адрес машины, на котором запущен веб-сервер
- У регистратора доменных имён изменить DNS-записи вашего домена, заменив/добавив DNS-записи типа A, ссылающиеся на «белый» IP-адрес, который вам выдал провайдер:
Имя Тип Значение @ A IP-адрес от провайдера cabinet A IP-адрес от провайдера landing A IP-адрес от провайдера help A IP-адрес от провайдера
Через несколько часов после внесения DNS-записей, сайт заработает.
2.6. Поиск ошибок в конфигурации Apache
Если сервис Apache не может запуститься, необходимо понять, из-за какой ошибки он не запускается. Для того, чтобы понять, какие вообще ошибки и замечания содержатся в конфигурационном файле, введите следующую команду:
C:\WebServer\core\apache\bin\httpd -t
Данная команда произведёт проверку используемого файла конфигурации и всех подключаемых файлов и оповестит вас о всех найденных ошибках и замечаниях. Если ошибок и замечаний нет, команда проверки конфигурации выдаст лишь сообщение «Syntax OK»:
Разберём устранение ошибки на примере замечания о том, что в конфигурационном файле не указана директива ServerName. Данное замечание не является критичным и не мешает работе Apache, но дабы оно не мозолило глаза, исправим его.
Дело в том, что по умолчанию директива ServerName просто-напросто закомментирована. Вы можете раскомментировать её в конфигурационном файле C:\WebServer\core\apache\conf\httpd.conf – убрать символ «#» в начале строки и изменить www.example.com, например, на test.local, после чего ошибка пропадёт.
Обратите внимание: после любых изменений конфигурационных файлов Apache или PHP, требуется перезапустить Apache, так как изменения применятся только при следующем запуске веб-сервера.
Перезапустить веб-сервер можно командами в командной строке:
net stop Apache2.4 net start Apache2.4
На этом с установкой Apache мы закончили. Перейдём к установке PHP.
3. PHP
3.1. Что такое PHP?
PHP — это язык программирования, который используется для создания веб-приложений и динамических сайтов. Он был создан в 1995 году Расмусом Лердорфом и с тех пор стал одним из наиболее популярных языков программирования для веб-разработки.
Основная цель PHP — обработка данных на сервере. Он может быть использован для работы с базами данных, чтения и записи файлов, отправки электронной почты и многого другого. Кроме того, PHP имеет множество библиотек и фреймворков, которые упрощают и ускоряют процесс разработки.
Существует множество крупных веб-сайтов, которые используют PHP в своей основе, таких как Facebook, Wikipedia и WordPress. Он также поддерживается на большинстве серверов и операционных систем, что делает его доступным для широкого круга разработчиков.
3.2. Скачивание
Для скачивание препроцессора PHP перейдите на сайт в раздел Downloads на Windows.PHP.net
В этом разделе вам необходимо найти версию PHP, подходящую к версии Apache. Например, если вы скачали Apache VS17, то необходимо использовать и PHP для версии VS17.
На момент публикации этой статьи, PHP VS17 ещё не вышла, поэтому мы используем VS16 (они совместимы).
Найдите раздел под разрядность вашей системы с припиской «Thread Safe» и скачайте Zip-архив:
Разархивируйте содержимое архива в папку C:\WebServer\core\php:
3.3. Установка
В каталоге с распакованным PHP переименуйте файл php.ini-development в php.ini:
Далее откройте файл конфигурации Apache – C:\WebServer\core\apache\conf\httpd.conf и вставьте в конец файла следующий текст:
LoadModule php_module "C:/WebServer/core/php/php8apache2_4.dll" PHPIniDir "C:/WebServer/core/php" AddHandler application/x-httpd-php .php
- LoadModule – загружает модуль с названием «php_module» из DLL-файла, находящегося по пути C:/WebServer/core/php/php8apache2_4.dll.
- PHPIniDir – указывает, в каком каталоге располагается файл php.ini. Если в данном каталоге нет файла php.ini (например вы забыли его переименовать из php.ini-development в php.ini), то PHP использует стандартные настройки.
- AddHandler – указывает веб-серверу Apache, что файлы с расширением *.php будут обрабатываться препроцессором PHP.
В случае со старыми версиями PHP (до PHP 7 включительно), первая строка может отличаться: вместо «LoadModule php_module» должно быть «LoadModule php7_module», где цифра 7 – версия PHP. Также для версии PHP 5: «LoadModule php5_module»
Также в этом же файле найдите строку: «DirectoryIndex index.html» и замените её на «DirectoryIndex index.php index.html».
Данная строка отвечает за то, чтобы при открытии пути-директории, без имени файла, открывать перечисленные файлы. То есть, если пользователь зайдёт по адресу http://example.com/ , Apache попытается найти файл http://example.com/index.php, и если он существует – он откроется без изменения URL. Если файла index.php в этом каталоге нет, будет произведён поиск файла index.html. Если он есть – он откроется, а если его нет – будет либо выдан список файлов в этой директории, либо ошибка «403 Forbidden» (в зависимости от настроек Apache).
3.4. Расширения
Большинство сайтов используют не только «голый» функционал PHP, но и дополнительные функции, идущие в комплекте расширений для PHP. По умолчанию все расширения PHP отключены, и было бы полезно включить некоторые из них, чтобы впоследствии не столкнуться с ошибками при работе с сайтами.
Откройте файл C:\WebServer\core\php\php.ini и найдите строку «;extension_dir = «ext»». Раскомментируйте её, убрав точку с запятой из начала строки, и укажите верный путь к папке расширений PHP (C:\WebServer\core\php\ext):
Сами расширения можно включить в этом же файле, найдя и раскомментируя строку «extension=ИМЯ_РАСШИРЕНИЯ» (или добавив свою строку того же формата, разместив расширение в папке php/ext):
Наиболее часто используемыми дополнениями являются: gd, mbstring, exif, mysqli, pdo_mysql. Можете их сразу раскомментировать, чтобы в будущем не сталкиваться с ошибкой отсутствия этих расширений.
3.5. Проверка корректной установки
После внесения изменений в httpd.conf и php.ini, необходимо перезапустить Apache:
net stop Apache2.4 & net start Apache2.4
Теперь вы можете создать файл в любой директории, указанной в созданном виртуальном хосте (или в C:\WebServer\core\apache\htdocs, если не создавали виртуальные хосты), например index.php, и добавить в него следующий текст:
Если всё настроено правильно, при входе на страницу с адресом этого файла, вы увидите стандартную страницу с информацией о PHP, которая выводится функцией phpinfo():
4. MySQL
4.1. Что такое MySQL?
MySQL — это система управления реляционной базой данных (СУБД), которая широко используется для создания и управления различными типами веб-приложений. Она является одной из самых популярных СУБД в мире благодаря своей простоте, надежности и гибкости.
Работа с MySQL поддерживается множеством языков программирования, включая PHP, Python, Ruby, Java и другими.
4.2. Скачивание
Перейдите на сайт MySQL.com в раздел Downloads:
Внизу страницы перейдите по ссылке «MySQL Community (GPL) Downloads»:
На этой странице нажмите по ссылке «MySQL Community Server»:
На этой странице можно скачать MySQL в двух форматах: установщик (1) и ZIP-архив (2). Поскольку установщик – это слишком просто (¯\_(ツ)_/¯), разберём ручную установку из ZIP-архива.
После перехода по ссылке для скачивания архива, входить/регистрироваться не обязательно. Просто нажмите «No thanks, just start my download»:
После скачивания, откройте архив, перейдите внутри архива в папку «mysql-версия-разрядность» и распакуйте всё содержимое папки в C:\WebServer\core\mysql:
4.3. Установка
Для установки MySQL, в первую очередь необходимо установить сервис MySQL. Сделать это можно следующей командой:
C:\WebServer\core\mysql\bin\mysqld --install
Результатом данной команды должно быть сообщение о том, что сервис успешно установлен:
Теперь нужно создать пустую базу данных. Данный процесс в рамках MySQL называется «инициализация».
Инициализировать базу данных можно двумя способами:
- В защищённом режиме
- В незащищённом режиме
В защищённом режиме, при инициализации, пользователю root – основному пользователю базы с полными правами на управление базой задастся случайный пароль. В незащищённом режиме – пароль будет пустым.
Oracle, владельцы MySQL, всегда рекомендуют использовать только защищённый режим инициализации, поскольку пароль задан буквально с создания базы, и недоброжелатель не сможет «достучаться» до базы в промежуток времени между незащищённой инициализацией и заданием пароля для рута.
4.3.1. Защищённая инициализация
Для защищённой инициализации введите в командной строке следующую команду:
C:\WebServer\core\mysql\bin\mysqld --initialize
После выполнения этой команды, в папке C:\WebServer\core\mysql появится папка data: в этой папке и хранится база данных.
Как мы уже упомянули, при защищённой инициализации, MySQL создаёт случайный пароль для пользователя root. Данный пароль можно узнать в файле лога ошибок, который создаётся в каталоге созданной базы.
Найдите в папке C:\WebServer\core\mysql\data файл с расширением .err. Его название также генерируется случайным образом и при каждой инициализации будет разным.
Откройте данный файл с помощью блокнота. В нём вы найдёте строку: «A temporary password is generated for root@localhost: . » – это и есть случайный пароль пользователя root.
4.3.2. Незащищённая инициализация
Для защищённой инициализации введите в командной строке следующую команду:
C:\WebServer\core\mysql\bin\mysqld --initialize-insecure
При этом, как и в случае с защищённой инициализацией, будет создана папка data, где будут располагаться все файлы базы данных.
Не забудьте запустить службу
После инициализации базы данных, необходимо запустить службу MySQL, так как она не запускается после установки.
Запустить службу MySQL можно следующей командой:
net start MySQL
В принципе, установка MySQL на этом окончена. Однако, вам может потребоваться изменить пароль пользователя root, поскольку, например, phpMyAdmin не позволяет авторизоваться в БД, если для авторизации используется пустой пароль (если вы использовали незащищённую авторизацию —initialize-insecure ).
4.4. Смена пароля пользователя root
После инициализации, вне зависимости от её типа (защищённая, незащищённая) вам может потребоваться изменение пароля пользователя root.
Для смены пароля рута (да и любого пользователя), необходимо подключиться к базе данных. Убедитесь, что вы запустили службу MySQL, иначе получите ошибку: «Can’t connect to MySQL server on. »:
Для подключения к базе данных, нам необходим файл mysql.exe из папки C:\WebServer\core\mysql\bin.
Заметьте: утилита mysqld.exe (которую мы использовали для установки сервиса и инициализации БД) – отвечает за сервер MySQL, а mysql.exe – это клиент подключения к БД. Не путайте их.
4.4.1. Авторизация в защищённом режиме
Если вы инициализировали базу в защищённом режиме (аргументом —initialize ), вам необходимо авторизоваться в базе данных с использованием пароля. Воспользуйтесь следующей командой для подключения к БД:
C:\WebServer\core\mysql\bin\mysql -u root -p
После ввода команды, MySQL запросит пароль от пользователя root (как уже упоминалось, найти его вы можете в файле с расширением .err в каталоге с базой данных – папке data).
После ввода команды нажмите Enter. MySQL спросит пароль для пользователя root, введите его.
В случае успешной авторизации, вы увидите приветственное сообщение: «Welcome to the MySQL monitor».
Аргумент -u root в данном контексте обозначает, что мы будем авторизоваться от имени пользователя root, а аргумент -p означает, что для входа в базу данных будет использован пароль. Без этого аргумента, MySQL выдаст ошибку: «Access denied for user. ».
4.4.2. Авторизация в незащищённом режиме
Данный вариант возможен только в случае, если вы инициализировали базу данных в незащищённом режиме (аргументом —initialize-insecure ).
Для авторизации используйте команду:
C:\WebServer\core\mysql\bin\mysql -u root
После этого вы сразу же попадёте в монитор MySQL, без необходимости вводить пароль.
Использование аргумента -p , как в случае с авторизацией в защищённом режиме, здесь наоборот не нужно, так как пользователь root в данном случае – беспарольный, и попытка выполнить вход с любым паролем выдаст ту же ошибку «Access denied for user. »:
4.4.3. Смена пароля
Для смены пароля пользователя root введите следующую команду:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'НОВЫЙ_ПАРОЛЬ';
Результатом выполнения данной операции должен быть ответ: «Query OK». После смены пароля, вы можете выйти из базы командой quit, после чего попробовать вновь авторизоваться с использованием нового пароля:
C:\WebServer\core\mysql\bin\mysql -u root -p
4.4.4. Смена пароля в старых версиях MySQL
MySQL до версии 5.7.5 включительно и MariaDB (базированная на MySQL) до 10.1.20 включительно не поддерживают команду ALTER USER . Для этих версий необходимо использовать иной синтаксис команды:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('НОВЫЙ_ПАРОЛЬ');
После изменения пароля перезагрузите привилегии командой:
FLUSH PRIVILEGES;
4.5. Восстановление пароля MySQL
Данный способ поможет вам в случае, если вы по какой-то причине потеряли пароль пользователя root, а соответственно и доступ к MySQL.
Узнать установленный пароль MySQL, к сожалению, нельзя. Однако можно установить новый пароль для пользователя.
Для этого в корне диска C: создайте текстовый файл init.txt. Внутрь данного файла напишите команду изменения пароля, например:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new-root-password';
Далее завершите службу MySQL командой:
net stop MySQL
Теперь запустите сервер MySQL с указанием пути к файлу инициализации и включении консольного вывода:
C:\WebServer\core\mysql\bin\mysqld --init-file=C:\init.txt --console
Когда в выводе увидите строку вида: «C:\WebServer\core\mysql\bin\mysqld: ready for connections. Version. », нажмите сочетание клавиш Ctrl+C – это завершит сервер MySQL.
После этого вновь запустите сервер MySQL командой:
net start MySQL
Готово. Теперь вы можете авторизоваться по паролю, который установили в команде в файле init.txt. Не забудьте удалить файл init.txt чтобы избежать компрометации пароля.
5. phpMyAdmin
5.1. Что такое phpMyAdmin?
phpMyAdmin — это бесплатный инструмент с открытым исходным кодом, который предоставляет веб-интерфейс для управления базами данных MySQL. С помощью phpMyAdmin вы можете легко создавать, редактировать и удалять базы данных, таблицы, записи и пользователей.
Кроме того, phpMyAdmin предоставляет множество функций для работы с данными, таких как импорт и экспорт данных, выполнение SQL-запросов, создание отчетов и диаграмм и многое другое. Он широко используется веб-разработчиками и администраторами баз данных для управления своими базами данных MySQL.
Кроме того, phpMyAdmin работает скорее как веб-проект (например как тот же WordPress), а не как отдельный компонент, требующий установки (как Apache, PHP и MySQL).
5.2. Скачивание
Для скачивания phpMyAdmin перейдите на сайт phpMyAdmin.net и нажмите кнопку «Download».
Откройте скачанный архив. Внутри вы увидите папку phpMyAdmin-версия-языки, перейдите в неё.
5.3. Установка
5.3.1. Если вы не используете виртуальные хосты в Apache
Создайте в папке C:\WebServer\core\apache\htdocs папку pma. Скопируйте всё содержимое из папки phpMyAdmin-версия-языки из архива в папку pma.
Теперь вы можете войти по адресу http://127.0.0.1/pma/ и попасть в интерфейс phpMyAdmin.
5.3.2. Если вы используете виртуальные хосты Apache
Распакуйте из папки phpMyAdmin-версия-языки из архива в папку C:\WebServer\core\pma.
Далее откройте файл конфигурации виртуальных хостов в Apache: C:\WebServer\core\apache\conf\extra\httpd-vhosts.conf. Добавьте новый виртуальный хост:
ServerName pma.localhost DocumentRoot "c:/WebServer/core/pma" В файл C:\Windows\system32\drivers\etc\hosts добавьте следующую строку:
127.0.0.1 pma.localhost
В файле C:\WebServer\core\php\php.ini убедитесь, что строка подключения расширения mysqli раскомментирована:
Перезапустите веб-сервер Apache командой:
net stop Apache2.4 & net start Apache2.4
После этого зайдите через любой браузер по адресу http://pma.localhost/. У вас должна открыться страница авторизации phpMyAdmin. Для авторизации используйте логин-пароль от MySQL.
На этом установка Apache, PHP, MySQL и phpMyAdmin окончена.
При возникновении вопросов, вы можете задать их в комментариях к статье. Мы постараемся ответить на все вопросы, а так же, при необходимости – дополним статью ответами на эти вопросы.
6. Добавление нового сайта
Для создания нового сайта (например mysite.ru) в пределах веб-сервера, выполните следующие действия:
- В каталоге C:\WebServer\sites создайте папку mysite.ru, внутри неё – папку www.
- В файле виртуальных хостов C:\WebServer\core\apache\conf\extra\httpd-vhosts.conf создайте следующий блок виртуального хоста:
DocumentRoot "$\mysite.ru\www ServerName mysite.ru ServerAlias www.mysite.ru 127.0.0.1 mysite.ru 127.0.0.1 www.mysite.ru
net stop Apache2.4 & net start Apache2.4
7. Сборка Apache+PHP+MySQL+phpMyAdmin
Скачать сборку можно по следующей ссылке: https://profit-zip.ru/eniweb/apmp.zip (обновлено 11.07.2023, обновлена версия PHP до 8.2.8).
Разархивируйте *.bat-файл в любое место и запустите от имени администратора.
Данный bat-файл загрузит Apache, PHP, MySQL и phpMyAdmin, а также несколько необходимых компонентов, после чего установит компоненты, отредактирует файлы конфигураций, инициализирует пустую базу данных и запустит службы.
После запуска bat-файла, для авторизации в MySQL (например через phpMyAdmin или через CMS) используйте имя пользователя/пароль: root/root или из под рута создайте отдельного пользователя.
Проверено на Windows 10 x64 и Windows 11 x64. За фидбек по другим версиям и разрядностям Windows будем признательны.