N久没文章了,改来改去,自己不知道干点啥好了。应一个朋友的要求,帮其部署一个前后分离的C# Net6.0程序 发布到Liunx系统, 本人对Liunx也是不懂,尝试了几天,解决问题了。记录几个小坑给后面的初学者,少走一些弯路,占用大家的宝贵时间吧。
环境:DeepIn 安装liunx系统,C#6.0开发的后端+Mysql,Vue2.0开发的前端 ,局域网内测试
部署:前端用正常的端口80(这儿可以别的端口)192.168.1.29
接口后端端口:Http://localhost:5000
条件:前端部署用静态,访问指定接口,全部加了api,为了方便读懂,简单举个例子:
正常:点击登录按钮,访问是:192.168.1.29/api/login 接口,但我们真正访问的应该是后端:localhost:5000/login ,
方法:1)前端做跨域等处理,我没调成功
2)反向代理
正常布署可以考一些网站:
waterCloud Core 文档预览 - Gitee.com 该文介绍是直接转发,当然还有好多,我就搜了这一个。
对于Liunx系统不熟悉的,建议安装宝塔面板来进行配置,简单方便。当然免费的就够我们基础用了,如果需要更专业的请购买相关权益即可。
这里需要注意一个问题,如果我们的liunx系统没有yum 命令的,上面安装 宝塔 命令就是不能正确了。此时我们去官方网站(宝塔面板下载,免费全能的服务器运维软件)上可以看到如下不同版本命令,选择合适的一个:
安装完成后,需要用手机号进行注册绑定相关服务。此时我们就可以用web远程来访问管理了,当然互联网的要设置自己对应的IP地址(服务器放行相关端口等操作)。
一、宝塔操作:
1)进入【软件商店】,进行相关环境的安装,mysql数据库,Nginx,Supervison管理器,Node,其它的根据你的要求再选择进行安装,其它的相关设置可以根据需求去研究。
2)点击导航【文件】,会出现了一个默认的目录,我们可以根据自己的喜爱改名或不改名,这个放前端,再新建一个目录放后端程序,如下图:
点击文件夹进入后,我们把前端Vue程序从本机电脑上可以直接托拽到宝塔界面上,会提示一个上传界面,进行确定就好,根据网速快速来确定上载时间。
相同方法,我们再把我们发布好的C# 程序放到对应的后端程序里。当然这儿也可以ftp去操作,也要进行一些相关的设置后才能连接,此处不再累赘去说明,可以自行度娘去搜索。
3)点击【网站】导航,这儿我们新建一个站点,选择的是【PHP项目】,打开如下图:
注意:根目录那儿我们录知道路径,可以点击右侧文件夹图标去选择到目录;PHP版本,选择是静态,这儿我们是编译完的不是源文件(源文件就得选择Node项目)。 此时尝试我们打开浏览器,输入对应的IP地址,应该能正确显示首页了(如有调用接口的,先不考虑)。
二、部署Net后端程序
1) 确保liunx下 net core环境安装成功。
2)确保程序部署后,守护进程守护成功。保护在liunx电脑里打开浏览器输入:localhost:5000能访问(根据自己的程序去设置)。 这儿也让我产生了坑,测试多次代理设置,不成功,后来才发现来回替换文件后端没有运行成功,在代理没有成功前,不要再随意动这儿的设置了。
三、设置反向代理(这儿是坑最严重)
我的不是在Docker中部署,也没有在Nginx中配置,而是在【网站】里直接配置,我想设置哪个网站可以可视化页面+配置文件去设置。
坑就是在这个界面上产生的,搜了好多人写的教程,这儿的代理目录没有,与我的不太一样。举例说明:
1)192.168.1.29/test/login 经反向代理后访问:www.baidu.com/test/login,这儿就没有目录
2)192.168.1.29/api/login 经反向代理后访问:www.baidu.com/login, 这儿就有目录,且我们只要代理api开始的所有url,其它的不访问。
经过网上的教程有的是要求输入:/api, 保存后就是不能访问,提示出错。
经过多次摸索,使用了/api/ 这样格式,就能访问(也许在nginx的配置文件中是那样写或别的系统中可以),这儿大家根据自己不同的系统多次去尝试。
此时我们点击配置文件,可以看到自动产生的设置文件,在里面还要添加一些其它的(根据自己需要)代理,需要手工添加如下:
location / { //注意这儿没有^号, 不要 ^/
root "/www/wwwroot/cloudweb"; //此处是放置网站的目录
try_files $uri $uri/ @router;
index index.html index.htm;
error_page 405 =200 http://$host$request_uri; //可以不要
}
在代码的最后加上
location @router {
rewrite ^.*$ /index.html last;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
然后再打开网站测试一下,我的就这样完美解决了。
此次部署程序还遇到了其它的几个小坑:
1)运行后提示连接mysql数据库无权限,注意在用宝塔面板设置数据库时,我们先把权限打开为所有人,然后再根据情况去调整。
先用工具去连接数据库是否能远程访问,本地访问,确保授权,用户名和密码访问没问题。
2)提示找到 数据库中的某表,问开发人员说在windows上没问题,通过仔细分析sql请问,发现表名中有大写字母(数据库中全是小写字母),没有做忽略大小写,所以也测试了半天。
3)浏览器要清除缓存再测试,以免缓存造成的误错误。
4) 还要注意修改文件保存编码格式,修改后端程序连接数据库IP,用vi 来编辑,用记事本编辑都没成功,后来用VS打开编辑保存,替换就没问题了。
啰嗦了那么多,专业的人就请跳过了,给初学者一点小参考。
下期写IIS下 Proxy 做反向代理,网上也不少文章,只是对于不同的系统还是有不同。我用windows server2008 也是研究了一段时间后才成。