<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Malond Blog]]></title><description><![CDATA[Thoughts, stories and ideas.]]></description><link>https://malond-blog.azurewebsites.net/</link><generator>Ghost 0.11</generator><lastBuildDate>Wed, 08 Apr 2026 20:04:17 GMT</lastBuildDate><atom:link href="https://malond-blog.azurewebsites.net/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Установка Docker и настройка контейнеров]]></title><description><![CDATA[<h2 id="docker">Установка Docker</h2>

<p>Для установки нам потребуется <a href="https://www.docker.com/">docker</a>, образ <a href="https://github.com/verdaccio/verdaccio">verdaccio</a>.</p>

<p>Устанавливаем docker.</p>

<h6 id="">Настройка:</h6>

<p>Разрешаем доступ к диску, для монтирования папки:</p>

<p><img src="http://help.malond.com/wp-content/uploads/2017/11/2017-11-01.png" alt="http://help.malond.com/wp-content/uploads/2017/11/2017-11-01.png"></p>

<p>Далее мы будем устанавливать следующие контейнеры:</p>

<ul>
<li>Mongo</li>
<li>Redis</li>
<li>PostgreSQL</li>
<li>Redmine</li>
<li>Verdaccio</li>
<li>Nginx</li>
<li>MySQL</li>
<li>Ghost</li>
</ul>

<h2 id="">Установка контейнеров</h2>

<h6 id="mongo">Mongo</h6>

<p>Перед началом, создадим папку по адресу:</p>

<pre><code>C:\Users\sokol\Documents\docker\shared\mongo\data</code></pre>]]></description><link>https://malond-blog.azurewebsites.net/ustanovka-docker-i-nastroika-kontieinierov/</link><guid isPermaLink="false">d8de22aa-c0b9-4ad2-b93a-484e5196d2e6</guid><dc:creator><![CDATA[Владимир Соколовский]]></dc:creator><pubDate>Thu, 02 Nov 2017 03:10:42 GMT</pubDate><content:encoded><![CDATA[<h2 id="docker">Установка Docker</h2>

<p>Для установки нам потребуется <a href="https://www.docker.com/">docker</a>, образ <a href="https://github.com/verdaccio/verdaccio">verdaccio</a>.</p>

<p>Устанавливаем docker.</p>

<h6 id="">Настройка:</h6>

<p>Разрешаем доступ к диску, для монтирования папки:</p>

<p><img src="http://help.malond.com/wp-content/uploads/2017/11/2017-11-01.png" alt="http://help.malond.com/wp-content/uploads/2017/11/2017-11-01.png"></p>

<p>Далее мы будем устанавливать следующие контейнеры:</p>

<ul>
<li>Mongo</li>
<li>Redis</li>
<li>PostgreSQL</li>
<li>Redmine</li>
<li>Verdaccio</li>
<li>Nginx</li>
<li>MySQL</li>
<li>Ghost</li>
</ul>

<h2 id="">Установка контейнеров</h2>

<h6 id="mongo">Mongo</h6>

<p>Перед началом, создадим папку по адресу:</p>

<pre><code>C:\Users\sokol\Documents\docker\shared\mongo\data  
</code></pre>

<p>Скачаем контейнер:</p>

<pre><code class="language-bash">docker pull mongo  
</code></pre>

<p>Запуск:</p>

<pre><code class="language-bash">docker run --name some-mongo -p 27017:27017 mongo  
</code></pre>

<p>или</p>

<pre><code class="language-bash">docker run --name some-mongo -p 27017:27017 -v /c/Users/sokol/Documents/docker/shared/mongo/data:/data/db mongo  
</code></pre>

<p>Затем можно останавливать и запускать контейнер следующими командами.</p>

<p>Остановить:</p>

<pre><code class="language-bash">docker stop some-mongo  
</code></pre>

<p>Запустить:</p>

<pre><code class="language-bash">docker start some-mongo  
</code></pre>

<h6 id="redis">Redis</h6>

<p>Перед началом, создадим папку по адресу:</p>

<pre><code>C:\Users\sokol\Documents\docker\shared\redis\data  
</code></pre>

<p>Скачаем контейнер:</p>

<pre><code class="language-bash">docker pull redis  
</code></pre>

<p>Запуск:</p>

<pre><code class="language-bash">docker run --name some-redis -p 6379:6379 -v /c/Users/sokol/Documents/docker/shared/redis/data:/data -d redis redis-server  
</code></pre>

<p>Затем можно останавливать и запускать контейнер следующими командами.</p>

<p>Остановить:</p>

<pre><code class="language-bash">docker stop some-redis  
</code></pre>

<p>Запустить:</p>

<pre><code class="language-bash">docker start some-redis  
</code></pre>

<h6 id="postgres">Postgres</h6>

<p>Скачаем контейнер:</p>

<pre><code class="language-bash">docker pull postgres  
</code></pre>

<p>Запуск:</p>

<pre><code class="language-bash">docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -p 5432:5432 -d postgres  
</code></pre>

<p>Затем можно останавливать и запускать контейнер следующими командами.</p>

<p>Остановить:</p>

<pre><code class="language-bash">docker stop some-postgres  
</code></pre>

<p>Запустить:</p>

<pre><code class="language-bash">docker start some-postgres  
</code></pre>

<h6 id="redmine">Redmine</h6>

<p>Скачаем контейнер:</p>

<pre><code class="language-bash">docker pull redmine  
</code></pre>

<p>Запуск:</p>

<pre><code class="language-bash">docker run -d -p 3434:3000 --name some-redmine --link some-postgres:postgres redmine  
</code></pre>

<p>Затем можно останавливать и запускать контейнер следующими командами.</p>

<p>Остановить:</p>

<pre><code class="language-bash">docker stop some-redmine  
</code></pre>

<p>Запустить:</p>

<pre><code class="language-bash">docker start some-redmine  
</code></pre>

<h6 id="verdaccio">Verdaccio</h6>

<p>Скачаем контейнер:</p>

<pre><code class="language-bash">docker pull verdaccio/verdaccio  
</code></pre>

<p>Запуск:</p>

<pre><code class="language-bash">docker run --name some-verdaccio -it -p 4873:4873 -d verdaccio/verdaccio  
</code></pre>

<p>Затем можно останавливать и запускать контейнер следующими командами.</p>

<p>Остановить:</p>

<pre><code class="language-bash">docker stop some-verdaccio  
</code></pre>

<p>Запустить:</p>

<pre><code class="language-bash">docker start some-verdaccio  
</code></pre>

<h6 id="nginx">Nginx</h6>

<p>Скачаем контейнер:</p>

<pre><code class="language-bash">docker pull nginx  
</code></pre>

<p>Перед началом, создадим файл по адресу:</p>

<pre><code class="language-bash">C:\Users\sokol\Documents\docker\shared\nginx\nginx.conf  
</code></pre>

<p>Перед тем, как наполнить файл настроек данными, необходимо узнать ip адрес хоста. Для этого заходим в <strong>Центр управления сетями и общим доступом</strong> и видим такую картину. Выбираем то, которая подчёркнута <em>(nat)</em>.</p>

<p><img src="http://help.malond.com/wp-content/uploads/2017/11/2017-11-02-2.png" alt="http://help.malond.com/wp-content/uploads/2017/11/2017-11-02-2.png"></p>

<p>Нажимаем <strong>Сведения</strong> и видим наш ip.</p>

<p><img src="http://help.malond.com/wp-content/uploads/2017/11/2017-11-02-3.png" alt="http://help.malond.com/wp-content/uploads/2017/11/2017-11-02-3.png"></p>

<p>В моём случае это: <strong>172.27.192.1</strong>. Если у вас отличается, замените на свой далее в файле настроек <strong>nginx.conf</strong>.</p>

<p>Так как мы будем использовать nginx только как proxy-сервер, поэтому настройки <strong>nginx.conf</strong> будут со следующим содержимым:</p>

<pre><code>worker_processes 1;

events { worker_connections 1024; }

http {

    sendfile on;

    gzip                on;
    gzip_http_version   1.0;
    gzip_proxied        any;
    gzip_min_length     500;
    gzip_disable        "MSIE [1-6]\.";
    gzip_types          text/plain text/xml text/css
                        text/comma-separated-values
                        text/javascript
                        application/x-javascript
                        application/atom+xml;

    # List of application servers

    # FRONTEND
    upstream claster_frontend {

        server 172.27.192.1:8800;

    }

    # LOGIN
    upstream claster_login {

        server 172.27.192.1:8880;

    }

    # DASHBOARD
    upstream claster_dashboard {

        server 172.27.192.1:8900;

    }

    # CMS
    upstream claster_cms {

        server 172.27.192.1:8090;

    }

    # CMS (BACKEND API)
    upstream claster_cms_backend_api {

        server 172.27.192.1:8091;
    }

    # DOCS DEV API
    upstream claster_docs_dev_api {

        server 172.27.192.1:4444;
    }

    # Configuration for the server
    server {

        # Running port
        listen 80;

        # Proxying the connections connections

        # FRONTEND
        location / {

            proxy_pass          http://claster_frontend;
            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;
            proxy_set_header    X-Forwarded-Host $server_name;

        }

        # LOGIN
        location /l/ {

            proxy_pass          http://claster_login;
            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;
            proxy_set_header    X-Forwarded-Host $server_name;

        }

        # DASHBOARD
        location /d/ {

            proxy_pass          http://claster_dashboard;
            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;
            proxy_set_header    X-Forwarded-Host $server_name;

        }

        # CMS
        location /modules/cms/ {

            proxy_pass          http://claster_cms;
            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;
            proxy_set_header    X-Forwarded-Host $server_name;

        }

        # CMS (BACKEND API)
        location /modules/cms/api/ {

            proxy_pass          http://claster_cms_backend_api;
            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;
            proxy_set_header    X-Forwarded-Host $server_name;

        }

        # DOCS DEV API
        location /docs/api/ {

            proxy_pass          http://claster_docs_dev_api;
            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;
            proxy_set_header    X-Forwarded-Host $server_name;

        }
    }
}
</code></pre>

<p>Запуск:</p>

<pre><code class="language-bash">docker run --name some-nginx -p 80:80 -v /c/Users/sokol/Documents/docker/shared/nginx/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx  
</code></pre>

<p>Затем можно останавливать и запускать контейнер следующими командами.</p>

<p>Остановить:</p>

<pre><code class="language-bash">docker stop some-nginx  
</code></pre>

<p>Запустить:</p>

<pre><code class="language-bash">docker start some-nginx  
</code></pre>

<h6 id="mysql">MySQL</h6>

<p>Скачаем контейнер:</p>

<pre><code class="language-bash">docker pull mysql  
</code></pre>

<p>Запуск:</p>

<pre><code class="language-bash">docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-password -p 3306:3306 -d mysql  
</code></pre>

<p>Затем можно останавливать и запускать контейнер следующими командами.</p>

<p>Остановить:</p>

<pre><code class="language-bash">docker stop some-mysql  
</code></pre>

<p>Запустить:</p>

<pre><code class="language-bash">docker start some-mysql  
</code></pre>

<h6 id="ghost">Ghost</h6>

<p>Скачаем контейнер:</p>

<pre><code class="language-bash">docker pull ghost  
</code></pre>

<p>Перед началом, создадим папку по адресу:</p>

<pre><code class="language-bash">C:\Users\sokol\Documents\docker\shared\ghost\  
</code></pre>

<p>Запустим для формирования конфигурации:</p>

<pre><code class="language-bash">docker run --name some-ghost -p 8020:2368 ghost  
</code></pre>

<p>Остановим:</p>

<pre><code class="language-bash">docker run --name some-ghost -p 8020:2368 ghost  
</code></pre>

<p>Скопируем конфигурацию:</p>

<pre><code class="language-bash">docker cp some-ghost:/var/lib/ghost:/c/Users/sokol/Documents/docker/shared/ghost  
</code></pre>

<p>Запуск:</p>

<pre><code class="language-bash">docker run --name some-ghost -d -p 8020:2368 -v /var/lib/ghost:/c/Users/sokol/Documents/docker/shared/ghost ghost  
</code></pre>

<p>Затем можно останавливать и запускать контейнер следующими командами.</p>

<p>Остановить:</p>

<pre><code class="language-bash">docker stop some-ghost  
</code></pre>

<p>Запустить:</p>

<pre><code class="language-bash">docker start some-ghost  
</code></pre>

<h2 id="">Быстрый запуск и остановка</h2>

<p>Необходимо создать скрипты.</p>

<p>Запуск:</p>

<pre><code>echo "Start PosgreSQL"  
docker start some-postgres

echo "Start Mongo"  
docker start some-mongo

echo "Start Redis"  
docker start some-redis

echo "Start NPM"  
docker start some-verdaccio

echo "Start Redmine"  
docker start some-redmine

echo "Start Nginx"  
docker start some-nginx

echo "Start MySQL"  
docker start some-mysql

echo "Start Ghost"  
docker start some-ghost

echo "Show containers"  
docker ps

pause  
</code></pre>

<p>Остановка <em>(в обратном порядке)</em>:</p>

<pre><code>echo "Stop Ghost"  
docker stop some-ghost

echo "Stop MySQL"  
docker stop some-mysql

echo "Stop Nginx"  
docker stop some-nginx

echo "Stop Redmine"  
docker stop some-redmine

echo "Stop NPM"  
docker stop some-verdaccio

echo "Stop Redis"  
docker stop some-redis

echo "Stop Mongo"  
docker stop some-mongo

echo "Stop PosgreSQL"  
docker stop some-postgres

echo "Show containers"  
docker ps

pause  
</code></pre>]]></content:encoded></item><item><title><![CDATA[Установка Node.js]]></title><description><![CDATA[<p><strong>Установка в Ubuntu</strong></p>

<p><em>Версия 6.x</em></p>

<pre><code>cd ~
curl -sL https://deb.nodesource.com/setup_6.x -o nodesource_setup.sh
sudo bash nodesource_setup.sh
</code></pre>

<p>После этого можно устанавливать:</p>

<pre><code>sudo apt-get install nodejs
</code></pre>

<p>Для того чтобы собирать пакеты, необходимо установить:</p>

<pre><code>sudo apt-get install build-essential
</code></pre>

<p>Источник: <a href="https://www.digitalocean.com/community/tutorials/node-js-ubuntu-16-04-ru">https://www.digitalocean.com/community/</a></p>]]></description><link>https://malond-blog.azurewebsites.net/ustanovka-node-js/</link><guid isPermaLink="false">9c3c4d5c-44e3-41e1-b63a-c3447bb6ae08</guid><dc:creator><![CDATA[Владимир Соколовский]]></dc:creator><pubDate>Tue, 24 Oct 2017 15:17:10 GMT</pubDate><content:encoded><![CDATA[<p><strong>Установка в Ubuntu</strong></p>

<p><em>Версия 6.x</em></p>

<pre><code>cd ~
curl -sL https://deb.nodesource.com/setup_6.x -o nodesource_setup.sh
sudo bash nodesource_setup.sh
</code></pre>

<p>После этого можно устанавливать:</p>

<pre><code>sudo apt-get install nodejs
</code></pre>

<p>Для того чтобы собирать пакеты, необходимо установить:</p>

<pre><code>sudo apt-get install build-essential
</code></pre>

<p>Источник: <a href="https://www.digitalocean.com/community/tutorials/node-js-ubuntu-16-04-ru">https://www.digitalocean.com/community/tutorials/node-js-ubuntu-16-04-ru</a></p>]]></content:encoded></item><item><title><![CDATA[Установка mc]]></title><description><![CDATA[<p><strong>Установка в Ubuntu</strong></p>

<pre><code>sudo apt-get install mc
</code></pre>]]></description><link>https://malond-blog.azurewebsites.net/ustanovka-mc/</link><guid isPermaLink="false">965ec2e0-4b41-4e52-a9b3-c87053fb19a2</guid><dc:creator><![CDATA[Владимир Соколовский]]></dc:creator><pubDate>Tue, 24 Oct 2017 15:13:30 GMT</pubDate><content:encoded><![CDATA[<p><strong>Установка в Ubuntu</strong></p>

<pre><code>sudo apt-get install mc
</code></pre>]]></content:encoded></item><item><title><![CDATA[Установка tmux]]></title><description><![CDATA[<p>Источник: <a href="https://gist.github.com/P7h/91e14096374075f5316e">https://gist.github.com/P7h/91e14096374075f5316e</a></p>

<p><strong>Установка с репозитория Ubuntu</strong></p>

<pre><code>sudo apt-get install tmux
</code></pre>

<hr>

<p><strong>tmux_build_from_source_CentOS.sh</strong></p>

<pre><code># Steps to build and install tmux from source.
# Takes &lt; 25 seconds on EC2 env [even on a low-end config instance].

VERSION=2.5
sudo yum -y remove tmux</code></pre>]]></description><link>https://malond-blog.azurewebsites.net/ustanovka-tmux/</link><guid isPermaLink="false">9c12b39f-f683-468d-ab29-c4af7ebced47</guid><dc:creator><![CDATA[Владимир Соколовский]]></dc:creator><pubDate>Mon, 23 Oct 2017 19:40:17 GMT</pubDate><content:encoded><![CDATA[<p>Источник: <a href="https://gist.github.com/P7h/91e14096374075f5316e">https://gist.github.com/P7h/91e14096374075f5316e</a></p>

<p><strong>Установка с репозитория Ubuntu</strong></p>

<pre><code>sudo apt-get install tmux
</code></pre>

<hr>

<p><strong>tmux_build_from_source_CentOS.sh</strong></p>

<pre><code># Steps to build and install tmux from source.
# Takes &lt; 25 seconds on EC2 env [even on a low-end config instance].

VERSION=2.5
sudo yum -y remove tmux
sudo yum -y install wget tar libevent-devel ncurses-devel
wget https://github.com/tmux/tmux/releases/download/${VERSION}/tmux-${VERSION}.tar.gz
tar xzf tmux-${VERSION}.tar.gz
rm -f tmux-${VERSION}.tar.gz
cd tmux-${VERSION}
./configure
sudo make install
cd -
sudo rm -rf /usr/local/src/tmux-*
sudo mv tmux-${VERSION} /usr/local/src

## Logout and login to the shell again and run.
## tmux -V
</code></pre>

<hr>

<p><strong>tmux_build_from_source_Ubuntu.sh</strong></p>

<pre><code># Steps to build and install tmux from source on Ubuntu.
# Takes &lt; 25 seconds on EC2 env [even on a low-end config instance].
VERSION=2.5
sudo apt-get -y remove tmux
sudo apt-get -y install wget tar libevent-dev libncurses-dev
wget https://github.com/tmux/tmux/releases/download/${VERSION}/tmux-${VERSION}.tar.gz
tar xf tmux-${VERSION}.tar.gz
rm -f tmux-${VERSION}.tar.gz
cd tmux-${VERSION}
./configure
make
sudo make install
cd -
sudo rm -rf /usr/local/src/tmux-*
sudo mv tmux-${VERSION} /usr/local/src

## Logout and login to the shell again and run.
## tmux -V
</code></pre>

<hr>

<p><strong>tmux_install.sh</strong></p>

<pre><code>##########################################################################################
##### Please check the installation from source, which is easy and fast.
##########################################################################################
# tmux v2.3 installation steps for Ubuntu [various OS versions]
sudo apt-get update -yqqu
sudo add-apt-repository -yu ppa:pi-rho/dev
sudo apt-get update -yqqu
sudo apt-get install -yqqu python-software-properties software-properties-common
sudo apt-get install -yqq tmux-next=2.3~20160913~bzr3547+20-1ubuntu1~ppa0~ubuntu16.04.1
# sudo apt-get install -yqq tmux-next=2.3~20160913~bzr3547+20-1ubuntu1~ppa0~ubuntu15.10.1
# sudo apt-get install -yqq tmux-next=2.3~20160913~bzr3547+20-1ubuntu1~ppa0~ubuntu15.04.1
# sudo apt-get install -yqq tmux-next=2.3~20160913~bzr3547+20-1ubuntu1~ppa0~ubuntu14.04.1
# sudo apt-get install -yqq tmux-next=2.3~20160913~bzr3547+20-1ubuntu1~ppa0~ubuntu12.04.1
tmux-next -V

# tmux v2.0 installation steps for Ubuntu 14.04 (Trusty Tahr)
tmux -V
sudo apt-get update -yqqu
sudo apt-get install -yqqu python-software-properties software-properties-common
sudo add-apt-repository -yu ppa:pi-rho/dev
sudo apt-get update -yqqu
sudo apt-get install -yqqu tmux
# sudo apt-get install -yqqu tmux=2.0-1~ppa1~t
tmux -V

# tmux v1.9 installation steps for Ubuntu 14.04 (Trusty Tahr)
sudo apt-get update -yqqu
sudo apt-get install -yqqu python-software-properties software-properties-common
sudo add-apt-repository -yu ppa:pi-rho/dev
sudo apt-get update -yqqu
sudo apt-get install -yqqu tmux=1.9a-1~ppa1~t
tmux -V

# On Ubuntu 12.04 (Precise Pangolin), step 5 would be: sudo apt-get install -y tmux=1.9a-1~ppa1~p
# On Ubuntu 13.10 (Saucy Salamander), step 5 would be: sudo apt-get install -y tmux=1.9a-1~ppa1~s
</code></pre>]]></content:encoded></item><item><title><![CDATA[Настройка Nginx для локальной разработки]]></title><description><![CDATA[<p>При разработке мы используем Nginx в качестве прокси-сервера.</p>

<p>В Windows версии nginx, мы используем следующую конфигурацию:</p>

<p><strong>nginx.conf</strong></p>

<pre><code>#user  nobody;
#worker_processes  1;
worker_processes auto;

error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        logs/nginx.pid;


events {
    worker_connections</code></pre>]]></description><link>https://malond-blog.azurewebsites.net/nastroika-nginx-dlia-lokalnoi-razrabotki/</link><guid isPermaLink="false">a7c2a523-886f-482c-b818-4e4076d3318a</guid><dc:creator><![CDATA[Владимир Соколовский]]></dc:creator><pubDate>Fri, 29 Sep 2017 12:24:39 GMT</pubDate><content:encoded><![CDATA[<p>При разработке мы используем Nginx в качестве прокси-сервера.</p>

<p>В Windows версии nginx, мы используем следующую конфигурацию:</p>

<p><strong>nginx.conf</strong></p>

<pre><code>#user  nobody;
#worker_processes  1;
worker_processes auto;

error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        logs/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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    upstream claster_frontend {
        ip_hash;
        server 127.0.0.1:8080;
    }

    upstream claster_frontend_dev {
        ip_hash;
        server 127.0.0.1:4000;
    }

    upstream claster_login {
        ip_hash;
        server 127.0.0.1:8880;
    }

    upstream claster_cms {
        ip_hash;
        server 127.0.0.1:8090;
    }

    server {
        server_name malond.com www.malond.com;
        listen 80;
        listen [::]:80;

        charset utf-8;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        # --------------------------
        # FRONTEND
        # --------------------------
        location / {
            #include proxy_params;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $host;
            proxy_set_header X-NginX-Proxy true;

            #root C:\Users\sokol\Documents\www-root\public;

            proxy_pass http://claster_frontend_dev;
            proxy_redirect off;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_headers_hash_bucket_size 128;

            proxy_redirect off;
            proxy_set_header   X-Forwarded-Proto $scheme;
            #proxy_cache static_cache;
            proxy_cache_key "$scheme$request_method$host$request_uri";
            proxy_cache_bypass $http_upgrade;

            add_header X-Frame-Options DENY;
            add_header X-Content-Type-Options nosniff;
            add_header X-XSS-Protection "1; mode=block;";
        }

        # --------------------------
        # CMS
        # --------------------------
        location /modules/cms/ {
            root C:\Users\sokol\Documents\www\malond_cms\public;
            try_files $uri $uri/ @claster_cms;

            expires 1M;
            access_log off;
            add_header Cache-Control "public";
        }
        location @claster_cms {
            #include proxy_params;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $host;
            proxy_set_header X-NginX-Proxy true;

            #root C:\Users\sokol\Documents\www\malond_cms\public;

            proxy_pass http://claster_cms;
            proxy_redirect off;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_headers_hash_bucket_size 128;

            proxy_redirect off;
            proxy_set_header   X-Forwarded-Proto $scheme;
            #proxy_cache static_cache;
            proxy_cache_key "$scheme$request_method$host$request_uri";
            proxy_cache_bypass $http_upgrade;

            add_header X-Frame-Options DENY;
            add_header X-Content-Type-Options nosniff;
            add_header X-XSS-Protection "1; mode=block;";
        }

        # --------------------------
        # LOGIN
        # --------------------------
        location /l/ {
            root C:\Users\sokol\Documents\www\malond_login\public;
            try_files $uri $uri/ @claster_login;

            expires 1M;
            access_log off;
            add_header Cache-Control "public";
        }
        location @claster_login {
            #include proxy_params;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $host;
            proxy_set_header X-NginX-Proxy true;

            #root C:\Users\sokol\Documents\www\malond_login\public;

            proxy_pass http://claster_login;
            proxy_redirect off;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_headers_hash_bucket_size 128;

            proxy_redirect off;
            proxy_set_header   X-Forwarded-Proto $scheme;
            #proxy_cache static_cache;
            proxy_cache_key "$scheme$request_method$host$request_uri";
            proxy_cache_bypass $http_upgrade;

            add_header X-Frame-Options DENY;
            add_header X-Content-Type-Options nosniff;
            add_header X-XSS-Protection "1; mode=block;";
        }

        # Media: images, icons, video, audio, HTC
        #location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc|eot|ttf|woff|woff2)$ {
        #    root C:\Users\sokol\Documents\www\malond_login\public;
        #    expires 1M;
        #    access_log off;
        #    add_header Cache-Control "public";
        #}

        # CSS and Javascript
        #location ~ ^/(javascript/|javascripts/|js/|css/|stylesheets/) {
        #    root C:\Users\sokol\Documents\www\malond_login\public;
        #    expires 1y;
        #    access_log off;
        #    add_header Cache-Control "public";
        #}

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}
</code></pre>

<hr>

<p>Для запуска и остановки, мы используем следующие команды, записанные в разные bat-файлы. </p>

<ol>
<li><p>Запуск - <strong>nginx_start.bat</strong>:</p>

<pre><code>C:\Users\sokol\Documents\nginx\nginx-1.13.5
nginx.exe
pause
</code></pre></li>
<li><p>Остановка - <strong>nginx_stop.bat</strong>:</p>

<pre><code>C:\Users\sokol\Documents\nginx\nginx-1.13.5
nginx -s stop
pause
</code></pre></li>
</ol>

<hr>]]></content:encoded></item><item><title><![CDATA[Книга: Богатый папа, бедный папа]]></title><description><![CDATA[<p>Есть разница между бедностью и банкротством. Банкротство - временное состояние, а бедность постоянное.</p>

<p>Бедняки и средний класс работают за деньги. Богатые заставляют деньги работать на себя.</p>

<p>Жизнь людей всегда управляется страхом и жадностью.</p>

<p>Многие люди говорят: "О, меня не интересуют деньги". И тем не менее они исправно трудятся по восемь</p>]]></description><link>https://malond-blog.azurewebsites.net/knigha-boghatyi-papa-biednyi-papa/</link><guid isPermaLink="false">597f4246-db60-4aec-b30b-3e70d2b5c434</guid><dc:creator><![CDATA[Владимир Соколовский]]></dc:creator><pubDate>Tue, 26 Sep 2017 13:04:14 GMT</pubDate><content:encoded><![CDATA[<p>Есть разница между бедностью и банкротством. Банкротство - временное состояние, а бедность постоянное.</p>

<p>Бедняки и средний класс работают за деньги. Богатые заставляют деньги работать на себя.</p>

<p>Жизнь людей всегда управляется страхом и жадностью.</p>

<p>Многие люди говорят: "О, меня не интересуют деньги". И тем не менее они исправно трудятся по восемь часов в день.</p>

<p>Важно не то, сколько денег вы сделаете, а то, сколько у вас сохранится.</p>

<p>Богатые приобретают активы. Бедняки и средний класс приобретают пассивы, которые считают активами.</p>

<p>Активы кладут нам деньги в карман. Пассивы забирают деньги из нашего кармана.</p>

<p>Схема денежного потока демонстрирует, как человек распоряжаться своими деньгами.</p>

<p>Человек может быть высокообразованным, успешным в профессиональном плане и в то же время безграмотным в финансовом отношении.</p>

<ol>
<li>Богатые люди покупают активы. <br>
У бедных есть только расходы.</li>
<li>Средний класс покупает пассивы, которые считает активами.</li>
</ol>

<p>Богатые сосредоточиваются на колонке активов, в то время как все остальные интересуются только колонкой доходов.</p>

<p>Финансовые трудности часто являются результатом того, что люди всю жизнь работают на кого-то другого.</p>

<p>Активы обычно принято делить на несколько категорий:</p>

<ol>
<li><em>Бизнес, который не требует моего присутствия.</em> он принадлежит мне, но управляется другими людьми. Если я вынужден там работать, это уже не бизнес. Он становится моей работой.  </li>
<li><em>Акции</em>  </li>
<li><em>Облигации</em>  </li>
<li><em>Взаимные фонды</em>  </li>
<li><em>Недвижемость, приносящая доход</em>  </li>
<li><em>Долговые расписки и векселя</em>  </li>
<li><em>Гонорары за интеллектуальную собственность: музыку, сценарии, патенты</em>  </li>
<li><em>Любая другая собственность, которая имеет ценность, приносит доход или растет в цене и легко продается</em></li>
</ol>

<p>Займитесь собственным бизнесом. Не бросайте основную работу, но начните покупать реальные активы, а не пассивы.</p>

<h4 id="4">Урок 4. История подоходного налога и возможности корпораций</h4>

<p>Просто в этой игре мой богатый папа действовал умнее и использовал корпорации - самый главный секрет богатых.</p>

<p>Работая за деньги, вы сами отдаете себя во власть работодателя. Когда ваши деньги работают на вас, вы держите власть в своих руках.</p>

<p>Каждый доллар в моей колонке активов становился усердным работником, старавшихся привлечь как можно больше новых работников, чтобы купить хозяину "Порше".</p>

<p>Книги Гарнетта Сатина, полное представление о возможностях частных корпораций</p>

<h4 id="5">Урок 5. Богатые изобретают деньги</h4>

<p>В реальном мире зачастую наверх пробиваются не умные, а отважные.</p>

<p>В играх отражается поведение. Это системы мгновенной обратной связи.</p>

<p>Самый мощный актив который у нас есть - это наш ум. Хорошо развитый ум может практически мгновенно создать огромное состояние.</p>]]></content:encoded></item><item><title><![CDATA[Инструменты для разработчика]]></title><description><![CDATA[<p>Здесь собрана информация, которая будет полезна новым разработчикам, которые хотят подключиться в разработку.</p>

<h6 id="">При разработке мы используем следующее:</h6>

<ul>
<li><a href="http://www.jetbrains.com/webstorm/">WebStorm</a> - используется для написания кода в модулях. Данная IDE идеально походит для крупных проектов, как CMS.</li>
<li><a href="https://code.visualstudio.com/">Microsoft Visual Studio Code</a> - используется для редактирования кода в проектах, написанных на Vue.js</li></ul>]]></description><link>https://malond-blog.azurewebsites.net/for-developers/</link><guid isPermaLink="false">072d9a1d-8f99-4c6f-933c-935b936e2aee</guid><dc:creator><![CDATA[Владимир Соколовский]]></dc:creator><pubDate>Fri, 15 Sep 2017 13:36:35 GMT</pubDate><content:encoded><![CDATA[<p>Здесь собрана информация, которая будет полезна новым разработчикам, которые хотят подключиться в разработку.</p>

<h6 id="">При разработке мы используем следующее:</h6>

<ul>
<li><a href="http://www.jetbrains.com/webstorm/">WebStorm</a> - используется для написания кода в модулях. Данная IDE идеально походит для крупных проектов, как CMS.</li>
<li><a href="https://code.visualstudio.com/">Microsoft Visual Studio Code</a> - используется для редактирования кода в проектах, написанных на Vue.js (в основном frontend-часть). Используемые плагины:
<ul><li>Atom One Dark Theme - <code>akamud.vscode-theme-onedark</code></li>
<li>ESLint - <code>dbaeumer.vscode-eslint</code></li>
<li>HTMLHint - <code>mkaufman.htmlhint</code></li>
<li>IntelliJ IDEA Keybindings - <code>k--kato.intellij-idea-keybindings</code></li>
<li>npm - <code>eg2.vscode-npm-script</code></li>
<li>Vetur - <code>octref.vetur</code></li>
<li>vscode-icons - <code>robertohuertasm.vscode-icons</code></li></ul></li>
<li>Git - не нужно пояснений.</li>
<li>Git-репозиторий - <a href="https://bitbucket.org/">Bitbucket.org</a>. <em>Возможен переход на <a href="https://about.gitlab.com/">Gitlab</a>, в пользу доступности и инструментов. Инструкция по переходу, доступна <a href="http://docs.gitlab.com/ce/install/azure/index.html">здесь</a>.</em></li>
</ul>

<h6 id="">Что мы используем в проектах:</h6>

<ul>
<li>Bower - менеджер пакетов для frontend.</li>
<li>Доставка почты - <a href="https://www.mailgun.com/">Mailgun</a>.</li>
<li>Блог - <a href="https://ghost.org/">Ghost</a>, используя <a href="https://github.com/felixrieseberg/Ghost-Azure">скрипт</a>: <a href="https://malond-blog.azurewebsites.net/">https://malond-blog.azurewebsites.net/</a>.</li>
<li>Документация для разработчиков (Dev api) - <a href="https://heroku.com/">Heroku</a>: <a href="https://malond-dev.herokuapp.com/">https://malond-dev.herokuapp.com/</a>.</li>
</ul>

<h6 id="">Рекомендации перед разработкой:</h6>

<p>Перед тем как начать разработку над проектами, следует прочитать следующие источники, чтобы придерживаться общих принципов:</p>

<ul>
<li>CHANGELOG - рекомендации по ведению CHANGELOG.md файла <a href="http://keepachangelog.com/ru/1.0.0/">здесь</a> и <a href="http://semver.org/lang/ru/">здесь</a>.</li>
</ul>

<h6 id="">Скрипты для запуска модулей:</h6>

<ul>
<li><p>malond_cms - <strong>start_cms.bat</strong>:</p>

<pre><code>cd C:\Users\sokol\Documents\www\malond_cms
npm run dev_windows
</code></pre></li>
<li><p>malond_login - <strong>start_cms.bat</strong>:</p>

<pre><code>cd C:\Users\sokol\Documents\www\malond_login
npm run dev_windows
</code></pre></li>
</ul>]]></content:encoded></item><item><title><![CDATA[Welcome to Ghost]]></title><description><![CDATA[<p>You're live! Nice. We've put together a little post to introduce you to the Ghost editor and get you started. You can manage your content by signing in to the admin area at <code>&lt;your blog URL&gt;/ghost/</code>. When you arrive, you can select this post from a list</p>]]></description><link>https://malond-blog.azurewebsites.net/welcome-to-ghost/</link><guid isPermaLink="false">993da86d-3bb5-4fe0-a4c5-0f3184e8bde2</guid><category><![CDATA[Getting Started]]></category><dc:creator><![CDATA[Владимир Соколовский]]></dc:creator><pubDate>Fri, 15 Sep 2017 12:32:30 GMT</pubDate><content:encoded><![CDATA[<p>You're live! Nice. We've put together a little post to introduce you to the Ghost editor and get you started. You can manage your content by signing in to the admin area at <code>&lt;your blog URL&gt;/ghost/</code>. When you arrive, you can select this post from a list on the left and see a preview of it on the right. Click the little pencil icon at the top of the preview to edit this post and read the next section!</p>

<h2 id="gettingstarted">Getting Started</h2>

<p>Ghost uses something called Markdown for writing. Essentially, it's a shorthand way to manage your post formatting as you write!</p>

<p>Writing in Markdown is really easy. In the left hand panel of Ghost, you simply write as you normally would. Where appropriate, you can use <em>shortcuts</em> to <strong>style</strong> your content. For example, a list:</p>

<ul>
<li>Item number one</li>
<li>Item number two
<ul><li>A nested item</li></ul></li>
<li>A final item</li>
</ul>

<p>or with numbers!</p>

<ol>
<li>Remember to buy some milk  </li>
<li>Drink the milk  </li>
<li>Tweet that I remembered to buy the milk, and drank it</li>
</ol>

<h3 id="links">Links</h3>

<p>Want to link to a source? No problem. If you paste in a URL, like <a href="http://ghost.org">http://ghost.org</a> - it'll automatically be linked up. But if you want to customise your anchor text, you can do that too! Here's a link to <a href="http://ghost.org">the Ghost website</a>. Neat.</p>

<h3 id="whataboutimages">What about Images?</h3>

<p>Images work too! Already know the URL of the image you want to include in your article? Simply paste it in like this to make it show up:</p>

<p><img src="https://ghost.org/images/ghost.png" alt="The Ghost Logo"></p>

<p>Not sure which image you want to use yet? That's ok too. Leave yourself a descriptive placeholder and keep writing. Come back later and drag and drop the image in to upload:</p>

<h3 id="quoting">Quoting</h3>

<p>Sometimes a link isn't enough, you want to quote someone on what they've said. Perhaps you've started using a new blogging platform and feel the sudden urge to share their slogan? A quote might be just the way to do it!</p>

<blockquote>
  <p>Ghost - Just a blogging platform</p>
</blockquote>

<h3 id="workingwithcode">Working with Code</h3>

<p>Got a streak of geek? We've got you covered there, too. You can write inline <code>&lt;code&gt;</code> blocks really easily with back ticks. Want to show off something more comprehensive? 4 spaces of indentation gets you there.</p>

<pre><code>.awesome-thing {
    display: block;
    width: 100%;
}
</code></pre>

<h3 id="readyforabreak">Ready for a Break?</h3>

<p>Throw 3 or more dashes down on any new line and you've got yourself a fancy new divider. Aw yeah.</p>

<hr>

<h3 id="advancedusage">Advanced Usage</h3>

<p>There's one fantastic secret about Markdown. If you want, you can write plain old HTML and it'll still work! Very flexible.</p>

<p><input type="text" placeholder="I'm an input field!"></p>

<p>That should be enough to get you started. Have fun - and let us know what you think :)</p>]]></content:encoded></item></channel></rss>