• Как правильно настроить Docker контейнеры и Ci?

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

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

    То есть по сути у вас будет приложение-образ, переносимое, со всеми библиотеками и настройками внутри. При этом база и nginx находятся вне контейнера, например в собственных контейнерах.

    Но тут надо понимать, что при таком подходе вам каждый раз на сервер нужно будет передавать (ручками в tgz или через репозиторий) образ, а это обычно сотни мегов.
    Ответ написан
    Комментировать
  • Что выбрать для углубления знаний (backend)?

    @Cannabiscat
    Для rapid dev лучше учить php-фреймворки, yii2-symphony-laravel
    Для длительной разработки лучше учить computer science)
    Для упрощённого поиска работы - опять же php-фреймворки и Битрикс.
    Если гнаться за призрачным будущим - node.js. Хотя php7 довольно неплох!
    Ответ написан
    Комментировать
  • Django как настроить отдачу картинок с локального хранилища?

    @metajiji
    Остается только привести дефолтный конфиг nginx для Django:
    server {
    	listen 80;
    	server_name domain.ltd;
    	root /srv/app/public;
    
    	# Logs.
    	access_log /var/log/nginx/domain.ltd_access.log;
    	error_log /var/log/nginx/domain.ltd_error.log;
    
    	# Options.
    	client_max_body_size 0;
    	keepalive_timeout 5;
    
    	# Locations.
    	location / {
    		try_files $uri @proxy_to_app;
    	}
    
    	location @proxy_to_app {
    		proxy_pass http://127.0.0.1:8001;  # See guniconf.py file.
    		proxy_set_header Host $http_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-Proto $scheme;
    		proxy_redirect off;
    	}
    }


    В таком случае, удобно будет организовать проект следующим образом:
    /srv/app/
    ├── example
    │   ├── forms.py
    │   ├── __init__.py
    │   ├── migrations
    │   ├── models.py
    │   ├── settings.py
    │   ├── static
    │   ├── templates
    │   ├── urls.py
    │   ├── views.py
    │   └── wsgi.py
    ├── logs
    ├── manage.py
    ├── public
    │   └── static
    ├── README.md
    ├── requirements.txt
    └── venv


    Для работы этой схемы проекта нужно добавить в settings.py:
    STATIC_URL = '/static/'
    STATIC_ROOT = os.path.join(BASE_DIR, 'public', 'static')


    При такой конфигурации веб сервер смотрит в каталог /srv/app/public/ и попытается сперва отдать с диска то, что запросил пользователь, если не найдет, то отправит запрос в Django.
    А еще появляется возможность складывать свои собственные статические файлы в этот каталог (например zip архив или pdf документ), кроме того, нет необходимости что-то менять в конфигурации nginx, что очень удобно.

    Для media можно поступить аналогично, если для скачивания media не предусмотрена авторизация, для этого нужно добавить в settings.py:
    STATIC_URL = '/media/'
    STATIC_ROOT = os.path.join(BASE_DIR, 'public', 'media')

    /srv/app/
    ├── example
    ├── logs
    ├── public
    │   ├── media
    │   └── static
    └── manage.py


    Если все-таки авторизация нужна, то не стоит складывать каталог media в public, в таком случае лучше придерживаться стандартной конфигурации:
    STATIC_URL = '/media/'
    STATIC_ROOT = os.path.join(BASE_DIR, 'media')

    /srv/app/
    ├── example
    ├── logs
    ├── media
    ├── public
    │   └── static
    └── manage.py

    Еще порекомендовал бы настроить X-Accel-Redirect для отдачи media через nginx, но об этом я в этом посте уже не буду писать.
    Ответ написан
    Комментировать
  • Какой самый удобный пакетный менеджер для линукс?

    nonname
    @nonname
    Сначала разберитесь вам шашечки или ехать.
    Не нравятся старые репозитории - добавьте новые по вкусу. Да и к тому же в 95% случаев люди, которые задают такие вопросы, по сути сами не понимают зачем им новые пакеты, просто виндовая привычка что вот у меня самый свежий софт, а вам никогда не казалось что по сути нужно держать актуальным только браузер это +1 строчка ppa репозитория в deb-like дистрах?
    Если хочется чтобы был стабильный линукс, без допиливаний по 2 дня нужно брать убунту и лучше LTS, хотя бы последнюю оригинальную, так же вариант Debian 8 неплохой, тот же OpenSUSE. Но все же лучше всего из коробки работает ubuntu.
    Ответ написан
    2 комментария
  • Как настроить атом что б компилить языки?

    rkravchik
    @rkravchik
    System Solutions
    Ответ написан
    Комментировать
  • Эффективность веб-серверов на Go?

    bingo347
    @bingo347
    Crazy on performance...
    Примерно на одном уровне с ngnix, а иногда даже быстрее, за счет отсутствия проксирования на бэкенд, так как у Вас в одном приложении и сервер и логика
    Другой вопрос в том, на сколько оптимально Вы напишите Ваш код и умеете пользоваться Go, ибо даже на асме можно сделать тормоза, что php3+apache будет быстрее ползать
    Ответ написан