пятница, 29 марта 2013 г.

Редирект поддомена на папку домена nginx

Добрый день.

Сегодня появилась необходимость сделать редирект на nginx'e с поддомена http://test.test.com на http://test.com/test с передачей параметров, что бы запросы вида http://test.test.com/argument перенаправлял на http://test.com/test/argument.

Немного гугла и решение нашлось. Поделюсь им с другими ну и себе оставлю заметку.

1. Правим конфиг nginx.

# nano /etc/nginx/nginx.conf
Ищем секцию:
server {
    server_name test.test.com www.test.test.com;
    listen <ServerIP>;
    .....
}

И редактируем
server {
    server_name test.test.com www.test.test.com;
    listen <ServerIP>;
    rewrite ^(.*)$ http://test.com/test$1 permanent;
}

Небольшое описание, на сколько мне хватает понимания:
server_name - имя сервера виртуального хоста, тут определяется, что при запросе данного хоста обработка будет происходить именно в этом блоке server { ... }.

listen - задает адрес и порт на котором сервер будет принимать запросы. Порт не обязательный параметр, если он не указан, то берется стандартный 80 порт.

rewrite - первый аргумент ( ^(.*)$ ) означает, что берем аргумент к test.test.com введенный пользователем и заменяем на http://test.com/test<аргумент> и возвращаем пере направление с кодом 301.
Немного покажу на примере.
Если пользователь введет:
http://test.test.com/index.php?query=things&page=4
то после рерайта мы получим:
http://test.com/test/index.php?query=things&page=4
То что нам и нужно.

2. Перезагружаем конфиг nginx'a.
Так как мы не хотим, что бы веб-сервер перезагружался и все активные соединения прервались, протсто загрузим новый конфиг "на лету".
# /etc/init.d/nginx reload

    

пятница, 22 марта 2013 г.

Изменяем адрес phpMyAdmin в ISPmanager

Добрый день.
Сегодня понадобилось изменить адрес phpmyadmin из панели ispmanger. В данный момент на этом сервере используется nginx + apache2.

Делал это так:

1. Редактируем файл настроек phpmyadmin.
# nano /etc/apache2/conf.d/phpmyadmin.conf
Строку:
Alias /myadmin /usr/share/phpmyadmin
меняем на:
Alias /mynewpath /usr/share/phpmyadmin
Сохраняем и выходим.

2. Редактируем ispmgr.conf
# nano /usr/local/ispmgr/etc/ispmgr.conf
Строку:
extaction myadmin /myadmin/
заменяем на:
extaction myadmin /mynewpath/

3. Редактируем nginx.domain
# nano /usr/local/ispmgr/etc/nginx.domain
Строку:
location ~* ^/(webstat|awstat|webmail|myadmin|pgadmin)/ {
заменяем на:
location ~* ^/(webstat|awstat|webmail|mynewpath|pgadmin)/ {
Сохраняем и выходим.

4. Редактируем config.inc.php
# nano /usr/share/phpmyadmin/config.inc.php
И строку:
$cfg['PmaAbsoluteUri'] = 'http://'.$_SERVER["HTTP_HOST"].'/myadmin/';
заменяем на:
$cfg['PmaAbsoluteUri'] = 'http://'.$_SERVER["HTTP_HOST"].'/mynewpath/';

5. Перезапускаем веб-сервера.
# /etc/init.d/apache2 restart
# /etc/init.d/nginx restart

6. Проверяем.
Заходим в панель управления сервером ISPmanger. И в субпанели Доп.приложения жмем на PhpMyAdmin.
И видим долгожданный PhpMyAdmin.

понедельник, 11 марта 2013 г.

Подключена, не заряжается батарея ноутбука (HP Probook 4540s)

Добрый день.

Сегодня появилась проблема на моем ноутбуке, на котором установлена Windows 7. Подключив ноутбук к сети, появилась такая проблема 95% доступность (подключена, не заряжается).

Я сразу испугался, что батарея умерла.
Немного погуглив нашел решение, которое мне помогло.

Вот решение:

  • Пуск ->Завершение работы
  • Отсоедините шнур питания ноутбука
  • Извлеките аккумулятор
  • Нажмите кнопку питания и держите нажатой секунд 20-30 (эта процедура без батареи в ноутбуке/нетбуке и без питания от сети)
  • Уберите палец с кнопки питания :)
  • Вставьте аккумулятор обратно
  • Включите ноутбук
  • Подключите питание
  • После загрузки операционной системы смотрите на иконку заряда аккумулятора и вы должны увидеть ...% доступно(подключена, заряжается).
Если же вам это не помогло, то несите к специалистам в офлайне, возможно у вас умерла батарея либо контроллер блокирует питание в батарею.

воскресенье, 10 марта 2013 г.

SSH доступ по ключу или без парольная аутентификация

Добрый день.

Сегодня мне надоело вводить пароль при каждом логине по ssh на удаленный сервер и тут на помощь мне приходит аутентификация по ключу.

У меня есть 2 сервера на виртуальных машинах Ubuntu Server 12.10.
IP сервера №1: 192.168.1.126
IP сервера №2: 192.168.1.145

1. Генерируем rsa ключ на первом сервере.
$ ssh-keygen -t rsa
Появится запрос на имя файла, куда сохранить ключ, если оставить по умолчанию то пароль сохранится в /home/username/.ssh/id_rsa.
Далее запросит кодовую фразу, если вы хотите использовать подключение по ssh из скрипта. то нужно оставить это поле пустым, что бы не запрашивало, так как из скрипта невозможно ввести эту парольную фразу.

2. Копирование файла с ключом на второй сервер.
$ ssh-copy-id -i ~/.ssh/id_rsa.pub username@192.168.1.145
Запросит подтверждения, вводим yes. Далее запросит пароль второго сервера, вводим его.

3. Проверяем доступность без пароля.
$ ssh username@192.168.1.145
и видим, что мы без какого-либо пароля залогинились на второй сервер.

Повторяем аналогичные действия для второго сервера и радуемся безпарольному доступу между серверами.

пятница, 8 марта 2013 г.

Синхронизируем ПО на двух серверах Ubuntu Server 12.10

Добрый день.

У меня появилась необходимость синхронизировать установленные пакеты на двух различных серверах, также можно воспользоваться для установки ПО после переустановки системы.

Для того, чтобы создать список установленных пакетов на Ubuntu (а также и Debian).

$ dpkg --get-selections > installed.txt

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

$ sudo apt-get update
$ sudo dpkg --set-selections < installed.txt
Далее или
$ sudo apt-get -u dist-upgrade
или
$ sudo apt-get dselect-upgrade

Теперь ждем, пока установятся все пакеты :)

Установка Wordpress 3.5.1 на Ubuntu Server 12.10 (NLMP)

Добрый день.

В предыдущей статье, я рассказывал как настроить сервер nginx + php5-fpm + mysql + Ubuntu Server 12.10.

Сейчас я расскажу как на этот сервер установить Wordpress 3.5.1 (последняя сборка).

1. Поднимаем права до root.
$ sudo su
И введем пароль пользователя.

2. Загрузка и распаковка Wordpress.
Перейдем во временный каталог:
# cd /tmp/
# wget http://wordpress.org/latest.tar.gz
Распакуем:
# tar -xzvf latest.tar.gz

3. Создание базы данных.
Подключимся к MySQL с рутовыми правами (пароль мы задавали в прошлой статье).
# mysql -uroot -p
Вводим пароль рута.
mysql> create database wp;
mysql> grant all on wp.* to wp@'127.0.0.1' identified by 'password';
mysql> exit;

4. Изменение конфигурационного файла Wordpress.
Переименуем файл wp-config-sample.php в wp-config.php:
# mv wp-config-sample.php wp-config.php

И отредактируем файл wp-config.php
# nano wp-config.php

Приведем к такому виду:
define('DB_NAME', 'wp');
define('DB_USER', 'wp');
define('DB_PASSWORD', 'password');
define('DB_HOST', '127.0.0.1');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');

Остальное не трогаем.

5. Перенесем wordpress на наш сайт, который находится в /home/wp/www:
Я решил для начала сделать wordpress как подкаталог самого сайта, в надежде, что что-то еще будет ставиться на него.
# mv /tmp/wordpress/* /home/wp/www/wordpress/

6. Отредактируем /etc/nginx/conf.d/wp.org.conf.
# nano /etc/nginx/conf.d/wp.org.conf

Между location / {...} и location ~ \.php$ {...} добавим:
location @wordpress {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_split_path_info ^(/wordpress)(/.*)$;
    fastcgi_param SCRIPT_FILENAME /home/wp/www/wordpress/index.php;
    fastcgi_param PATH_INFO $fastcgi_path_info;
}

Перезагрузим nginx, чтобы изменения вступили в силу:
# /etc/init.d/nginx restart

7. Что получилось.
Теперь перейдем по адресу:
http://wp.org/wordpress/wp-admin/install.php
И видим приглашение на установку Wordpress:


А после установки получаем что-то типа такого:

Полезные ссылки:
Конфиг nginx
Установка wordpress

Nginx + php5-fpm + mysql на Ubuntu Server 12.10 (NLPM)

Добрый день.

Решил попробовать настроить nginx + php5-fpm + mysql на Ubuntu Server 12.10 (NLPM).

Как же быстренько нам обзавестись таким сервером?

1. Поднимаем права до root:
$ sudo su
что бы каждый раз не вводить sudo перед каждой командой.

2. Установка nginx
Тут ничего сложного:
# apt-get install nginx
В данный момент в репах Ubuntu лежит версия nginx-1.2.1.

3. Установка php5-fpm
и прочих плюшек.
# apt-get install php5-cli \ # работа с php5 из терминала
php5-common \ # документация и примеры
php5-mysql \ # работа php4 с mysql
php5-suhosin \ # модули для вызова suhosin функций
php5-gd \ # для работы с изображениями
php5-fpm \ # php Реализация FastCGI
php5-cgi \ # реализация CGI
php-pear \ # репозиторий приложений и модулей php
php5-mcrypt \#
-y # соглашаемся со всем.

Сразу же необходимо устранить уязвимость PHP:
# nano /etc/php5/fpm/php.ini

Ищем строку:
;cgi.fix_pathinfo = 1

и изменяем ее до такого вида:
cgi.fix_pathinfo = 0

Изменим конфиг php5-fpm, что бы он слушал 9000 порт (пригодится нам дальше, можете выбрать любой другой порт).

# nano /etc/php5/fpm/pool.d/www.conf
Ищем строку listen = /var/run/php5-fpm.sock
и приводим к виду:
listen = 127.0.0.1:9000

Сохраняем изменения и перезапускаем php5-fpm:
# /etc/init.d/php5-fpm restart

4. Создадим пользователя для работы с виртуальным хостом.
Так как я собираюсь установить на все это дело Wordpress в будущем, то создадим пользователя с именем wp:
# useradd wp -b /home/ -m \ # Создадим каталог, если его нет
-U \ # Создадим группу с таким же именем, как имя юзера
-s /bin/false # Делаем так, что бы у данного пользователя не было консоли.

При создании данного пользователя. так же создалась одноименная группа wp.
Зададим пароль для нового пользователя:
# passwd wp
вводим дважды придуманный пароль.

Создадим необходимые, для работы WEB сайта, директории:
# mkdir -p \ # создать недостающие родительские каталоги, для каждого каталога
-m 755 \ # зададим права доступа для созданных каталогов
/home/wp/www
# mkdir -p -m 754 /home/wp/logs

Предоставляем пользовалею wp права на них:
# chown -R wp: /home/wp/www/
# chown -R wp: /home/wp/logs/

Предоставим nginx доступ в домашнюю директорию пользователя wp, добавив пользователя www-data в группу wp:
# usermod -a \ # добавить пользователя в дополнительную группу
-G wp www-data # имя групп(ы) в которые добавить


5. Создадим виртуальный хост nginx
Создадим виртуальный хост wp.org:
# nano /etc/nginx/conf.d/wp.org.conf

С содержимым:
(приводятся только базовые настройки, если нужны плюшки, гугл в помощь)
server {
    listen 80;
    root /home/wp/www;
    
    access_log    /home/wp/logs/nginx.access.log;

    server_name wp.org www.wp.org;

    location / {
        index index.php index.html index.htm;
    }
   
    location ~ \.php$ {
        fastcgi_pass    127.0.0.1:9000;
        fastcgi_index   index.php;
        include            fastcgi_params;
    }
}

Перезапустим nginx, чтобы изменения вступили в силу:
# /etc/init.d/nginx restart

6. Установка mysql.
# apt-get install mysql-server mysql-client
При установке введите пароль для root пользователя MySQL.

7. Тестируем работоспособность.
Создадим тестовый файл, чтобы проверить работоспособность PHP5:
# nano /home/wp/www/test.php

С содержимым:
<?php phpinfo();?>

ВАЖНО! так как я все это делаю на виртуальной машине, то мне необходимо с хост машины подключиться к домену wp.org, но так как я буду обращаться к реальному адресу wp.org. то нужно сделать небольшое изменение в хост системе.
Так как в данный момент моя хост система это Windows, то делаем так:

Открываем файл:
C:\Windows\System32\drivers\etc\hosts
и добавляем такие строки:

<IP-адрес виртуальной машины> wp.org
<IP-адрес виртуальной машины> www.wp.org

Теперь открываем свой любимый браузер и переходим по адресу:
wp.org/test.php
и видим радостную картину: