Страницы

Показаны сообщения с ярлыком webdav. Показать все сообщения
Показаны сообщения с ярлыком webdav. Показать все сообщения

воскресенье, 1 июня 2014 г.

Nginx, OwnCloud, Pydio, Bittorrent tracker. Доступ и распространение авторских материалов альтернативным способом

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

Во первых, это должен быть не домашний настольный компьютер. Хотя я сплошь и рядом это нарушаю.
Во вторых, это должен быть тихий, малопотребляющий и компактный компьютер, чтобы он мог  работать 24 часа в сутки, с минимальным вмешательством.
В третьих, это должен быть компьютер под управлением Linux.
В четвертых, он должен позволять удалённое управление, должен работать без клавиатуры и мыши, без монитора. Восстанавливаться и загружаться после потери питания.
В пятых, он должен иметь постоянное подключение к сети Интернет.
В шестых, должен поддерживать ftp,web-сервера, подключение webdav, ssh ftps, https, rsync, bittorrent и пр.

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

1. Intel NUC (с процессором Celeron), Гибридный 1 Тб винчестер SSD Seagate, память 4Г.
2. Pegatrom Mercury L6 (с процессором Celeron, пассивное охлаждение), Гибридный 1 Тб винчестер SSD Seagate, память 4Г.
3. Сетевой жесткий диск WD Cloud, с модифицированной прошивкой.

Конфигурации начальные, обеспечивают цену домашнему облаку менее 11 тыс. руб.
И при текущей стоимости интернет-подключения ~450 руб./мес. 5500 руб. в год.
Если сравнить стоимость со стоимостью облачного хранения, например в Google за 120$ за терабайт, то возникают некоторые вопросы. Однако, домашнее, непосредственно доступное облако с некоторых позиций выглядит предпочтительнее.


Установка и настройка web-сервера nginx


Nginx - известный кэширующий веб-сервер.
Веб-сервер занимается тем, что отдает файлы с сервера, по протоколу http/https клиенту.

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

В Ubuntu 14.04 он идёт в пакетах,

$ sudo apt-get install nginx
либо
$ sudo apt-get install nginx-extras

Последний пакет, нужен если будет (а он будет, удобно) использоваться протокол webdav на сервере, для каких-то иных целей. В ownCloud встроен собственный webdav, так что системный не задействуется, как я понимаю.
Но у меня заработало более менее с nginx-extras


Основной конфигурационный файл web-сервера nginx: /etc/nginx/nginx.conf

Конфигурация сайта по умолчанию, сразу после установки: /etc/nginx/sites-enabled/default,
/etc/nginx/sites-enabled - это ссылки на конфигурации сайтов которые будет работать после запуска сервиса nginx
/etc/nginx/sites-available - это конфигурации сайтов, как работающих так и в процессе настройки и конфигурирования (неработающих).


Сайт по-умолчанию, после установки работает на 80 порту и содержит приветствие nginx.

Просмотреть его можно по ссылке: http://localhost/


Пользователь добавленный в систему: www-data

Простейшая документация по web-серверу и его конфигурационному файлу: http://nginx.com/resources/admin-guide/web-server/


Теперь надо определиться с месторасположением (location) файлов web-сервера в локальной файловой системе компьютера.

Пусть это будет /srv/www
Создадим /srv/www и установим пользователя www-data у этого каталога.

# mkdir /srv/www
# chown -R www-data:www-data /srv/www

Сюда (в /srv/www) можно скопировать index.html файл из начального примера.

http://localhost/index.html


※※※


Предварительно устанавливаемые пакеты


autogen - генератор текстовых файлов по шаблону.
ntp - сервис "сетевая служба времени", понадобиться, видимо при синхронизации файлов между клиентами owncloud.
clamav - антивирусная проверка файлов.

К серверу добавится служба времени, служба антивируса, и обновления времени и баз сигнатур (отпечатков вирусов) антивируса.

※※※


Установка PHP5


PHP5 - дедушка Интернета. Использовался с очень древних пор. Но всё ещё продолжает использоваться. Кому-то нравиться.

Поиск пакетов в репозитории:
apt-cache search php5
apt-cache search php



Общий список устанавливаемых пакетов:

$ sudo apt-get install php5 php5-cgi php5-cli php5-common php-pear php5-fpm php5-mysqlnd php5-pgsql php5-sqlite php5-ldap php-xml-parserphp5-curl php5-dev php5-gd php5-imagick php5-intl php5-mcrypt

Базовая система
php5 - метапакет серверной части.
php5-cgi отдельный пакет, обеспечивающий связь Common Gateway Interface c php.
php5-cli
php5-common

php-pear

Отдельные модули php5

php5-fpm - PHP-FPM демон для запуска FastCGI сервера, для обработка php-программ.

php5-mysqlnd - родной пакет для поддержки связи php и субд mysql
php5-pgsql - пакет для поддержки связи php и субд postgresql
php5-sqlite - пакет для поддержки связи php и субд sqlite

php5-ldap - пакет для поддеркжи связи php и LDAP-серверов
php-apc - пакет для оптимизатора
php5-apc - если найдётся в пакетах

php-xml-parserphp5-curl
php5-dev
php5-gd
php5-imagick - поддерка связи php и imagick - утилиты и библиотеки обработки графических файлов
php5-intl - интернационализация
php5-mcrypt - поддержка какого-то кодирования


Конфигурационные файлы:
/etc/php5/cli/php.ini
/etc/php5/fpm/php.ini

В этих файлах надо настроить ограничения (снять) на размер загружаемого файла (обычное 2 Мб).

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

upload_max_filesize = 16G

Также приведём в соответствие максимальный размер POST-запроса, передаваемого серверу
post_max_size = 16G
Объём памяти выделяемый под загружаемый файл, пусть будет больше загружаемого файла, чтобы с запасом.
Единственное что, сложно - это размер памяти сервера, он достаточно мал, будет использоваться подкачка.

memory_limit = 20G

Плюс над протестировать в реальных условиях, а то может получить не очень хорошо.

Ещё кое что надо сделать в этих файлах (/etc/php5/fpm/php.ini):
cgi.fix_pathinfo=0

После внесения изменений перезапустить php5-fpm:
# service php5-fpm restart


Долго не мог понять, почему не изменяется размер возможного загружаемое файла в ownCloud, вроде все опции настроил по инструкции, перезапускал и сервер и php-rpm. Решение оказалось банальным - перезапустить компьютер. Что-то, где-то, видимо было недообновлено.

※※※

Опционально. Установка СУБД mySQL 


Для домашнего использования, совсем необязательно использовать mysql сервер и настраивать его. Достаточно использовать sqlite3.

# apt-get install mysql-server mysql-client


Настройку mysql, но я выбираю postgresql приведу возможно позже, в рамках другой заметки.

※※※

Подготовка и установка цифровых сертификатов подлинности сервера


Самоподписанные сертификаты позволяют без затрат денег, установить "заглушку" в протокол https, т.е. всё будет почти также работать как с настоящими сертификатами, но только при открытии сайта (в данном случае облака) обычные браузеры будут сообщать о риске и недоверенном узле. Тут надо будет добавить в список исключений этот сертификат облака и тогда на это можно будет не обращать внимания. Разве только красным цветом выделение надписи https будет "напрягать".

В результате мы должны получить 2 файла:

microserver.key - частный (приватный) ключ
microserver.crt - самоподписанный сертификат виртуального сервера

Инструкцию с описанием шагов по генерации самоподписанных сертификатов можно посмотреть на ресурсе [8].

Здесь просто последовательность команд, выполнение которых обеспечит достижение цели данного руководства.

openssl genrsa -des3 -out microserver.key 2048
openssl rsa -in microserver.key -out microserver.key.insecure
mv microserver.key microserver.key.secure
mv microserver.key.insecure microserver.key
openssl req -new -key microserver.key -out microserver.csr
openssl x509 -req -days 365 -in microserver.csr -signkey microserver.key -out microserver.crt


Скопировать их в хранилище сертификатов и ключей.
sudo cp microserver.crt /etc/ssl/certs
sudo cp microserver.key /etc/ssl/private

Пути к этим файлам, будут позже прописаны в конфигурации виртуального хоста nginx, чтобы сервер мог осуществлять https-соединения.
※※※

Подготовка к установке ownCloud

Для установки ownCloud в Ubuntu 14.04, проще всего подключить репозиторий, c сайта проекта[11]:

$ wget http://download.opensuse.org/repositories/isv:ownCloud:community/xUbuntu_14.04/Release.key 
$ sudo apt-key add - < Release.key
$ sudo sh -c "echo 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/community/xUbuntu_14.04/ /' >> /etc/apt/sources.list.d/owncloud.list" 
$ sudo apt-get update 
$ sudo apt-get install owncloud

Если все ранее указанные пакеты программ были установлены ранее, то эта команда установить чистую систему персонального облака. Т.е. все зависимости облака выявлены и понятно, какие компоненты добавлены в систему сервера. Это важно понимать, чтобы проверить на возможные возникшие дыры и т.п.

Может потребоваться деинсталляция пакета apache2, т.к. здесь используется nginx.


Облако будет установлено в стандартную папку сайтов: /var/www, под именем owncloud.

Конфигурационный файл облака: /var/www/owncloud/config/config.php

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

Для начала, лучше подготовить каталог, папку, том(volume), точку монтирования, которая будет выступать в качестве хранилища данных для собственного облака.
Очень часто, хранилище располагается на томе lvm, что даёт некоторые гибкие возможности по увеличению места, но я исповедую иной подход, т.к. увеличение места может закончиться неудачно, а данные огромны и просто так их не зарезервируешь.




Если этого не сделать, то данные будут храниться в папке по умолчанию: /var/www/owncloud/data, что не всегда безопасно, т.к. грозит удалением, при обновлении сервиса.

※※※

Настройка безопасного подключения к облаку ownCloud


"Безопасное подключение" - это использование протокола http поверх (внутри) ssl/tls, с ассиметричным шифрованием данных.


Теперь надо настроить виртуальный www-сервер (vhost nginx) на использование owncloud.
Для начала:
Доменное имя, по которому облако будет доступно: my.domain.name
В частных случаях, это может быть динамическое доменное имя (от сервисов подобных twodns, dyndns).
Если облако доступно только в домашней сети - что не имеет особого смысла, то это может быть avahi-домен, либо IP-адрес внутренней сети.
Т.е. если набрать в браузере https://my.domain.name/, то мы должны попасть на страницу регистрации (login).
Обычно, обычные пользователи используют какой-либо маршрутизатор, которые и принимает белый ip-адрес от провайдера, а остальным домашним клиентам выдаёт "серые" из диапазона неподключенных сетей.
В этом случае, надо делать проброс портов на роутере, регистрацию динамического доменного имени (например  twodns), чтобы таки получить возможность в строке браузера набрать https://my.domain.name/.

Также стоит заметить, что многие провайдеры фильтруют порты до 1024 от внешних обращений, тогда надо порт на котором будет слушать сервер, сдвинуть вверх, например 12443 и при указании адреса в строке указывать и порт: https://my.domain.name:12443/
На время тестирования к серверу можно обращаться по localhost,ip-адресу и пр.



# Виртуальный сервер "Персональное облако"
# сервер: микросервер
# дата: 29.05.2014
server {
       listen 443 ssl;
       listen 80 default_server;
       server_name default 'my.domain.name' '192.168.1.11';
       

       # Корень сайта - корень облака
       root /var/www/owncloud;

#       if ($http_host != "my.domain.name") {
#                 rewrite ^ http://my.domain.name$request_uri permanent;
#       }

       index index.php index.html;


       # Иконка сайта, отображаемая в адресной строке
       location = /favicon.ico {
                log_not_found off;
                access_log off;
       }

       location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
       }

       # Запрет доступа к скрытым файлам .htaccess, .htpasswd.
       location ~ /\. {
                deny all;
                access_log off;
                log_not_found off;
       }
       

       # Самоподписанный сертификат и частный незапароленный ключ сервера
       ssl_certificate /etc/ssl/certs/microserver.crt;
       ssl_certificate_key /etc/ssl/private/
microserver.key;


        client_max_body_size 16G; # set max upload size

        rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
        rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
        rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
        rewrite ^/apps/calendar/caldav.php /remote.php/caldav/ last;
        rewrite ^/apps/contacts/carddav.php /remote.php/carddav/ last;
        rewrite ^/apps/([^/]*)/(.*\.(css|php))$ /index.php?app=$1&getfile=$2 last;
        rewrite ^/remote/(.*) /remote.php last;

        
        # Страницы ошибок
        error_page 403 = /core/templates/403.php;
        error_page 404 = /core/templates/404.php;





        # Запрет доступа к системным файлам облака ownCloud
        location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
                        deny all;
        }

        location / {
                        rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
                        rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;

                        rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
                        rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;

                        rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;

                        try_files $uri $uri/ /index.php$is_args$args;
        }

        location ~ ^(.+?\.php)(/.*)?$ {
                        try_files $1 =404;
                        include fastcgi_params;
                        fastcgi_param SCRIPT_FILENAME $document_root$1;
                        fastcgi_param PATH_INFO $2;
                        fastcgi_param HTTPS $https;
                        # fastcgi_pass unix:/var/run/php5-fpm.sock;
                        fastcgi_pass 127.0.0.1:9000;
                        fastcgi_intercept_errors on;
                        fastcgi_index index.php;
                        fastcgi_buffers 64 4K;
        }

        location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
                        expires 30d;
                        access_log off;
        }
}

Этим файлом можно (либо надо) заменить файл default расположенный в /etc/nginx/site-available/.

Также этот файл (и другие) включается в общую конфигурацию сервера nginx посредством директивы include в файле: /etc/nginx/nginx.conf .



У облака ownCloud есть конфигурационный файл, которые тоже требует внимания пользователя на момент установки.
Располагается в ownCloud/config/config.php

На начальном этапе установки, нас в нём будет интересовать опция trusted_domain - которая укажет какие домены облака доверенные. Будет это полное имя т.н. FQDN, либо просто внутренний ip-адрес, либо и то и другое.

Выглядит он так:

$ cat /var/www/owncloud/config/config.php

<?php
$CONFIG = array (
  'instanceid' => 'oc2344a23abc',
  'passwordsalt' => 'ab1137423168fd7c2a6223a6b520b',
  'trusted_domain' =>
  array (
    0 => 'localhost:443', 1 => 'mir.local:443', 2 => 'my.domain.name:443'
  ),

  'datadirectory' => '/mnt/oblako',
  'dbtype' => 'sqlite3',
  'version' => '6.0.3.1',
  'installed' => true,
  'allowZipDownload' => false,
);

Тут видно и точку монтирования заданную при установке облака - /mnt/oblako. Это отдельный том, общим объёмом около 50Гб.

По идее виртуальных сайтов, можно сделать несколько установок owncloud, каждую в свой отдельный каталог, для различных целей. Например, одно облако для просмотра коллекций, а другое только для загрузки или обмена с пользователями.
Либо один сайт с облаком для предварительного тестирования всяких возможностей, чтобы затем перенести в работающее облако.




Из недостатков системы (точнее интеграции её в систему) - это то, что хранение данных, ведётся из под пользователя www-data и сложно пополнять базу документов и пр., с помощью простого файлового менеджера. После загрузки файлов с помощью файлового менеджера, из консоли, надо обязательно изменить права владельца, со своих на www-data, либо использовать webdav подключение, либо монтировать файловую систему webdav. В этих случаях, действия с файлами, практически не отличаются от обычных, за исключением временных задержек. Со временем, тут главное терпение и ожидание завершения предыдущих операций.


※※※

Pydio и Nginx


Pydio - Put your data in orbit - ещё одна облачная система, которая может быть использована для целей домашнего облака.

Устанавливается тоже с некоторыми сложностями, но в части раздела PHP5 (уже установленного) почти совпадает с ownCloud.

Надо скачать установочный архив [6] и развернуть (разархивировать) его в каталог который будет использоваться под этот проект (сам проект, не данные). Настроить первоначальные права.
Пусть это будет /var/www/pydio

У меня это происходит так, под суперпользователем (root):

# unzip /home/gimmor/Загрузки/pydio-core-5.2.3.zip
# mv pydio-core-5.2.3 /var/www/pydio
# chown -R www-data /var/www/pydio



Далее, настройка конфигурации сервере nginx для использования pydio
За основу возьмём файл с ресурса [7] и подправим для своих условий.

server {
    Сервер pydio временно будет сервером по-умолчанию
    listen 80 default_server;

    Сервер будет принимать безопасные соединения на 443 порту.
    listen 443 ssl;
    # Доменное имя, под которым сервер будет доступен
    server_name localhost 'pydio.local' '192.168.5.37';


    # Самоподписанный сертификат для виртуального сервера pydio и частный ключ
    ssl_certificate     /etc/ssl/certs/pydio-server.crt;
    ssl_certificate_key /etc/ssl/private/pydio-server.key;
    # Корень сервера, его месторасположение
    root /var/www/pydio;
    # Кодировка сервера по-умолчанию
    charset utf-8;
    # Главный индексный файл корня сервера
    index index.php;

    
    # Если мы пытаемся зайти по 80 порту, то будем перенаправлены
    # Это заглушка временна, пока сервера окончательно не будут настроены
    # Вполне возможно, что на 80 порту будет висеть какая-либо страница
    if ($server_port = 80) {
        rewrite ^ https://$host$request_uri permanent;
    }

    client_max_body_size 1G;

    # Журнал доступа
    access_log /var/log/nginx/pydio.access.log;
    # Журнал ошибок

    error_log /var/log/nginx/pydio.error.log;




    # Месторасположение
    location / {
    }


    location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
        expires max;
        add_header Pragma public;
        add_header Cache-Control "public, must-revalidate, proxy-revalidate";
    }

    location = /conf/       { deny all; }
    location = /data/       { deny all; }

    # robots.txt определяет права для роботов индексаторов
    location = /robots.txt  { access_log off; log_not_found off; }

    # brj
    location = /favicon.ico { access_log off; log_not_found off; }
    location ~ /\.          { access_log off; log_not_found off; deny all; }
    location ~ ~$           { access_log off; log_not_found off; deny all; }


    # Некоторые настройки fastcgi для обработки php-файлов
    location ~ \.php {
        try_files $uri =404;
        fastcgi_param  QUERY_STRING       $query_string;
        fastcgi_param  REQUEST_METHOD     $request_method;
        fastcgi_param  CONTENT_TYPE       $content_type;
        fastcgi_param  CONTENT_LENGTH     $content_length;
        fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
        fastcgi_param  SCRIPT_FILENAME    $request_filename;
        fastcgi_param  REQUEST_URI        $request_uri;
        fastcgi_param  DOCUMENT_URI       $document_uri;
        fastcgi_param  DOCUMENT_ROOT      $document_root;
        fastcgi_param  SERVER_PROTOCOL    $server_protocol;
        fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
        fastcgi_param  SERVER_SOFTWARE    nginx;
        fastcgi_param  REMOTE_ADDR        $remote_addr;
        fastcgi_param  REMOTE_PORT        $remote_port;
        fastcgi_param  SERVER_ADDR        $server_addr;
        fastcgi_param  SERVER_PORT        $server_port;
        fastcgi_param  SERVER_NAME        $server_name;
        #fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_pass 127.0.0.1:9000;
    }
}




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


Существует противоречивое требование к php5-fpm от pydio и от ownCloud.
Pydio требует выключенной опции output_buffering = Off , ownCloud - включенной.


Исправление бага php5 ubuntu с отключенным модулем mcrypt:

ln -s /etc/php5/mods-available/mcrypt.ini  /etc/php5/fpm/conf.d/20-mcrypt.ini


Исправление проблем безопасности файлов. Разграничение доступа

Здесь надо помнить, что при копировании файлов на веб-сервер, потом требуется задать владельца, т.к. часто владельцем оказывается root, что запрещает доступ к файлам.

Nginx обеспечивает запрещение доступа к отдельным каталогам (месторасположениям, location) веб-сервера, посредством директивы deny all в настройках конкретного виртуального сервера.
Например:

location /onlymyfiles {
 deny all;
}




Peertracker - bittorrent tracker


Peertracker - простейший трекер торрентов, который может быть установлен на собственный домашний компьютер и выступать в виде персонального трекера, посредством которого распространяются авторские (собственные) материалы. Т.е. статьи, изображения, скрипты, какие-то иные данные.

Устанавливается, как и любое веб-приложение, с некоторыми ручными операциями.

Для простейшего случая, домашнего трекера для небольшого количества файлов подойдет база данных sqllite3. Так что всех делов - это скопировать дистрибутив в папку сервера, создать конфигурацию nginx для этого сервера.

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

С технологической точки зрения, Трекер это сервисная программа обслуживающая специфические HTTP/HTTPS GET-запросы, которые
определены спецификацией протокола Bittorrent.


Для распространения собственных материалов, можно использовать посредника OpenBittorrent и его открытый (без регистрации и пр.) url.

http://tracker.openbittorrent.com:80/announce

При создании своего публично доступного торрент-файла, надо в списке трекеров указать http://tracker.openbittorrent.com:80/announce . Всё остальное сделает торрент-клиент. Пользователь полученного торрент-файла также может начать загрузку по получении торрент-файла.
Иногда, этот трекер часто оказывается единственно доступным, в списке торрент-трекеров, указанных в файле.

Для улучшения передачи файлов, надо стремиться исключить трекер, как посредника. Вполне рабочим способом является magnet-ссылка, которая даёт возможность не использовать трекер. Но у неё возникает другой посредник - распределённая хэш-таблица DHT.
Магнет-ссылка хороша тем, что её содержимое может передаваться в текстовой форме и отпадает необходимость создания торрент-файла (хотя торрент-клиенты делают это неявно).

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

※※※

Ресурсы


1. Официальный сайт ownCloud. http://owncloud.org/
2. Официальный сайт nginx. http://nginx.org/ru/
3. Сайт по языку PHP5. http://www.php5.ru/
4. Официальный сайт Pydio. https://pydio.com/
5. Сайт сообщества Pydio. http://pyd.io/
6. Загрузка Pydio. http://pyd.io/download/

7. http://pyd.io/nginx/

8. Сертификаты: http://help.ubuntu.ru/wiki/%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_ubuntu_server/%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C/certificates

9. Свободный трекер Openbittorrent: http://openbittorrent.com/
10. Установка ownCloud. http://doc.owncloud.org/server/6.0/admin_manual/installation/installation_source.html

11. Подготовленные репозитории для дистрибутивов Linux. http://software.opensuse.org/download/package?project=isv:ownCloud:community&package=owncloud

Ресурсы простым списком, использованные при поднятии сервера.
http://habrahabr.ru/post/208566/
http://habrahabr.ru/post/160237/
http://habrahabr.ru/post/154047/
http://habrahabr.ru/company/selectel/blog/213945/

http://www.php5.ru/study/webbasics
http://martin-denizet.com/nginx-configuration-for-pydio-with-ssl/

http://blackbe.lt/setting-up-utf-8-encoding-in-php-and-mysql/
Свой WebDAV сервер на nginx. http://xandroskin.ru/it/svoj-webdav-server-na-nginx/495
Обработка регулярок в nginx. http://xandroskin.ru/it/obrabotka-regulyarok-v-nginx/597

http://vds-admin.ru/nginx/nastroika-svyazki-nginx-apache-fastcgi


※※※

суббота, 22 октября 2011 г.

Symphony CMS справка по установке в Ubuntu 11.10

Symphony - справочная информация по системе управления содержимым (Content Management System) вебсайта,- Symphony CMS. Symphony CMS использует технологии XML, XSLT для генерации страниц вебсайта. Структура,внешний вид, взаимодействие с пользователем, сайта задается файлами xml и xslt, без необходимости написания скриптов на php.

Основы

Symphony CMS - открытая система управления содержимым вебсайта с использованием технологий XML,XSLT. Написана на языке PHP.

Сайт программы: http://www.getsymphony.com/

Ensembles - упакованная копия сайта готовая к установке.

Page - это XML, который состоит из веток, сформированных datasource
XSL шаблоны, выбирают куски из этого XML и выводят html


Системные требования

- PHP версии 5.2 и выше

- PHP's LibXML module, with the XSLT extension enabled (--with-xsl)

- MySQL версии 4.1 и выше

- Вебсервер Apache или Litespeed

- Модуль вебсервера Apache - mod_rewrite или эквивалентный



Подготовка к использованию на компьютере разработчика

Установка требуемого окружения в виде системы контроля версий git, СУБД MySQL, вебсервера Apache, языка PHP5 и разнообразных требуемых модулей. Данная установка специфична для Symphony CMS, для других CMS требуется другой набор модулей.

$ sudo apt-get install git

$ sudo apt-get install apache2

$ sudo apt-get install mysql-server

$ sudo apt-get install php5 php5-mysql php5-xsl php5-curl php5-gd

Во время установки сервера MySQL, пользователю будет предложено создать пароль для пользователя root, для доступа к СУБД.




Настройка установленного сервера Apache2
Основным конфигурационным файлом вебсервера Apache2 в Ubuntu 11.10 является /etc/apache2/httpd.conf и /etc/apache2/apache2.conf соответственно.

Минимальные правки необходимые для запуска Symphony CMS.

1. Выполнить включение rewrite:
$ sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load либо sudo a2enmod rewrite

2. Скорректировать файл 000-default, исправив строки AllowOverride none на AllowOverride all, везде где они встречаются.
 sudo nano /etc/apache2/sites-enabled/000-default

Сохранить изменения Ctrl-O и выйти из редактора Ctrl-X

4. Правильный путь - создать настройку нового сайта

5. Дополнительные необязательные,но полезные настройки вебсервера Apache2 - см. Опции

0. Перезапустить сервер Apache, выполнив
$ sudo /etc/init.d/apache2 restart
либо
$ sudo service apache2 restart

Создание базы данных в MySQL
Локализовать БД.
Быстрый способ создания - используя консольные утилиты MySQL
Выполнить
$sudo mysql -u root -p
ввести заданный на этапе инсталляции пароль, появится приглашение:
mysql>
выполнить команду (скрипт создания БД)

CREATE DATABASE testdb CHARACTER SET utf8 COLLATE utf8_unicode_ci;

где testdb - выбранное вами имя первоначальной базы данных. Далее выполнить команду exit.

Внимание!После создания базы данных в mySQL, надо установить ей свойство сравнения Unicode
если этого не сделать, то при создании разных секций в системе, при наборе русского текста появляются вопросики.

Скачивание и развертывание Symphony OS в папке /var/www
Пусть для нашей CMS выбрана папка site, c адресом в файловой системе /var/www/site

1. Выполнить в режиме root или www-data:

$ sudo git clone git://github.com/symphonycms/symphony-2.git site

$ sudo cd site

$ sudo git submodule update --init
 необязательно
$ sudo git clone git://github.com/symphonycms/workspace.git

$ sudo chmod 777 symphony .
 необязательно, если только нет папки workspace
$ sudo chmod -R 777 workspace


В результате успешного завершения будет сформирована папка site.

Запуск установочного скрипта Symphony CMS

Перед запуском установочного скрипта вы должны создать базу данных сайта в СУБД MySQL.

В адресной строке веб-броузера (например Firefox) перейти:

http://localhost/syte/install.php

Если все правильно было настроено, должна появиться форма установки, где нужно указать пароли доступа к БД, к Symphony
Должна появиться форма входа в систему Symphony CMS в административный режим.
Адрес входа в административный интерфейс:

http://localhost/site/symphony/

Если был загружен workspace, то появится страница сайта-примера и она будет доступна по адресу:

http://localhost/site/


Установка дополнительных расширений Symphony CMS и подготовка к разработке

Включение расширений в вебинтерфейсе Symphony CMS. Перейти в меню CMS: System-Extensions. Выделить включаемое расширение и нажать Apply, выбрав в выпадающем меню with selected...

Для режима отладки xml файлов надо включить расширение debug-Devkits, оно присутствует в базовой поставке.
С чего начать разрабатывать первый тестовый сайт?

Я начал с создания datasource курсов валют ЦБ РФ
Название источника данных - cbrf-ds
в формируемом xml файле он находится в ветке /data/cbrf-ds
Далее я начал с создания простой страницы (Page) с подключенным источником данных.Отредактировал автоматически созданный xsl файл, для формирования простейшего html вывода. Без минимальных знаний XSLT не обойтись.



Опции
Несколько установок Symphony CMS
Вполне разумно сделать несколько установок Symphony CMS в иные каталоги вебсервера, чтобы иметь возможность тестировать расширения и сторонние утилиты, перед тем, как переносить их в основную девелоперскую версию. Можно также скачать и установить Ensambles - готовые настроенные копии Symphony CMS.

Установка Symphony CMS в домашней директории пользователя
Установка Symphony CMS в папку /var/www создает некоторые трудности в изменениях сайта, его надо редактировать с системной учетной записью root. Чтобы упростить себе жизнь, надо разместить сайт в домашней директории. Также домашняя директория доступна для многих программ архивирования по-умолчанию.

Создадим в домашней директории пользователя папку webdev и перейдем в нее:
$ mkdir webdev

$ cd webdev

Выполним скачивание Symphony CMS

$ git clone git://github.com/symphonycms/symphony-2.git site

$ cd site

$ git submodule update --init

$ git clone git://github.com/symphonycms/workspace.git

Теперь надо настройть виртуальные сайты (virtual hosts) вебсервера Apache2.
$ sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/site

Отредактировать /etc/apache2/sites-available/site, заменить /var/www на /home/USERNAME/webdev

Отредактировать файл /etc/hosts, внести запись вида:
 127.0.0.1 site

Перезапустить сервер Apache2
$ sudo service apache2 restart

Если все правильно сделано, то сервер будет доступен в броузере, по адресу: http://site

Теперь можно спокойно редактировать сайт, не пребегая к правам суперпользователя.

Дополнительная настройка вебсервера Apache2
В конфигурационный файл свежеустановленного web-сервера можно внести некоторые косметические исправления. Для этого среди многочисленных (и полезных) комментариев находим и раскомментируем директивы

 ServerAdmin admin@site  # почтовый адрес администратора

 ServerName site:80      # имя сервера
в строке LanguagePriority переставляем ru на первое место
LanguagePriority ru en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl...

Конфигурационный файл .htaccess

Файл .htaccess (от. англ. hypertext access) — файл дополнительной конфигурации веб-сервера Apache, позволяет задавать дополнительные параметры и разрешения для работы веб-сервера в отдельных каталогах (папках), таких как управляемый доступ к каталогам, переназначение типов файлов и т.д., без изменения главного конфигурационного файла.

Файл .htaccess является подобием httpd.conf с той разницей, что действует только на каталог, в котором располагается, и на его дочерние каталоги. Возможность использования .htaccess в том или ином каталоге указывается в httpd.conf (директива AllowOverride).

Файл .htaccess может быть размещён в любом каталоге. Директивы этого файла действуют на все файлы в текущем каталоге и во всех его подкаталогах (если эти директивы не переопределены директивами нижележащих файлов .htaccess). Для того чтобы эти файлы .htaccess можно было использовать, необходимы соответствующие настройки главного конфигурационного файла (значение директивы AllowOverride должно быть установлено All). Как правило, подавляющее большинство хостеров разрешают использовать свои файлы .htaccess.

Пути к файлам и каталогам должны указываться от корня сервера, например, /var/www/domain.com/htdocs/

Более подробно разбор содержимого файла .htaccess см. в http://www.htaccess.net.ru/ и официальной документации Apache

Опции. WEBDAV
Установка
$ sudo a2enmod dav
$ sudo a2enmod dav_fs
$ sudo a2enmod auth_digest

Создание пользователей получающих доступ webdav
$ sudo htdigest -c /etc/apache2/webdav-passwd webdav username1
$ sudo htdigest /etc/apache2/webdav-passwd webdav username2



Псевдонимы для сайтов

Иногда полезно задать несколько псевдонимов для сайтов в /etc/hosts
для удобного доступа по проектам.

Например:

 http://siteforsale/

http://siteforus/

http://siteforme/

Примерное содержимое /etc/hosts

127.0.0.1       siteforsale

127.0.0.1       siteforsale.local

127.0.0.1       siteforus

127.0.0.1       siteforus.local

127.0.0.1       siteforme

127.0.0.1       siteforme.local

Система присвоения имен
Для упрощения понимания структуры и ориентации среди многих разрабатываемых сайтов с использованием Symphony CMS, рекомендуется принять какую-либо систему именования каталога сайта, БД сайта, таблиц БД (префикс специфичный), а также какую-либо структуру размещения сайтов в файловой системе. Например, пусть имя сайта будет siteforus, тогда папка размещения - /var/www/siteforus, база данных сайта - siteforus, имя административного пользователя - siteforus, префикс таблиц sfr.

Установка phpMyAdmin
phpMyAdmin - вебинтерфейс администрирования СУБД MySQL
$ sudo apt-get install libapache2-mod-auth-mysql phpMyAdmin
После установки phpMyAdmin будет доступен по адресу:
http://localhost/phpmyadmin/
с именем и паролем введенным при установке.

Права доступа
нет пока и скорее не будет, чем будет

Публикация сайта
Проверка хостинга на соответствие требованиям
Выбрать хостинг устойчивый к большому наплыву посетителей
Перенос данных сайта на хостинг


Замеченное. Проблемы и решения

1. После добавления шаблонов, в папку workspace
надо сделать обновление прав на локальном компьютере
$ sudo chmod -R 777 .
на удаленном сервере 775 или 755


2. Установка sympony cms конфликтовала с установленным web-интерфейсом
mythtv
более менее пролечилось удалением mythtv, а также правкой файла
/etc/apache2/sites-available/default.

Переключением строки AllowOverride c none на All.
Это фича Ubuntu, которая запрещает .htaccess

DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

После установки так называемого "ensambles" designadmin возникала xslt ошибка.
Причина, в исходной загрузки из git отсутствовала папка расширения.
Для ее получения выполнить git submodule update --init
После переустановить систему


Все.

※※※

Ресурсы


1. Официальный сайт. http://www.getsymphony.com/

※※※