Last active
March 13, 2025 10:21
-
-
Save night-codes/10c09f06ad78ae401c69 to your computer and use it in GitHub Desktop.
Revisions
-
mirrr revised this gist
Oct 30, 2015 . 1 changed file with 2 additions and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,8 +1,9 @@ ## 1) Создаем юзера под которым будет работать приложение, задаем пароль и переключаемся на него: ```bash useradd -s /bin/bash <имя_пользователя> passwd <имя_пользователя> su <имя_пользователя> ``` ## 2) Генерируем новый ключ для деплоя ```bash -
mirrr created this gist
Oct 30, 2015 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,107 @@ ## 1) Создаем юзера под которым будет работать приложение, задаем пароль и переключаемся на него: useradd -s /bin/bash <имя_пользователя> passwd <имя_пользователя> su <имя_пользователя> ## 2) Генерируем новый ключ для деплоя ```bash ssh-keygen -t rsa -C "<имя_пользователя>@<домен_сервиса>" cat ~/.ssh/id_rsa.pub ``` Например, в gitlab добавляем этот ключ Project>Settings>Deploy Key ## 3) Клонируем приложение и собираем приложение ```bash cd ~ git clone ssh://______.git app # здесь не буду расписывать, можно устанавливать через go get и т.д. способы отличаются # для go get нужно прописать $GOPATH в .bash_profile ``` ## 4) Создаем systemd service ```bash exit #выходим из-под юзера nano /usr/lib/systemd/system/<имя_сервиса>.service ``` Вписываем: ```bash [Unit] Description=<Описание> [Service] Restart=always RestartSec=10 EnvironmentFile=-/home/<имя_пользователя>/env WorkingDirectory=/home/<имя_пользователя>/app ExecStart=/home/<имя_пользователя>/app/appName LimitNOFILE=524576 LimitNPROC=524576 User=<имя_пользователя> Group=<имя_пользователя> StandardOutput=syslog StandardError=syslog SyslogIdentifier=<имя_сервиса> [Install] WantedBy=multi-user.target ``` ## 5) Запускаем сервис и ставим в автозагрузку: ```bash systemctl start <имя_сервиса> systemctl enable <имя_сервиса> ``` Посмотреть статус: ```bash systemctl status <имя_сервиса> ``` ## 6) Разрешаем просмотр логов и перезапуск сервиса под созданным пользователем Добавляем в `/etc/sudoers` строчки: ```bash Defaults:<имя_пользователя> !authenticate <имя_пользователя> ALL=/usr/bin/systemctl restart <имя_сервиса>, /usr/bin/systemctl stop <имя_сервиса>, /usr/bin/systemctl start <имя_сервиса>, /usr/bin/journalctl ``` Теперь эти операции не будут требовать пароля: ```bash sudo journalctl -f -u <имя_сервиса> sudo systemctl stop <имя_сервиса> sudo systemctl start <имя_сервиса> sudo systemctl restart <имя_сервиса> ``` ## 7) настраиваем виртуальный хост nginx для проксирования на порт приложения, если требуется: ```bash server { listen 80; server_name site.ru; client_max_body_size 256m; access_log /var/log/nginx-site-acc; error_log /var/log/nginx-site-err; log_not_found off; location ^~ / { proxy_pass http://localhost:<порт_приложения>; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_buffer_size 16k; proxy_buffers 32 16k; proxy_connect_timeout 300; proxy_send_timeout 300; proxy_read_timeout 300; } location ^~ /files { alias /home/<имя_пользователя>/app/some_files; } } ```