使用 gitlab-ci 在 digitalocean ubuntu .net 上停止服务器
Stop server on digitalocean ubuntu .net with gitlab-ci
我正在使用 gitlab-ci 在 Digitalocean 上部署 .net 应用程序。使用 gitlab 运行ner 我在 Gitlab 上构建项目,使用“dotnet build”,下一步我需要以某种方式停止 Digitalocean 上的服务器以 [=21=] rsync 新版本。
如果 .net 不在 docker 容器内,我该如何停止它。
我的步骤是这样的:
-
- "dotnet build"
- cd ..
- ssh $SERVER_USER@$PROD_SERVER_IP '
- /home/myproject
// here needs step for stoping
- rsync -az ./server/bin/ $SERVER_USER@$PROD_SERVER_IP:/home/myproject
# Non interactive ssh gracefully reloads server
- ssh $SERVER_USER@$PROD_SERVER_IP '.
/etc/profile;
systemctl restart nginx;'
一旦您创建了一个名为 unit
.
的工作流程,Systemd 文件将允许通过提供 start, stop, restart, and log
功能来管理流程
进入 systemd
目录我创建了新服务 sudo nano my.service
[Unit]
Description=My application
[Service]
WorkingDirectory=/var/www/my-directory
ExecStart=/usr/bin/dotnet /var/www/my-directory/bin/Debug/netcoreapp3.1/publish/MyApplication.dll
Restart=always
RestartSec=10
SyslogIdentifier=movie
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
在我的例子中,由于 ConectionString 为空,问题出在我调用 dotnet
的目录中。如果您遇到此问题,请更改接下来的两行
WorkingDirectory=/var/www/my-directory/bin/Debug/netcoreapp3.1/publish/
ExecStart=/usr/bin/dotnet MyApplication.dll
里面 gitlab-ci
-
- "dotnet build"
- cd ..
- ssh $SERVER_USER@$PROD_SERVER_IP '
- /home/myproject
# stop step
- ssh $SERVER_USER@$PROD_SERVER_IP '.
/etc/profile;
systemctl stop my.service;'
- rsync -az ./server/bin/ $SERVER_USER@$PROD_SERVER_IP:/home/myproject
# Non interactive ssh gracefully reloads server
- ssh $SERVER_USER@$PROD_SERVER_IP '.
/etc/profile;
systemctl start my.service;
systemctl restart nginx;'
我正在使用 gitlab-ci 在 Digitalocean 上部署 .net 应用程序。使用 gitlab 运行ner 我在 Gitlab 上构建项目,使用“dotnet build”,下一步我需要以某种方式停止 Digitalocean 上的服务器以 [=21=] rsync 新版本。
如果 .net 不在 docker 容器内,我该如何停止它。
我的步骤是这样的:
-
- "dotnet build"
- cd ..
- ssh $SERVER_USER@$PROD_SERVER_IP '
- /home/myproject
// here needs step for stoping
- rsync -az ./server/bin/ $SERVER_USER@$PROD_SERVER_IP:/home/myproject
# Non interactive ssh gracefully reloads server
- ssh $SERVER_USER@$PROD_SERVER_IP '.
/etc/profile;
systemctl restart nginx;'
一旦您创建了一个名为 unit
.
start, stop, restart, and log
功能来管理流程
进入 systemd
目录我创建了新服务 sudo nano my.service
[Unit]
Description=My application
[Service]
WorkingDirectory=/var/www/my-directory
ExecStart=/usr/bin/dotnet /var/www/my-directory/bin/Debug/netcoreapp3.1/publish/MyApplication.dll
Restart=always
RestartSec=10
SyslogIdentifier=movie
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
在我的例子中,由于 ConectionString 为空,问题出在我调用 dotnet
的目录中。如果您遇到此问题,请更改接下来的两行
WorkingDirectory=/var/www/my-directory/bin/Debug/netcoreapp3.1/publish/
ExecStart=/usr/bin/dotnet MyApplication.dll
里面 gitlab-ci
-
- "dotnet build"
- cd ..
- ssh $SERVER_USER@$PROD_SERVER_IP '
- /home/myproject
# stop step
- ssh $SERVER_USER@$PROD_SERVER_IP '.
/etc/profile;
systemctl stop my.service;'
- rsync -az ./server/bin/ $SERVER_USER@$PROD_SERVER_IP:/home/myproject
# Non interactive ssh gracefully reloads server
- ssh $SERVER_USER@$PROD_SERVER_IP '.
/etc/profile;
systemctl start my.service;
systemctl restart nginx;'