Работает ли Daemon Tools под Windows 7?

Получили при установке сообщение вроде: “This program require at least Windows 2000 with SPTD 1.60 or higher. Kernel debugger must be deactivated” ?

Решение:

Откройте редактор реестра, найдите ключ

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Servic es\SPTD

и измените значение Start на 4.

Теперь перезагрузите компьютер и вернитесь к этому же ключу. Смените права доступа к ключу – нажмите правой кнопкой на ключе, “Разрешения…” и выставьте “Полный доступ” для всех.

Удалите этот ключ, перезагрузите компьютер и установите Daemon Tools еще раз.

Остап Бендер, как известно, знал 400 относительно честных способов отъема денег у населения. Но и он позавидовал бы нынешним кидалам в умении “развести” на деньги. По нашим наблюдениям, автомобилисты становятся жертвами преступников наиболее часто. По словам майора милиции Валерия Древило, эта категория людей так привлекает мошенников по нескольким причинам. Во-первых, у водителей практически всегда есть с собой деньги (как минимум, на бензин), во-вторых, автомобилист – не самая бедная прослойка населения: на последние “кровные” машину не покупают.

Способов “развода” на сегодня придумали множество. Мы расскажем о наиболее популярных из них.

Покупка в группах

“Автомобиль за 300-500 грн. в месяц” – такое объявление на рекламном плакате часто можно увидеть в крупных торговых центрах рядом с новеньким автомобилем, который призывно ждет своего хозяина. Деньги вроде небольшие – почему бы не поинтересоваться условиями? А вдруг правда?

Уловка мошенника. Рядом с автомобилем всегда стоит стол, за которым сидит приятный на вид молодой человек или девушка с “честными” глазами. Предлагают здесь купить автомобиль по особой схеме: 1000 человек скидываются по 300 грн. и на эти деньги покупают 5 автомобилей по 60 тыс. грн. за штуку. Между участниками группы проводится розыгрыш, и каждый двухсотый получает автомобиль. Остальные продолжают платить по 300 грн. и привлекают новых участников “лотереи”. В следующем месяце разыгрывают еще 50 автомобилей. Цикл продолжается до тех пор, пока все участники группы не получат по автомобилю. Как тут не поверить в чудо и удачу? Доверие подкрепляется еще и тем, что сотрудник компании-пирамиды показывает кучу документов, лицензий, гарантий.

На самом деле. Платить по 300 грн. в месяц можно годами. Каждый месяц будут приходить уведомления о том, что в этом месяце “выиграли не вы”. В любой момент из группы можно выйти, но есть одна незадача – вступительный взнос и ежемесячные взносы не возвращаются. Нам в редакцию присылают письма читатели, которые пытаются получить автомобиль по 5-6 лет. “За это время я бы уже давно выплатил обычный кредит”, – пишет Алексей Н. из Донецка.

Полезный совет. Категорически не советуем участвовать в каких-либо схемах, напоминающих пирамиду хотя бы отдаленно. Помните, что бесплатный сыр бывает только в мышеловке.

Комментарий психолога. По словам психолога Центра практической психологии и психоанализа “Имаго” Татьяны Назаренко, наиболее уязвимы для участия в таких группах люди, психика которых находится в угнетенном состоянии (стресс, депрессия). “В ситуациях, когда человеку очень сложно справиться с восприятием реальности, психика человека начинает регрессировать. Для того, чтобы защититься от тревоги, человек начинает пользоваться “магическим” мышлением. Человеку начинает казаться, что с помощью определенных ритуалов, действий (например ежемесячных взносов) он может присоединиться к какой-то большой и всесильной структуре, и это даст ему возможность обладать чем-то таким, что другим недоступно, не прилагая к этому серьезных усилий”, – говорит эксперт. Read the rest of this entry »

Zend Studio 7: how to automatically save before run script

Everytime I run a script, the dialog box ask for saving appear. How can I configure Zend Studio(v 7.0) automatically save before running?

Open Window -> Preferences
Open Run/Debug -> Launching
Find the option “Save required dirty editors before launching” (top of screen) and set it to “Always” instead of “Prompt”.

The Art Of Scripting HTTP Requests Using Curl

Online: http://curl.haxx.se/docs/httpscripting.html

This document will assume that you’re familiar with HTML and general
networking.

The possibility to write scripts is essential to make a good computer
system. Unix’ capability to be extended by shell scripts and various tools to
run various automated commands and scripts is one reason why it has succeeded
so well.

The increasing amount of applications moving to the web has made “HTTP
Scripting” more frequently requested and wanted. To be able to automatically
extract information from the web, to fake users, to post or upload data to
web servers are all important tasks today.

Curl is a command line tool for doing all sorts of URL manipulations and
transfers, but this particular document will focus on how to use it when
doing HTTP requests for fun and profit. I’ll assume that you know how to
invoke ‘curl –help’ or ‘curl –manual’ to get basic information about it.

Curl is not written to do everything for you. It makes the requests, it gets
the data, it sends data and it retrieves the information. You probably need
to glue everything together using some kind of script language or repeated
manual invokes.

1. The HTTP Protocol

HTTP is the protocol used to fetch data from web servers. It is a very simple
protocol that is built upon TCP/IP. The protocol also allows information to
get sent to the server from the client using a few different methods, as will
be shown here.

HTTP is plain ASCII text lines being sent by the client to a server to
request a particular action, and then the server replies a few text lines
before the actual requested content is sent to the client.

Using curl’s option -v will display what kind of commands curl sends to the
server, as well as a few other informational texts. -v is the single most
useful option when it comes to debug or even understand the curl<->server
interaction.

2. URL

The Uniform Resource Locator format is how you specify the address of a
particular resource on the Internet. You know these, you’ve seen URLs like
http://curl.haxx.se or https://yourbank.com a million times.

3. GET a page

The simplest and most common request/operation made using HTTP is to get a
URL. The URL could itself refer to a web page, an image or a file. The client
issues a GET request to the server and receives the document it asked for.
If you issue the command line

curl http://curl.haxx.se

you get a web page returned in your terminal window. The entire HTML document
that that URL holds.

All HTTP replies contain a set of headers that are normally hidden, use
curl’s -i option to display them as well as the rest of the document. You can
also ask the remote server for ONLY the headers by using the -I option (which
will make curl issue a HEAD request). Read the rest of this entry »

Nginx Upload Module

Valery Kholodkov has written a very cool nginx module for handling uploads.

The way this works is that you specify a location block to handle the uploads. So if you are using the standard nginx.conf for rails apps then you would add this in your server block right above your “location /” block:

    # Upload form should be submitted to this location
    location /upload {
      # Pass altered request body to this location
      upload_pass   @backend;

      # Store files to this location
      upload_store /tmp;

      # Set specified fields in request body
      upload_set_form_field $upload_field_name.name "$upload_file_name";
      upload_set_form_field $upload_field_name.content_type "$upload_content_type";
      upload_set_form_field $upload_field_name.path "$upload_tmp_path";
    }

    # Pass altered request body to a proxy
    location @backend {
        proxy_pass   http://backend;
    }

Then make a simple upload form that does a multipart POST to /upload. Now you can have your Rails or Merb app on the backend with a route called /upload. In the action of your app that responds to the /upload route you will get a set of params that look like this(assume the name of your upload fields is called ‘file1’ and ‘file2’):

{“file2.path”=>”/tmp/0000123459″, “file1.path”=>”/tmp/0000123458″,
“file2.content_type”=>”image/png”, “submit”=>”Upload”,
“file2.name”=>”Picture 2.png”, “action”=>”index”,
“file1.name”=>”Picture 1.png”, “controller”=>”test”,
“file1.content_type”=>”image/png”, “test”=>”value”}

What this is doing if parsing the multi-part mime boundaries in C in the nginx plugin, putting the parsed files into files in /tmp and then stipping the multipart stuff out of the POST body and replacing it with the info you need to get the name and location of the file on disk.

This means that by the time the request hits your application, the expensive mime parsing is already done and you simply move the file to it’s final resting place. This is a huge win since now the hard work is done in C in nginx before your app ever gets involved.

Of course this is a fresh new module so do your own testing and deciding whether or not this is a fit for your needs. But I think this is a great plugin and have verified it works as advertised.

SSH-туннелинг или замена VPN

В последнее время довольно большое распространение получила технология VPN (Virtual Private Networks). В большинстве случаев ее используют люди для шифрования передаваемой информации через локальную сеть (защита от снифанья трафика, что довольно легко осуществить в сети, даже на свичах) и/или последующей передачи информации через Интернет (тут уже целями будет скрытие своего IP-адреса, защита от глобального снифа трафика всей страны (aka СОРМ, он же нынешний СОРМ2) и.д.). Многие уже давно используют данную технологию VPN, но не многие знают об ее более дешевой и мобильной альтернативе. А называется это – SSH-туннелинг.

Принцип данной реализации следующий. Весь сетевой софт на компе (ну или не весь) форвардится на назначенный порт (вашего локалхоста), на котором висит сервис, соединенный по SSH с сервером (а как мы знаем, соединение по SSH протоколу шифруется) и туннелирующий все запросы; далее, весь ваш трафик (уже не в зашифрованном виде) может форвардится с нашего сервера на прокси (поддерживающий туннерирование) или сокс, который передают весь трафик к необходимым адресам. Наличие прокси или сокса не обязательно, но если нам нужна полнейшая конспирация, то мы можем организовать данный сервис (proxy/socks) на другом сервере (данная схема нужна для создания цепочки адресов), но об этом позже.

Теперь давайте разберемся с минимальным набором инструментов и сервисов необходимых для организации данного процесса. В первую очередь нам нужна программа для организации туннеля по SSH-протоколу. Для этой задачи мы можем применить VanDyke Entunnel (http://www.vandyke.com/products/entunnel/) или Putty (http://www.web-hack.ru/download/info.php?go=35) (вкладка Connection\SSH\Tunnels). В наших примерах я буду использовать оба клиента. Далее мы можем вручную прописывать в каждой программе работу через прокси или использовать специализированную программу для перенаправления запросов, такую как ProxyCap (http://proxylabs.netwu.com), SocksCap (http://www.socks.nec.com), FreeCap (http://www.freecap.ru) и т.п. В нашем примере будет использоваться ProxyCap, как наиболее удобная софтина (кстати, через ProxyCap мы сможем сделать туннерирование даже WebMoney, которая известна защитой от такого вида софта, для скрытия IP). Так же нам понадобится SSH-аккаунт (на сервере желательно расположенном за пределами вашей страны =), который можно без проблем достать (например, я покупаю VPS-хостинг для этого) и socks`ы.

Первым делом создаем SSH-аккаунт. Далее, я предлагаю вам использовать socks-сервер, а не proxy, т.к. не все прокси поддерживают туннелирование. Также может оказаться, что сегодня прокси анонимный, а завтра уже и не нет (если, конечно, не вы сами отвечаете за него). Кстати, проверить свою анонимность можно здесь (http://ip.xss.ru). Как я уж говорил, мы можем использовать сокс на удаленной машине (для большей безопасности). Для примера я покажу, как установить сокс-демон. Наиболее популярные и продвинутые демоны под никсы это socks5 от Permeo/NEC (http://freeware.sgi.com/source/socks5/), Dante (http://www.inet.no/dante/) и отечественный продукт 3proxy (http://www.security.nnov.ru/soft/3proxy/). Для примера я выбрал классический демон на FreeBSD – socks5.

Для тестирования использовалась FreeBSD 5-ой ветки. Я устанавливал socks5 из портов (/usr/ports/net/socks5/), но и из сорцов под фряхой тоже все хорошо собирается и ставится:

cd /usr/ports/net/socks5/
make install clean
rehash

Для нормальной работы демона необходим конфиг к демону socks5.conf и файл паролей socks5.passwd (если необходима аутификация к сокс-серверу по паролю):

touch /usr/local/etc/socks5.conf
touch /usr/local/etc/socks5.passwd

Далее добавляем в конфиг следующие строчки:

auth - - u
permit u - - - - -
SET SOCKS5_BINDINTFC 1.2.3.4:8080
SET SOCKS5_CONFFILE /usr/local/etc/socks5.conf
SET SOCKS5_PWDFILE /usr/local/etc/socks5.passwd
SET SOCKS5_MAXCHILD 128
SET SOCKS5_NOIDENT
SET SOCKS5_NOREVERSEMAP
SET SOCKS5_NOSERVICENAME
SET SOCKS5_V4SUPPORT
SET SOCKS5_ENCRYPT
SET SOCKS5_FORCE_ENCRYPT
SET SOCKS5_UDPPORTRANGE 1023-5000

Первые две строчки указывают, что необходима аутификация по логин/пароль. SOCKS5_BINDINTFC указывает на какой IP (если у сервера несколько алиасов) и порт повесить демон. SOCKS5_MAXCHILD по умолчанию 64, я советую увеличить до 128, чтобы всем юзерам (если их много) хватило потоков. Далее, идут строчки для ускорения работы демона. SOCKS5_V4SUPPORT – поддержка 4-ой версии протокола. SOCKS5_ENCRYPT и SOCKS5_FORCE_ENCRYPT поддержка шифрования, если клиент это поддерживает. За более подробной информацией по установка обращайтесь к файлам README и INSTALL, а за информацией по настройке к манам socks5(1) и socks5.conf(5).

Далее, заполняем файл паролей. Он имеет обычный текстовый формат и login/password разделяются в нем пробелами:

user password
root toor

Теперь можно запускать демон и приступить к настройке клиентского софта:

/usr/local/bin/socks5

Запускам ProxyCap (http://forum.web-hack.ru/index.php?showtopic=29262), кликаем правой кнопкой мыши на значке в трее, Preferences. На вкладке “Proxies” вписываем 127.0.0.1:8080 и устанавливаем в “Require Authorization” наш login/password на сокс. На вкладке “Rules” добавляем сначала правило для Entunnel, указав в “Rule Type” – Force direct connetion. Далее, создаем правило, для всего остального софта, трафик от которого будет шифроваться и туннелироваться через сокс. В правиле указываем “All Programs”, “Tunnel through proxy” и в выпадающем меню наш сокс. Так же можно создать правило не для всего софта, а только выборочный софт пускать через туннель или наоборот, создать правило для всего софта, но для некоторого софта сделать прямой доступ в инет (Force direct connetion). В качестве дополнения могу сказать, что если ваша сетевая программа поддерживает работу через сокс/прокси (и нет необходимости пускать сразу весь сетевой софт через туннель), то в качестве настроек прокси вы можете указать забинденный Entunnel`ем адрес и порт – 127.0.0.1:8080.

Запускаем Entunnel и создаем в нем новое соединение по SSH. Далее, в свойствах соединения (Port Forwarding) добавляем наш сокс. В категории “Local” вписываем 127.0.0.1:8080, а в категории “Remote” вписываем IP и порт нашего сокс-сервера. Настройка закончена! Если что-то не работает, то еще раз перечитайте все пункты настройки.

В случае, если вы хотите использовать SSH-аккаунт, как конечную точку (т.е. не юзать соксы или прокси), то ваши настройки должны быть следующие (на примере для Putty): на вкладке Connection\SSH\Tunnels в строке “Source port” указываем порт, на который Putty забиндится на локалхосте (например, 8080), далее ставим влажок на “Dynamic” и идем на вкладку “Session” прописывать адрес и порт сервера с SSH. Коннектимся…

Какие плюсы данной системы:

1. Для организации данной схемы не нужно устанавливать серверный софт (т.к. SSH-аккаунт и сокс можно без проблем достать в инете);
2. Т.к. при SSH-соединении трафик шифруется и сжимается, то мы получаем небольшой прирост скорости работы в инете (это верно, когда сокс-демон находится на том же сервере);
3. В случае, когда сокс-сервер находится на другом хосте, то мы получаем дополнительную цепочку серверов, которые повышают нам безопасность и анонимность;

Использование метода window.open для открытия юзабильных popup’ов

Новое окно браузера открыть не составляет труда — мы просто прописываем в теге a атрибут target со значением _blank (некоторые нерадивые товарищи, кстати, неправильно указывают вместо _blank значение _new, что приводит к тому же эффекту, но совершенно не соответствует спецификации). В то же время, часто необходимо, чтобы новое окно открывалось с дополнительными параметрами: окно должно быть определённых размеров, не должна присутствовать строка состояния и т. п. Это легко достигается, как вам вероятно известно, с помощью метода window.open(URL, windowName[, parameters]).

Я не буду описывать все значения, которые может принимать третий аргумент функции open(). Напомню только, что их необходимо писать через запятую, без пробелов. По умолчанию все опции включены, но если вы укажите хотя бы одну, то другие все автоматически отключатся. Следующий пример открывает popup с адресной строкой, ширина окна составляет 400px, высота — 300px и окно расположено в верхнем левом углу экрана:

popupWin = window.open("contacts.html", "contacts", "location,width=400,height=300,top=0");
popupWin.focus(); // передаём фокус новому окну

Ликбез закончен, теперь собственно о том, как правильно использовать метод window.open(). Точнее, как нужно ставить ссылки на новые окна, открывающиеся с помощью JavaScript’а.

Казалось бы, нет ничего проще — пишем что-то вроде

<a href="javascript:popupWin = window.open('contacts.html', 'contacts', 'location,width=400,height=300,top=0'); popupWin.focus();">Наши координаты</a>.

Часто пишут ещё так:

<a href="#" onClick="popupWin = window.open('contacts.html', 'contacts', 'location,width=400,height=300,top=0'); popupWin.focus();">Наши координаты</a>.

На самом деле, более правильный вариант таков:

<a href="contacts.html" target="_blank" onClick="popupWin = window.open(this.href, 'contacts', 'location,width=400,height=300,top=0'); popupWin.focus(); return false;">Наши координаты</a>

Чем же последний вариант хорош? Многим. Во-первых, вы заботитесь о тех пользователях, у которых по той или иной причине не работает JavaScript. У них откроется файл в обычном новом окне браузера, и они смогут-таки узнать ваши координаты. Во-вторых, поисковые машины смогут корректно проиндексировать страницу contacts.html, не спотыкаясь на JavaScript’е. Ну а в-третьих, статусная строка будет выглядеть нормально. Вместо сбивающих с толку знаков типа «#» в статусной строке будет «человекопонятный» URL.

Кстати, обратите внимание на использование ссылки this.href, указывающей на атрибут href тега a. Таким образом мы избавляемся от необходимости повторно указывать адрес открываемой страницы.

Заметьте также, что в обработчике события onClick нужно указать return false. В противном случае, откроется два новых окна — одно из-за действия атрибута target, другое из-за JavaScript’а.

Nginx+Php-Fpm+Eaccelerator = Perfect Linux Server !

Цель: Построить быстрый и надёжный сервер, способный обслуживать несколько больших динамичных вебсайтов основанных на современных CMS (системах управления содержанием) и базе данных MySQL

Cредства; 1, Достаточно мощный компьютер: – процессор+оперативная память+обьёмный винчестер+сетевая карта = должны быть хорошими по характеристикам и достаточно современными, 2, Постоянное соединение с быстрым интернетом, 3. Зарегестрированное имя домена и наличие DNS (Domain Name Server). на котором этот домен припаркован,

Начали: Грузим OS http://www.ubuntu.com/getubuntu/download Здесь надо выбрать OS соответствующую архитектуре железа: x86 или AMD64. Я буду писать для AMD64, что впрочем подходит с небольшими изменениями и для x86 После того, как файл загрузился, надо записать его в том же формате т.е. .iso, чтобы с него можено было запускать компьютер.

Надеюсь всё прошло хорошо и сомпьютер запустился с СДишки. Предупреждаю, компьютер должен быть отведен специально для цели служить СЕРВЕРОМ. Т.е. всё, что было в нём прежде, будет утрачено !!!

Ubuntu установить очень просто, достаточно выбрать язык установки и следовать указаниям. Важно сделать правильную разметку диска. Для root или “/” достаточно 8 ГБ , swap расчитывается по формуле active RAM x 2. т.е. если общий размер оперативной памяти составляет 1 ГБ, то swap должен быть не меньше 2 ГБ. Остальное пространство отдадим /home. Там будет сидеть всё хозяйство сервера.

После того как система задышала и ты в неё вошёл первым делом добавь терминал на панель. Ну и понеслись: (Я буду писать коды для терминала, тебе надо их скопировать, вставить и нажать “enter”. Свои пояснения я буду отделять запятыми, скобками или кавычками, чтобы программа их не распознала, даже если ты их по ошибке и введешь)

sudo apt-get update

sudo apt-get upgrade

(процесс получения обновлений, надо будет ввести пароль)

sudo aptitude install mysql-server

(ждём пока установится)

sudo mysql_secure_installation

(на все вопросы – yes и устанавливаем пароль, очень важно его не забыть и сделать достаточно сложныи)

(Установим дополнительные библиотеки)

sudo aptitude install build-essential libtool libltdl3-dev libgd-dev libmcrypt-dev libxml2-dev libmysqlclient15-dev flex m4 awk automake autoconf bison make libbz2-dev libpcre3-dev libssl-dev zlib1g-dev vim re2c libjpeg-dev libpng-dev

(Мы будем собирать PHP с PHP-FPM заплаткой из источника.)

cd /usr/local/src

wget http://us.php.net/get/php-5.2.10.tar.gz/from/ru.php.net/mirror

tar xzvf php-5..10.tar.gz

wget php-fpm.org/downloads/php-5.2.10-fpm-0.5.13.diff.gz

gzip -cd php-5.2.10-fpm-0.5.13.diff.gz | patch -d php-5.2.10 -p1

cd php-5.2.10

./configure –enable-fastcgi –enable-fpm –enable-exif –with-mcrypt –with-zlib –enable-mbstring –with-openssl –with-mysql –with-mysql-sock –with-gd –with-gettext –with-jpeg-dir=/usr/lib –enable-gd-native-ttf –without-sqlite –disable-pdo –disable-reflection –with-libdir=lib64 –with-pgsql=/usr/lib/pgsql –with-mysql=/usr/lib64/mysql

(Если сборка будет жаловаться, что не хватает чего то, то можно будет найти и установить недостающее через Synaptic)

make all install

strip /usr/local/bin/php-cgi

( Теперь отрегулируем PHP-FPM, о котором хочу сказать особо. Php-fpm – это продукт напряжённого бескорыстного труда нашего соотечественника Андрея Нигматулина, И этим продуктом, как и NGINXом от Игоря Сысоева, уже пользуются миллионы админов по всему миру, несмотря на то, что мало кто из из них говорит и понимает по русски и что отсутствует подробная документация. Золото видно издалека …. И цена его понятна на любых языкахMoney mouth )

sudo gedit /usr/local/etc/php-fpm.conf

(линия 63 убрать стрелки и тире перед и за кодом и поменять nobody на)

www-data

( то же самое для линии 66)

www-data

(Устанавливаем NGINX web server)

cd /usr/local/src

wget sysoev.ru/nginx/nginx-0.7.61.tar.gz

tar xzvf nginx-0.7.61.tar.gz

cd nginx-0.7.61

(нам не нужны почтовые функции NGINX потому, что мы будем использовать внешний почтовый агент чтобы не нагружать сервер)

./configure –sbin-path=/usr/local/sbin –with-http_ssl_module –without-mail_pop3_module –without-mail_imap_module –without-mail_smtp_module

make

make install

(настроим NGINX)

sudo gedit /usr/local/nginx/conf/nginx.conf

(см. прикрерплённый файл)

http://vkimo.org/files/nginx.txt

(Обрати внимание на “root /home/TVOI FOLDER/$host;” – здесь надо указать путь к папке, где будет сидеть всё содержание сайта. “$host” это абсолютное значение, которое вытащит и опубликует любой сайт если он зарегестрирован, находится на работающем домайн найм сервере и сидит в отдельной папке в твоей домашней папке “TVOI FOLDER” под названием твоего сайта т.е. “moisite.com”. А также на “server_name ” Символ ” _ ” – это Изумительное по простоте и удобству решение автора NGINX Игоря Сысоева http://sysoev.ru/nginx/ способа адресовать виртуальные хосты. Apache и даже Lighttpd здесь отдыхают плотно.

Теперь создадим место для содержимого нашего вебсайта и изменим соответственно /home/TVOI FOLDER/$host

sudo mkdir /home/www

sudo mkdir /home/www/точное название твоего сайта (мойсайт.ru)

sudo chmod -R tvoeimya:tvoeimya /home/www/moisite.ru (tvoeimya надо поменять на имя пользователя, под которым ты работаешь в своём сервере, Это даст тебе возможность управлять содержимым папки сайта без необходимости входить в сервер под привелегированным пользователем – root.

(Создадим также два файла внутри папки сайта)

gedit /home/www/moi site.ru/index.html

(вставить в пустой файл что-нибудь вроде – Это мой первый сайт !!! )

gedit /home/www/moisite.ru/info.php

(Вставить этот код в пустой файл сохранить и закрыть)

phpinfo();
?>

Продолжаем: надо отрегулировать fastcgi_params)

sudo gedit /usr/local/nginx/conf/fastcgi_params

(и в самый верх добавляем)

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

(а также выключаем, ставим “#” перед #fastcgi_param REDIRECT_STATUS 200; примочку для арача потому что мы его здесь не имеем )

(Полируем PHP код)

sudo gedit /usr/local/lib/php.ini

(вставить это в пустой файл)

_________________________________________________________________________________________

magic_quotes_gpc=0
[xcache-common]
#zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20060613/xcache.so
[xcache]
#xcache.shm_scheme = “mmap”
#xcache.size = 64M
default_charset = “utf-8″
[memcache]
#extension = memcache.so
#memcache.hash_strategy=”consistent”
[memcache]
[suhosin]
#extension = suhosin.so
#extension = apc.so
#apc.shm_size = 48
[suhosin]
; For Unix only. You may supply arguments as well (default: “sendmail -t -i”).
sendmail_path = /usr/sbin/sendmail -i -t
upload_max_filesize=8M
[eaccelerator]
#zend_extension=”/usr/local/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so”
#eaccelerator.shm_size=”16″
#eaccelerator.cache_dir=”/tmp/eaccelerator”
#eaccelerator.enable=”1″
#eaccelerator.optimizer=”1″
#eaccelerator.check_mtime=”1″
#eaccelerator.debug=”0″
#eaccelerator.filter=”"
#eaccelerator.shm_max=”0″
#eaccelerator.shm_ttl=”0″
#eaccelerator.shm_prune_period=”0″
#eaccelerator.shm_only=”0″
#eaccelerator.compress=”1″
#eaccelerator.compress_level=”9″
[eaccelerator]

_________________________________________________________________________________________

(Как видно, большинство примочек выключено. Это на потом, потому что ни одна из тех примочек ещё у тебя не установлена. Мы это сделаем позже)

(Надо попробовать стартануть php-fpm)

php-fpm start

(Теперь NGINX)

nginx

(Если ошибок нет – будь горд собой !!!)

(Надо теперь сделать так чтобы оба сервиса запускались автоматически вместе с запуском сервера)

cd /etc/init.d/

ln -s /usr/local/sbin/php-fpm php-fpm

/usr/sbin/update-rc.d -f php-fpm defaults

(Это было просто для php-fpm, немного сложнее для NGINX)

sudo kill `cat /usr/local/nginx/logs/nginx.pid`
sudo gedit /etc/init.d/nginx
(и вставить этот код в пустой файл)

_________________________________________________________________________________________

### BEGIN INIT INFO
# Provides: nginx
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the nginx web server
# Description: starts nginx using start-stop-daemon
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/sbin/nginx
NAME=nginx
DESC=nginx

test -x $DAEMON || exit 0

# Include nginx defaults if available
if [ -f /etc/default/nginx ] ; then
. /etc/default/nginx
fi

set -e

case “$1″ in
start)
echo -n “Starting $DESC: ”
start-stop-daemon –start –quiet –pidfile /usr/local/nginx/logs/nginx.pid \
–exec $DAEMON — $DAEMON_OPTS
echo “$NAME.”
;;
stop)
echo -n “Stopping $DESC: ”
start-stop-daemon –stop –quiet –pidfile /usr/local/nginx/logs/nginx.pid \
–exec $DAEMON
echo “$NAME.”
;;
restart|force-reload)
echo -n “Restarting $DESC: ”
start-stop-daemon –stop –quiet –pidfile \
/usr/local/nginx/logs/nginx.pid –exec $DAEMON
sleep 1
start-stop-daemon –start –quiet –pidfile \
/usr/local/nginx/logs/nginx.pid –exec $DAEMON — $DAEMON_OPTS
echo “$NAME.”
;;
reload)
echo -n “Reloading $DESC configuration: ”
start-stop-daemon –stop –signal HUP –quiet –pidfile /usr/local/nginx/logs/nginx.pid \
–exec $DAEMON
echo “$NAME.”
;;
*)
N=/etc/init.d/$NAME
echo “Usage: $N {start|stop|restart|force-reload}” >&2
exit 1
;;
esac
exit 0

_________________________________________________________________________________________

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

sudo chmod +x /etc/init.d/nginx
sudo /usr/sbin/update-rc.d -f nginx defaults

(Увидишь примерно такой выход):

Adding system startup for /etc/init.d/nginx …
/etc/rc0.d/K20nginx -> ../init.d/nginx
/etc/rc1.d/K20nginx -> ../init.d/nginx
/etc/rc6.d/K20nginx -> ../init.d/nginx
/etc/rc2.d/S20nginx -> ../init.d/nginx
/etc/rc3.d/S20nginx -> ../init.d/nginx
/etc/rc4.d/S20nginx -> ../init.d/nginx
/etc/rc5.d/S20nginx -> ../init.d/nginx

(Последнее в этом уроке:

Если мы ожидаем хорошее движение на сайте, то необходимо создать файл для logrotate, который автоматически будет сжимать и удалять старые файлы и давать нам возможность контролировать кто бывал на нашем сайте)
sudo gedit /etc/logrotate.d/nginx

(вставить это в пустой файл и сохранить)

_________________________________________________________________________________________

/usr/local/nginx/logs/*.log {
daily
missingok
rotate 9
compress
delaycompress
notifempty
postrotate
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
endscript
}

Настройка безпарольной аутентификации по ssh

Допустим, вам необходимо настроить безпарольный вход по ssh (scp и sftp тоже) на удаленный сервер remote.org.ua под пользователем user.
Если ваш имя вашего локального пользователя совпадает с удаленным, то user@ везде можно опустить.

1) создаем открытый и закрытый ключ нашей локальной системы
$ ssh-keygen -t rsa
жмем энтер отказываясь от ключевой фразы

2) если в системе есть программа ssh-copy-id, то настраиваем удаленную систему на то, что бы оно авторизировало ssh по открытому ключу
$ ssh-copy-id -i ~/.ssh/id_rsa user@remote.org.ua
переходим к шагу 4)

3) если ssh-copy-id нет то можно сделать это ручками. вот последовательность действий с объяснениями

3.1) копируем открытый ключ на удаленную систему
$ scp ~/.ssh/id_rsa.pub user@remote.org.ua:~ незабываем ввести пароль. ведь мы еще не настроили беспарольный вход Ж:-)

3.2) логинимся на удаленный сервер
$ ssh user@remoute.org.ua

3.3) заносим открытый ключ нашей локальный системы в авторизированые ключи удаленной системы, устанавливаем правильные права и убираем за собой мусор:
remote$ [ -d ~/.ssh ] || (mkdir ~/.ssh; chmod 711 ~/.ssh) # создадим ~/.ssh директорию если ее нет и дадим нужные права
remote$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys # добавляем открытый ключ к авторизированым ключам
remote$ chmod 600 ~/.ssh/authorized_keys # и делаем правильные права(иначе ssh откажется брать отсюда ключи)
remote$ rm ~/id_rsa.pub # удаляем ненужное

4) проверяем что все работает. запускаем на локальном хосту
$ ssh user@remoute.org.ua
или например
$ scp .zshrc user@remoute.org.ua:~
должно сработать без пароля.

Конвертация php-скриптов в статику

Предположим, у Вас есть сайт, созданный при помощи php-скриптов и базы данных MySQL. В определенное время сервер перестает нормально работать, так как перегружен посетителями – слишком много запросов.
Как быть? Искусственно ограничить запросы – это значит отбросить посетителей. Наращивать мощности сервера накладно. Оптимизировать скрипты нет времени.
Именно в таком случае поможет тотальная конвертация всего сайта в статический HTML код и отдача его при помощи nginx.

Прежде всего необходимо определить дискретность, с которой происходит обновление информации (допустим, раз в час) и выполнять зеркалирование сайта при помощи команды wget:

wget -m -q -k http://мой.домен/

После этого полученное зеркало синхронизируем с директорией, откуда файлы обрабатывает nginx (предположим, что это /usr/local/html):

rsync -tgu –delete –force мой.домен /usr/local/html

После чего осталось синхронизировать те файлы, которые wget не отзеркалит, например, *.js – java скрипты:

rsync -a –include ‘*/’ –include ‘*.js’ –exclude ‘*’ /путь/к/файлам/сайта/ /usr/local/html/

Это все. Теперь осталось запускать этот код каждый час (или реже) и всю нагрузку возьмет на себя nginx.
Для того, чтобы сохранить доступ к админке CMS, необходимо повесить какой-то поддомен сайта на реальный IP и обращаться к нему.