О web технологиях с любовью
In: codeigniter| linux| work
16 Апр 2009Отсутствующие локали
При отсутствии на сервере нужной локали, например ru_RU.CP1251, можно легко её добавить:
localedef ru_RU.CP1251 -i ru_RU -f CP1251
после этого проверяем, появилась ли она, командой
locale -a | grep ru
Переменные окрежения
Как известно, большая часть неочевидных проблем в линуксе связана с переменными окружения.
Чтобы понять, как так случилось что из консоли ваш демон запускается и работает правильно, а при запуске из init.d что-то не так (например у меня переставал коннектиться к Ораклу, или слетала локаль), достаточно сделать тестовый вывод переменных среды окружения в инит скрипте.
На примере стартового скрипта php-fpm, добавляем в него после #/bin/bash следующую строку:
export > /tmp/envvars и перезагружаемся. Смотрим что там есть, перегружаем руками и смотрим что изменилось. Делаем выводы каких переменных окружения не хватает, и добавляем их прямо в тестовый скрипт. Не слишком красиво, но чаще всего достаточно и такого решения.
Rewrite Rule для CodeIgniter и nginx
В интернетах куча вариантов этих rewrite-rule’ов, у меня же заработал такой вариант (полный конфиг vhost’а):
server {
listen 80;
server_name yourhost.com;
index index.php;
root /www/yourhost.com/htdocs;
access_log logs/yourhost.com_access.log;
location / {
#error_page 404 = 404.html;
if (-f $request_filename) {
expires max;
break;
}
if ($request_filename !~ (js|css|images|robots\.txt|index\.php.*) ) {
rewrite ^/(.*)$ /index.php/$1 last;
}
}
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include /usr/local/nginx/conf/fastcgi_params;
}
location ~ /index.php/
{
include /usr/local/nginx/conf/fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/yourhost.com/htdocs/index.php;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param HTTP_REFERER $http_referer;
fastcgi_pass 127.0.0.1:9000;
}
}
Ну и в конфиге самого CodeIgniter’a нужно указать что $config['uri_protocol'] = “REQUEST_URI”;
Этот блог является маленьким складом мыслей, ссылок, и всяческих полезностей. Ведется для себя, но если будет кому-то интересен - я только рад.