Skip to content

Instantly share code, notes, and snippets.

@Yaroslavzev
Last active February 9, 2019 20:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Yaroslavzev/734d4d4144d7fb6892c199dd66257eae to your computer and use it in GitHub Desktop.
Save Yaroslavzev/734d4d4144d7fb6892c199dd66257eae to your computer and use it in GitHub Desktop.
Документы для проекта rent_auto

Путь до конфигураций /etc/nginx/conf.d

rails

cat rent-auto-back.conf
upstream rent-auto-back {
  server unix:///var/www/rent_auto-back/tmp/sockets/puma.socket;
}

server {
  server_name api.rent-auto.biz.tm; # change to match your URL
  #root /var/www/rent_auto-back/public; # I assume your app is located at this location

  access_log /var/log/nginx/rent-auto-back.access.log;
  error_log /var/log/nginx/rent-auto-back.error.log info;

  location / {
    # an HTTP header important enough to have its own Wikipedia entry:
    #   http://en.wikipedia.org/wiki/X-Forwarded-For
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    # this helps Rack set the proper URL scheme for doing HTTPS redirects:
    proxy_set_header X-Forwarded-Proto $scheme;

    # pass the Host: header from the client right along so redirects
    # can be set properly within the Rack application
    proxy_set_header Host $http_host;

    # we don't want nginx trying to do something clever with
    # redirects, we set the Host: header above already.
    proxy_redirect off;

    proxy_pass http://rent-auto-back; # match the name of upstream directive which is defined above
  }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/rent-auto.biz.tm/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/rent-auto.biz.tm/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

server {
    if ($host = api.rent-auto.biz.tm) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

  listen 80;
  server_name api.rent-auto.biz.tm;
    return 404; # managed by Certbot
}

Клиентский фронт

cat rent-auto-front.conf
server {
  server_name www.rent-auto.biz.tm rent-auto.biz.tm; # change to match your URL

  #root /var/www/rent_auto-front/public; # I assume your app is located at this location
  #keepalive_timeout 5;

  access_log /var/log/nginx/rent-auto-front.access.log;
  error_log /var/log/nginx/rent-auto-front.error.log info;

  location / {
    root /var/www/rent_auto-front/dist;
    index index.html;
    #gzip_static on;
    #expires max;
    #add_header Cache-Control public;
  }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/rent-auto.biz.tm/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/rent-auto.biz.tm/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

server {
    if ($host = www.rent-auto.biz.tm) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    if ($host = rent-auto.biz.tm) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

  listen 80;
  server_name www.rent-auto.biz.tm rent-auto.biz.tm;
    return 404; # managed by Certbot
}

старый файл для админки

upstream rent-auto-adm {
  server localhost:3030;
}

server {
  listen 80;
  server_name adm.rent-auto.biz.tm; # change to match your URL
  root /var/www/rent_auto-front_admin/public; # I assume your app is located at$

  access_log /var/log/nginx/rent-auto-adm.access.log;
  error_log /var/log/nginx/rent-auto-adm.error.log info;

  location / {
    proxy_pass http://rent-auto-adm; # match the name of upstream directive whi$
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_redirect off;
  }
}

новый файл для админки

cat rent-auto-adm.conf
server {
  server_name adm.rent-auto.biz.tm; # change to match your URL
  #root /var/www/rent_auto-front_admin/public; # I assume your app is located at this location
  #keepalive_timeout 5;

  access_log /var/log/nginx/rent-auto-adm.access.log;
  error_log /var/log/nginx/rent-auto-adm.error.log info;

  location / {
    root /var/www/rent_auto-front_admin/build;
    index index.html;
    #gzip_static on;
    #expires max;
    #add_header Cache-Control public;
  }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/rent-auto.biz.tm/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/rent-auto.biz.tm/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
    if ($host = adm.rent-auto.biz.tm) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

  listen 80;
  server_name adm.rent-auto.biz.tm;
    return 404; # managed by Certbot
}

Сервис картинок

upstream images-srv {
  server unix:///var/www/images-srv/tmp/puma.socket;
}

server {
  server_name srv.rent-auto.biz.tm; # change to match your URL

  access_log /var/log/nginx/images-srv.access.log;
  error_log /var/log/nginx/images-srv.error.log info;

  location / {
    # an HTTP header important enough to have its own Wikipedia entry:
    #   http://en.wikipedia.org/wiki/X-Forwarded-For
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    # this helps Rack set the proper URL scheme for doing HTTPS redirects:
    proxy_set_header X-Forwarded-Proto $scheme;

    # pass the Host: header from the client right along so redirects
    # can be set properly within the Rack application
    proxy_set_header Host $http_host;

    # we don't want nginx trying to do something clever with
    # redirects, we set the Host: header above already.
    proxy_redirect off;

    proxy_pass http://images-srv; # match the name of upstream directive which is defined above
  }

  listen 443 ssl; # managed by Certbot
  ssl_certificate /etc/letsencrypt/live/rent-auto.biz.tm/fullchain.pem; # managed by Certbot
  ssl_certificate_key /etc/letsencrypt/live/rent-auto.biz.tm/privkey.pem; # managed by Certbot
  include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
  if ($host = srv.rent-auto.biz.tm) {
    return 301 https://$host$request_uri;
  } # managed by Certbot

  listen 80;
  server_name srv.rent-auto.biz.tm;
  return 404; # managed by Certbot
}

Настройка окружения на инстансе

Здесь хранятся основные команды, которые были введены на инстансе

Установка postgres. Актуальная версия тут

sudo apt-get install libpq-dev
deb http://apt.postgresql.org/pub/repos/apt/ bionic-pgdg main
sudo apt-get install postgresql-common
sudo apt-get install postgresql

# If you would like to set a password for the user, you can do the following
sudo -u postgres psql
postgres=# \password chris

В базе создан пользователь командой sudo -u postgres createuser rent_auto -s

Установка Ruby

Описание взято отсюда. nodejs и yarn не были уставнолены. Введены следующие команды:

sudo apt-get update
sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev software-properties-common libffi-dev

Установка Ruby и Rails:

cd
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec $SHELL

git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
exec $SHELL

rbenv install 2.5.3 
rbenv global 2.5.3
ruby -v

echo "gem: --no-ri --no-rdoc" >> ~/.gemrc
gem install bundler # --no-ri --no-rdoc
rbenv rehash

gem install rails -v 5.2.1 #--no-ri --no-rdoc
rbenv rehash

Допольнительно создан юзер adduser rent_auto Проект рельсов хранится в var/www, на папку настроены права командой sudo chown rent_auto:rent_auto www

Скелетон проекта создан командой:

rails new . --api --skip-action-cable --skip-sprockets --skip-javascript --skip-turbolinks --skip-coffee --skip-test --skip-system-test --skip-yarn --database=postgresql

Установка nginx

nginx установлен командой sudo apt-get install nginx

Установка для фронта

Рельсы запускаются через сервис

sudo service rent-auto-back start|stop|restart|status

Сервис находится в папке /etc/systemd/system

SSH

SSH по ключю на сервере

git

git checkout app/controllers/requests_controller.rb- это просто отбросило бы локальные изменения в этом файле, вернув ту версию, которая хранится в папке .git

Настройка мейлера

 # config.action_mailer.delivery_method = :letter_opener
  config.action_mailer.delivery_method = :smtp

Команды в убунте

ps aux --sort -rss — список процессов
kill -TERM 9036 — убить процесс
git checkout -- .
git remote -v — список репозиториев о изменениях в проекте

Полезные ссылки

Описание работы gist.gitgub.com
Список гемов

Установка nginx, capistrano, puma

Как развернуть Rails-приложение на DigitalOcean сервере с помощью Capistrano
How to Make a Rails 5 App API-Only

Описания гемов и туториалы и мануалы

dotenv — настройка переменных окружения
Active Model Serializer Gem Tutorial
HTTPie — удобный инструмент похожий на cURL
Build a RESTful JSON API With Rails 5 - Part One
Разработка API с Rails — нормальный мануал о работе rails API, CORS, Serializer, rack-attack

React+Redux

Flux-архитектура Flux для глупых людей — статья на Хабре

Сертификаты для сайта

Алиасы

Алиасы находятся по адресу /etc/skel/.bashrc

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment