node.js+nginx на freebsd

 
 

Доброго всем дня!

Решил вот тут попробовать такого зверя как node.js. Говорят на нем хорошо писать веб-пауков, особенно если прикрутить jQuery – то это становится просто удовольствием. От слов к делу. Для начала поставим nginx.

$ cd /usr/ports/www/nginx
$ make install clean

пропишем автозапуск

$ mcedit /etc/rc.conf
# nginx
nginx_enable="YES"

отредактируем файл настроек nginx’а

user www;
worker_processes 1;

pid /var/run/nginx.pid;

events
{
  worker_connections 1024;
}

http
{
  include mime.types;
  default_type application/octet-stream;
  log_format main '$remote_addr - $remote_user [$time_local] $request'
                        '"$status" $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';
  access_log off;
  sendfile on;
  keepalive_timeout 65;
  gzip on;

  server
  {
    listen *:80;
    server_name localhost;

    location /
    {
    }
}

и запускаем nginx

$ /usr/local/etc/rc.d/nginx start

Теперь приступим к установке node.js. Для начала удостоверимся что у нас в системе стоит libexecinfo. Для этого выполним команду

$ pkg_add -r libexecinfo

После этого устанавливаем собственно ноду

$ mkdir /usr/tmp
$ cd /usr/tmp
$ fetch 'http://s3.amazonaws.com/four.livejournal/20100120/node-v0.1.26.tar.gz'
$ tar -xzvf node-v0.1.26.tar.gz
$ cd node-v0.1.26
$ ./configure --prefix=/usr/local
$ make
$ make install
$ rehash

Для проверки правильности компиляции и установки ноды создадим простой скрипт

var sys = require('sys');
sys.puts('Hello, World!');

и проверим его

$ node example.js

Должны увидеть Hello, World. Теперь интегрируем все это безобразие с Nginx. Для этого добавим в секцию Server конфига nginx’а следующее:

...
location /nodejs/ {
    proxy_pass http://127.0.0.1:8081/;
    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;
}
...

Создадим простой серверный скрипт:

var sys = require('sys');
var http = require('http');

http.createServer(function (req, res) {
    res.sendHeader(200, {'Content-Type': 'text/plain'});
    res.sendBody('Hello, World!', 'utf8');
    res.finish();
}).listen(8081);

sys.puts('Server running at port 8081');

Запускаем тестовый сервер

$ node server.js

если теперь зайти сюда http://<ваш ip="">/nodejs то вы должны увидеть приветствие

Поиск больших файлов на FreeBSD

Если вдруг на диске по каким-то причинам закончилось место, а Вы точно уверены, что ничего такого туда не записывали, то возможно диск занят какими-то нужными или ненужными файлами. Поэтому тут представляю ряд способов почистить место на диске.

1. Поиск больших файлов

$ find / -size +500M -exec ls -l {} \;

2. Очистка портов

$ /usr/ports/Tools/scripts/distclean.sh
$ rm -rf /usr/ports/*/*/work

или для portupgrade

portsclean -D
portsclean -C

Как удалить дублирующие записи в mysql

 
 

Требуется решить следующую проблему. Есть таблица. Первичный ключ id, кроме всех прочих полей есть поле name. Оказывается, что существует несколько строк с разными id, но одним и тем же name.

Понятно, что в некоторых случаях имеет место неправильный выбор первичного ключа. Причина и последствия этого оставим за гранью статьи. Задача – сделать так, чтобы была только одна строка с таким name. То есть требуется удалить дубликаты.

Колдовать это в mysql можно по разному, вплоть до временных таблиц и т.д. Однако есть способ проще – с помощью создания уникального индекса.

Итак

CREATE TABLE copy_table SELECT * FROM `таблица`;
ALTER IGNORE TABLE copy_table ADD UNIQUE ( Name );

А теперь внимательно смотрите на дубликаты. Вуаля!

C Днем программиста! 101011

Всех коллег поздравляю с профессиональным праздником!

happy coders day

Kohana: настройка

 

kohana logo

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

Для начала идем на официальный сайт и скачиваем последнюю версию. На данные момент это 3.0.7.

После того как архив скачается его необходимо распаковать в корневую директорию сайта (веб-приложения). Вы конечно можете распаковывать его не в корень, однако в таком случае поправки в файле .htaccess будут иными.

Настроим .htaccess

  1. Добавляем опцию Options -Indexes, если она еще не добавлена. Стоит иметь ввиду, что подобная опция может уже стоять в настройках самого вебсервера. А может и не стоять. Поэтому для уверенности напишем ее.
  2. Проверить каталог установки (# InstallationDirectory). Если Вы ставили кохану в корень, то там должно быть написано

    # Installation Directory
    RewriteBase /
    

Настройка index.php

  1. При желании ядро системы, каталог system, может быть перемещен вне сайта (это может быть необходимо для обновлений, или например если у Вас несколько сайтов, а ядро фреймворка Вы хотите использовать одно). Аналогично можно перемещать папки application и modules. Однако если с каталогом system все ясно, с остальными я рекомендую Вам делать это только в том случае, если Вы понимаете что делаете.
  2. Если Вы что-то переместили – необходимо изменить переменные $system, $application и $modules на соответствующие пути.

Настройка application/bootstrap.php

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

  1. Изменить значение date_default_timezone_set(‘Asia/Yekaterinburg’); на ту временную зону, которая Вам необходима (вот список доступных).
  2. Изменить значение setlocale(LC_ALL, ‘ru_RU.utf-8′); Обычно употребимая локаль в России – ru_RU.UTF-8. Если Вам по каким-то причинам нужна другая – Вы можете сделать это.

На этом базовая установка и настройка заканчивается. Далее Вы можете приниматься за разработку своего веб-приложения. Удачи Вам на этом пути!