前后分离网站C#开发Liunx下布置 一点坑记

Posted mansea_nee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前后分离网站C#开发Liunx下布置 一点坑记相关的知识,希望对你有一定的参考价值。

      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 也是研究了一段时间后才成。

以上是关于前后分离网站C#开发Liunx下布置 一点坑记的主要内容,如果未能解决你的问题,请参考以下文章

前后分离网站C#开发Liunx下布置 一点坑记

Python3+ Django2.7开发web排坑记004_restfulframework 实现前后端分离

springboot+vue-cli前后端分离demo(含踩坑记)

Liunx前后端项目分离部署

基于C#和Blazor开发的前后端分离框架

WEB开发中前后端分离的好处与区别