Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  подсчёт трафика
  программы
  frox
  SARG
  samba & ClamAV
  named
  proftpd
  cacti
  SAMBA+AD+NT ACL
  MySQL
  hylafax
  DDNS+DHCP
  cvsupd
  Samba как PDC
  Основы LDAP
  LDAP+SSL
  LDAP auth
  knockd
  rsync
  MRTG
  Rejik
  Jabber - OpenFire
  Samba(PDC) + Ldap
  squid+AD
  ATSlog
  vsftpd
  LDAP: samba, dns, dhcp
  Free-SA
  cups-samba на samba+AD
  irc + services
  Nagios - мониторинг сети
  TeamSpeak
  icecast2
  verlihub (p2p)
  Icecast2 + Darkice
  OOPS
  vsftpd + mysql
  Amanda
  HAVP
  Рыбалка на FreeBSD
  DNS сервер NSD
  DNS сервер Unbound
  mpd5, msmtp, dynamic ip
  ProFTPd + LDAP
  OpenVPN + LDAP
  Samba (PDC+BDC)
  BIND & AD
  POWERDNS
  3proxy
  eGroupWare
  GLPI
  SugarForge CRM
  Bacula
  Mysql - базовое описание
  Asterisk IP PBX
  Samba & CUPS & AD & ACL
  SMSTools 3
  Samba+ NT ACL
  phpmyadmin
  1С:Предприятие 8.1
  PurefFTPd
  qemu network
  AimSniff
  comms/scmxx
  Zoneminder
  Openfire Jabber Server
  Zoneminder 2
  Принт-Сервер Samba+LPD & AD
  Кластер OpenLDAP 2.4
  Lightsquid
  Установка Zabbix-1.6
  Установка net2ftp
  VSFTPD + AD && MySQL
  Network UPS Tools
  mpd5 L2TP client
  Apache 2.2 as a proxy
  ejabberd+mysql+icq
  HotSpot
  Установка и использование Zenoss на FreeBSD 7.2
  mysql-proxy
  DNS zones
  squid+sams+sqstat
  transmission-daemon
  Squid+AD (group access)
  named 9.7.0
  SysAid Server
  MySQL Master+Master
  proftpd file auth&quota
  usb_modeswitch
  NSDadmin
  iperf Тест скорости между хостами
  Простой факс-сервер mgetty+sendfax
  SQUID-MultiCpuSystem
  vsftpd + system users
  Syslog server
  Температура в серверной
  Nagios+Digitemp
  Avast! FreeBSD
  Настройка git+gitosis
  Firefox SyncServer
  Scan+Print server FreeBSD 9
  proftpd,pgsql,web
  почтовые системы
  Шелезяки
  Мелочи
  Файловая система
  WWW
  Security
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> FreeBSD —> программы —> Apache, PHP, nginx, MySQL/phpMyAdmin, PostgreSQL/phpPgAdmin

Установка Apache, PHP, nginx, MySQL/phpMyAdmin и PostgreSQL/phpPgAdmin

Автор: Fomalhaut.


Заметка сделана для себя (вечно какая-то важная мелочь забывается :) и молодого коллеги, дабы давать на изучение и приучение к FreeBSD/Linux. :)
Описываемое актуально для FreeBSD 11.x / Scientific Linux 7.x (далее - SL7), Apache 2.4 / nginx 1.10, MySQL 5.7 / PostgreSQL 9.6, PHP 7.0 и phpMyAdmin 4.6 / phpPgAdmin 5.1 (изначально писалось под более старые версии, но вот руки добрались переработать). Не проверял, но уверен, что всё или почти всё, описанное для MySQL, подойдёт и для MariaDB 10.0/10.1.

ОГЛАВЛЕНИЕ

Установка ПО
Настройка ПО

  • PHP
  • PHP-FPM
  • Apache
  • Nginx
  • MySQL + phpMyAdmin
  • PostgreSQL + phpPgAdmin
    Последние штрихи
    МЕЛОЧИ
  • Мелочь №1: Сброс забытого пароля пользователя root для MySQL
  • Мелочь №2: Кодировка в Apache
  • Мелочь №3: Перекодирование текста в БД

    Установка ПО

    1) ------------— Apache:
    Установка - штатно:
    ### для системы с FreeBSD
    $ cd /usr/ports/www/apache24
    $ make config && make install clean
    ### для системы с SL7
    $ yum install httpd
    

    Для автозапуска:
    1) в случае FreeBSD: в файл /etc/rc.conf прописываем:
    apache24_enable="YES"
    

    а в файл конфигурации загрузчика /boot/loader.conf добавляем строку:
    accf_http_load="YES"
    

    2) в случае SL7:
    $ systemctl enable httpd
    

    Больше пока ничего не делаем.

    2) ------------— nginx
    ### для системы с FreeBSD
    $ cd /usr/ports/www/nginx
    $ make config && make install clean
    ### для системы с SL7
    $ yum install nginx
    


    При необходимости/желании использовать nginx, собранный его разработчиками, воспользуемся их репозиториями.
    Создадим repo-файл /etc/yum.repos.d/nginx.repo такого содержания:
    [nginx]
    name=nginx repo
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    enabled=1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-nginx
    

    Импортируем ключи для проверки пакетов:
    $ wget https://nginx.org/keys/nginx_signing.key -O /etc/pki/rpm-gpg/RPM-GPG-KEY-nginx
    $ rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-nginx
    

    Перед установкой обновляем кэш метаданных:
    $ yum clean all && yum makecache
    

    Установка/обновление проводятся штатно.



    Для автозапуска:
    1) в случае FreeBSD: в файл /etc/rc.conf прописываем:
    nginx_enable="YES"
    

    2) в случае SL7:
    $ systemctl enable nginx
    

    Больше пока ничего не делаем.

    3) ------------— PHP
    С FreeBSD всё проще: в портах и пакетах есть уже версия 7.0. PHP ставится двумя пакетами: базовый пакет - php70, пакет с дополнениями - php70-extensions. При сборке php70 для Apache можно ставить "по умолчанию" или выбрать какие-либо необходимые параметры, а для nginx обязательно указываем поддержку FPM:
    [x] FPM      Build FPM version
    

    При сборке php70-extensions для обоих web-серверов указываем поддержку выбранной СУБД:
    # для поддержки PostgreSQL
    [x] PGSQL         PostgreSQL database support
    # для поддержки MySQL / MariaDB
    [x] MYSQLI        MySQLi database support
    

    Ну и сама установка:
    # основные пакеты
    $ cd /usr/ports/lang/php70
    $ make config && make install clean
    $ cd /usr/ports/lang/php70-extensions
    $ make config && make install clean
    

    В случае с SL7 всё сложней: на момент написания в официальных репозиториях нет версии 7.0, поэтому воспользуемся сторонними. Например:
    а) IUS Community Project
    $ yum install https://centos7.iuscommunity.org/ius-release.rpm
    $ rpm --import /etc/pki/rpm-gpg/IUS-COMMUNITY-GPG-KEY
    

    б) Webtatic
    $ yum install https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
    

    Здесь и в дальнейшем будем всё делать на основе сборок IUS Community Project:
    $ yum install php70u php70u-fpm-nginx php70u-cli
    

    Больше пока ничего не делаем.

    4) ------------— MySQL
    -== FreeBSD ==-
    Устанавливаем MySQL:
    $ cd /usr/ports/databases/mysql57-server/
    $ make config && make install clean
    

    Создаём необходимые системные таблицы и устанавливаем права:
    $ /usr/local/bin/mysql_install_db
    $ chown -R mysql:mysql /var/db/mysql
    

    Создаём файл логов и права на него:
    $ touch /var/log/mysql.log
    $ chown mysql:mysql /var/log/mysql.log
    

    Добавляем в /etc/rc.conf строку автозапуска:
    mysql_enable="YES"
    

    Запускам сервер MySQL:
    $ /usr/local/etc/rc.d/mysql-server start
    

    Задаём пароль администратора и делаем необходимые настройки безопасности (на более старых версиях MySQL для этого приходилось ставить отдельно порт скриптов, например, /usr/ports/databases/mysql51-scripts/):
    $ cd /usr/local/ # (или /usr/local/bin)
    $ mysql_secure_installation
    

    Больше пока ничего не делаем.

    5) ------------— PostgreSQL

    6) ------------— phpMyAdmin
    Поддержку MySQL в PHP в FreeBSD мы установили, когда устанавливали php70-extensions, поэтому теперь описываем установку соотв. пакетов для SL7:
    $ yum install php70u-mysqlng
    

    Устанавливаем непосредственно phpMyAdmin:
    # для системы с FreeBSD
    $ cd /usr/ports/databases/phpmyadmin/
    $ make install clean
    # для системы с SL7
    $ yum install phpmyadmin
    

    Установка закончена.

    7) ------------— phpPgAdmin
    Поддержку PostgreSQL в PHP в FreeBSD мы установили, когда устанавливали php70-extensions, поэтому теперь описываем установку соотв. пакетов для SL7:
    $ yum install php70u-pgsql
    

    Устанавливаем непосредственно phpPgAdmin:
    # для системы с FreeBSD
    $ cd /usr/ports/databases/phppgadmin/
    $ make install clean
    # для системы с SL7
    $ yum install phppgadmin
    

    Установка закончена.

    Настройка ПО

    PHP

    После установки создадим файл конфигурации php.ini на основе шаблона, удалив комментарии:
    # для системы с FreeBSD
    $ cat /usr/local/etc/php.ini-production | grep -v ";" |  sed '/./!d' > php.ini
    # для системы с SL7
    $ cp /etc/php.ini /etc/php-ini-0
    $ cat php.ini-0 | grep -v ";" |  sed '/./!d' > php.ini
    

    и добавим в него в блок [Date] параметр временной зоны:
    [Date]
    date.timezone = Europe/Moscow
    

    И проверяем в блоке [PHP] установку кодировки "по умолчанию":
    [PHP]
    default_charset = "UTF-8"
    

    Базовая настройка PHP завершена.

    PHP-FPM

    FPM необходим для работы nginx (Apache умеет работать напрямую: об этом в его настройке ниже), хотя и Apache может использовать. Но рассматриваем здесь PHP-FPM именно в связке с nginx.
    Создадим файлы конфигураций на основе шаблонов, удалив комментарии:
    # для системы с FreeBSD
    $ cd /usr/local/etc
    $ cat php-fpm.conf.default | grep -v ";" |  sed '/./!d' > php-fpm.conf
    $ cat php-fpm.d/www.conf.default | grep -v ";" |  sed '/./!d' > php-fpm.d/www.conf
    # для системы с SL7
    $ cd /etc/
    $ cp php-fpm.conf php-fpm.conf-0
    $ cat php-fpm.conf-0 | grep -v ";" |  sed '/./!d' > php-fpm.conf
    $ cp php-fpm.d/www.conf php-fpm.d/www.conf-0
    $ cat php-fpm.d/www.conf-0 | grep -v ";" |  sed '/./!d' > php-fpm.d/www.conf
    

    Теперь вносим коррективы, чтобы получить следующее (указаны только основные параметры):
    1) файл php-fpm.conf:
    # для системы с FreeBSD - в /usr/local/etc/
    include=/usr/local/etc/php-fpm.d/*.conf
    
    [global]                                
    pid = /var/run/php-fpm.pid
    error_log = /var/log/php-fpm/error.log
    daemonize = yes
    # для системы с SL7 - в /etc/
    include=/etc/php-fpm.d/*.conf
    
    [global]
    pid = /run/php-fpm/php-fpm.pid
    error_log = /var/log/php-fpm/error.log
    daemonize = yes
    

    2) файл www.conf (по умолчанию прослушивается TCP-сокет 127.0.0.1:9000, но мы настраиваем на более быстрый unix-сокет):
    # для системы с FreeBSD - в /usr/local/etc/php-fpm.d/
    [www]
    user = www
    group = www
    ;listen = 127.0.0.1:9000
    listen = /tmp/php-fpm.sock
    listen.owner = www
    listen.group = www
    ; отключаем параметр
    ;listen.mode = www
    # для системы с SL7 - в /etc/php-fpm.d/
    [www]
    user = nginx
    group = nginx
    ;listen = 127.0.0.1:9000
    listen = /var/run/php-fpm.sock
    listen.owner = nginx
    listen.group = nginx
    ; отключаем параметр
    ;listen.mode = nginx
    

    Указанные в файле www.conf пользователь и группа должны существовать в системе. Обычно они создаются при установке соответствующего web-сервера:
    - FreeBSD: www:www при установке и Nginx и Apache;
    - SL7: nginx:nginx при установке Nginx; apache:apache - при установке Apache.
    Проверяем файлы конфигураций PHP-FPM на ошибки:
    $ php-fpm -t
    [04-Dec-2016 11:41:45] NOTICE: configuration file /usr/local/etc/php-fpm.conf test is successful
    

    Если всё в норме (т.е. successful, как в примере) - прописываем в автозапуск и запускаем:
    1) в случае FreeBSD - в файл /etc/rc.conf добавляем:
    php_fpm_enable="YES"
    

    И запускаем:
    $ service php-fpm start
    

    2) в случае SL7:
    $ systemctl enable php-fpm
    $ systemctl start php-fpm
    

    Проверяем наличие в системе активных unix-сокетов:
    ### для системы с FreeBSD
    $ sockstat | grep php-fpm
    www      php-fpm    675 0  stream /tmp/php-fpm.sock
    www      php-fpm    674 0  stream /tmp/php-fpm.sock
    root     php-fpm    673 4  stream -> ??
    root     php-fpm    673 6  stream -> ??
    root     php-fpm    673 8  stream /tmp/php-fpm.sock
    ### для системы с SL7
    $ ss -a | grep php-fpm
    u_str  LISTEN     0      128    /var/run/php-fpm.sock 29311                 * 0
    

    Если всё это высветилось, значит PHP-FPM мы успешно настроили и запустили.

    Apache

    В конфигурационный файл (/usr/local/etc/apache24/httpd.conf для FreeBSD и /etc/httpd/conf/httpd.conf для SL7) прописываем имя сервера и адрес админа:
    ...
    ServerAdmin admin@mydomain.su
    ...
    ServerName mydomain.su:80
    ...
    

    Запускаем наш Apache:
    ### для системы с FreeBSD
    # апачевской управлялкой
    $ apachectl start
    # системной утилитой
    $ service apache24 start
    ### для системы с SL7
    $ systemctl start httpd
    

    При запуске файл конфигурации проверяется на ошибки:
    # для FreeBSD
    $ service apache24 start
    Performing sanity check on apache24 configuration:
    Syntax OK
    Starting apache24.
    

    До версии PHP 5.4.27 модуль сопряжения входил в базовый пакет PHP и для включения поддержки достаточно было в конфиге Apache 2.2 указать две строчки в /usr/local/etc/apache22/httpd.conf в блоке <IfModule mime_module>:
    <IfModule mime_module>
    ...
    	AddType application/x-httpd-php .php
    	AddType application/x-httpd-php-source .phps
    ...
    <IfModule mime_module>
    

    В установленной версии PHP 7.0 для обеспечения поддержки PHP в Apache необходимо первоначально установить модуль сопряжения, выделенный в отдельное приложение:
    ### для системы с FreeBSD
    $ cd /usr/ports/www/mod_php70
    $ make config && make install clean
    ### для системы с SL7
    $ yum install mod_php70u
    

    По окончании установки на экран будет выведена информация по необходимым параметрам, которые необходимо прописать в конфиг Apache. Сделаем, как указано: добавим в конфигурационный файл httpd.conf в блоке <IfModule mime_module>:
    <IfModule mime_module>
    ...
    	<FilesMatch "\.php$">
    		SetHandler application/x-httpd-php
    	</FilesMatch>
    	<FilesMatch "\.phps$">
    		SetHandler application/x-httpd-php-source
    	</FilesMatch>
    ...
    <IfModule mime_module>
    

    Для проверки работы Apache в связке с PHP создаём конфигурационный файл тестового сайта (/usr/local/etc/apache24/Includes/test.conf - для FreeBSD, /etc/httpd/conf/Includes/test.conf для SL7), куда добавляем параметр DirectoryIndex в блок <Directory />, чтобы получилось следующее (подробней о настройке прав доступа здесь и здесь) и не забываем добавить IP или имя своего узла в соответствующий параметр Require:
    <Directory />
    	DirectoryIndex index.php index.html
    ###=-- Права доступа
    ### до версии 2.4
    	AllowOverride None
    	Order deny,allow
    	Deny from all
    ### с версии 2.4
    ### по IP адресу
    	Require ip 192.168.1.4/24 192.168.2.43
    ### по имени
    	Require host mycomp.domain.local
    # сложные, совмещённые разных типов
    	<RequireAll>
    		Require group alpha beta
    		Require not group reject
    	</RequireAll>
    </Directory>
    

    Перезапустим Apache:
    $ apachectl restart
    

    Для проверки нормальных подключения и работы модуля поддержки PHP можно открыть в браузре по ссылке http://xxx.xxx.xxx.xxx/index.php предварительно созданный файл /usr/local/www/apache24/data/index.php следующего содержания:
    <?php
    	phpinfo( );
    ?>
    

    Если всё сделано правильно - в браузере увидим информацию по PHP.

    Nginx

    MySQL + phpMyAdmin

    Создаём конфигурационный файл /usr/local/etc/my.cfg с одним параметром (для начала):
    [mysqld]
    log = /var/log/mysql.log
    

    Создаём конфигурационный файл phpMyAdmin.conf для Apache в каталоге /usr/local/etc/apache24/Includes/ и вписываем туда:
    Alias /phpmyadmin/ "/usr/local/www/phpMyAdmin/"
    <Directory "/usr/local/www/phpMyAdmin/">
    	DirectoryIndex index.php
    #	Options none
    	AllowOverride Limit
    # по IP адресу
    	Require ip 192.168.1.4/24 192.168.2.43   # Разрешаем только доверенным
    </Directory>
    

    Открываем конфигурационный файл /usr/local/www/phpMyAdmin/config.inc.php и прописываем следущее:
    <?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['blowfish_secret']='gh7ThGrf6J'; // Любая фраза
    ?>
    

    Заходим на страницу phpMyAdmin по ссылке:
    http://<наш_сервер>/phpmyadmin/
    

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

    И начинаем делать то, что написано в "здесь".
    Создадим необходимые таблицы указанным скриптом create_tables.sql и обновим созданные структуры скриптом upgrade_tables_mysql_4_1_2+.sql (т.к. у нас более новая версия MySQL сервера):
    $ cd /usr/local/www/phpMyAdmin/examples
    $ cat create_tables.sql upgrade_tables_mysql_4_1_2+.sql | mysql -u root -p
    

    Переоткроем страницу phpMyAdmin, чтобы изменения считались (иногда требует перезапуска браузера: может не отображаться, например, пункт меню "Пользователи").
    Следующим шагом необходимо создать специального пользователя с именем "pma" и наделить его соответствующими правами, для чего нажмите "Privileges" ("Привилегии"), на открывшейся странице нажмите ссылку "Add a new User" ("Добавить нового пользователя"), в разделе "Login Information" ("Информация учетной записи") заполните поля следующим образом:
    User name (Имя пользователя): pma
    Host (Хост): localhost
    Password (Пароль): <пароль_для_pma>
    Нажмите кнопку "Go" ("OK").
    

    На открывшейся странице, в разделе "Database-specific privileges" ("Привилегии уровня базы данных") из ниспадающего меню "Add privileges on the following database:" ("Добавить привилегии на следующую базу") выберите "phpmyadmin". Откроется следующая страница, где в разделе "Databasespecific privileges" ("Привилегии уровня базы данных"), в блоке "Data" ("Данные"), поставьте галочки рядом с опциями: SELECT, INSERT, UPDATE, DELETE и нажмите "Go" ("OK").
    Снова открываем конфигурационный файл /usr/local/www/phpMyAdmin/config.inc.php и к ранее прописанному добавляем:
        $cfg['Servers'][$i]['controlhost'] = 'localhost';
        $cfg['Servers'][$i]['controluser'] = 'pma';
        $cfg['Servers'][$i]['controlpass'] = '<пароль_для_pma>';
        $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';
    

    Можно эти исправления делать вручную, но советуют пользоваться
    http://<наш_сервер>/phpmyadmin/setup/
    

    , там же можно добавить необходимые параметры для дополнительных функций.
    И последнее: необходимо защитить этой конфигурационный файл от изменений:
    $ chmod 640 config.inc.php
    

    и запретить к нему достуа по web, создав в каталоге /usr/local/www/phpMyAdmin файл .htaccess с таким содержимым:
    Require ip 192.168.1.4/24 192.168.2.43   # Разрешаем только доверенным IP
    <Files config.inc.php>   # запрет доступа к config.inc.php
    	Require all denied
    </Files>
    

    Всё, настройка (базовая) закончена: переоткрыв страницу с phpMyAdmin (или перезапустив браузер) получаем полный доступ. Правда, чтобы получить некоторые дополнительные возможности программы придётся ещё немного его настроить.

    Последние штрихи

    Чтобы не засорять систему, для логов Apache и MySQL настроим ежедневную ротацию с глубиной хранения 31 день, добавив в файл /etc/newsyslog.conf три строчки:
    /var/log/httpd-access.log               640  31    *    @T00  C
    /var/log/httpd-error.log                640  31    *    @T00  C
    /var/log/mysql.log                      640  31    *    @T00  C
    

    PostgreSQL + phpPgAdmin

    МЕЛОЧИ

    Мелочь №1: Сброс забытого пароля пользователя root для MySQL
    Остановим MySQL сервер:
    $ /usr/local/etc/rc.d/mysql-server stop
    Stopping mysql.
    Waiting for PIDS: 1022.
    

    Запустим сервер MySQL, но уже в "защищённом режиме":
    $ mysqld_safe --skip-grant-tables --user=root &
    

    Войдём под пользователей root, но без пароля:
    $ mysql -u root
    mysql> use mysql;
    mysql> update user set password=PASSWORD("<новый_пароль>")
           where User='root';
    mysql> flush privileges;
    mysql> quit
    

    Остановим сервер MySQL:
    $ /usr/usr/local/etc/rc.d/mysql-server stop
    mysql not running? (check /var/db/mysql/fbsd9zfs.homed.local.pid).
    

    Запустим сервер MySQL в обычном режиме:
    $ /usr/local/etc/rc.d/mysql-server start
    Starting mysql.
    

    и проверим наш новый пароль:
    $ mysql -u root -p
    Enter password: 
    ...
    mysql> quit
    

    Мелочь №2: Кодировка в Apache
    Зачастую разработчики и администраторы не верно указывают кодировку на заголовке страниц и в настройках web-серверов.
    Особенно часто это касается кодировки UTF-8, коту очень часто указывают в форме UTF8.
    Поэтому надо следить, чтобы это, например, для Apache было так:
    <Directory /path/to/site/>
           AddDefaultCharset UTF-8
    </Directory>
    

    А для nginx так:
    http {
           charset utf-8;
    }
    # или 
    server {
           charset utf-8;
    }
    

    Правда бывают и исключения, заложенные разработчиками используемого ПО. Например, в MySQL для указания в какой кодировке обращаться к БД используется запрос:
    SET NAMES utf8
    

    Вероятно это либо просто ошибка, либо "дань моде на ошибку".
    Подробней о кодировках: здесь.

    Мелочь №3: Перекодирование текста в БД
    В случае проблем с кодировкой текста в записях в БД это можно исправить средствами самого MySQL.
    Например, если видим такое:
    $ echo 'select * from test;' | mysql -t tmp
    +--------------------------+
    | a |
    +--------------------------+
    | &#208;±&#208;»&#208;°&#208;±&#208;»&#208;° |
    +--------------------------+
    $

    Воспользуемся командой convert:
    $ echo 'select convert(convert(a using latin1) using binary) from test;' | mysql -t tmp
    +-----------------------------------------------+
    | convert(convert(a using latin1) using binary) |
    +-----------------------------------------------+
    | блабла |
    +-----------------------------------------------+
    $

    Ещё пример, с кодировкой KOI-8R:
    $ echo 'select * from test;' | mysql -t tmp
    +--------------------------------+
    | a |
    +--------------------------------+
    | п&#9568;п&#9577;п&#9567;п&#9568;п&#9577;п&#9567; |
    +--------------------------------+
    $

    И тут всё аналогично:
    $ echo 'select convert(convert(a using koi8r) using binary) from test;' | mysql -t tmp
    +----------------------------------------------+
    | convert(convert(a using koi8r) using binary) |
    +----------------------------------------------+
    | блабла |
    +----------------------------------------------+
    $

    Полезное: ссылка1, ссылка2, ссылка3.



    размещено: 2012-07-29,
    последнее обновление: 2016-12-04,
    автор: Fomalhaut

    оценить статью:

    mfog, 2012-08-09 в 15:59:41

    все здесь классно, но вот только про рассширения ПХП ничего не описано, я сомневаюсь что пхпадмин запустится

    Fomalhaut, 2012-08-13 в 14:15:09

    Они установятся, как зависимость для phpMyAdmin.

    Dr. Pi, 2012-10-07 в 19:26:52

    строка DirectoryIndex index.php index.html
    дожна быть вписана в секцию <IfModule dir_module>, а не в секцию <Directory> :))

    PathFounder, 2013-01-01 в 12:48:27

    Грандмерси за статью - самому написать было лень, а когда консультировал или сам "по-быстрому" ставил - всё время на всяких мелочах ловил грабли :)

    Fomalhaut, 2013-01-01 в 15:02:32

    PathFounder: Поэтому и написал: надоело многократно наступать на одни и те же грабли. :)

    ail-man, 2013-01-15 в 12:49:11

    Спасибо автору, все работает =)

    SkiNNi, 2013-03-05 в 10:33:45

    Корректировки по моей установке, если кто  напорется:
    1. При конфигурировании установки PHP выбрать модуль APACHE он у меня не был выбран.
    2. У меня не заработал скрипт mysql_secure_installation поэтому делать как: Мелочь №1: Сброс забытого пароля пользователя root для MySQL
    3.каталог phpMyAdmin переписать в /usr/local/www/apache22/data т.к. каталог по умолчанию.
    Большое спс автору.

    Fomalhaut, 2013-03-10 в 14:56:08

    SkiNNi: Принято:
    1) исправлено: это мой недосмотр - по умолчанию модуль Apache не указан;
    2) а текущий каталог точно был /usr/local/ ? я вот тоже напарывался, пока поиском расположение не нашёл; или опять что-то в дистрибутиве поменялось (раньше вообще все обслуживающие скрипты были в отдельном порту (mysql55-scripts, примерно, не помню точно);
    3) это уже детали, так или иначе настройка вся в httpd.conf.

    Anatoly, 2013-06-11 в 17:21:44

    конфигурационный файл mysql /usr/local/etc/my.cnf

    Витя, 2013-07-03 в 12:32:32

    Отличный мануал, большое спасибо.
    Только не советую конфигурационный файл /usr/local/www/phpMyAdmin/config.inc.php править руками. Куда проще воспользоваться http://ip-servera/phpmyadmin/setup/ там же можно добавить необходимые параметры для доп. функций.

    Artym, 2014-09-09 в 10:26:14

     в связи с тем, что все обновилось, с выхода статьи, пришлось кое-что корректировать.
    с /usr/local/etc/apache22/ на /usr/local/etc/apache24/
    и для phpmyadmin
    cd phpmyadmin
    # mkdir config
    # chmod o+rw config
    # cp config.sample.inc.php config/config.inc.php
    # chmod o+w config/config.inc.php

    Cebers, 2014-10-05 в 22:26:45

    Прикольно было бы для приручения юного админа к FreeBSD, если расписать что значит каждая команда.

    Fomalhaut, 2014-10-05 в 23:26:51

    Юного админа надо не приРучать, а приучать. :)
    Т.е. надо учить, направлять, что в Unix/Linux значить учить самому искать информацию: в man-ах, руководствах и пр. Если бы это было сложно - другой вопрос, но описания в Сети найти не проблема совершенно. Иначе можно получить недоадмина, который на всё готовое только реагировать.

    Jelev, 2015-06-09 в 9:40:29

    "По окончании установки на экран будет выведена информация по необходимым параметрам, которые необходимо прописать в конфиг Apache. Сделаем, как указано: добавим в /usr/local/etc/apache22/httpd.conf в блоке <IfModule mime_module>:"

    Хотя выше:

    "$ cd /usr/ports/www/apache24"

    Xumuk, 2015-11-11 в 12:38:04

    после смены пароля root'a, mysql не останавливается
    # /usr/local/etc/rc.d/mysql-server stop
    Stopping mysql.
    kill: 66356: Operation not permitted


    Оставьте свой комментарий:
    Ваше имя:   *
    e-mail:  
    жирный
    наклонный
    подчёркнутый
    ссылка
    цвет
    Нынешний год:   *
     


  • Хостинг HOST-FOOD

    2014-07-27, lissyara
    gmirror

    Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
    2013-08-20, zentarim
    Scan+Print server FreeBSD 9

    Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
    подписка

        вверх      
    Статистика сайта
    Сейчас на сайте находится: 15 чел.
    За последние 30 мин было: 70 человек
    За сегодня было
    6233 показов,
    1121 уникальных IP
     

      Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
      Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

    © lissyara 2006-10-24 08:47 MSK

    Время генерации страницы 0.225 секунд
    Из них PHP: 72%; SQL: 28%; Число SQL-запросов: 76 шт.
    Исходный размер: 191833; Сжатая: 28717