1、下载安装SDK和运行时
//按照命令依次往下执行即可:
//1.安装SDK
sudo dnf install dotnet-sdk-5.0
//2.安装运行时
sudo dnf install aspnetcore-runtime-5.0
//3.查看SDKb版本
dotnet --list-sdks
2、安装源代码管理工具
(1)安装Git
sudo yum -y install git
//查看是否安装成功
git --version
3、发布项目
(1)运行【Blog.Core.Publish.Linux.sh】该项目,但是会提示权限不足。
//文件里代码如下:
git pull;
rm -rf .PublishFiles;
dotnet build;
dotnet publish -o /home/Bookkeeping/Bookkeeping.Api/bin/Debug/net5.0;
cp -r /home/Bookkeeping/Bookkeeping.Api/bin/Debug/net5.0 .PublishFiles;
echo "Successfully!!!! ^ please see the file .PublishFiles";
./Blog.Core.Publish.Linux.sh
(2)赋予最高权限,然后再次执行。
chmod 777 ./Blog.Core.Publish.Linux.sh
(3)然后会自动执行,执行结果如下,然后刷新文件夹,可以看出多了一个【.PublishFiles】文件夹,说明发布成功。
(4)属于”dotnet”命令运行项目。
dotnet xxx.dll
4-1、守护进程(方法一)
(1)进入Home文件夹下,然后安装Node.js
//1.切换到home文件夹下
cd /home/
//2.下载Node.js
wget https://nodejs.org/dist/v12.16.3/node-v12.16.3-linux-x64.tar.xz
//3.解压
tar -xf node-v12.16.3-linux-x64.tar.xz
//4.设置全局变量
vim /etc/profile
PATH=$PATH:/home/node-v12.16.3-linux-x64/bin/
(2)然后刷新配置文件
source /etc/profile
(3)测试结果,有版本号说明安装成功了。
npm -v
node -v
(4)当然,想要更快,可以使用淘宝的国内镜像cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org
(4)输入以下命令安装pm2
cnpm install -g pm2
//pm2常用命令
pm2常用命令记录
$ pm2 start app.js # 启动app.js应用程序
$ pm2 start app.js -i 4 # cluster mode 模式启动4个app.js的应用实例
# 4个应用程序会自动进行负载均衡
$ pm2 start app.js --name="api" # 启动应用程序并命名为 "api"
$ pm2 start app.js --watch # 当文件变化时自动重启应用
$ pm2 start script.sh # 启动 bash 脚本
$ pm2 list # 列表 PM2 启动的所有的应用程序
$ pm2 monit # 显示每个应用程序的CPU和内存占用情况
$ pm2 show [app-name] # 显示应用程序的所有信息
$ pm2 logs # 显示所有应用程序的日志
$ pm2 logs [app-name] # 显示指定应用程序的日志
$ pm2 flush # 清空所有日志文件
$ pm2 stop all # 停止所有的应用程序
$ pm2 stop 0 # 停止 id为 0的指定应用程序
$ pm2 restart all # 重启所有应用
$ pm2 reload all # 重启 cluster mode下的所有应用
$ pm2 gracefulReload all # Graceful reload all apps in cluster mode
$ pm2 delete all # 关闭并删除所有应用
$ pm2 delete 0 # 删除指定应用 id 0
$ pm2 scale api 10 # 把名字叫api的应用扩展到10个实例
$ pm2 reset [app-name] # 重置重启数量
$ pm2 startup # 创建开机自启动命令
$ pm2 save # 保存当前应用列表
$ pm2 resurrect # 重新加载保存的应用列表
$ pm2 update # Save processes, kill PM2 and restore processes
$ pm2 generate # Generate a sample json configuration file
//安装成后,输入以下命令查看是否安装成功:
(5)进入需要发布项目的根目录。
(6)我们已经进去了/home/bookkeeping_website/.PublishFiles/文件夹,通过执行dotnet名利判断项目可以运行,那接下来我们换一种写法,守护一下这个进程
pm2 start "xxx.dll" --name apk.dll
4-2、守护进程(方法一:推荐)
(1)在【/etc/systemd/system】下新建文件(推荐使用winscp),文件名以.service结尾,配置内容为(注意:中文注释需要删掉,否则部分 Linux 服务器会报错):
[Unit]
Description=blogcore #服务描述,随便填就好
[Service]
WorkingDirectory=/website/blogcore #工作目录,填你应用的绝对路径
ExecStart=/usr/bin/dotnet /website/blogcore/CZKJ.CMS.Web.dll #启动:前半截是你dotnet的位置(一般都在这个位置),后半部分是你程序入口的dll,中间用空格隔开
Restart=always
RestartSec=25 #如果服务出现问题会在25秒后重启,数值可自己设置
SyslogIdentifier=blogcore #设置日志标识,此行可以没有
User=root #配置服务用户,越高越好
Environment=ASPNETCORE_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target
(2)写完配置文件后保存,输入指令确认服务:
systemctl enable (你的服务名).service;
例如:systemctl enable blogcore.service;
(3)然后启动服务
systemctl start (你的服务名).service
例子:systemctl start blogcore.service
(4)然后查看一下服务状态, 出现状态说明服务运行正常。
systemctl status 你的服务名
例如:systemctl status blogcore
5、开放端口
4.2.1-添加http服务到firewalld,pemmanent表示永久生效,若不加—permanent系统下次启动后就会失效。
sudo firewall-cmd --permanent --add-service=http
//使用FirewallID:
#手动开启端口:5656
firewall-cmd --permanent --zone=public --add-port=5656/tcp
#重启
firewall-cmd --reload
6、端口问题
当遇到端口重复,先杀死进程,在重启。