后端为springboot框架,前端为vue框架,服务器为windows2008server R2系统。

后端部署

首先将项目打包,由于开发环境使用IDEA编码,可以直接使用IDEA的打包功能。点击右侧 Maven 按钮,然后双击Lifecycle下的package按钮。会在项目下target文件下生成jar包。
然后将jar包导入服务器中,在cmd中执行下面命令:

java -jar XXX.jar

即可运行后端项目。
tips
服务器需要安装JDK,这里选用1.8版本。
打包时,需要将application.yml中的server.address改为服务器的ip地址。
有时候重启服务时,之前的服务没有完全停掉,会出现端口占用的问题,导致无法启动。这时需要查看被占用端口的进程,在任务管理器中停掉该进程。如果在任务管理器中查不到该进程,则需要直接把java进程停掉。

前端部署

首先在服务器中安装nginx。
在nginx.conf中编辑,
同样,将项目打包,执行

vue-cli-service build

或者按照项目文件package.json中的设置,执行

npm run build:prod

即可将项目打包,生成dist文件夹。
将dist文件夹导入服务器中。
服务器中需要安装nginx1.8,版本太低了安装不了。
ngxinx安装完毕后,在nginx安装目录下,/conf/nginx.conf文件中更改配置
nginx配置文件
主要是更改前两个方框,第一个框中分别改为前端服务端口和地址,第二个方框改为前端打包的dist文件路径。
更改完毕后,关闭nginx服务,开启nginx服务
这样正常的话,项目便可在服务器上正常运行了。

//关闭nginx服务
nginx -s quit
//开启nginx服务
start nginx.exe

报错

当使用公共域名的时候,类似http://localhost:8080/I_LOVE_YOU/login,需要在配置文件中同时配置公共域名的location,

location /I_LOVE_YOU/ {
	root D:\\nginx-1.20.1\\html\\dist;
	index index.html index.htm;
	try_files $uri $uri/ @router;
}
location @router {
	rewrite ^.*$ /index.html last;
}

如果没有配置的话,会报错404。
system cannot find the path specified /html/dist/user/login
一开始一直不明白为啥报这个错,把文件路径和访问地址拼在一起了,就离谱。。。

最近又遇到错误,在某台服务器上即便这样配置还是会报错
rewrite or internal redirection cycle while redirect to named location "router"
在location @router中的index.html的路径前还要添加子目录,这样才能正常运行。

tips
在本地页面正常显示,在服务器却显示为空白页面。原因为:
本地使用chrome浏览器访问正常,而服务器为ie浏览器,不能完整显示页面元素。
更换浏览器即可。

注意

1.之前出现服务器可以ping通主机,但主机ping不通服务器的问题。
需要在服务器中设置:
进入控制面板——>管理工具——>找到 “高级安全 Windows防火墙”
点击 入站规则
找到 回显请求-ICMPv4-In (Echo Request – ICMPv4-In)
右键 点击规则 点击“启用规则(Enable)”
(win7在本地网络连接----属性-----高级------网络连接设置-----设置----ICMP中—点击—允许传入的回显请求(打上勾)–确定就ok了。)
禁止ping的方法相同

2. 以及服务器的项目开启后,其他电脑请求失败的问题。
需要在服务器上的开放项目的前后台端口:
在防火墙设置中,新增入站规则,将两个端口分别开放即可。
3. 更改服务器的端口
打开注册表,在/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Terminal Server/Wds/rdpwd/Tds/Tcp,更改其PortNumber。
在/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Terminal Server/WinStations/RDP-Tcp,更改其PortNumber。
4. 项目中有导出txt文件功能,在本地导出的文件可以正常换行,而在服务器上却没有换行,解决方式,在后台代码中,更改写入函数,将 \n 改为 \r\n即可。
5. 每次生成的文件总会接着上次的文件后面继续生成,我想要覆盖以前的重新生成,需要将这里第二个参数改为false,意为不追加。
FileWriter fw = new FileWriter(file,true)
6.每次生成的文件为空白,内容只有“undefined”。
因为后台将生成文件的接口,默认设置了端口号20000,请求被浏览器拦截,故而没有写入文件。
7.刷新报500,每次页面第一次显示正常,但刷新一次就报500。在error.log中查看报错信息,类似于下面的报错,

rewrite or internal redirection cycle while processing "/web/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/Home/User/login", 

尝试在nginx.conf中添加location / { try_files $uri $uri/ /index.html; }
或者在前端vue项目中更改,将前端mode: ‘history’注释掉;

或者更改rewrite ^/(.*).html$ /$1.html?mode=test last;
last改为break.
都没有解决问题,最后发现实在location @router{}没有配置相应的root,配置完毕后刷新就正常了。

参考

server2008服务器可以远程桌面连接,但是ping不通
nginx中部署前端,后端打成jar包运行
Windows环境配置Nginx,并引入项目的配置文件
使用nginx作为vue项目服务器,解决vue路由404问题
nginx配置Router

Logo

前往低代码交流专区

更多推荐