Показаны сообщения с ярлыком apache. Показать все сообщения
Показаны сообщения с ярлыком apache. Показать все сообщения

вторник, 28 апреля 2026 г.

Установка Webmail клиента RoundCube в RoclyLinux 9

Устанавливаем Apache и MariaDB
# dnf install epel-release
# dnf install httpd php php-mysqlnd php-json php-curl php-zip php-gd php-xml php-mbstring php-intl php-pecl-mailparse php-ldap mariadb-server
# dnf install ImageMagick ImageMagick-devel php-pecl-imagick
# systemctl enable --now httpd
# systemctl enable --now mariadb


Выполняем инициирование MariaDB:
# mariadb-secure-installation
    Enter current password for root (enter for none): <Enter>
Switch to unix_socket authentication [Y/n] Y
Change the root password? [Y/n] Y
New password: <вводим пароль> - <rootПароль>
Re-enter new password: <вводим пароль еще раз rootПароль>
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] n
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y


Создаем базу данных в MariaDB, необходимую для работы web-почтового клиента RoundCube
# mysql -u root -p
> CREATE DATABASE roundcubemail;
> CREATE USER 'roundcube'@'localhost' IDENTIFIED BY '<Пароль>';
> GRANT ALL PRIVILEGES ON roundcubemail.* TO 'roundcube'@'localhost';
> FLUSH PRIVILEGES;
> EXIT;

Устанавливаем RoundCube
# dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
# dnf install roundcubemail

Конфиги тут: /etc/roundcubemail/
Веб-файлы тут: /usr/share/roundcubemail/
Логи тут: /var/log/roundcubemail/
Данные тут: /var/lib/roundcubemail/

Заливаем структуру базы данных RoundCube:
# mysql -u root -p roundcubemail < /usr/share/roundcubemail/SQL/mysql.initial.sql

Задаем конфигурационый файл для RoundCube
# cp /etc/roundcubemail/config.inc.php.sample /etc/roundcubemail/config.inc.php
# nano /etc/roundcubemail/config.inc.php

1. 
Определяем учетные данные для доступа к базе данных MariaDB:
$config['db_dsnw'] = 'mysql://roundcube:<Пароль>@localhost/roundcubemail';
2.
Настройки IMAP сервера ($config['default_host'] = 'localhost';) меняем на следующий блок:
$config['default_host'] = 'ssl://mail.domain.ru'; 
$config['default_port'] = 993;
$config['imap_auth_type'] = 'LOGIN';
$config['imap_user'] = '%u';

3.
Настройки SNMP сервера ($config['smtp_server'] = 'localhost';) меняем на:
$config['smtp_server'] = 'tls://mail.domain.ru';
Остальное - по умолчанию
4.
Включение поддерждки LDAP
$config['ldap_public'] = array();
$config['ldap_public']['local_ldap'] = [
    'name'              => 'Справочник нашей компании',
    'hosts'             => ['<IPадрес>'],
    'port'              => 389,
    'user_specific'     => false,
    'base_dn'           => '',
    'bind_dn'           => '',
    'bind_pass'         => '',
    'ldap_version'      => 3,
    'scope'             => 'sub',
    'search_fields'     => ['mail', 'cn', 'displayName', 'sn', 'givenName'],
    'name_field'        => 'cn',
    'email_field'       => 'mail',
    'surname_field'     => 'sn',
    'firstname_field'   => 'givenName',
    'sort'              => 'cn',
    'filter'            => '(objectClass=*)',
    'fuzzy_search'      => true,
    'global_search'     => true,
    'sizelimit'         => 1000,
    'timelimit'         => 30,
];

$config['autocomplete_addressbooks'] = ['local_ldap'];
$config['address_book_type'] = 'ldap';

Устанавливаем права на файлы:
# chown -R apache:apache /etc/roundcubemail/
# chmod -R 755 /etc/roundcubemail/
# chown -R apache:apache /var/lib/roundcubemail/
# chown -R apache:apache /var/log/roundcubemail/
# chmod 775 /var/lib/roundcubemail/temp/
# chmod 775 /var/log/roundcubemail/

Настраиваем виртуальный хост Apache.
# nano /etc/httpd/conf.d/roundcubemail.conf
Меняем Require local на Require all granted в блоке <Directory /usr/share/roundcubemail/>
<Directory /usr/share/roundcubemail/>
   ...
        #Require local
        Require all granted
   ...
</Directory>

# systemctl restart httpd
Открываем возможность обращаться к Apache по сети:
# firewall-cmd --permanent --add-service=http
# firewall-cmd --reload

Теперь можно обратиться к почтовому клиенту:
http://<IPадрес>/roundcubemail/

Логин вводиться без домена.
После авторизации мы получим возможность отправлять или принимать письма через web-интерфейс. Имя пользователя по умолчанию будет в домене mail.domain.ru. Для исправления адреса электронной почты отправителя нужно зайти в настройки. Далее профиль. Выбрать email, изменить имя (удалить mail) в поле E-Mail.




понедельник, 19 мая 2025 г.

Установка Wordpress

Установка Apache
# dnf install httpd -y
# systemctl start httpd
# systemctl enable httpd

Установка базы данных MariaDB
# dnf install mariadb-server mariadb -y
# systemctl start mariadb
# systemctl enable mariadb
Создаем root пароль базы MariaDB:
# mysql_secure_installation

Устанавливаем php и модули необходимые для работы wordpress
# dnf install php php-mysqlnd php-fpm php-{bz2,mysqli,curl,gd,intl,common,mbstring,xml} -y
# systemctl restart httpd

Подключаемся к базе MariaDB. Создаем базу данных «wordpress» для WordPress и пользователя, который будет работать с базой (например, пользователь admin с паролем passwd123)
# mysql -u root -p
>CREATE DATABASE wordpress;
>CREATE USER 'admin'@'localhost' IDENTIFIED BY 'passwd123';
>GRANT ALL PRIVILEGES ON wordpress.* TO 'admin'@'localhost';
>FLUSH PRIVILEGES;

Скачиваем и распаковываем набор скриптов wordpress
# cd /usr/src/
# tar -xzvf latest.tar.gz
В директории /usr/src образуется директория /usr/src/wordpress
Перемещаем все файлы из /usr/src/wordpress в /var/www/html
# mv /usr/src/wordpress/* /var/www/html
Задаем права:
# chown -R apache:apache /var/www/html
# chmod -R 755 /var/www/html
Удаляем уже не нужные файлы и папки в /usr/src
# rm -f latest.tar.gz
# rmdir wordpress

Обращаемся к серверу http://<IP адрес>

Должна сработать переадресация на страницу стартовых скриптов wordpress http://<IP адрес>/wp-admin/setup-config.php
Увидим сообщение:

Нажимаем кнопку “Lets go!”. Далее необходимо заполнить информацию для доступа к базе данных:

Нажимаем “Submit”. В следующем окне, при необходимости можно изменить данные доступа вручную, которые пропишутся в файле «wp-config.php». Для продолжения нужно нажать “Run the installation”. В следующем окне так же нажать “Run the installation”


После того, как скрипты worpress создадут базу для работы, потребуется указать название сайта, и завести пользователя:

После нажатия кнопки “Install WordPress” произойдет автоматическое развертывание системы Worddpress. Завершение установки будет сопровождаться сообщением “Success!”

Теперь управлять сайтом можно так: http://<IP адрес>/wp-admin
Смотреть то, что отображается пользователю так: http://<IP адрес>


четверг, 15 мая 2025 г.

Использование утилиты mkcert для создания самоподписанных сертификатов без боли

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

Установка утилиты выполняется так:
# dnf install -y golang
# go install filippo.io/mkcert@latest

Проверка:
# /root/go/bin/mkcert  --version
v1.4.4


Создание локального корневого сертификата CA
# yum install nss-tools
# /root/go/bin/mkcert -install

Ответ должен быть такой:
Created a new local CA 💥
The local CA is already installed in the system trust store! 👍
The local CA is now installed in the Firefox and/or Chrome/Chromium trust store (requires browser restart)! 🦊


Теперь создаем сертификат для своего сервера, например для bs.server.ru.
# /root/go/bin/mkcert bs.server.ru localhost 127.0.0.1
Created a new certificate valid for the following names 📜
 - "bs.server.ru"
 - "localhost"
 - "127.0.0.1"
The certificate is at "./bs.server.ru+2.pem" and the key at "./bs.server.ru+2-key.pem" ✅
It will expire on 15 August 2027 🗓

Будет создан сертификат bs.server.ru+2.pem и приватный ключ bs.server.ru+2-key.pem для всех запрошенных имен (bs.server.ru, localhost, 127.0.0.1)

Устанавливаем сертификат SSL в web-сервер apache
# dnf install mod_ssl
# systemctl restart httpd

Резервируем настройки по умолчанию
# mv /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf_old
Создаем свой файл настроек
# nano /etc/httpd/conf.d/ssl-bs.conf
Listen 443
<VirtualHost *:443>
    ServerName bs.server.ru
    SSLEngine on
    SSLCertificateFile "/home/korolev/bs.server.ru+2.pem"
    SSLCertificateKeyFile "/home/korolev/bs.server.ru+2-key.pem"
    DocumentRoot "/var/www/html"
</VirtualHost>

Перезагружаем web-сервер:
# systemctl restart httpd
Открываем порт 443 на сервере
# firewall-cmd --permanent --add-port=443/tcp
# firewall-cmd --reload

Теперь при обращении к https://bs.server.ru/ по сети в браузере будет отображаться защищенное соединение! И до 15 августа 2027 года. То есть на 2 года! Удобно.

понедельник, 24 марта 2025 г.

Apache. Модуль mod_rewrite. Запрет обращения к определенному файлу через web

1. Проверяем, что включен модуль rewrite
# httpd -M | grep rewrite
В ответе должны увидеть:
rewrite_module (shared)


2. Необходимо разрешить использовать модуль rewrite в директории /var/www/html. Для этого в файле /etc/httpd/conf/httpd.conf в разделе <Directory "/var/www/html"> нужно заменить AllowOverride None на AllowOverride All
<Directory "/var/www/html">
    ...
    #AllowOverride None
    AllowOverride All
    ...
</Directory>


3. Чтобы убедиться, что mod_rewrite работает, создайте файл .htaccess в корневой директории веб-сервера (например, /var/www/html/.htaccess) с содержимым:
 RewriteEngine On
 RewriteRule ^test$ test.html [L]

Создайте файл test.html в той же директории с содержимым:
 <h1>Mod_rewrite works!</h1>
При обращении к серверу http://IP/test, должен открыться файл test.html

4. Для запрета к обращению к определенному файлу, например к файлу CONFIG.ini в .htaccess нужно прописать следующее:
<Files "CONFIG.ini">
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
</Files>

Тут мы запрещаем обращение с любых IP, кроме самого себя.


вторник, 29 октября 2024 г.

Обновление php с 8.0 до 8.3 в Rocky Linux 9.4 (Blue Onyx)

1. Добавление репозитариев
# dnf install epel-release -y
# dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-9.rpm

2. Построение кеша
# dnf makecache -y

3. Сброс модуля php
# dnf module reset php

4. Просмотр репозитариев, из которых возможна установка php
# dnf module list php
Last metadata expiration check: 0:00:34 ago on Sat 26 Oct 2024 08:40:59 PM +04.
Rocky Linux 9 - AppStream
Name                    Stream                     Profiles                                     Summary
php                     8.1                        common [d], devel, minimal                   PHP scripting language
php                     8.2                        common [d], devel, minimal                   PHP scripting language
Remi's Modular repository for Enterprise Linux 9 - x86_64
Name                    Stream                     Profiles                                     Summary
php                     remi-7.4                   common [d], devel, minimal                   PHP scripting language
php                     remi-8.0                   common [d], devel, minimal                   PHP scripting language
php                     remi-8.1                   common [d], devel, minimal                   PHP scripting language
php                     remi-8.2                   common [d], devel, minimal                   PHP scripting language
php                     remi-8.3                   common [d], devel, minimal                   PHP scripting language
php                     remi-8.4                   common [d], devel, minimal                   PHP scripting language

5. Установка php 8.5
# dnf module -y install php:remi-8.3

6. Установка расширений php
# dnf -y install php php-{common,pear,cgi,curl,mbstring,gd,mysqlnd,gettext,bcmath,json,xml,fpm,intl,zip,imap}

7. Перезагрузка apache
# systemctl restart httpd


вторник, 28 мая 2024 г.

Установка и использование модуля WSGI в Apache на RokyLinux 8

WSGI (Web Server Gateway Interface) интерфейс между веб-сервером и web-приложением, реализованном на языке Python.

Перед установкой модуля WSGI необходимо убедиться, что в системе уже установлен apache и Python3.
Проверка работы установленного Apache:
# systemctl status httpd
● httpd.service - The Apache HTTP Server

Проверка версии python:
# python
Python 3.9.18 (main, Jan 4 2024, 00:00:00)


Установка модуля WSGI выполняется так:
# dnf -y install python3-mod_wsgi

Теперь серверу Apache нужно "рассказать", какие файлы запускать с помощью модуля WSGI.
Для этого создадим отдельный файл в конфигурации Apache
# nano /etc/httpd/conf.d/wsgi.conf
И вписываем туда строки:
WSGIScriptAlias /wsgi /var/www/html/wsgi.py
WSGIScriptAlias /wsgicmd /var/www/wsgi

Строка «WSGIScriptAlias /wsgi /var/www/html/wsgi.py» указывает, что при обращении к http://<ipадрес>/wsgi будет запускать скрипт /var/www/html/wsgi.py
А вот следующая директива «WSGIScriptAlias /wsgicmd /var/www/wsgi» разрешает запуск любого скрипта python из директории /var/www/wsgi после обращения к URL http://<ipадрес>/wsgicmd/<Скрипт> (например, http://10.10.49.166/wsgicmd/test.py запустит скрипт /var/www/wsgi/test.py)
Для применения изменений нужно перезапустить apache:
# systemctl restart httpd

Скрипты WSGI, запускаемые через сервер apache и модуль python3-mod_wsgi должны представлять из себя файл к кодом python, содержащий функцию приложения. Функция приложения должна называться «application». Функция обязательно принимает два аргумента:
1. Словарь среды, который содержит данные о входящем HTTP-запросе (строка запроса, заголовки, входные переменные и пр). Типовое имя словаря - «environ».
2. Функция, обеспечивающая HTTP-ответ обратно клиенту. Типовое имя этой функции: «start_response». После вызова start_response функции, основная функция возвращает текстом HTML тело загружаемой браузером страницы.

Для тестирования работы WSGI можно создать файл приложения на python:
# nano /var/www/wsgi/wsgi.py
def application(environ, start_response):
    status = '200 OK'
    response_header = [('Content-type','text/html')]     
    html = 'WSGI My Test 0'.encode("utf-8")
    start_response(status, response_header)
    return [html]


Теперь обратившись по URL http://IPадрес/wsgicmd/wsgi.py мы должны получить ответ в браузере:
«WSGI My Test 0»

Если в коде python будут ошибки, то вывод ошибок будет в логах web-сервера, в файле /var/log/httpd/error_log.
Пользователю будет показано сообщение:


Получение переменных GET и POST можно организовать так:
from urllib.parse import parse_qs
# Метод parse_qs разбивает строку и преобразует переменные в массив

def application(environ, start_response):
     status = '200 OK'
     response_header = [('Content-type','text/html')]
     html = "WSGI Тест 0<br>"

     # Метод отправки запроса HTTP (GET или POST):
     html += " REQUEST_METHOD: " + environ['REQUEST_METHOD'] + "<br>"

     # Получаем переменные из метода GET
     if environ['REQUEST_METHOD'] == 'GET':
         html +="Данные из метода GET:<br>"
         html +="Полная строка запроса:<br>"
         html +=environ['QUERY_STRING']+"<br>"
         html +="Переменные GET:<br>"
         get_env = parse_qs(environ['QUERY_STRING'], keep_blank_values=True)
         for x in get_env:
             html += x + ' => ' + get_env[x][0] + "<br>"

     # Получаем переменные из метода POST
     if environ['REQUEST_METHOD'] == 'POST':
         html +="Данные из метода POST:<br>"
         html +="Полная строка запроса:<br>"
         post_str = environ['wsgi.input'].read()
         html +=post_str.decode('utf-8')+"<br>"
         post_env = parse_qs(post_str.decode('utf-8'), keep_blank_values=True)
         for x in post_env:
             html += x + ' => ' + post_env[x][0] + "<br>"

    # Тестовая форма отправки POST запроса с этой страницы
    html +="<hr>"
    html +="<form method=post>"
    html +="<input name='name_p' type='text'>"
    html +="<input name='y_p' type='text'>"
    html +="<input type='submit'>"
    html +="</form>"

    # Вывод результатов
    start_response(status, response_header)
    # Преобразуем в байтовыую строку
    html = html.encode("utf-8")
    return [html]





вторник, 11 апреля 2023 г.

Apache. Отображение длинных русских названий в директории с помощью Indexes

В настройках по умолчанию, если пользователь обратиться к директории web-сервера по http и в этой директории не будет индексного файла index.html (index.php), то Apache отобразит перечень файлов и каталогов, содержащихся в каталоге. Это поведение предписывается директивой Indexes.
В настройках по умолчанию данная директива присутствует в файле /etc/httpd/conf/httpd.conf в разделе <Directory "/var/www/html">:
<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>


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


Что бы русские буквы отображались правильно, необходимо использовать дополнительные директивы IndexOptions Charset=UTF-8
То есть привести настройки к виду:
<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    IndexOptions Charset=UTF-8
    AllowOverride None
    Require all granted
</Directory>

 

После рестарта Apache русские буквы отображаются, но имя файла обрезается:

Что бы имя файла не обрезалось необходимо использовать еще одну опцию «NameWidth=*». Конфигурацию настроек каталога в файле /etc/httpd/conf/httpd.conf приводим к виду:
<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    IndexOptions Charset=UTF-8 NameWidth=*
    AllowOverride None
    Require all granted
</Directory>

 

Теперь все отображается корректно:





среда, 19 октября 2022 г.

Rocky Linux 9. Вывод ошибок PHP8 в web интерфейс

Для вывода ошибок php в web интерфейс нужно отредактировать php.ini
# nano /etc/php.ini
Устанавливаем следующие директивы в On
    display_errors = On
    display_startup_errors = On

Перезапускаем модуль php:
# systemctl restart php-fpm
Все.

Логи ошибок в консоли можно посмотреть тут:
# tail -f /var/log/php-fpm/www-error.log

понедельник, 17 октября 2022 г.

Rocky Linux 9. Установка MariaDB 10.9.3, Apache, PHP8.1, PhpMyAdmin 5.2.0

Установка MariaDB

Устанавливаем репозитарий MariaDB.
# curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash
Устанавливаем свежую стабильную версию MariaDB. На момент написания - это 10.9.3.
# yum install mariadb-server
Добавляем в автозапуск и запускаем сервис:
# systemctl enable mariadb.service
# systemctl start mariadb.service

Запускаем скрипт, инициализирующий удаление лишних тестовых баз и гостевых пользователей. Следующие ответы позволят задать root пароль для базы данных и позволить подключаться в базе с паролем root
# mariadb-secure-installation
    Switch to unix_socket authentication [Y/n] Y
    Change the root password? [Y/n] Y
    New password: <вводим пароль>
    Re-enter new password: <вводим пароль еще раз>
    Remove anonymous users? [Y/n] Y
    Disallow root login remotely? [Y/n] n
    Remove test database and access to it? [Y/n] Y
    Reload privilege tables now? [Y/n] Y


Открываем возможность доступа к Mariadb по сети:
# firewall-cmd --permanent --add-service=mysql
# firewall-cmd --reload


Установка Apache
# yum install httpd
# nano /etc/httpd/conf/httpd.conf

Имя сервера прописывается в директиве ServerName
ServerName serv.domain.ru:80
Добавляем сервер Apache в скрипт автозапуска и запускам сервис
# systemctl enable httpd.service
# systemctl start  httpd.service

Открываем порт 80 в файрволл:
# firewall-cmd --permanent --add-service=http
# firewall-cmd --reload

Проверяем работу Apache обратившись к серверу так: http://<IP-сервера>

Установка PHP 8.1.11
# dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
# dnf module reset php
# dnf module install php:remi-8.1
# dnf install php-gd php-odbc php-mysqlnd php-mysqli php-bcmath php-ctype php-json

Перезапускаем web-сервер
# systemctl restart httpd.service
Создаем файл для проверки работы PHP
# nano /var/www/html/info.php
вписываем туда
<?php phpinfo(); ?>
Теперь при запросе страницы Info.php (http://<IP-сервера>/info.php ) можно увидеть информацию о модуле PHP

Установка PHPMYADMIN.
# dnf install phpmyadmin
# nano /etc/httpd/conf.d/phpMyAdmin.conf

Добавляем Require all granted под Require local
<Directory /usr/share/phpMyAdmin/>
   AddDefaultCharset UTF-8
   Require local
   Require all granted
</Directory>

Перезапускаем сервер Apache
# systemctl restart httpd.service
Теперь к странице phpmyadmin можно обратиться так: http://<IP-сервера>/phpmyadmin

Для добавления настроек, включающих дополнительные возможности PHPMYADMIN выполняем следующее:
Создаем базу данных для служебной информации:
# mysql < /usr/share/phpMyAdmin/sql/create_tables.sql -u root -p
Раскомментируем дополнительные возможности phpmyadmin в конфигурационном файле config.inc.php:
# nano /etc/phpMyAdmin/config.inc.php
Раскомментируем стоки:
 // Это логин пользователя, который можно сменить
 $cfg['Servers'][$i]['controluser'] = 'pma';
 // Пароль по умолчанию pmapass, который нужно обязательно заменить
 $cfg['Servers'][$i]['controlpass'] = 'pmapass123';
 $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]['table_uiprefs'] = 'pma__table_uiprefs';
 $cfg['Servers'][$i]['tracking'] = 'pma__tracking';
 $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
 $cfg['Servers'][$i]['recent'] = 'pma__recent';
 $cfg['Servers'][$i]['favorite'] = 'pma__favorite';
 $cfg['Servers'][$i]['users'] = 'pma__users';
 $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
 $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
 $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
 $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
 $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
 $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

Подключаемся к консоли mysql и создаем пользователя pma с правами на базу данных phpmyadmin:
# mysql -uroot -p
>GRANT USAGE ON mysql.* TO 'pma'@'localhost' IDENTIFIED BY 'pmapass123';
>GRANT SELECT (
        Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
        Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv,
        File_priv, Grant_priv, References_priv, Index_priv, Alter_priv,
        Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv,
        Execute_priv, Repl_slave_priv, Repl_client_priv
        ) ON mysql.user TO 'pma'@'localhost';
>GRANT SELECT ON mysql.db TO 'pma'@'localhost';
>GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv)
        ON mysql.tables_priv TO 'pma'@'localhost';
>GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost';

После данных манипуляций нужно выйти и заново зайти на страницу http://<IP-сервера>/phpmyadmin. Теперь можно пользоваться дополнительными возможностями программы.

понедельник, 17 января 2022 г.

Установка MariaDB, Apache, PHP7 и PHPMYADMIN на Rocky Linux

1. Узнаем версию дистрибутива:
# cat /etc/*release
Rocky Linux release 8.5 (Green Obsidian)
NAME="Rocky Linux"
VERSION="8.5 (Green Obsidian)"

2.    Устанавливаем базовые пакеты:
# yum install nano wget git net-tools unzip telnet mtr
# yum -y install epel-release

3.    Выключаем SELINUX.
# nano /etc/sysconfig/selinux
Строка, которая не должна быть закомментирована
SELINUX=disabled
4.    Добавляем своего пользователя и добавляем его в sudo
# adduser  korolev
# passwd korolev
# usermod -aG wheel korolev

5.    Устанавливаем автоматическое обновление, касающееся безопасности системы
# nano /etc/dnf/automatic.conf
upgrade_type = security
download_updates = yes
apply_updates = yes

6.    Отключаем firewall
# systemctl disable firewalld
# systemctl stop firewalld

7.    Перезагружаемся:
# reboot

8.    Установка MariaDB.
# yum install mariadb
# yum install mariadb-server

Добавляем в автозапуск и запускаем сервис:
# systemctl enable mariadb.service
# systemctl start mysqld.service

    Задаем пароль root для сервера MySQL
# mysql_secure_installation
    Enter current password for root (enter for none): <просто нажимаем Enter>
    Set root password? [Y/n] Y
    New password: <вводим пароль>
    Re-enter new password: <вводим пароль еще раз>
    Remove anonymous users? [Y/n] Y
    Disallow root login remotely? [Y/n] Y
    Remove test database and access to it? [Y/n] Y
    Reload privilege tables now? [Y/n] Y


9.    Установка Web-сервера APACHE
# yum install httpd
Задание имени серверу
# nano /etc/httpd/conf/httpd.conf
Имя сервера прописывается в директиве ServerName
ServerName zabbix-n.svttk.ru:80
Добавляем сервер Apache в скрипт автозапуска и запускам сервис
# systemctl enable httpd.service
# systemctl start  httpd.service

Проверяем работу Apache обратившись к серверу через http и убеждаемся, что через браузер сервер отвечает (http://<IP-сервера>)
Логи у Apache будут в каталоге /etc/httpd/logs/ и /var/log/httpd/

10.    Устанавка PHP (7 версия)
# yum install php
# yum install php-gd php-odbc php-mysqlnd php-mysqli php-bcmath php-ctype php-mbstring php-json php-xml

Перезапускаем web-сервер
# systemctl restart httpd.service
Создаем файл для проверки работы PHP
# nano /var/www/html/info.php
вписываем туда
<?php phpinfo(); ?>
Теперь при запросе страницы Info.php (http://<IP-сервера>/info.php ) можно увидеть информацию о модуле PHP

11.    Установка PHPMYADMIN
# DATA="$(wget https://www.phpmyadmin.net/home_page/version.txt -q -O-)"
# URL="$(echo $DATA | cut -d ' ' -f 3)"
# VER="$(echo $DATA | cut -d ' ' -f 1)"
# curl -o phpMyAdmin-${VER}-all-languages.tar.gz https://files.phpmyadmin.net/phpMyAdmin/${VER}/phpMyAdmin-${VER}-all-languages.tar.gz

В текущую папку должен скачаться файл-архив с последней версией PhpMyAdmin
Например, phpMyAdmin-5.1.1-all-languages.tar.gz
Распаковываем архив
# tar xvf phpMyAdmin-5.1.1-all-languages.tar.gz
# rm phpMyAdmin-*.tar.gz

Перемещаем весь архив в папку /usr/share/phpmyadmin
# mv phpMyAdmin-*/ /usr/share/phpmyadmin
# chown -R apache:apache /usr/share/phpmyadmin/

Создаем директорию для временных файлов phpmyadmin
# mkdir /usr/share/phpmyadmin/tmp
# chmod 777 /usr/share/phpmyadmin/tmp

Создаем файл конфигурации из типового:
# cp /usr/share/phpmyadmin/config.sample.inc.php  /usr/share/phpmyadmin/config.inc.php
Редактируем файл конфигурации:
# nano /usr/share/phpmyadmin/config.inc.php
В переменную $cfg['blowfish_secret'] необходимо вписать 32 символа, которые будут использоваться для шифрования пароля в cookies. Например
$cfg['blowfish_secret'] = 'YTRE137dfgsbvqewdsca6eblfjhsgdye';
Создаем базу данных для phpmyadmin:
# mysql < /usr/share/phpmyadmin/sql/create_tables.sql -u root -p
Добавляем конфигурацию Apache для phpmyadmin
# nano /etc/httpd/conf.d/phpmyadmin.conf


Alias /phpMyAdmin /usr/share/phpmyadmin
Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin/>
   AddDefaultCharset UTF-8
   <IfModule mod_authz_core.c>
     <RequireAny>
      Require all granted
     </RequireAny>
   </IfModule>
</Directory>

Перезапускаем сервер Apache
# systemctl restart httpd.service
Теперь к странице phpmyadmin можно обратиться так:
http://<IP-сервера>/phpmyadmin

среда, 17 ноября 2021 г.

Установка расширения ssh2 для php7 в CentOS8

В CentOS8 по умолчанию устанавливается версия php – 7.2.
Данная версия языка php не содержит готового пакета расширения ssh2 в репозитариях CentOS8. Более того расширение не поддерживается официально для php7. В связи с этим нет возможности использовать директивы ssh2_connect, ssh2_exec, ssh2_scp_send в программах на php7.

Это ограничение можно обойти, установив расширение вручную.
1) Подготовим систему для сборки расширения ssh2
# yum install gcc php-devel libssh2 libssh2-devel

2) Скачиваем и собираем расширение
# cd /usr/src
# git clone https://github.com/php/pecl-networking-ssh2.git
# cd pecl-networking-ssh2
# phpize
# ./configure
# make

Сборка завершается сообщением:
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/src/pecl-networking-ssh2/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the 'LD_RUN_PATH' environment variable
     during linking
   - use the '-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to '/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

3) Устанавливаем собранный пакет
# make install
Результат:
Installing shared extensions:     /usr/lib64/php/modules/

4) Информацию о новом модуле нужно задать в директории /etc/php.d
Создаем файл и заносим в него информацию о расширении:
# touch /etc/php.d/40-ssh2.ini
# nano /etc/php.d/40-ssh2.ini

Вписываем туда:
extension=ssh2

5) Проверить результат можно командой:
# php -i |grep ssh2
Для применения настроек в apache, web-сервер нужно перезагрузить







Повышение производительности WEB-сервера Apache 2.4

Для увеличения производительности WEB-сервера можно предпринять ряд шагов.

1)    При приходе запроса на web-сервер, он обращается к DNS для того что бы по IP адресу узнать сетевое имя и красиво сделать запись в логах. Для того что бы заставить apache прекратить это делать, нужно в конец файла /etc/httpd/conf/httpd.conf добавить строчку
HostnameLookups off

2)    В конфигурации сервера в разделе описывающий доступ к директориям <Directory …> есть директива, заставляющая сервер каждый раз прочитывать каталог и искать файл .htaccess для получения дополнительных инструкций из этого файла. Это поведение можно прекратить и глобально запретить искать файл .htaccess и считывать его содержимое. Для этого нужно установить значение директивы AllowOverride в None глобально и во всех настройках виртуальных хостов. Для установки директивы глобально в файле /etc/httpd/conf/httpd.conf в разделе <Directory "/var/www/html"> нужно установить
AllowOverride None
Для тех директорий, где использование файла .htaccess необходимо нужно создать отдельный раздел в файлах конфигурации и прописывать там:
<Directory "/var/www/html/">
      AllowOverride All
      Require all granted
</Directory>


3)    Web-сервер Apache, по умолчанию установленный в Linux, работает с применением многозадачного модуля PreFork. Этот модуль создает несколько процессов Apache на сервере. Каждый процесс обслуживает в единицу времени только один входящий запрос. В этом и плюс и минут данного решения.
Убедиться в том, что на сервере работает модуль PreFork можно так:
# apachectl -t -D DUMP_MODULES | grep mpm
Пример вывода
mpm_prefork_module (shared)
Для того что бы задействовать возможности PreFork по максимому нужно вручную задать его конфигурацию, рассчитываемую под каждый сервер индивидуально. Для этого в конец файла /etc/httpd/conf/httpd.conf нужно добавить блок:
KeepAlive off
<IfModule prefork.c>
   StartServers            6
   MinSpareServers         5
   MaxSpareServers         10
   MaxClients              XX
   ServerLimit             XX
   MaxRequestsPerChild     10000
</IfModule>

KeepAlive off – Директива отключает использование KeepAlive. При включенном KeepAlive в одном соединении с сервером клиент может сделать несколько запросов. Обычно это помогает загружать множественные картинки на странице сайта. Если картинок на странице сайта не много, то в режиме PreFork эта функция будет только мешать.
StartServers – количество процессов, которые Apache будет стартовать при запуске сервера. По умолчанию – 5.
MinSpareServers и MaxSpareServers  - это диапазон количества простаиваемых процессов, которые не обрабатывают запросы. Обычно значения оставляют теми, что заданы по умолчанию – 5 и 10 соответственно.
MaxClients и ServerLimit устанавливаются равными и рассчитывается как объем памяти для сервера деленное на объем памяти на один процесс.
Например, выделим для Apache 1024 Мбайт памяти. А один процесс занимает 25 МБ, тогда
MaxClients  = ServerLimit  = 1024 Мб / 25 МБ = 40
Оценить сколько потребляет весь сервер и один процесс нужно во время высокой нагрузки сервера так:
# ps -ylC httpd | awk '{x += $8;y += 1} END {print "Apache(MB): "x/1024; print "Proccess(MB): "x/((y-1)*1024)}'
Пример вывода:
Apache(MB): 660.219
Proccess(MB): 55.0182

MaxRequestsPerChild – тут задается большое число, которое ограничивает количество запросов, отработанных одним процессом. Когда процесс выполнит это количество запросов, процесс перезапуститься. Ноль в этой директиве запретит перезапуск процессов. Обычно тут нужно устанавливать большое число, что бы процессы перезапускались не часто. Но установка в 0 может вызвать неконтролируемые утечки памяти при сбое в процессе.

4)    Для мониторинга того, какой запрос на сервере выполняется медленно, на сервере Apache нужно настроить логирование времени выполнения каждого запроса. Это делается в глобальном файле конфигурации и в файлах конфигурации виртуальных хостов.
За это отвечают две директивы – LogFormat и CustomLog. В глобальном файле конфигурации /etc/httpd/conf/httpd.conf директивы прописываются в разделе <IfModule log_config_module>.
Первой директивой добавляем новый формат вывода логов и устанавливаем ему псевдоним, например, servetime
LogFormat "%h %t \"%r\" %D" servetime
В строке формата "%h %t \"%r\" %D"
%h - IP адрес, с которого пришел запрос
%t - время запроса
\"%r\" – строка самого запрос к серверу
%D -время в микросекундах, которое потребовалось apache для     обслуживания запроса
Другие возможные параметры форматирования лога описаны тут - http://httpd.apache.org/docs/2.2/mod/mod_log_config.html
Вторая директива определяет файл куда будет записываться лог требуемого формата с псевдонимом servetime. Существующую директиву, которая обычно выглядит так
CustomLog /var/log/httpd/access_log combined
меняем на
CustomLog "logs/access_log " servetime
Для создания отдельного файла логов с новым форматом нужно добавить новую строчку CustomLog, например:
CustomLog "logs/access_log_servetime" servetime
После применения изменений конфигурации сервера, логи с вычисленным значением длительности отработки запросов будут складываться в файл /var/log/httpd/access_log_servetime.
Вот так потом можно отфильтровывать запросы, длительностью более 10 миллисекунд:
# cat /var/log/httpd/access_log_servetime | awk -F'"' '{if ($3 > 10000) print $2, $3/1000}'
Пример лога из файла access_log_servetime:
10.10.50.240 [12/Nov/2021:13:06:27 +0300] "GET /logo-uhotool-2.jpg HTTP/1.1" 200 326
10.10.50.240 [12/Nov/2021:13:06:27 +0300] "GET /index-foto-01.jpg HTTP/1.1" 200 224
10.10.50.240 [12/Nov/2021:13:06:27 +0300] "GET /index-foto-02.jpg HTTP/1.1" 200 256
10.10.50.240 [12/Nov/2021:13:06:27 +0300] "GET /loader.gif HTTP/1.1" 200 201
10.10.50.240 [12/Nov/2021:13:06:27 +0300] "GET /index-foto-03.jpg HTTP/1.1" 304 330
10.10.50.240 [12/Nov/2021:13:06:27 +0300] "GET /favicon.ico HTTP/1.1" 200 165
10.10.50.240 [12/Nov/2021:13:06:27 +0300] "GET /background/getVoIPoperator.php HTTP/1.1" 200 6442
10.10.50.240 [12/Nov/2021:13:06:27 +0300] "GET /background/getListSMSChannel.php HTTP/1.1" 200 7055
10.10.50.240 [12/Nov/2021:13:06:27 +0300] "GET /background/getListTftp.php HTTP/1.1" 200 9045
::1 [12/Nov/2021:13:06:33 +0300] "OPTIONS * HTTP/1.0" 200 493

Пример вывода запросов более 10 миллисекунд
GET / HTTP/1.1 10.901
GET /index-foto-02.jpg HTTP/1.1 16.727
GET /background/getListTftp.php HTTP/1.1 10.349


5)    Рестартуем сервер для применения настроек по всем описанным выше пунктам:
# systemctl http restart


понедельник, 21 июня 2021 г.

Debian10. Установка MariaDB, Apache, PHP7 и PHPMYADMIN

1. Установка MariaDB
# apt install mariadb-server
Добавляем в автозапуск и запускаем сервис:
# systemctl enable mariadb
# systemctl start mariadb

Задаем пароль root для сервера MySQL
# mysql_secure_installation
Пароль для root следует ввести ответом на вопрос
    Enter current password for root (enter for none):
Затем отказываемся от смены пароля (Change the root password? [Y/n]) введя «n».
На следующие вопросы отвечаем Да (Y)
    Remove anonymous users? [Y/n] Y
    Disallow root login remotely? [Y/n] Y
    Reload privilege tables now? [Y/n] Y


Затем в тестовом режиме пытаемся подключиться к базе данных:
# mysql -uroot –p
Должны увидеть приглашение
    MariaDB [(none)]>

2.    Установка Web-сервера APACHE
# apt install apache2
Исправляем настройки сервера по умолчанию:
# nano /etc/apache2/sites-available/000-default.conf
Задаем имея серверу используя директиву
ServerName rossyp.su
При необходимости меняем корневую директорию WEB-сервера
DocumentRoot /mnt/www-rossyp
<Directory /mnt/www-rossyp>
         Options FollowSymLinks
         AllowOverride All
         Require all granted
</Directory>

Добавляем сервер Apache в скрипт автозапуска и запускам сервис
# systemctl enable apache2
# systemctl start apache2

Проверяем работу Apache обратившись к серверу через http и убеждаемся, что через браузер сервер отвечает (http://<IP-сервера>)

Для того что бы сам сервер знал всегда свое имя, добавляем это имя в файл hosts
# nano /etc/hosts
Вписываем строку в конец:
127.0.0.1 www.rossyp.su rossyp.ru

Логи у Apache будут в каталоге /var/log/apache2/

3.    Устанавка PHP (7 версия)
# apt install php
Перезапускаем web-сервер
# systemctl restart apache2

Создаем файл для проверки работы PHP
# nano /mnt/www-rossyp/info.php
вписываем туда
<?php phpinfo(); ?>
Теперь при запросе страницы Info.php (http://<IP-сервера>/info.php ) можно увидеть информацию о модуле PHP

4.    Установка PHPMYADMIN
Для работы phpmyadmin нужны несколько пакетов php
# apt install php-mysqli php-xml
# systemctl restart apache2

Примечание: Если этих пакетов не будет, phpmyadmin не запуститься и выдаст ошибку:
Composer detected issues in your platform: Your Composer dependencies require the following PHP extensions to be installed: mysqli, xml
Заходим на страницу проекта https://www.phpmyadmin.net/downloads/ и копируем ссылку на свежий стабильный релиз. В моем случае – это phpMyAdmin-5.1.1-all-languages.tar.gz
# wget https://files.phpmyadmin.net/phpMyAdmin/5.1.1/phpMyAdmin-5.1.1-all-languages.tar.gz
Распаковываем архив и удаляем скаченный ранее файл
# tar xvf phpMyAdmin-5.0.2-all-languages.tar.gz
# rm phpMyAdmin-*.tar.gz

Перемещаем весь архив в папку /mnt/www-phpmyadmin и определяем пользователем директории – www-data
# mkdir /mnt/www-phpmyadmin
# mv phpMyAdmin-5.1.1-all-languages/* /mnt/www-phpmyadmin
# chown -R www-data:www-data /mnt/www-phpmyadmin/

Далее нужно создать файл конфигурации phpmyadmin  - config.inc.php
Создаем файл конфигурации из типового:
# cp /mnt/www-phpmyadmin/config.sample.inc.php /mnt/www-phpmyadmin/config.inc.php
Редактируем созданный файл конфигурации:
# nano /mnt/www-phpmyadmin/config.inc.php
В переменную $cfg['blowfish_secret'] необходимо вписать 32 символа, которые будут использоваться для шифрования пароля в cookies. Например:
$cfg['blowfish_secret'] = 'YTRE137dfgsbvqewdsca6eblfjhsgdye';

Добавляем конфигурацию Apache для phpmyadmin
Для этого в конфиг виртуального хоста (/etc/apache2/sites-available/000-default.conf) добавляем строки после блока описания основной директории:
        <Directory /mnt/www-rossyp>
        …
        </Directory>

       Alias /_pma /mnt/www-phpmyadmin

       <Directory /mnt/www-phpmyadmin>
         AddDefaultCharset UTF-8
         <RequireAny>
          Require all granted
         </RequireAny>
       </Directory>


Перезапускаем сервер Apache
# systemctl restart apache2
Теперь к странице phpmyadmin можно обратиться так:
http://<IP-сервера или доменное имя>/_pma

суббота, 4 июля 2020 г.

Установка Apache 2.4, PHP7, SQLite3 в Windows 10

Apache 2.4, PHP7, SQLite3 на Windows 10

Apache

Apache скачиваем с сайта https://www.apachehaus.com/, например для 64 разрядной ОС нужно скачать файл: httpd-2.4.43-o111g-x64-vc15.zip. Создаем папку C:\Apache24 и распаковываем туда содержимое папки Apache24 из zip архива.
Запускаем командную строку и переходим в папку C:\Apache24\bin.
Запуск Apache выполняем так: C:\Apache24\bin>httpd.exe. При срабатывании Защитника Windows, предоставляем Apache доступ:
 
Пока мы не закрыли терминал, Apache будет работать. Увидеть приветственную страницу можно открыв в браузере адрес http://localhost/


PHP

PHP7 скачиваем с сайта https://windows.php.net/. Нам нужен архив с Thread Safe, например, файл php-7.4.7-Win32-vc15-x64.zip. Создаем папку C:\php7 и распаковываем туда содержимое zip архива.
Открываем файл C:\Apache24\conf\httpd.conf
После списка загружаемых модулей добавляем строки:
LoadModule php7_module "c:/php7/php7apache2_4.dll"
PHPIniDir "c:/php7"

В раздел <IfModule mime_module>….</IfModule> вставляем строки
    AddHandler application/x-httpd-php .php
    AddType application/x-httpd-php .php .html

В директории
<IfModule dir_module>…  </IfModule>
Меняем DirectoryIndex index.html на DirectoryIndex index.php index.html
Перезапускаем сервер Apache (CTRL+C, потом снова httpd.exe в командной строке).
Создаем файл phpinfo.php в каталоге C:\Apache24\htdocs\ с содержимым: <?php phpinfo(); ?>. Проверить отображение можно по ссылке: http://localhost/phpinfo.php:
 

SQLite

Специально устанавливать sqlite не нужно. PHP уже обладает модулем работы с этой базой данных.
Копируем файл C:\php7\php.ini-production в файл C:\php7\php.ini.
Для поддержки SQLite3 в файле php.ini нужно раскомментировать и модифицировать строки:
;extension=pdo_sqlite меняем на extension=c:\php7\ext\php_pdo_sqlite.dll
;extension=sqlite3 меняем на extension=c:\php7\ext\php_sqlite3.dll
Проверяем поддержку SQLite, создав в файл C:\Apache24\htdocs\sqlitetest.php с содержимым:
<?php
$dbname='base';
if(!class_exists('SQLite3')) die("SQLite 3 NOT supported.");
$base=new SQLite3($dbname, 0666);
echo "SQLite 3 supported.";
?>

Запускаем его в браузере:
http://localhost/sqlitetest.php
Должны получить:
 



воскресенье, 22 марта 2020 г.

Установка MySQL, Apache, PHP7 и PHPMYADMIN на CentOS 8

Установка MySQL, Apache, PHP7 и PHPMYADMIN на CentOS 8

1. Узнаем версию дистрибутива:
# cat /etc/*release
Для CentOS8 должно быть:
NAME="CentOS Linux"
VERSION="8 (Core)"
2. Устанавливаем базовые пакеты:
# yum install nano wget git
# yum -y install epel-release
3. Меняем имя сервера:
# hostnamectl set-hostname www.curator.xxx.ru
4. Выключаем SELINUX.
# nano /etc/sysconfig/selinux
Комментируем все, вставляем строку
SELINUX=disabled
Перезагружаемся:
# reboot

5. Установка MySQL.
# yum install mysql mysql-server
Добавляем в автозапуск и запускаем сервис:
# systemctl enable mysqld.service
# systemctl start mysqld.service
Задаем пароль root для сервера MySQL
# mysql_secure_installation
Сначала на вопрос о проверки надежности пароля отвечаем N.
Затем вводим пароль и его подтверждение. 
На остальные вопросы отвечаем ДА (y)

6. Установка Web-сервера APACHE
# yum install httpd
Задание имени серверу
# nano /etc/httpd/conf/httpd.conf
Имя сервера прописывается в директиве ServerName
ServerName www.curator.xxx.ru
Для того что бы сам сервер знал всегда свое имя, добавляем это имя в файл hosts
# nano /etc/hosts
Вписываем строку в конец:
127.0.0.1 www.curator.xxx.ru curator.xxx.ru
Добавляем сервер Apache в скрипт автозапуска и запускам сервис
# systemctl enable httpd.service
# systemctl start  httpd.service
Открываем 80 порт в Firewall
# firewall-cmd --permanent --add-port=80/tcp
# firewall-cmd --reload
Проверяем работу Apache обратившись к серверу через http и убеждаемся, что через браузер сервер отвечает (http://<IP-сервера>)
Логи у Apache будут в каталоге /etc/httpd/logs/

7. Устанавка PHP (7 версия)
# yum install php
# yum install php-gd php-ldap php-odbc php-mysqlnd 
Перезапускаем web-сервер
# systemctl restart httpd.service
Создаем файл для проверки работы PHP
# nano /var/www/html/info.php
вписываем туда
<?php phpinfo(); ?>
Теперь при запросе страницы Info.php (http://<IP-сервера>/info.php ) можно увидеть информацию о модуле PHP

8. Установка PHPMYADMIN
# yum install -y php-json php-mbstring
# DATA="$(wget https://www.phpmyadmin.net/home_page/version.txt -q -O-)"
# URL="$(echo $DATA | cut -d ' ' -f 3)"
# VER="$(echo $DATA | cut -d ' ' -f 1)"
# curl -o phpMyAdmin-${VER}-all-languages.tar.gz https://files.phpmyadmin.net/phpMyAdmin/${VER}/phpMyAdmin-${VER}-all-languages.tar.gz
В текущую папку должен скачаться файл-архив с последней версией PhpMyAdmin
Например, phpMyAdmin-5.0.2-all-languages.tar.gz
Распаковываем архив
# tar xvf phpMyAdmin-5.0.2-all-languages.tar.gz
Перемещаем весь архив в папку /usr/share/phpmyadmin
# rm phpMyAdmin-*.tar.gz
# mv phpMyAdmin-*/ /usr/share/phpmyadmin
# chown -R apache:apache /usr/share/phpmyadmin/
Создаем директорию для временных файлов phpmyadmin
# mkdir /usr/share/phpmyadmin/tmp
# chmod 777 /usr/share/phpmyadmin/tmp
Создаем файл конфигурации из типового:
# cp /usr/share/phpmyadmin/config.sample.inc.php  /usr/share/phpmyadmin/config.inc.php
Редактируем файл конфигурации:
# nano /usr/share/phpmyadmin/config.inc.php
В переменную $cfg['blowfish_secret'] необходимо вписать 32 символа, которые будут использоваться для шифрования пароля в cookies. Например
$cfg['blowfish_secret'] = 'YTRE137dfgsbvqewdsca6eblfjhsgdye';
Создаем базу данных для phpmyadmin:
# mysql < /usr/share/phpmyadmin/sql/create_tables.sql -u root -p
Добавляем конфигурацию Apache для phpmyadmin
# nano /etc/httpd/conf.d/phpmyadmin.conf
Содержимое файла:
Alias /phpMyAdmin /usr/share/phpmyadmin
Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin/>
   AddDefaultCharset UTF-8

   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny> 
      Require all granted
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

Перезапускаем сервер Apache
# systemctl restart httpd.service
Теперь к странице phpmyadmin можно обратиться так:
http://<IP-сервера>/phpmyadmin



воскресенье, 18 марта 2018 г.

Apache на CentOS 7. Добавление виртуального хоста.

Apache на CentOS 7. Добавление виртуального хоста.

Есть установленный WEB-сервер на ip 10.10.49.162, порт 80
Сервер настроен по умолчанию. Имя сервера www.kos.domain.ru.
Сервер смотрит папку /var/www/html.
В ней один файл index.php:
<!DOCTYPE html>
<html>
<head>
  <title>1</title>
</head>
  <body>
    Сервер www.kos.domain.ru
  </body>
</html>
Задача: поднять виртуальный сервер www.purga.domain.ru, документы которого будут в папке /mnt/purga.

Для тестирования работы двух виртуальных серверов установим браузер links
# yum install links
Так мы сможем смотреть ответы сервера в консоли, а не по сети в отсутствии настроек DNS сервера.
Смотрим существующий сервер из консоли так:
# links www.kos.domain.ru

Для добавления нового виртуального хоста необходимо:
1) Прописать новое имя сервера в файл hosts
# nano /etc/hosts
Добавляем строку в конец
127.0.0.1 www.purga.domain.ru purga.domain.ru
Теперь с локальной машины данный адрес успешно пингуется по доменного имени.
# ping www.purga.domain.ru
2) Создаем корневую папку для WEB-сервера и даем ей права
# mkdir /mnt/purga
# chown apache:apache /mnt/purga
Делаем ссылку на эту папку в каталог /var/www:
# ln -s /mnt/purga/ /var/www/purga
3) В папку /mnt/purga кладем файл index.php:
# touch /mnt/purga/index.php
# chown apache:apache /mnt/purga/index.php
# chmod -R 755 /mnt/purga/
# nano /mnt/purga/index.php
Содержимое файла:
<!DOCTYPE html>
<html>
<head>
<title>2</title>
</head>
<body>
Сервер www.purga.domain.ru
</body>
</html>
4) Создаем файл описания виртуального сервера
# touch /etc/httpd/conf.d/purga.conf
Содержимое файла:
<VirtualHost purga.domain.ru:80>

    ServerName purga.domain.ru
    ServerAlias www.purga.domain.ru

    DocumentRoot "/var/www/purga"

    <Directory /var/www/purga >
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    LogLevel warn

    ErrorLog /var/log/httpd/error_log

    CustomLog /var/log/httpd/access_log combined

</VirtualHost>
5) Перезагружаем сервер apache
# systemctl restart httpd.service
6) Проверяем:
# links www.purga.domain.ru
# links www.kos.domain.ru

Все великолепно!