В данный момент проект находится на ранней стадии, а архитектура очень проста: nginx + tomcat/springboot для реализации многопользовательского развертывания. Поскольку используется Jenkins для автоматической сборки, автоматизация системы развертывания кажется сложной. Лично не очень силен в написании shell-скриптов, поэтому решил использовать Java для автоматизации развертывания. #### Основные идеи реализации
{ "backPath":"/root/back", #Директория для резервного копирования
"mustReload":false, #Обязательная перезагрузка для обновления. Также можно использовать параметр -s при запуске для принудительной перезагрузки
"type":"tomcat", #Тип развертывания tomcat/springboot, по умолчанию tomcat. Соответствуют tomcatNodes и springBootNodes
"uploadFile":"/root/ROOT.war", #Файл для развертывания
"nginx":{
"sshInfo":{ #Настройки SSH для сервера nginx
"host":"127.0.0.1",
"passwd":"root",
"user":"root"
},
"configFile":"/etc/nginx/conf.d/server.conf", #Сгенерированный файл конфигурации nginx, рекомендуется использовать имя "проект.conf"
"head":"server {\n listen 80;\n server_name www.*;\n client_max_body_size 20m;\n access_log /var/log/nginx/admin_access.log ;\n error_log /var/log/nginx/admin_error.log ;\n location /{\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_pass backend;\n }\n}"
# Настройки обратного прокси nginx можно определить для каждого проекта. Конечная строка "proxy_pass backend;" является кастомной настройкой, не изменяйте её произвольно
},
"sshInfo":{ #Настройки SSH для локального сервера
"host":"ip",
"passwd":"пароль",
"user":"пользователь"
},
"tomcatNodes":[
{
"checkUrl":"http://127.0.0.1:9080/checkTime", #Проверка запуска сервиса
"homePath":"/usr/local/tomcat9080", #Директория для развертывания узла tomcat
"nginxProxyPass":"127.0.0.1:9080", #
"sshInfo":{ #Настройки SSH для узла tomcat
"host":"ip",
"passwd":"пароль",
"user":"пользователь"
},
"name":"ROOT.war" #Имя файла для развертывания в tomcat/webapps/
}
]
]```markdown
"user": "пользователь"
},
"name": "server.jar", # развертывается в tomcat/webapps/ с именем файла проекта
"param": "--server.port=8000" # пользовательские параметры запуска spring boot, по умолчанию отсутствуют
},
{ # второй узел
"checkUrl": "http://127.0.0.1:8080",
"homePath": "/usr/local/server8080",
"nginxProxyPass": "http://127.0.0.1:8080/checkTime",
"sshInfo": {
"host": "ip",
"passwd": "пароль",
"user": "пользователь"
},
"name": "ROOT.war",
"param": "--spring.profiles.active=pro2" # пользовательские параметры запуска spring boot
}
]
}
Одноузловой конфигурационный пример для Tomcat, где все роли размещены локально:
<pre>
<code>
{
"backPath":"/root/back",
"mustReload":false,
"type":"tomcat",
"nginx":{
"sshInfo":{
"host":"127.0.0.1",
"passwd":"root",
"user":"root"
},
"configFile":"/etc/nginx/conf.d/server.conf",
"head":"server {\n listen 80;\n server_name _;\n client_max_body_size 20m;\n access_log /var/log/nginx/server_access.log ;\n error_log /var/log/nginx/server_error.log ;\n location /{\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_pass http://backend;\n }\n}"
},
"sshInfo":{
"host":"127.0.0.1",
"passwd":"root",
"user":"root"
},
"tomcatNodes":[
{
"checkUrl":"http://127.0.0.1:8080/jzxc-rest/checkTime",
"homePath":"/opt/tomcat-server",
"nginxProxyPass":"127.0.0.1:8080",
"sshInfo":{
"host":"127.0.0.1",
"passwd":"root",
"user":"root"
},
"name":"jzxc-rest.war"
}
],
"uploadFile":"/root/jzxc-rest.war"
}
</code>
</pre>
Системные конфигурационные файлы, такие как config.json, следует размещать в той же директории, что и deployment-0.0.1-jar-with-dependencies.jar.
Запуск приложения: java -jar deployment-0.0.1-jar-with-dependencies.jar
Для принудительного обновления добавьте параметр -s
: java -jar deployment-0.0.1-jar-with-dependencies.jar -s
Для использования в Jenkins: добавьте модуль "Publish Over SSH" в построение, а в поле "Exec command" введите:
<pre>
<code>
source /etc/profile
java -jar deployment-0.0.1-jar-with-dependencies.jar
</code>
</pre>
Имена конфигурационных файлов Nginx рекомендуется называть по имени проекта, например: имя_проекта.conf
, чтобы избежать случайного перезаписывания других конфигурационных файлов.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )