Тэг ‘apache’

Apache2 could not reliably determine the server’s fully qualified domain name using 127.0.0.1

Если при запуске (или при выполнении restart, reload) Apache выдает ошибку

Apache2 could not reliably determine the server’s fully qualified domain name using 127.0.0.1

это значит, что он не может определить имя хоста.

В некоторых статьях-заметках рекомендуется указывать в файле /etc/apache2/conf.d/vhosts.conf директиву
ServerName localhost,
однако правильнее настроить имя сервера в файле  /etc/hosts

127.0.0.1 localhost
89.0.0.0 my-server.ru

Опубликовано Март 21, 2012 | автор: levik  |  Комментарий (1) »

RewriteEngine, RewriteRule и русские буквы в .htaccess

Иногда требуется в .htaccess сделать редирект (внутренний или внешний) при помощи mod_rewrite для ЧПУ адресов с русскими буквами. Но проблема в том, что русские SEO-URL не обрабатываются в .htaccess (за исключением маски .* - любой символ)

Варианты вроде
RewriteRule %EF%E8%F1%FC%EC%EE letter.htm [R=301,L]
RewriteRule Письмо letter.htm [R=301,L]
# пробуем экранировать символ процента
RewriteRule ^(\%) index.php?url=$1

И всё-таки, как написать RewriteRule при кодировании русских ссылок?

RewriteRule ^([0-9-А-Я]+)(/)? index.php [R=301,L]

Методом проб и ошибок установлено, что в правилах, написанных в .htaccess не распознаётся символ %

Один из работающих вариантов, который перенаправляет все обращения к адресу

AddDefaultCharset UTF-8
RewriteRule ^(.*) index.php?url=$1 [L]

Естественно, его следует дополнить условиями (если файл или каталог не существует)

“Нормального” решения, как преобразовать конкретный русский адрес именно в .htaccess я не нашёл.
www.site.ru/русский_URL.html
/%EF%E8%F1%FC%EC

Вот такой код работает, однако перечислять все русские буквы в .htaccess - не есть хорошо
RewriteRule ^([абвгдеёжзийклмнопрстуфхцчшщьыъэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯa-zA-Z0-9\%]+)$ index.php?url=$1

Клёвый гайд по RewriteRule http://www.egoroff.spb.ru/portfolio/apache/rewriteguide.html

Опубликовано Август 24, 2011 | автор: levik  |  Комментарии (5) »

awstats - русификация, кодировки и кракозябры в ключевиках

На многих хостингах встречал установленный awstats. При этом, в разделе переходы по ключевым фразам (Search Keyphrases) вместо привычных русских букв - непонятные кракозябры (ну и англицкие буквы с цифрами проскакивают)

1. смотрим кодировку файла (вид-кодировка- UTF-8). Если после изменения кодировки кракозябры стали русскими буквами, то awstats корректно обрабатывает, но некорректно выводит. Заглядываем в код и.. ищем строчку:

<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">

Если кодировка не русскоязычная, следует в файле

/usr/local/etc/awstats/awstats.mysite.com.conf

поменять Lang=”auto” на Lang=”ru”

2. Если кодировка русскоязычная, но “не та” (Utf-8 вместо cp1251 или наоборот) -
исправляем в /usr/local/www/awstats/cgi-bin/lang/awstats-ru.txt
PageCode=windows-1251 на PageCode=utf-8 (или наоборот - выбрать нужное)

3. Еще полезно будет раскомментировать строку конфигурационного файла, включающую decodeutfkeys - помогает, когда поисковые строки в разных кодировках.

Конфиги awstats искать в каталогах (варианты есть, но предсказуемые)

/etc/awstats/awstats.conf
/usr/local/etc/awstats/

http://www.legco.net/entry-348.php

Опубликовано Март 13, 2010 | автор: levik  |  Нет комментариев »

Apache, htaccess и настройки PHP (php_value и php_flag)

Правильная (точнее, желаемая) работа PHP интерпертатора зависит от правильной конфигурации. Конфигурационные настройки PHP или директивы php.ini (php_value или php_flag) можно задавать несколькими способами:

  • в файле php.ini (скорее всего, если у Вас не выделенный сервер, то туда Вас не пустят. Хотя, некоторые хостинги предоставляют возможность создать собственный php.ini. Можно уточнить у хостинг-провайдера… Но в любом случае переживать пока рано, ведь это только первый способ;
  • если PHP используется как модуль Apache (или другого веб-сервера), то можно прописать настройки в файле httpd.conf (файл настроек веб-сервера, к которому пользователя простого хостинга тоже навряд ли допустят);
  • в файле .htaccess (в очередной раз речь про web-сервер, к примеру, Apache) - в последнее время обработка этого файла считается нормой для хостинга. И собственные настройки PHP, как правило, устанавливаются в этих файлах;
  • непосредственно в скриптах php с использованием функции ini_set().

Мы рассмотрели все возможные способы задания конфигурационных настроек интерпретатора PHP (Да, если кто знает другие варианты - сообщите.)

Есть еще маленькое “но”. Не все переменные php_value разрешено изменять в файле .htaccess (в зависимости от настроек сервера, изменение конфигурации PHP пользователем вообще может быть запрещено)

Некоторые настройки (:

php_value register_globals on
php_flag session.use_trans_sid off
php_flag session.use_only_cookies on
php_value max_execution_time 60
php_value upload_max_filesize 8M
php_flag display_errors off
php_flag log_errors on
php_value error_reporting 2047
php_value error_log log-file.txt

UPD шпаргалка по разрешениям изменений настроек PHP:
PHP_INI_USER = 1 значение может быть установлено в пользовательских скриптах
PHP_INI_PERDIR = 2 значение может быть установлено в php.ini, .htaccess или httpd.conf
PHP_INI_SYSTEM = 4 значение может быть установлено в php.ini или httpd.conf
PHP_INI_ALL = 7 значение может быть установлено где угодно

Ищем ошибки в PHP-скриптах (белый экран)
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

Опубликовано Июнь 27, 2009 | автор: levik  |  Комментарий (1) »

htaccess или конфигурируем веб-сервер Apache

.htaccess - служебный файл веб-сервера Apache (и не только), в котором можно указать дополнительные настройки для отдельного сайта или каталога.

Краткая шпаргалка по настройкам в htaccess:
(настройки php в .htaccess - php_flag и php_value в отдельной статье)

# Кодировка страниц по умолчанию
AddDefaultCharset utf-8

ErrorDocument *собственные страницы ошибок
ErrorDocument 404 /404.htm

#
Options +FollowSymlinks

# запрет выдачи списка файлов при отсутствии индексного файла
Options -Indexes

# запрещаем выводить в списке файлов файлы по маске
Options Indexes
IndexIgnore *.php* *.pl

#разрешаем запуск CGI
Options +ExecCGI

# индексный файл по умолчанию - DirectoryIndex указывается для каталога в котором расположен htaccess и всех нижележащих
DirectoryIndex index.html index.shtml index.pl index.cgi index.php

Запрет доступа к файлам - Deny, Allow

# Запрещаем доступ для всех
Order Deny,Allow
Deny from all
# или запрещаем для всех, кроме “избранных”
Order Deny,Allow
Deny from all
Allow from local.
Allow from 97.23.41.14, 97.23.41.15

#запрещаем просматривать изображения всем, кроме пользователя с IP-адреса
#синтаксис регулярных выражений
<FilesMatch “\.(gif|jpe?g|png)$”>
Order Deny,Allow
Deny from all
Allow from  97.23.41.15
</FilesMatch>

Авторизация пользователя средствами htaccess

AuthName “Control Panel”
AuthType Basic
AuthUserFile /home/www/users/levik/secure/.htpasswd
require valid-user

полный путь к файлу можно определить, выполнив в PHP скрипте команду echo __FILE__;

Считаете нужным добавить? Отпишитесь в комментариях.

Опубликовано Ноябрь 20, 2008 | автор: levik  |  Нет комментариев »

Собственная 404 страница - страницы не существует

404 pages found

Довольно часто, приходя на различные сайты можно увидеть красиво оформленную страницу, на которой значится “Страницы не существует, попробуйте посмотреть что-нибудь ещё”. “Так почему же у меня на белом фоне огромадными буквами высвечивается 404 ERROR?”

Будем исправлять! Тем более, что это не так сложно, а выйгрыш, пожалуй, будет значителен.

Делаем собственную страницу 404 ошибки

“Рецепт” создания своей собственной 404 страницы прост: читать дальше о создании собственной 404 страницы

Опубликовано Сентябрь 12, 2008 | автор: levik  |  Нет комментариев »

Оптимизация web-сервера Apache (черновик)

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

Настраиваем Apache - редактируем файл httpd.conf:
# TimeOut: The number of seconds before receives and sends time out.
TimeOut 60

# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to “Off” to deactivate.
KeepAlive On

# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
MaxKeepAliveRequests 100

# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
KeepAliveTimeout 10

## Server-Pool Size Regulation (MPM specific)

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# ServerLimit: maximum value for MaxClients for the lifetime of the server
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves

StartServers 3
MinSpareServers 3
MaxSpareServers 10
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000

KeepAlive On имеет смысл ставить на сайтах с относительно большим количеством изображений. Оптимальное время “таймаута” и количество MaxKeepAliveRequests , скорее всего, имеет смысл подбирать “опытным” путем. Обычно не больше 10-15 секунд. Для файл-хостингов лучше будет выставить KeepAlive Off

MinSpareServers и MaxSpareServers - Spare - “запасной” - неиспользуемые процессы (баланс ресурсов процессора и памяти - на запуск процесса требуется некоторое время, которое можно “сэкономить”, если свободный процесс уже висит в памяти.. Однако, если процессов слишком много, то они занимают лишнюю память)

ServerLimit - максимальное значение MaxClients на “время жизни” процесса;
MaxClients - максимальное количество одновременно запущенных процессов (по сути - клиентов) - чем больше, тем больше одновременных запросов можем обработать (соответственно, занимая больше памяти и используя больше процессорных ресурсов);
если сервер уже обслуживает MaxClients запросов, новые запросы попадут в очередь, размер которой устанавливается с помощью директивы ListenBacklog;
MaxRequestsPerChild - максимально возможное количество “дочерних” процессов - при переполнении дочерний процесс автоматически завершается

Для изображений (более-менее постоянных) имеет смысл выставить значение Expires, например на месяц
ExpiresActive On
ExpiresByType image/gif "access plus 30 days"
#ExpiresByType image/jpeg "access plus 20 days"
ExpiresByType image/jpeg A2592000

материалы по оптимизации Apache (пополняется)

http://www.greenmice.info/node/98
http://www.salex.ru/book/book.php?httpd_prefork
http://www.xela.ru/2009/03/nastrojka-httpdconf-na-vps-pod-unix-apache/
http://linux.yaroslavl.ru/docs/serv/

memory - информация о CPU и загрузке процессора в реальном времени

netstat -atun | grep -i ‘wait’ | wc -l - количество открытых соединений в режиме ожидания
netstat -atun | grep 'WAIT' | wc -l

Узнать версию ядра и самого линукса и дополнительную информацию:

cat /etc/issue
uname -a
cat /proc/version

Опубликовано Январь 17, 2008 | автор: levik  |  Комментарий (1) »

mod_rewrite Примеры

При помощи mod_rewrite можно обрабатывать те или иные адреса. Возможности модуля достаточно велики - ведь используются регулярные выражения. Однако, “типовых” задач не так уж много. Итак… сборник “шпаргалок” по mod_rewrite для начинающих.

Опубликовано Октябрь 5, 2007 | автор: levik  |  Комментарии (4) »