Navigation menu
Our experts are sharingtheir knowledge with you.
Categories
▼ Server Hardware
► Hard Disk Drives
no subcategories
► HBAs
no subcategories
► Intel
no subcategories
▼ Modular Server
► Modular Server Ethernet Switch
no subcategories
▼ Motherboards
► BIOS Settings
no subcategories
▼ RAID Controllers
► 3ware
no subcategories
▼ Adaptec
► Adaptec SmartRAID
no subcategories
► LSI
no subcategories
▼ Server
► Backplanes
no subcategories
► LES
no subcategories
▼ SSDs
► Intel SSDs
no subcategories
▼ Server Software
▼ Linux
► Debian
no subcategories
► Linux Basics
no subcategories
► Linux Networking
no subcategories
▼ Linux Performance
► Fio
no subcategories
► TKperf
no subcategories
► Linux Software RAID
no subcategories
▼ Linux-Storage
► LVM
no subcategories
► Smartmontools
no subcategories
► Ubuntu
no subcategories
▼ Windows
► Windows Server 2012
no subcategories
► Windows Server 2016
no subcategories
► Windows Server 2019
no subcategories
▼ Storage
► FreeNAS
no subcategories
▼ Virtualization
► Hyper-V
no subcategories
► Proxmox
no subcategories
► VirtualBox
no subcategories
▼ VMware
▼ VMware
▼ VMware
► VMware
► VMware vSphere 5
► VMware vSphere 5.1
► VMware vSphere 5.5
► VMware vSphere 6.0
► VMware vSphere 6.5
► VMware vSphere 6.7
► VMware vSphere 5
no subcategories
► VMware vSphere 5.1
no subcategories
► VMware vSphere 5.5
no subcategories
► VMware vSphere 6.0
no subcategories
► VMware vSphere 6.5
no subcategories
► VMware vSphere 6.7
no subcategories
► VMware vSphere 5
no subcategories
► VMware vSphere 5.1
no subcategories
► VMware vSphere 5.5
no subcategories
► VMware vSphere 6.0
no subcategories
► VMware vSphere 6.5
no subcategories
► VMware vSphere 6.7
no subcategories
▼ Focus Topics
► Git
no subcategories
► UEFI
no subcategories
▼ Network+Accessories
► Load Balancer
no subcategories
► Monitoring
no subcategories
▼ OPNsense
► OPNsense Business Edition
no subcategories
▼ Remote Management
► IPMI
no subcategories
► TKmon
no subcategories
▼ Archive
► AMD
no subcategories
► Areca
no subcategories
► Fusion-io
no subcategories
► News
no subcategories
► Server Hardware Archive
no subcategories
► STEC
no subcategories
Настройка SELinux для web сервера apache
Раздел для тех, кто хочет настроить SELinux на своем web сервере. Сначала ставим пакет policycoreutils-python-utils если он еще не установлен. Он нам нужен для утилиты semanage.
# dnf install policycoreutils-python-utils
Теперь автоматически сформируем модуль для selinux на основе событий аудита, которые накопились, пока мы настраивали сайт. Посмотреть их можно командой.
# grep httpd /var/log/audit/audit.log | audit2why
Создаем модуль selinux.
# grep httpd /var/log/audit/audit.log | audit2allow -M my-httpd
Загружаем его.
# semodule -i my-httpd.pp
То же самое делаем для php.
# grep php /var/log/audit/audit.log | audit2allow -M my-php # semodule -i my-php.pp
Добавим нашу директорию /web/sites в соответствующие таблицы selinux для контента и логов.
# semanage fcontext -a -t httpd_sys_content_t "/web/sites(/.*)?" # semanage fcontext -a -t httpd_log_t "/web/sites(/.*)?/log(/.*)?"
И отдельно добавим каталог, куда web сервер сможет писать данные. Я покажу на примере правила для сайтов wordpress, где web сервер должен уметь писать в директорию wp-content для загрузки медиафайлов, установки тем и плагинов, а так же изменять файл wp-config.php.
# semanage fcontext -a -t httpd_sys_rw_content_t "/web/sites/\*/www/wp-content(/.\*)?" # semanage fcontext -a -t httpd_sys_rw_content_t "/web/sites/\*/www/wp-config.php"
Обновляем атрибуты файлов новым контекстом SELinux.
# restorecon -Rv /web/sites
В завершении настройки selinux для apache, добавим еще один параметр, без которого httpd не сможет писать файлы в указанные каталоги.
# setsebool -P httpd_unified 1
Теперь активируем защиту selinux и проверяем, что она работает.
# setenforce 1 # getenforce Enforcing
Режим работы Enforcing означает, что selinux работает. Убедиться, что модули загружены, можно командой.
# semodule -l | grep my-
В целом, по selinux все. Мы просто разрешили все, что веб сервер просил. По идее, надо вдумчиво во всех правилах разбираться и разрешать только то, что считаешь нужным. Я честно скажу, что selinux знаю не очень хорошо. Дальше загрузки готовых модулей и автоматического создания модулей с помощью audit2allow я не двигался. Руками модули никогда не писал. Если есть какой-то более осмысленный и правильный способ настройки selinux на кастомной конфигурации веб сервера, буду рад полезной информации.
Хорошая практическая статья по ручной настройке selinux для web сервера — https://habr.com/ru/post/322904/. Там же есть ссылки на другие статьи автора на тему selinux. Написано содержательно и наглядно, рекомендую для тех, кто будет знакомиться с технологией.
Red Hat / CentOS
Включение системных средств локализации в Red Hat Linux (а, следовательно, и в других дистрибутивах, основанных на Red Hat) осуществляется из файла /etc/profile.d/lang.sh.
Как известно, при старте любого shell-а сначала выполняется /etc/profile. В Red Hat в /etc/profile прописаны команды, благодаря которым на исполнение вызываются также все файлы /etc/profile.d/*.sh
Значения переменных локализации в файлах lang.sh задаются путем вызова на выполнение файла /etc/sysconfig/i18n.
# nano /etc/sysconfig/i18n LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16"
Правда, это верно только для случая, когда вы имеете права суперпользователя root. Но даже если вы простой пользователь Linux-системы и не можете редактировать файл /etc/sysconfig/i18n, то вы все же можете включить локализацию для себя, но несколько иным способом. А именно, поместите в свой файл $HOME/.profile (или в любой файл, который исполняется в процессе логирования пользователя: $HOME/.Xclients, $HOME/.xinitrc или другой) следующие строки: /etc/profile или $HOME/.bash_profile
#export LANG=ru_UA.utf8 #export LINGUAS=ru_RU:en #export LC_ALL="ru_UA.utf8" export LANG="en_US.UTF-8" export LC_ALL="en_US.UTF-8" export LC_CTYPE="en_US.UTF-8"
Чтобы изменения принялись нужно перезайти в консоль или выполнить команду source для файла в котором вы прописали export
$ source ~.profile
Ротация логов веб сервера apache
Последний штрих в настройке web сервера — ротация логов виртуальных хостов. Если этого не сделать, то через какое-то, обычно продолжительное, время возникает проблема в связи с огромным размером лог файла.
У нас уже будет файл конфигурации logrotate для httpd, который был создан во время установки — /etc/logrotate.d/httpd. Приведем его к следующему виду:
/var/log/httpd/*log { missingok notifempty sharedscripts delaycompress postrotate /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true endscript } /web/sites/pma.serveradmin.ru/log/*log { size=10M rotate 10 missingok notifempty compress sharedscripts postrotate /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true endscript } /web/sites/z.serveradmin.ru/log/*log { size=10M rotate 10 missingok notifempty compress sharedscripts postrotate /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true endscript }
Changing your locale manually
Editing the locale file is very easy. You can use your favorite text editor to edit the file. If this file does not exist, then no locale is currently set for your system. You can create one manually and enable a locale for your system. The output below shows how the file should look like:
cat /etc/default/locale # File generated by update-locale LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8
Replace with the locale you wish to have active on your system and save the file. Once you save the file, log out from your current session and then log back in, or open a new terminal, and your newly chosen locale will be active.
NOTE: This example file only sets the variable for your system, which covers the locale for all parts of the system.
Примечание 3 (настройка мс)
Яркие синие цвета в mc некоторым уже могли надоесть. Чтобы изменить цвета нужно закрыть mc (чтобы настройка не затёрлась самим мс ). Папка .mc создаётся в домашней директории вашего пользователя при первом запуске mc.
sed -i 's/^base_color=.*/base_color=normal=cyan,default::selected=black,cyan:directory=cyan,default:marked=brightgreen,default:errors=red,default:marked=yellow,default:executable=brightred,default:marked=brightgreen,default:link=grey,default:marked=brightgreen,default:device=brightmagenta,default:marked=brightgreen,default:menuhot=black,cyan:menusel=cyan,black:menuhotsel=gray,black:menu=black,cyan:helpnormal=cyan,black:editnormal=cyan,black:editbold=yellow,black:editmarked=cyan,black/; s/^confirm_delete=1*/confirm_delete=0/; s/^confirm_exit=1.*/confirm_exit=0/' /root/.mc/ini
Ubuntu 12.04 — удаление локалей и локализаций
Удаление лишних локалей в Ubuntu. Делал такие телодвижения:):
-
В файле locale-gen посмотрел пути в которых хранятся файлы локалей.
nano /usr/sbin/locale-gen ... SUPPORTED=/var/lib/locales/supported.d LOCALES=/usr/share/i18n/locales STATEDIR=/var/lib/belocs ...
-
В директории supported.d отредактировал файлы, оставил только нужные локали
# ls -l /var/lib/locales/supported.d итого 12 -rw-r--r-- 1 root root 18 Май 30 22:09 en -rw-r--r-- 1 root root 36 Май 1 21:53 local -rw-r--r-- 1 root root 36 Апр 18 11:31 ru
-
Поставил и настроил утилиту localepurge, она служит для удаления файлов локализаций, а не локалей
# aptitude install localepurge # nano /etc/locale.nopurge MANDELETE DONTBOTHERNEWLOCALE SHOWFREEDSPACE #QUICKNDIRTYCALC VERBOSE en_US.UTF-8 ru_RU.UTF-8 ru_UA.UTF-8
- Запустил localepurge -v. Файлов много удалило, но вывод locale -a не изменился.
-
Перегенируем локали с ключом purge
~# locale-gen --purge Generating locales... en_US.UTF-8... done ru_RU.UTF-8... done ru_UA.UTF-8... done Generation complete.
-
Проверяем. Теперь все правильно остались только нужные мне локали
~# locale -a C C.UTF-8 en_US.utf8 POSIX ru_RU.utf8 ru_UA.utf8
Подробная информация о локалях
Более подробную информацию об установленных в системе локалях можно посмотреть так:
$ locale -a -v locale: en_US.utf8 archive: /usr/lib/locale/locale-archive ------------------------------------------------------------------------------- title | English locale for the USA source | Free Software Foundation, Inc. address | http://www.gnu.org/software/libc/ email | bug-glibc-locales@gnu.org language | American English territory | United States revision | 1.0 date | 2000-06-24 codeset | UTF-8 locale: ru_RU.utf8 archive: /usr/lib/locale/locale-archive ------------------------------------------------------------------------------- title | Russian locale for Russia source | RAP address | Sankt Jorgens Alle 8, DK-1615 Kobenhavn V, Danmark email | bug-glibc-locales@gnu.org language | Russian territory | Russia revision | 1.0 date | 2000-06-29 codeset | UTF-8 locale: ru_UA.utf8 archive: /usr/lib/locale/locale-archive ------------------------------------------------------------------------------- title | Russian locale for Ukraine source | RFC 2319 email | bug-glibc-locales@gnu.org language | Russian territory | Ukraine revision | 1.0 date | 2000-06-29 codeset | UTF-8 locale: C.UTF-8 directory: /usr/lib/locale/C.UTF-8 ------------------------------------------------------------------------------- title | C locale email | aurel32@debian.org language | C revision | 1.6 date | 2016-08-08 codeset | UTF-8
Часть локалей размещена в архиве , а часть — в директориях внутри .
Удаленный доступ к консоли
Устанавливаем ssh: — комплекс программ, позволяющих соединяться с удалёнными машинами по защищённому каналу и выполнять команды в консоли:
# aptitude install ssh
Этот метапакет содержит программу клиента ssh и службу sshd, обрабатывающую входящие ssh подключения к вашему компьютеру.
Авторизация по ключам
Генерация ключей
Вариaнт 1 (подходит для putty и native ssh клиентов Linux)
Выбираем пользователя на сервере под которым будем логиниться в ssh. Например это будет «user». Входим с его правами в консоль. Далее генерируем ключи, при желании указываем пароль на создаваемый ключ.
ssh-keygen -t rsa -b 2048 -C "комментрий к ключу" -f /user/.ssh/newserver.key
В итоге получаем в «/user/.ssh/» два файла «newserver.key» и «newserver.key.pub»
Вариaнт 2 (для всех + проприетарный Bitvise Tunnelier)
К сожалению, я не нашёл способа сконвертировать OpenSSH ключи в понятный Tunnelier-у формат. Поэтому действовать будем от обратного.
На Windows машине запускаем Bitvise Tunnelier. На вклaдке «Login» выбираем раздел «Authentickation» —> «Use keypair manager». В новом окне жмём «Generate New …», выставляем опции на свой вкус —> «Generate». Далее выбираем «Export» и сохраняем любым удобным способом публичный ключ в формате OpenSSH в файл /user/.ssh/newserver.key.pub на ssh сервере.
Для использования в других ssh клиентах аналогично экспортируем и закрытый ключ. В итоге получаем в «/user/.ssh/» два файла «newserver.key» и «newserver.key.pub»
Настройка сервера
Перемещаем открытый ключ в список разрешённых ключей Например так
mv /user/.ssh/newserver.key.pub /user/.ssh/authorized_keys
Правим конфигурацию сервера
nano /etc/ssh/sshd_config # Разрешаем авторизацию по парам ключей PubkeyAuthentication yes # Путь к списку отпечатков открытых ключей AuthorizedKeysFile %h/.ssh/authorized_keys
Проверяем права доступа, должно быть так
root@gtw:~# ls -g .ssh итого 4 -rw------- 1 root 392 Мар 24 20:03 authorized_keys
Если права доступа отличаются, то выставляем правильные:
chmod 600 -R .ssh && chown root:root .ssh/authorized_keys
Перезапускаем сервер
/etc/init.d/ssh restart
При появлении проблем доступа смотрим лог
cat /var/log/auth.log | tail
Настройка клиента
Выбираем пользователя на клиенте под которым будем логиниться в ssh. Например это будет «user». Логинимся по юзером. Любым удобным способом копируем сгенерированный ранее файл newserver.key в папку /home/user/.ssh. Если хочется, чтобы ssh клиент подхватывал ключ автоматически, сохраняем ключ с новыми именем «id_dsa»
Выставляем права доступа, иначе ssh клиент проигнорирует ключ.
cd /home/user chmod 700 ./.ssh chmod 600 ./.ssh/newserver.key
Запускаем ssh клиента.
ssh -i /home/user/.ssh/newserver.key user@192.168.0.1
Всё должно работать.
Настройка Putty
К сожалению, Putty не понимает ключи в формате OpenSSH. Поэтому загружаем latest development snapshot Puttygen. Обычный Puttygen нам не подойдёт.
Скармливаем проге наш newserver.key (Conversions —> Import key), если нужно вводим пароль для доступа ключу. Получаем окно
Если надо меняем комментарий и пароль доступа к ключу. В разделе «Parameters» рекомендую выбрать SSH-2 RSA и 2048 bits. Далее жмём «Save private key» и получаем ключ в формате ppk, пригодный для скармливания обычному Putty в разделе Сonnection —> SSH —> Auth
nano /etc/ssh/sshd_config #Запрещаем вход под root PermitRootLogin no # Меняем порт по умолчанию - может помочь против поверхностного сканирования портов Port 17854 # Указываем на каком IP слушать порт ListenAddress 192.168.0.1 # Запрещаем вход по паролям, усложняет брутфорс PasswordAuthentication no # Запрещаем пустые пароли PermitEmptyPasswords no # Только root может авторизоваться по ssh AllowUsers root # Меняем стандартный порт, но мне больше нравится реализовывать это через port mapping # Port 4422
Solución de problemas
Mi terminal no es compatible con UTF-8
Desafortunadamente, algunos terminales no son compatibles con UTF-8. En este caso, usted tiene que utilizar un terminal diferente. Aquí tiene una lista con algunos terminales que tienen soporte para UTF-8:
- vte-based terminals
- gnustep-terminal
- konsole
- mlterm
- rxvt-unicode
- xterm
Gnome-terminal o rxvt-unicode no es compatible con UTF-8
Es necesario poner en marcha estas aplicaciones desde una localización UTF-8 o caerá el soporte UTF-8. Activar el locale (o su locale UTF-8 alternativo) como se explicó anteriormente, y establézcalo como el idioma por defecto, reiniciando, a continuación, el sistema.
Сетевые настройки
Базовая настройка
Этот метод настройки является самым гибким и функциональным, но требует ручной правки конфигурационных файлов.
Если Debian устанавливался по сети, то настройки будут перенесены из установщика в установленную систему, т.е. ничего настраивать уже не нужно.
Ищем нашу сетевую карту в списке:
# ifconfig -a
Для более детальной информации о сетевых картах можно воспользоваться специальными
Открываем файл конфигурации сети:
# nano /etc/network/interfaces
Строки, начинающиеся со слова «auto», используются для идентификации физических интерфейсов при их подьеме во время запуска ifup с опцией -a. (Эта опция используется сценариями загрузки системы.) Имена физических интерфейсов должны следовать за словом «auto» в той же строке. Может быть несколько строф «auto». ifup поднимет названные интерфейсы в порядке их перечисления.
Строки, начинающиеся с «allow-«, используются для идентификации интерфейсов, которые должны быть подняты автоматически различными подсистемами. Это может быть сделано, например, с использованием команды «ifup —allow=hotplug eth0 eth1», которая будет поднимать только eth0 или eth1, если они перечислены в строке «allow-hotplug». Учтите, что «allow-auto» и «auto» — синонимы.
Если настройки статические, тогда, к примеру, заполняем так:
auto lo iface lo inet loopback auto eth0 allow-hotplug eth0 iface eth0 inet static address 192.168.1.94 network 192.168.1.0 netmask 255.255.255.0 broadcast 192.168.1.255 gateway 192.168.1.1
Если настройки сети раздаются через DHCP, тогда, к примеру, заполняем по-другому:
auto eth0 allow-hotplug eth0 iface eth0 inet dhcp
Если необходимо использовать одновременно несколько IP адресов на одной сетевой карте, тогда, к примеру, добавляем строки:
auto eth0:1 iface eth0:1 inet static address 192.168.0.94 network 192.168.0.0 netmask 255.255.255.0 broadcast 192.168.0.255
Для настройки DNS нужно редактировать файл /etc/resolv.conf
Статичный DNS, например:
nameserver 10.30.1.11 212.45.2.5 search gspk domain bober.gspk
Динамический DNS по DHCP вносится в /etc/resolv.conf автоматически.
Настройка в консольном интерфейсе wicd-curses
wicd — cлужба управления проводными и беспроводными сетями для Linux с Qt, GTK+ и curses интерфейсами. Эта служба наиболее удобна, если часто возникает необходимость в быстром подключении к различным сетям.
После первого запуска wicd автоматические переключает все настройки сети на DHCP.
Для управления службой в консоли необходим curses клиент wicd-curses.
# aptitude install wicd-curses
Запускам настройку:
# wicd-curses
Для применения настроек необходимо нажать «Shift+C»
Web сервер на CentOS 8
Итак, наш веб сервер centos будет состоять из трех основных компонентов — http сервера apache, интерпретатора языка программирования php и сервера баз данных mysql. Познакомимся немного с каждым из них:
- Apache — http сервер или просто веб сервер апач. Является кросплатформенным ПО, поддерживающим практически все популярные операционные системы, в том числе и Windows. Ценится прежде всего за свою надежность и гибкость конфигурации, которую можно существенно расширить благодаря подключаемым модулям, которых существует великое множество. Из недостатков отмечают большую требовательность к ресурсам, по сравнению с другими серверами. Держать такую же нагрузку, как, к примеру, nginx, apache не сможет при схожих параметрах железа.
- PHP — язык программирования общего назначения, который чаще всего применяется в веб разработке. На сегодняшний день это самый популярный язык в этой области применения. Поддерживается практически всеми хостинг-провайдерами.
- Mysql — система управления базами данных. Завоевала свою популярность в среде малых и средних приложений, которых очень много в вебе. Так что, как и php, на сегодняшний день является самой популярной бд, использующейся на веб сайтах. Поддерживается большинством хостингов. В CentOS вместо mysql устанавливается mariadb — ответвление mysql. Они полностью совместимы, возможен в любой момент переход с одной субд на другую и обратно. Я встречал информацию, что mariadb пошустрее работает mysql и люди потихоньку перебираются на нее. На практике мне не довелось это наблюдать, так как никогда не работал с нагруженными базами данных. А в обычных условиях разница не заметна.
Подопытным сервером будет выступать виртуальная машина от ihor, характеристики следующие:
Процессор | 2 ядра |
Память | 3 Gb |
Диск | 30 Gb SSD |
Хочу сразу уточнить, что разбираю базовую дефолтную настройку. Для улучшения быстродействия, повышения надежности и удобства пользования нужно установить еще несколько инструментов, о чем я расскажу отдельно. В общем случае для организации веб сервера будет достаточно того, что есть в этой статье.
Установка php в CentOS 8
Установка php в Centos 8 сильно упростилась по сравнению с предыдущей версией, потому что в базовом репозитории хранится актуальная версия php 7.2, которой можно пользоваться. Пока нет необходимости подключать сторонние репозитории, так как версия 7.2 вполне свежа и актуальна. Если у вас нет необходимости использовать что-то новее, то можно остановиться на этой версии.
Устанавливаем php в CentOS 8, а так же некоторые популярные модули, которые могут пригодиться для того же phpmyadmin.
# dnf install php php-cli php-mysqlnd php-json php-gd php-ldap php-odbc php-pdo php-opcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap php-zip
Выполним перезапуск apache:
# systemctl restart httpd
Создадим файл в директории виртуального хоста и проверим работу php:
# mcedit /web/sites/z.serveradmin.ru/www/index.php
<?php phpinfo(); ?>
# chown apache. /web/sites/z.serveradmin.ru/www/index.php
Заходим по адресу http://z.serveradmin.ru/index.php
Вы должны увидеть вывод информации о php. Если что-то не так, возникли какие-то ошибки, смотрите лог ошибок виртуального хоста, php ошибки будут тоже там. Если вам необходима более свежая версия php, то читайте статью по обновлению php 7.2 до 7.4.
Где лежит php.ini
После установки часто возникает вопрос, а где хранятся настройки php? Традиционно они находятся в едином файле настроек. В CentOS php.ini лежит в /etc, прямо в корне. Там можно редактировать глобальные настройки для всех виртуальных хостов. Персональные настройки каждого сайта можно сделать отдельно в файле конфигурации виртуального хоста, который мы сделали раньше. Давайте добавим туда несколько полезных настроек:
# mcedit /etc/httpd/conf.d/z.serveradmin.ru.conf
Добавляем в самый конец, перед </VirtualHost>
php_admin_value date.timezone 'Europe/Moscow' php_admin_value max_execution_time 60 php_admin_value upload_max_filesize 30M
Для применения настроек нужно сделать restart apache. Если у вас полностью дефолтная установка, как у меня, то скорее всего вы увидите ошибку.
Суть ошибки в том, что у нас не загружен модуль mod_php. Проверим, где он подключается. Это файл /etc/httpd/conf.modules.d/15-php.conf.
<IfModule !mod_php5.c> <IfModule prefork.c> LoadModule php7_module modules/libphp7.so </IfModule> </IfModule>
Тут стоит проверка на запуск модуля. Он загружается только, если у нас загружен модуль prefork. Давайте попробуем его загрузить принудительно. Для этого комментируем все строки, кроме основной.
LoadModule php7_module modules/libphp7.so
Проверяем конфигурацию apache.
# apachectl -t
Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe.
Получили новую ошибку. Смысл в том, что изначально apache сконфигурирован на работу модуля mpm_event, он подключается в конфиге /etc/httpd/conf.modules.d/00-mpm.conf.
LoadModule mpm_event_module modules/mod_mpm_event.so
Стандартный модуль mod_php скомпилирован с поддержкой модуля mpm_prefork. С другими он работать не будет. Таким образом, чтобы у нас нормально заработал php, нам надо вместо модуля mpm_event подключить модуль mpm_prefork. Для этого в конфиге 00-mpm.conf закомментируем подключение mpm_event_module и раскомментируем prefork.
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
После этого проверяйте конфигурацию и перезапускайте apache. Все должно заработать. Теперь в выводе phpinfo можно увидеть изменение настроек.
Я подробно разобрал эти ошибки, чтобы у вас было понимание, как все устроено и куда смотреть в случае проблем. Более подробно о работе и выборе mpm модулей читайте в официальной документации apache — http://httpd.apache.org/docs/2.4/mpm.html.
Локаль Системы По Умолчанию
Дельный Совет: Создайте потрясающий ASCII баннер из командной строки в Linux и вставьте его в предупреждающее сообщение, которое будет появляться при подключении по SSH! Читать далее →
Выполните следующие действия для смены системной локали по умолчанию (для всех пользователей).
Поддерживаемые релизы: Ubuntu-15.04, 15.10, 16.04, 16.10, 18.04.
Ubuntu-14.04
Поддерживаемые релизы: Ubuntu-9.10, 10.04, 10.10, 11.04, 11.10, 12.04, 12.10, 13.04, 13.10, 14.04, 14.10.
Откройте файл с настройками локали по умолчанию:
/etc/default/locale
Переопределите значение переменной :
LANG="en_US.utf8"
CentOS-6
Откройте файл с настройками локали по умолчанию:
/etc/sysconfig/i18n
Переопределите значение переменной :
LANG="en_US.utf8"
Необходима перезагрузка: Изменения системных настроек вступит в силу только после перезагрузки.
Check which system locales are enabled
By using the command you can see which locales are currently being used for your active terminal session. In the output above the system locale is set to .
Before setting up a different system locale you can first check which locales are enabled and ready to use on your Debian 9 VPS. You can use the following command for that purpose:
locale -a
The output should be similar to the one below:
# locale -a C C.UTF-8 POSIX en_US.utf8
3. Generate a system locale for the region you need
If you don’t have the locale that you need to be enabled on your system, it can simply be generated by using the command. Just run the following command to generate a locale for the region you need:
dpkg-reconfigure locales
Select the locale that you want to be enabled and press . On the image below you can see that we selected .
debian set locale
Once you press you should see the following output:
Generating locales (this might take a while)... en_GB.UTF-8... done en_US.UTF-8... done Generation complete.
Set Default System Locale
Cool Tip: Create the awesome ASCII banners from the Linux command line and decorate your SSH warning messages! Read more →
Perform the following steps to permanently change the system locale (for the all users).
Supported releases: Ubuntu-15.04, 15.10, 16.04, 16.10, 18.04.
Ubuntu-14.04
Supported releases: Ubuntu-9.10, 10.04, 10.10, 11.04, 11.10, 12.04, 12.10, 13.04, 13.10, 14.04, 14.10.
Edit the file with default locale settings:
/etc/default/locale
Set the variable:
LANG="en_US.utf8"
CentOS-6
Edit the file with default locale settings:
/etc/sysconfig/i18n
Set the variable:
LANG="en_US.utf8"
Reboot is required: Note that the above settings will take effect after reboot only.
Configuración del locale de todo el sistema
Para definir la configuración regional de todo el sistema, establezca la variable en .
El contenido de es una lista de líneas separadas que definen las variables del entorno: además de , es compatible con todas las variables , con excepción de .
Nota: El archivo no existe por defecto, hay que crearlo manualmente.
Sugerencia: Si la salida de durante la instalación es de su agrado, puede guardarla haciendo: mientras se encuentra en el entorno chroot.
/etc/locale.conf
LANG="es_ES.UTF-8"
He aquí un ejemplo de configuración avanzada:
/etc/locale.conf
# Habilitar UTF-8 con valores españoles. LANG="es_ES.UTF-8" # Mantener el orden predeterminado (por ejemplo, los archivos que comienzan con un '.' (punto) # se mostrarán al principio en un listado del contenido del directorio). LC_COLLATE="C" # Establecer la fecha al formato DD-MM-YYYY (comprobación con «date +%c») LC_TIME="es_ES.UTF-8"
Puede establecer la configuración regional («locale») por defecto en o bien usando , por ejemplo:
# localectl set-locale LANG="es_ES.UTF-8"
Consulte y para más detalles.
La configuración regional de todo el sistema estará completamente actualizada después de reiniciar y quedará establecida para las sesiones individuales iniciadas.
Локали в Windows
Для того, чтобы узнать, какие локали доступны в Windows, нужно зайти в панель управления, «Язык и региональные стандарты».
На вкладке «Дополнительно», в разделе «Кодовые страницы таблиц преобразования» показан список всех возможных локалей для Windows, которые можно использовать в PHP. Кодовые страницы, которые отмечены в списке, из PHP могут быть использованы по их номеру. В общем случае, использование выглядит по следующей схеме: Для России это может выглядеть как (cp1251) или (KOI8-R). Для Украины — (cp1251). Вместо длинных названий можно использовать сокращённые , , и так далее. При этом кодовая страница выставится с учётом региональных настроек, для России и Украины — 1251, для Америки — 1252. |
Единственная кодировка, с которой у меня возникли проблемы, как ни странно, оказалась UTF-8. При попытке выставить эту кодировку, выставляются все категории локалей, кроме основной. Вывод локализованных сообщений при этом идёт в cp1251.
Пример - установка локали UTF-8 на Windows |
<? // Кодировка страницы windows-1251 header('Content-Type: text/html; charset=utf-8'); echo '<pre>'; // Локаль устанавливаем UTF-8 echo setlocale(LC_ALL, 'Russian_Russia.65001'), PHP_EOL; // Но данные будут выводиться всё равно в cp1251 :((( echo strftime('%A'), PHP_EOL; ?> LC_COLLATE=Russian_Russia.65001;LC_CTYPE=Russian_Russia.1251; LC_MONETARY=Russian_Russia.65001;LC_NUMERIC=Russian_Russia.65001; LC_TIME=Russian_Russia.65001 пятница |
Пока это можно списать на внутренний механизм PHP работы со строками. С шестой версии PHP вся обработка строк должна будет вестись в UTF-8, но до тех пор надо просто знать об этом и делать поправку.
Ещё одной странностью при работе с локалями в PHP на Windows является неправильная работа с категориями локалей. Так, например, я выставляю локаль на функции времени KOI8-R, , но почему-то выставляется cp1251 на все категории. Суть проблемы я так и не понял, возможно, это просто баг (проверялось на PHP 5.2.3), а возможно, что внутренний механизм Windows просто не позволяет этого делать. Хотя по мне, так это чистой воды баг.
В общем-то, на этом можно и закончить разговор о локалях на Windows. Главное, запомнить, что локали, которые портированы из UNIX, под WIndows работают только для «галочки». Шаг влево, шаг вправо и результат будет непредсказуемым. Безопасно можно использовать только cp1251 (windows-1251) и KOI8-R, и только для .
Код — установка локали на Windows
<?php // Устновка локалей для Windows
// Кодировка Windows-1251
setlocale(LC_ALL, ‘Russian_Russia.1251’);
// Кодировка KOI8-R
setlocale(LC_ALL, ‘Russian_Russia.20866’);
// Кодировка UTF-8 (использовать осторожно)
setlocale(LC_ALL, ‘Russian_Russia.65001’);
?>
Установка MySQL в CentOS 8
Как я уже писал ранее, сейчас все большее распространение получает форк mysql — mariadb. Она имеет полную совместимость с mysql, так что можно смело пользоваться. Я предпочитаю использовать именно ее.
Устанавливаем mariadb на CentOS 8:
# dnf install mariadb mariadb-server
Запускаем mariadb и добавляем в автозагрузку.
# systemctl start mariadb # systemctl enable mariadb
Запускаем скрипт начальной конфигурации mysql и задаем пароль для root. Все остальное можно оставить по-умолчанию.
# /usr/bin/mysql_secure_installation
Не буду приводить весь вывод работы этого скрипта, там все достаточно просто и понятно. Сначала задаем пароль для root (текущий пароль после установки пустой), потом удаляем анонимных пользователей, отключаем возможность подключаться root удаленно, удаляем тестового пользователя и базу.
Файлы настроек mysql/mariadb в Centos 8 лежат в директории /etc/my.cnf.d. Для обычной работы достаточно настроек по-умолчанию. Но если вы решите изменить их, не забудьте перезапустить службу баз данных.
Перезапуск mariadb/mysql в CentOS 8:
# systemctl restart mariadb
На этом все. Базовый функционал web сервера на CentOS 8 настроен. Дальше настроим популярную панель управления mysql сервером — phpmyadmin.
Risoluzione dei problemi
Il mio terminale non supporta UTF-8
Sfortunatamente alcuni terminali non supportano UTF-8. In questo caso dovreste utilizzare un terminale differente. Questa è una lista di alcuni terminali che hanno il supporto per UTF-8:
- vte-based terminals
- gnustep-terminal
- konsole
- mlterm
- rxvt-unicode
- xterm
Gnome-terminal o rxvt-unicode non supportano UTF-8
È necessario avviare queste applicazioni da un locale UTF-8 o cadrà il supporto ad UTF-8. Abilitare il locale (o il vostro locale UTF-8 alternativo) come spiegato precedentemente e impostarlo come la lingua predefinita, quindi riavviare.
Impostare il locale a livello di sistema
Per definire il locale a livello di sistema utilizzato sul sistema, impostare la variabile in :
contiene un elenco per l’assegnazione delle variabile di ambiente in una nuova linea separata: oltre , supporta tutte le variabili , con l’eccezione di .
Nota: non esiste per impostazione predefinita e va creato manualmente.
Suggerimento: Se l’output del locale è di vostro gradimento durante l’installazione, è possibile salvare un po ‘di tempo eseguendo : mentre si è ancora in ambiente chroot.
/etc/locale.conf
LANG="it_IT.UTF-8"
Ecco un esempio di configurazione avanzata:
/etc/locale.conf
# Abilitare UTF-8 con impostazioni Italiane. LANG="it_IT.UTF-8" # Mantenere l'ordine predefinito (ad esempio i file che iniziano con un '.' # dovrebbe apparire all'inizio di un elenco di directory). LC_COLLATE="C" # Impostare la data (test con "date +%c") LC_TIME="it_IT.UTF-8"
È possibile impostare la lingua di default in anche usando , per esempio:
# localectl set-locale LANG="it_IT.UTF8"
Si veda e per maggiori dettagli.
Queste modifiche avranno effetto dopo il riavvio del sistema e sarà impostato per le singole sessioni di login .
Impostare il collation
L’ordinamento (collation), è un po ‘diverso. L’ordinamento è una stupida bestia poiché i vari locale si comportano in modo diverso. Per ovviare a potenziali problemi, Arch utilizza impostare in . Tuttavia, questo metodo è obsoleto. Per abilitare questo comportamento, è sufficiente aggiungere la seguente variabile in :
LC_COLLATE="C"
Ora il comando ordinerà i dotfile per primi, seguito da nomi di file che iniziano con maiuscole e minuscole. Si noti che senza una opzione , le applicazioni ripiegano sul valore di locale specificato da o , ma l’impostazione di verranno sovrascritti se è impostato. Se ciò crea dei problemi, assicurarsi che LC_ALL non sia impostato aggiungendo quanto segue in :
export LC_ALL=
Si noti che LC_ALL è l’unica variabile LC che non deve essere impostata in .