linux 部署多个.net core项目,使用nginx分配访问地址
1. 环境搭建
linux cenos 7以上,.net core 2.2作为测试环境,部署两个服务作为例子
1)下载运行时压缩包(微软官网下载) aspnetcore-runtime-2.2.8-linux-x64.tar.gz
2)压缩包上传到liunx用户指定路径
3)进入压缩包所在目录 运行 tar -zxvf aspnetcore-runtime-2.2.8-linux-x64.tar.gz
4)解压后的文件我放到了/usr/dotnet中
2. 项目发布与上传
1)将发布后的项目分别放到用户指定目录
注意:单个项目默认端口是5000,如果想要多个项目就要修改端口号,要在第二个项目的Program.cs文件中 WebHost.CreateDefaultBuilder(args)后添加调用UseUrls(“http://*:5001”),表示第二个项目占用5001端口
2)发布成功后将两个项目分别放到/home/test/www/api/和/home/test/www/app/中
4. 测试服务
使用运行时压缩包解压后目录里面的dotnet开启服务
运行 /usr/dotnet/dotnet /home/test/www/api/api.dll
出现如下面片段表示5000端口的服务开启成功,输入ctrl + c关闭该服务,继续用该方法测试5001的服务
5. 持久化服务
1)进入/etc/syetemd/system
2)创建文件,名字随便起,我起名为testapi,在里面添加此内容
[Service] WorkingDirectory=/home/test/www/api ExecStart=/usr/dotnet/dotnet /home/test/www/api/api.dll Restart=always RestartSec=10 # Restart service after 10 seconds if dotnet service crashes SyslogIdentifier=dotnet-example User=root Environment=ASPNETCORE_ENVIRONMENT=Production Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false [Install] WantedBy=multi-user.target
第二个文件testapp内容:
[Service] WorkingDirectory=/home/test/www/app ExecStart=/usr/dotnet/dotnet /home/test/www/app/app.dll Restart=always RestartSec=10 # Restart service after 10 seconds if dotnet service crashes SyslogIdentifier=dotnet-example User=root Environment=ASPNETCORE_ENVIRONMENT=Production Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false [Install] WantedBy=multi-user.target
3)注册服务
sudo systemctl enable ***.service
我分别运行sudo systemctl enable testapi.service与sudo systemctl enable testapp.service 注册服务
4)启动服务
sudo systemctl start ***.service
5)其他命令
检查服务状态:sudo systemctl status ***.service
重启服务:sudo systemctl restart ***.service
关闭服务::sudo systemctl stop ***.service
6. 安装nginx
1)下载nginx安装包并解压
我这里是下载的openresty的压缩包,openresty是nginx的升华版,基本用法跟 nginx一样我解压到/usr/local/opentesty/中
2)配置环境变量
进入/etc/profile中,添加export PATH=$PATH:/usr/local/openresty/nginx/sbin/
3)测试配置
nginx -V
7. nginx分配访问接口
1)打开/usr/local/openresty/nginx/conf/nginx.conf
在server{}中添加
location /app { //app是接口前缀例如 http://192.168.0.1/app/test proxy_pass http://localhost:5001/app; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } location /api { //api是接口前缀例如 http://192.168.0.1/api/test proxy_pass http://localhost:5000/api; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; }
2)保存后我分别访问http://192.168.0.1/app/test和http://192.168.0.1/api/test就能分别指向两个服务了
- 点赞
- 收藏
- 分享
- 文章举报
- 阿里云 解决为什么不能使用公网IP地址访问部署的nginx项目
- 阿里云 解决为什么不能使用公网IP地址访问部署的javaweb项目
- 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之十三 || DTOs 对象映射使用,项目打包部署Windows+Linux
- Linux+.Net Core+Nginx(在Linux上使用Nginx反向代理.Net Core 项目)
- 编写Django项目并使用uwsgi和nginx部署在Linux平台
- linux下jdk、tomcat的安装及项目的部署和去掉项目名访问详细总结
- 让外网访问VMware的Linux,访问虚拟机上部署的javaweb项目
- java使用ssh访问Linux的项目jscraft
- 在使用JCaptcha(验证码)在项目中时,在windows没报异常,但移植linux上部署出错。
- windows访问linux下tomcat部署的webx项目
- linux的jenkins安装与使用jenkins自动化打包maven项目部署到tomcat
- 火狐无法访问本机IIS部署的网站,弹出:此地址使用了一个通常用于网络浏览以外目的的端口.出于安全原因,Firefox 取消了该请求 的解决办法
- maven 使用tomcat 插件,项目部署时访问路径问题
- 使用wamp访问localhost时查看项目地址不对
- 在MAC使用Nginx+uWSGI部署Flask项目
- Tomcat+Nginx+Linux+Mysql部署豆瓣TOP250的项目到腾讯云服务器
- 从写项目到部署linux服务器全过程-linux下Nginx的安装
- 阿里云服务器linux环境,从启动tomcat服务器外网访问--->绑定域名--->Navicat远程连接mysql--->阿里云服务器部署项目过程中,一定会遇到的五大问题;
- 使用nginx+passenger将本地Rails项目部署到Centos系统
- Linux使用nginx部署Laravel