суббота, 22 июня 2013 г.

Рабочая лошадка, или веб-сервер на виртуальной машине


Очень удобно иметь на рабочей машине несколько виртуальных систем. Так больше порядка. Для каждого проекта свой набор серверов. О том, как поднять необходимое в VirtualBox, читайте ниже и приспосабливайте под свои нужды. (Все продукты бесплатны)

VirtualBox

скачать с сайта и открыть установочный файл в менеджере пакетов
Файл->Настройки->Сеть->Добавить виртуальную сеть хоста
    адрес 33.33.33.1
    маска 255.255.255.0
    DHCP выключить

Виртуальные машины (ВМ) создавать с нуля, а не копировать, чтобы избежать проблем с настройкой сети.

По умолчанию новая ВМ подключена через сетевой адаптер №1 типа NAT. Он позволяет скачивать файлы из Интернета, но не видит соседние ВМ.

sudo apt-get update
sudo apt-get upgrade
ifconfig
    должно присутствовать 2 сетевых интерфейса eth0 и lo
sudo nano /etc/network/interfaces
    auto eth1
    iface eth1 inet static
    address 33.33.33.101
    netmask 255.255.255.0
    network 33.33.33.0
    broadcast 33.33.33.255
    gateway 33.33.33.1

где 33.33.33.101 нужно изменить на IP-адрес создаваемой витуальной машины
sudo shutdown -h now

После выключения виртуальной машины, необходимо изменить её сетевые настройки.
Подключить сетевой адаптер №2 типа "Виртуальный адаптер хоста". Он позволит основной машине видеть виртуальную, и наоборот.
Однако после этого пропадёт связь с Интернетом у ВМ. На время обновления кода этот адаптер нужно отключать.
Проверить, что ifconfig показывает 3 сетевых интерфейса: lo, eth0, eth1.

Чтобы веб-сервер мог работать по сети с базой данных, "NAT" нужно поменять на "Сетевой мост".

FTP

sudo apt-get install vsftpd
sudo nano /etc/vsftpd.conf
    local_enable=YES
    chroot_local_user=YES
    local_root=/home
    anonymous_enable=NO
    write_enable=YES
    local_umask=022
sudo usermod -a -G my_user ftp
sudo service vsftpd restart

Вход через FTP-клиент под именем и паролем пользователя сервера Ubuntu.

Apache

sudo apt-get install apache2
mkdir /home/my_user/www
sudo nano /etc/apache2/sites-available/default
    В двух местах изменить путь /var/www на /home/my_user/www
sudo a2dissite default
sudo a2ensite default
sudo service apache2 restart

PHP


PostgreSQL

Установка версии 8.4
doc
help.ubuntu.com

sudo apt-get install postgresql-8.4
sudo apt-get install postgresql-contrib-8.4
sudo -u postgres psql < /usr/share/postgresql/8.4/contrib/adminpack.sql

Создаём пользователя:
sudo -u postgres psql postgres
    \password postgres
    \q

Открываем порт:
sudo nano /etc/postgresql/8.1/main/pg_hba.conf
    host    all    all    0.0.0.0/0    md5
sudo nano /etc/postgresql/8.4/main/postgresql.conf
    listen_addresses = '33.33.33.105,localhost'
Где 33.33.33.105, адрес машины, на которой устанавливается база данных.

Запускаем:
sudo /etc/init.d/postgresql restart
   

nginx

(бывает нужен иногда для проксирования виртуальных машин)

sudo -s 
nginx=stable # use nginx=development for latest development version 
add-apt-repository ppa:nginx/$nginx 
apt-get update apt-get install nginx


sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/my_site
sudo nano /etc/nginx/sites-available/my_site
     server {
        listen 80;
        server_name 192.168.0.41;
        location / {
                proxy_pass http://33.33.33.126/;
                proxy_redirect off;
        }
    }

sudo ln -s /etc/nginx/sites-available/my_site /etc/nginx/sites-enabled/my_syte
nginx -t
sudo service nginx restart


пятница, 21 июня 2013 г.

JSONS

Эта заметка не об ExtJs. Поговорим о возвышенном. Об искуственности интеллекта :).

Два человека независимо друг от друга вносят в систему сообщения о птичках. Второму человеку машина задаёт вопросы.

Сообщения людей поступают в формате семантического JSON`а. Этот формат позволяет ссылаться на упомянутые ранее предметы.

JsFiddle


GitHub

воскресенье, 2 июня 2013 г.

Компиляция приложения, построенного на SDK ExtJs

Ознакомьтесь с предыдущими статьями:

Переходим в директорию проекта:

cd ~/NetBeansProjects/devconf2013/www/client/school/

Запускаем компиляцию и записываем сборку всех классов в файл  school.js.  Тут же минифицируем код и записываем то, что получилось в файл school-min.js.

sencha compile -classpath=sdk/src,app union -r -class school.Application and concat school.js and concat --compress school-min.js


В процессе выполнения команды подтянутся все классы, от которых зависит класс school.Application, определённый в файле:

~/www/doctornovikova/www/client/school/app/application.js

Если ОС не может найти команду sencha, нужно перезагрузить систему. Применятся настройки PATH из файла ~/.profile.

Документация по Sencha Cmd



суббота, 1 июня 2013 г.

Каркас нового приложения

Ознакомьтесь с предыдущей статьёй "Установка Sencha Cmd в Ubuntu".

Определим местонахождение папки с библиотекой ExtJs. Путь к ней будем использовать в командах Sencha Cmd (ключ -sdk).


У меня он выглядит так:

~/NetBeansProjects/devconf2013/www/client/library/ext-4.2.1.883

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

Моё новое приложение называется school, поэтому создаю такую папку:

~/NetBeansProjects/devconf2013/www/client/school


Открываем терминал. Пляшем в иступлении.

Переходим в директорию, где расположен исполняемый файл утилиты Sencha Cmd. Помните, в статье про инсталляцию даной утилиты, я просил вас запомнить путь? В моём случае:

cd ~/bin/Sencha/Cmd/3.1.2.342

Предлагаем утилите Sencha Cmd создать стандартный набор папок и файлов для MVC-приложения. Я написал (в одну строку):

./sencha -sdk ~/NetBeansProjects/devconf2013/www/client/library/ext-4.2.1.883 generate app school ~/NetBeansProjects/devconf2013/www/client/school

Расшифровка:

sencha -sdk <путь к библиотеке ExtJs> generate app <имя создаваемого приложения> <путь к пустой директории>

Обратите внимание: никаких sudo. Выполняется из-под обычного пользователя.



Работа утилиты завершилась без сообщений об ошибках.


Теперь посмотрим на результат.


Всё готово! Создавайте классы представлений, контроллеров, хранилищ и моделей в предназначенных для этого разделах директории app:


О том, чтобы написаный вами код мог быстро загружаться и исполняться позаботится компилятор Sencha Cmd, о котором читайте в следующей статье Компиляция приложения, построенного на SDK ExtJs.

Установка Sencha Cmd в Ubuntu

КуримЧитаем документацию, доступную по ссылке:

документация по Sencha Cmd

Определяем, какая операционная система установлена на компьютере.


Скачиваем нужный файл со следующей страницы:

Sencha Cmd для Windows, Linux или Mac


Открываем терминал. Берём в руки бубен.

Переходим в директорию с загруженным файлом, используя команду cd.

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

sudo chmod 777 SenchaCmd-3.1.2.342-linux-x64.run

Запускаем скаченную нами программу установки из-под обычного пользователя:

./SenchaCmd-3.1.2.342-linux-x64.run

Если запустить эту программу от имени суперпользователя, то установка пройдёт без сообщений об ошибках, но пользоваться установленным приложением будет невозможно (см. здесь).


Соглашаемся с условиями лицензии.


Доходим до выбора места установки и запоминаем выбранную директорию.


Завершаем установку Sencha Cmd.


Об использовании утилиты читате в следующей статье "Каркас нового приложения".