Установка MySQL + Apache + PHP + phpMyAdmin в FreeBSD 11
# portsnap fetch
# portsnap extract
# portsnap update
2. Устанавливаем MySQL из портов
# cd /usr/ports/databases/
Ищем доступные версии MySQL сервера
# find . -name 'mysql*-server'
./mysql57-server
./mysql55-server
./mysql56-server
./mysql80-server
Установим свежайшую версию 5.7
# cd mysql57-server/
# make install clean
В процессе установке будут заданы ряд вопросов. Все оставляем по умолчанию, кликнув по «ОК»
Добавляем службу MySQL в автозагрузку
Для этого в файл /etc/rc.conf добавим строку
mysql_enable="YES"
Для удобства дальнейшего конфигурирования сервера и работы с MySQL создаем файл конфигурации сервера, куда можно заносить индивидуальные директивы настройки сервера. Файл конфигурации копируем из имеющегося файла-примера:
# cp /usr/local/share/mysql/my-default.cnf /etc/my.cnf
Стартуем службу MySQL
#service mysql-server start
Starting mysql.
Запускаем первичный скрипт настройки безопасности.
На первый вопрос отвечаем «N» или просто нажимаем Enter. Этим мы сообщаем программе в том, что не нуждаемся в проверке пароля на устойчивость.
# mysql_secure_installation
mysql_secure_installation: [ERROR] unknown variable 'prompt=\u@\h [\d]>\_'
Securing the MySQL server deployment.
Connecting to MySQL server using password in '/root/.mysql_secret'
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No: <нажимам Enter>
Using existing password for root.
На вопрос о необходимости установки пароля отвечаем y (yes, да)
Change the password for root ? ((Press y|Y for Yes, any other key for No) : y
Вводим пароль два раза:
New password: <Вводим пароль>
Re-enter new password: <Вводим пароль>
Затем на остальные вопросы везде отвечаем Да – «y»
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
- Dropping test database...
Success.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.
Перезапускаем службу
#service mysql-server restart
Теперь можно зайти в MySQL с помощью клиента:
#mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 5.7.17-log
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
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.
root@localhost [(none)]>
В MySQL 5.7, поле пароля password пользователя было удалено и теперь необходимо использовать поле 'authentication_string'. В связи с этим на ввод любой команды в клиенте MySQL будет выдаваться ошибка. Пример:
> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
Устраняем ошибку следующей командой, которая пропишет наш пароль в правильное место:
> ALTER USER USER() IDENTIFIED BY ‘<Пароль>';
Query OK, 0 rows affected (0,00 sec)
Теперь можно пользоваться клиентом MySQL
root@localhost [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0,03 sec)
3. Устанавливаем Apache
Ищем какие версии пакетов Apache доступны для установки
# pkg search apache | grep server
apache-solr-6.3.0 High performance search server built using Lucene Java
apache-solr3-3.6.2 High performance search server built using Lucene Java
apache22-2.2.31_1 Version 2.2.x of Apache web server with prefork MPM
apache22-event-mpm-2.2.31_1 Version 2.2.x of Apache web server with event MPM
apache22-itk-mpm-2.2.31_1 Version 2.2.x of Apache web server with itk MPM
apache22-peruser-mpm-2.2.31_1 Version 2.2.x of Apache web server with peruser MPM
apache22-worker-mpm-2.2.31_1 Version 2.2.x of Apache web server with worker MPM
apache24-2.4.25_1 Version 2.4.x of Apache web server
p5-Config-ApacheFormat-1.2_2 Parse a configuration file in the same syntax as the Apache web server
Проводим установку пакета apache24
root@kvs-freebsd:~ # pkg install apache24-2.4.25_1
Updating FreeBSD repository catalogue...
...
The process will require 76 MiB more space.
18 MiB to be downloaded.
На вопрос отвечаем утвердительно, введя y
Proceed with this action? [y/N]: y
Установка завершается сообщением:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- apache24 default build changed from static MPM to modular MPM
- more modules are now enabled per default in the port
- icons and error pages moved from WWWDIR to DATADIR
If build with modular MPM and no MPM is activated in
httpd.conf, then mpm_prefork will be activated as default
MPM in etc/apache24/modules.d to keep compatibility with
existing php/perl/python modules!
Please compare the existing httpd.conf with httpd.conf.sample
and merge missing modules/instructions into httpd.conf!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Конфигурация сервера будет в файле /usr/local/etc/apache24/httpd.conf
В этом файле раскомментируем и меняем переменную ServerName
#ServerName www.example.com:80
ServerName www.kvs-freebsd.svttk.ru:80
Здесь kvs-freebsd - имя машины в домене svttk.ru
Так же необходимо серверу указать какие файлы искать и запускать по умолчанию в каталоге. Это делается директивой DirectoryIndex:
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
Я добавил файл index.php.
Для того что бы машина знала, кто она такая даже без DNS нужно сделать запись в /etc/hosts
Пример:
10.10.49.153 www.kvs-freebsd.svttk.ru kvs-freebsd.svttk.ru kvs-freebsd
Файлы WEB-сервера должны находиться в папке DocumentRoot
В конфигурации по умолчанию прописано место папки DocumentRoot
DocumentRoot "/usr/local/www/apache24/data"
Для автозагрузки сервера Apache В файл /etc/rc.conf добавляем строчку
apache24_enable="YES"
Стартуем сервис Apache
# service apache24 start
Performing sanity check on apache24 configuration:
Syntax OK
Starting apache24.
Теперь обратившись к к серверу через браузер получим сообщение:
Остановка сервера выполняется так:
# service apache24 stop
Stopping apache24.
Waiting for PIDS: 52099.
Рестарт сервера:
# service apache24 restart
4. Устанавливаем PHP5.6 из портов
# cd /usr/ports/lang/php56
# make all install clean
В появившемся диалоговом окне оставляем все по умолчанию и просто нажимаем «ОК»
Затем устанавливаем расширения PHP5.6
# cd /usr/ports/lang/php56-extensions
# make all install clean
В появившемся окне отмечаем (клавишей «пробел» или мышкой) дополнительные галочки:
BCMATH BZ2 CALENDAR CURL GD MBSTRING MCRYPT MYSQL MYSQLI ODBC
Остальное оставляем без изменений.
Перед установкой будут выданы диалоговые окна, в которых просто нажимаем «Ок»
5. После успешной установки PHP5.6 и расширений к языку устанавливаем модуль php56 к серверу Apache:
# cd /usr/ports/www/mod_php56
# make all install clean
В диалоговом окне оставляем все по умолчанию и просто нажимаем «ОК»
После установки расширения перечитываем конфигурацию:
# apachectl graceful
Вносим изменения в конфигурацию Apache, что бы web-сервер увидел конфигурацию модуля php. В папке /usr/local/etc/apache24/Includes создаём файл php-application.conf
# touch /usr/local/etc/apache24/Includes/php-application.conf
Вносим в файл 2 строчки:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phpsXsource
После этого создаем файл php.ini Из файла примера:
# cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
# chmod u+w /usr/local/etc/php.ini
Перезагружаем WEB-сервер:
# service apache24 restart
Проверяем работу WEB-сервера с поддержкой php:
В папке /usr/local/www/apache24/data создаем файл info.php
# touch /usr/local/www/apache24/data/info.php
В файл вставляем строки:
<?php
phpinfo();
?>
Открываем браузер и запрашиваем созданную страницу:
http://<IP-адрес>/info.php
Должно появиться окно, описывающее текущую конфигурацию PHP.
В списке поддерживаемых модулей должны быть разделы MySQL и MySQLi
6. Устанавливаем PhpMyAdmin
# cd /usr/ports/databases/phpmyadmin
# make all install clean
В диалоговом окне просто нажимаем “OK”
После установки создаем файл
# touch /usr/local/etc/apache24/Includes/phpmyadmin.conf
Вносим в файл содержимое:
Alias /phpmyadmin/ "/usr/local/www/phpMyAdmin/"
<Directory "/usr/local/www/phpMyAdmin/">
Options none
AllowOverride Limit
Order Deny,Allow
Require all granted
</Directory>
Перезапускаем Apache:
# service apache24 restart
Заходим на страницу phpmyadmin
http://<IP-адрес>/phpmyadmin
Должны увидеть окно запрашивающее логин и пароль:
Используя данные пользователя MySQL можно подключиться к консоли управления базой данных: