.net - 使用 gitlab-ci 在 digitalocean ubuntu .net 上停止服务器
问题描述
我正在使用 gitlab-ci 在 Digitalocean 上部署 .net 应用程序。使用 gitlab runner 我在 Gitlab 上构建项目,使用“dotnet build”,下一步我需要以某种方式停止 Digitalocean 上的服务器以运行新版本的 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;'
解决方案
一旦start, stop, restart, and log
您创建了一个名为unit
.
进入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;'
推荐阅读
- c++ - 将函数转换为本地函数 (lamba)
- xcode - Flutter Xcode Build Error 当我打开一个下载的项目时
- node.js - 如果 mongodb 中嵌套数组的对象没有字段,则显示默认值
- flutter - 用于 !Flutter 中的运算符
- javascript - 点击时隐藏其他等【代码优化】
- python - Numba 比普通 python 慢得多,来自 Pandas 文档
- r - R数据框:按组聚合并转换为频率计数
- flutter - 使用过多的流生成器是否有效?
- java - SHA-3 可变长度哈希与使用 BouncyCastle 在 Java 中截断普通哈希相同
- angular - 在已经有一个 Wordpress 站点的 Debian 上设置一个 Angular 应用程序