Увеличить время сессии в PhpMyAdmin

Мне просто не удобно работать, когда сессия в PhpMyAdmin истекает каждые 30 минут, а учитывая то, что Мозилла любит использовать кеш и порой не к месту… В общем, увеличить время сессии можно, для этого открываем config.inc.php находим там:

$cfg[‘LoginCookieValidity’] = <your_new_timeout>;

И меняем на необходимое вам значение, для меня оптимальным является 28800. И еще один момент, убедитесь в php.ini что у вас разрешена сессия такой длинны, необходимый вам параметр —

session.gc_maxlifetime

Количество просмотров :9062

Быстрая настройка Nginx+Apache на Centos 5.x с использованием VirtualHost

И так, начинаем с установки Nginx. Для этого нам будет необходим CentAlt репозитарий, инструкция по установке тут. После установки репозитария:

yum install nginx

Теперь перенастроим Apache, для этого открываем etc/httpd/conf/httpd.conf и меняем там NameVirtualHost на:

NameVirtualHost 127.0.0.1:8080

так же меняем открывающий таг каждого виртуального хоста:

<VirtualHost 127.0.0.1:8080>

В принципе с Apache-м все, переходим в /etc/naginx и открываем nginx.conf. И так, общие параметры:

user nginx;
worker_processes 4;
error_log /var/log/nginx/error.log debug;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}

Параметры http сервера:

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main ‘$remote_addr — $remote_user [$time_local] $status ‘
‘»$request» $body_bytes_sent «$http_referer» ‘
‘»$http_user_agent» «http_x_forwarded_for»‘;
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
#Архивирование контента
gzip on;
gzip_min_length 1100;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain application/xml application/x-javascript text/javascript text/css;
gzip_disable «msie6»;
gzip_disable Firefox/([0-2]\.|3\.0);
gzip_disable Chrome/2;
gzip_disable Safari;
gzip_comp_level 3;

И теперь для каждого Виртуального хоста должна быть следующая запись:

server {
listen 80;
server_name eddnet.org www.eddnet.org;
access_log /var/log/nginx/host.access.log main;
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 10m;
}

Если вы ходите кешировать какой-то контен, то просто добавьте в описание:

location /uploads/files {
add_header Content-type application/octet-stream;
internal;
}
location /uploads/img {
#Кеширум картинки месяца на 4
expires 4M;
#Кешируем везде (и на прокси и на клиентах)
add_header Cache-Control public;
}
location /cache/tumb/ {
#Кеширум картинки месяца на 4
expires 4M;
#Кешируем везде (и на прокси и на клиентах)
add_header Cache-Control public;
}

Теперь полный конфиг, что бы не запутаться что куда и как:

user nginx;
worker_processes 4;
error_log /var/log/nginx/error.log debug;
pid /var/run/nginx.pid; events {
worker_connections 1024;
}
## Timeouts
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main ‘$remote_addr — $remote_user [$time_local] $status ‘
‘»$request» $body_bytes_sent «$http_referer» ‘
‘»$http_user_agent» «http_x_forwarded_for»‘;
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
gzip on;
gzip_min_length 1100;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain application/xml application/x-javascript text/javascript text/css;
gzip_disable «msie6»;
gzip_disable Firefox/([0-2]\.|3\.0);
gzip_disable Chrome/2;
gzip_disable Safari;
gzip_comp_level 3; server {
listen 80;
server_name eddnet.org www.eddnet.org;
access_log /var/log/nginx/host.access.log main;
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 10m;
}
}
server {
listen 80;
server_name wot-news.com www.wot-news.com;
access_log /var/log/nginx/host.access.log main;
root /var/www/vhosts/wot-news.com/http;
expires epoch;
location / { proxy_pass http://127.0.0.1:8080/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 10m;
}
location /uploads/files {
add_header Content-type application/octet-stream;
internal;
}
location /uploads/img {
#Кеширум картинки месяца на 4
expires 4M;
#Кешируем везде (и на прокси и на клиентах)
add_header Cache-Control public;
}
location /cache/tumb/ {
#Кеширум картинки месяца на 4
expires 4M;
#Кешируем везде (и на прокси и на клиентах)
add_header Cache-Control public;
}
}
}

Количество просмотров :19803

Bash Удаляем пустые папки

Тут на медне у меня ушли в мир иной пара винтов на сервере, которые были в одной LVM разделе. Бакапы давно никто не снимал, а информация с них была нужна. В общем после восстановления раздела, и проходы по нему fsck-ом, образовалась масса папочек, и многие из них были пустыми, так вот, что бы удалить все пустые папки, вы можете воспользоваться следующим:

find -depth -type d -empty -exec rmdir {} \;

Количество просмотров :5488

Версия вашего Linux дистрибутива

Казалось бы, вопрос простой, а вот даже хорошие спецы забывают как можно определить текущую версию системы. И так, самый простой способ, это выполнить:

cat /etc/*-release

мой результат — CentOS release 5.6 (Final)

Другой способ:

cat /etc/issue

Для того, что бы узнать версию ядра —

cat /proc/version

или

uname -a

Количество просмотров :1277

PHP Warning: PHP Startup: fileinfo: Unable to initialize module

Вот такое предупреждение я стал получать при выполнении команды php -v:

PHP Warning: PHP Startup: fileinfo: Unable to initialize module

решение оказалось банально простым, необходимо выполнить :

pecl install fileinfo memcache

Количество просмотров :3494

Переводим Active Directory «LastLogon:» в Unix timestamp

В AD время храниться как количество 100-наносекундных интервалов, прошедших с 0 часов от 1 января 1601 года. Вряемя всегда хранится по Гринвичу. В данном формате храняться атрибуты LastLogon, LastLogonTimestamp и LastPwdSet. Для перевода в Unix timestamp вы можете воспользоваться следующей формулой:

$UnixTimestamp = ($WindowsTimeStamp/10000000)-11676009600

В самой Винде есть утилита w32tm при помощи которой вы можете конвериторовать:

C:\WINNT>w32tm /ntte 128905137323318000
149195 18:15:32.3318000 — 6/26/2009 12:15:32 PM (local time)


Количество просмотров :3457

ZendOptimizer на CentOS 5

Загружаем Zend Optimizer 3.3.9 (ссылка для линукс 32битной версии):

wget http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz

Распаковываем

tar -xzf ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz

Переходим в распакованную директорию и сразу в директорию с версиями

cd ZendOptimizer-3.3.9-linux-glibc23-i386/data

6.Выбираем нужную вам версию по установленному у вас PHP и перемещаем в нужную нам директорию. Пример для версии PHP 5.2.*

cp 5_2_x_comp/ZendOptimizer.so /usr/local/lib

На момент выпуска версии ZendOptimizer 3.3.9 он еще не поддерживает PHP 5.3.* , по этому если у вас установлен PHP 5.3.*, придется переставить на PHP 5.2.*

Переходим в эту же самую директорию

cd /usr/local/lib

Редактируем файл php.ini в который добавляем строку с указанием где у нас установлен ZendOptimizer

zend_extension=/usr/local/lib/ZendOptimizer.so

Перегружаем Apache

service httpd restart

Количество просмотров :1977

Установка Utter Ramblings репозитария

И так, устанавливаем Utter Ramblings репозитарий, для этого сначала добавляем GPG ключь:

rpm —import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

Далее создаем файл /etc/yum.repos.d/utterramblings.repo с таким содержимым:

[utterramblings]
name=Jason’s Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

Количество просмотров :1618

Php несколько простых примеров не безопасного кода

И так, недавно я столкнулся с кодом написанным неким Фрилансером для конторы в которой я работаю. И так, вот кусочек его кода:

<?php
if(!$top)
$top="top_home.php";
include($top)
?>

Это код обрабатывал ссылку такого типа:

www.server.com/index.php?top=page.php

Но, что бы это все работало пришлось в php.ini включить переменную:

register_globals = On

а это абсолютно небезопасно, и мы попросили его переделать это, и вот что он сделал:

<?php
if(!$_GET[top])
$_GET[top]="top_home.php";
include($_GET[top])
?>

но это не намного безопасней предыдущего. Например, при помощи вот такого запроса можно просмотреть файлы системы:

www.server.com/index.php?top=/etc/passwd

Я бы порекомендовал :

1. Используйте fopen()для открытия файлов, сохраняйте в переменную и затем выводите используя print
2. Не используйте include();
3. Проверяйте входящие переменные при помощи регулярных выражений, как пример:

<?php
if (ereg("^[a-z]+\.html$", $_GET[cen])) {
echo "Good!";
} else {
die("Try hacking somebody else's site.");
}
?>

4. Сохраняйте в логи всякие попытки взлома или отсылайте уведомления на почту. Вы конечно же не сможете привлечь нарушителя к закону, но вы сможете использовать эту информацию для блокировки данного пользователя.

Минимум необходимых опций для обеспечения безопасности, в php.ini:

allow_url_fopen = Off
enable_dl = Off
expose_php = Off
error_log = /var/log/error_php.log

Вот и все, не совершайте глупых ошибок, и будьте аккуратны


Количество просмотров :2774

Простые операции с LVM

Создание двух Физических Разделов:

dd if=/dev/zero of=/dev/sdb1 bs=1k count=1
dd if=/dev/zero of=/dev/sdb2 bs=1k count=1

Далее создаем разделы:

pvcreate /dev/sdb1
pvcreate /dev/sdb2

Создаем Логическую Группу которая будет содержать Логический Раздел

vgcreate users /dev/sdb1 /dev/sdb2

Создаем Логический Раздел

lvcreate -L30M -n lv1_users users

Создание файловой системы на логическом диске

mkfs.ext3 /dev/users/lv1_users

теперь можно маунтить раздел в директорию

mkdir /mnt/users
mount -t ext3 /dev/users/lv1_users /mnt/users

Количество просмотров :1403