Тэг ‘server’

Plesk и open_basedir

Столкнулся с таким положением дел: при попытке заинклудить какой-нибудь файлик командой типа include (’include/inc.inc’) - с указанием каталога относительно текущего, сервер выдал что-то вроде
blablabla open_basedir restriction in effect. blablabla ...
Мол не могу и всё.
Недоразуменьице получается. В плеске по умолчанию open_basedir включено. (если кому интересны подробности - пошукайте или в переводе). Как вариант лечения предлагаю подсмотренную на каком-то забугорном сайте пилюльку:

  1. Заходим по  (SSH)
  2. Создаем новый файл:
    vi /etc/httpd/conf.d/blabla_openbasedir_removal.conf
  3. Тыкаем [INS]ert на клавиатуре, чтобы перейти в режим ввода текста и пишем:
    <DirectoryMatch /var/www/vhosts/(.*)/httpdocs/>
         php_admin_value open_basedir none
    </DirectoryMatch>
  4. Тыкаем в кнопку (ESC) - переходим в командный режим; 
  5. Нажимаем [:wq] чтобы сохранить файл и выйти 

Теперь open_basedir нас беспокоить не должна…

Чуть не забыл.. после всего этого надо веб-сервер перезапустить. Либо service apache restart, либо service httpd restart… (Конечно, не исключено, что “служба” называется по-другому… Тогда должен помочь reboot :)

Думаю, понятно, что, если вместо (.*)  написать mydomainname.ru, то сработает это только для конкретного домена.

Кстати, Warning!!! :) Safe Mode was removed in PHP 6.0.0.

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

HTTP-заголовки ответа сервера

Кратенькая шпаргалка по наиболее распространенным HTTP-заголовкам ответа сервера:

3xx: Redirection (Перенаправление)

HTTP-301 Moved Permanently (Перемещено окончательно)
Сообщает браузеру-(Http-клиенту), что запрошенный документ окончательно перенесен и теперь располагается по новому URI, указанному в заголовке Location

HTTP/1.1 301 Moved Permanently
Location: http://www.site.ru/main_page.html

301 редирект в htaccess:
Redirect 301 / http://www.301-redirect.ed/new-page.htm
Redirect 301 /old-page.htm http://www.301-redirect.ed/new-page.htm
или
RedirectPermanent / http://www.301-redirect.ed/

301 редирект с использованием RewriteRule
RewriteEngine on
RewriteCond %{HTTP_HOST} ^mysite\.com
RewriteRule ^(.*)$ http://www.mysite.com/$1 [R=permanent,L]
RewriteRule ^(.*)$ http://www.mysite.com/$1 [R=301,L]

301 редирект на php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.newdomain.ru/newdir/newpage.htm");

302 Found (Найдено)
Документ временно доступен по другому URI указанному в заголовке Location. Такое перенаправление используется в PHP по умолчанию (при указании “Header(’Location:URI’);” без дополнительных параметров)

HTTP/1.1 302 Found
Location: http://www.site.ru/temporary_page.html

4xx: Client Error (Ошибка клиента)

400 Bad Request (Плохой запрос)
Синтаксическая ошибка в запросе
401 Unauthorized (Не авторизован)
Для доступа к URI требуется авторизация (заголовок “WWW-Authenticate”)
403 Forbidden (Запрещено)
Ограничения на сервере. Было бы неплохо сообщить, с чем связано.
404 Not Found (Не найдено)
По запрошенному адресу никто не проживает…
410 Gone (Удалён)
Адресат убыл в неизвестном направлении. Используется вместо 404, если документ раньше был.

5xx: Server Error (Ошибка сервера)

Ошибки 500+ возникают из-за неправильных настроек/операций на сервере.
500 Internal Server Error (Внутренняя ошибка сервера)
“Неопознанная” внутренняя ошибка. Если Вы как разработчик увидели 500 ошибку - проверьте .htaccess, разрешения на изменение конфигурационных переменных (время выполнения скрипта и т.д.)

501 Not Implemented (Не реализовано)
Моя твоя не понимает.

502 Bad Gateway (Плохой шлюз)
Ответ выдается, когда сервер выполняет функцию промежуточного звена..

504 Gateway Timeout (Шлюз не отвечает)
Промежуточный сервер не дождался ответа от следующего звена.

Ссылки: Все коды состояния на википедии и Протокол управления кофеваркой

UPD Справедливости ради, следует заметить, что существует кофеварка IMPRESSA F90 с кривым “официальным” подключением к интернет от фирмы Jura ( на сайте производителя - http://www.jura.ru/Service107_65.aspx)

upd2 сервис просмотра http заголовков (подмена UserAgent) http://www.bertal.ru/
http://www.be1.ru/stat/?url=http%3A%2F%2Fwww.searchengines.ru%2F

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

Коды ошибок Mysql

Список кодов ошибок Mysql

смотреть все коды ошибок MySQL (Eng)

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

Оптимизация 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  |  Нет комментариев »

mod_rewrite Примеры

Перенаправление на сайт с www

# нерабочий вариант:
RewriteCond %{SERVER_NAME} !^www.*$
RewriteRule ^(.*)$ http://www.%{SERVER_NAME}/$1 [R]

# рабочий вариант:
RewriteCond    %{HTTP_HOST}            !^www\.
RewriteRule    (.*)                http://www.%{HTTP_HOST}/$1 [R=301,L]

# Перенос наоборот - переносим все что с “www” на БЕЗ “www”
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [L,R=301]

Перенаправление http на https и наоборот (вместе не использовать!):


# с http на https
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [L]
# с HTTPS на HTTP:
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]

Добавляем закрывающий слэш в конце

# этот вариант почему-то перебрасывал с домена www. на домен без www
RewriteRule ^([a-zA-Z0-9/-]*[^/])$ $1/ [R=301]
#Слегка модифицировал, и редирект стал осуществляться на тот же домен:
RewriteRule ^([a-zA-Z0-9/-]*[^/])$ http://%{HTTP_HOST}/$1/ [R=301]

Как склить index.php , index.html index.asp итд с главной страницей сайта (с корнем:


# при нулевой строке запроса перенаправляем ПОЛНЫЕ вхождения
RewriteCond %{REQUEST_URI} ^/(index.aspx|default.aspx|default.asp|index.asp|index.html|index.htm|index.php)$
RewriteCond %{QUERY_STRING} ^$
RewriteRule .* / [R=301,L]
# проверить на работоспособность
RewriteCond %{REQUEST_URI} ^/index\.(.+)$
RewriteRule .+ / [R=301,L]
# вариант не совсем корректный, т.к. %{THE_REQUEST}
#содержит запрос целиком: GET /index.php HTTP/1.1
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ http://www.yoursite.ru/ [R=301,L]

RewriteCond %{THE_REQUEST} index.html
RewriteRule index.html / [R=301,L]

Убираем index.php из адресов (перенаправляем со страниц вида index.php/page/3 на /page/3):

RewriteCond %{THE_REQUEST} index.php
RewriteRule ^index.php/(.*) /$1 [R=301,L]

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