记录前后端分离项目部署到阿里云服务器(window版)
在此之前,从未接触过服务器部署这一块的知识,全程面向csdn博客论坛部署,看了很多帖子。如今顺利部署,在此也做一个记录,希望我的经验能帮到一些人。可能是因为服务器的操作系统是window,所以这一块的教程会比较少,但也因为是window,整体部署是比较简单的。
前记
在此之前,从未接触过服务器部署这一块的知识,全程面向csdn博客论坛部署,看了很多帖子。如今顺利部署,在此也做一个记录,希望我的经验能帮到一些人。
可能是因为服务器的操作系统是window,所以这一块的教程会比较少,但也因为是window,整体部署是比较简单的。
服务器配置
打开控制台,找到服务器实例,点击安全组,把需要的几个端口都配置好,可以选择快速添加。
3306 数据库 6379 redis
我的nginx端口是自定义的8086,所以这个要手动添加。nginx默认的端口是80,如果不想自己定义端口的话,可以快速添加找到80,进行添加。
补充:项目端口是8080也没关系,8080和80不会发生冲突。之前我以为会,但是经过测试,发现并不会。我现在也罢8086修改回了80.
环境配置
1.下载安装包
后端环境基本三剑客——jdk,redis,mysql,前端安装nginx,npm,vue脚手架。先在网上下好安装包,把这些安装包都集中在一个文件夹,方便后续向服务器传输安装包。这个是我这次自用的安装包,jdk1.8,redis5.0,mysql5.7,和niginx和node,这俩都是我去官网下的最新的。需要的自取。
链接:https://pan.baidu.com/s/1rKWntqHGyoE62BereIsSWA?pwd=1678
提取码:1678
2.本机连接服务器
首先用本机电脑连接上服务器,直接按window按钮,输入“远程桌面连接”,也可以使用cmd命令行连接。
打开后,输入服务器的公网ip。
公网ip获取:登录阿里云 >>>点击右上角头像旁的控制台>>>我的资源,云服务器,点进服务器
复制公网ip,在远程桌面连接处输入,随后输入服务器的账号和密码
服务器账号和密码获取:基本信息>>重置密码
输入完账号密码之后,点击 “显示选项”,然后“本地资源”,“详细信息”,把有软件安装包的那个文件夹所在的盘,添加进来,这样服务器就可以访问上本机文件。
连接成功之后,就会得到一个服务器端电脑,window操作系统,跟自己的电脑差不多,很熟悉吧。
然后依次安装jdk、redi、mysql、npm、nginx
3.把安装包传入服务器
把安装包传入服务器的方式:
1.从本机复制,然后在服务器粘贴
但是有的安装包无法通过这个方式传入,所以有时可以使用第二种方法。
2.直接拖拽
在服务器端直接访问本机符盘,进入此电脑
然后看到红框标注的位置,这个就是本机的盘,我这里是E盘。然后找到存放安装包的文件夹,找到具体要传入的安装包,直接用拖拽的方式,传入服务器。放在c盘根目录和桌面都没关系,但是niginx一定要放在c盘根目录,以免后续启动niginx报错。
4.具体配置过程(略)
然后大家就可以打开另一个网页,搜索jdk配置教程等。其实配置过程跟在本机配置的过程差不多,跟着教程贴一步步来就OK了。
引入项目
1.引入后端
1.把后端项目打包。
打包方式有很多种,我这里用的是最简单的一个。直接在idea内部,打开右侧maven,找到主项目。
生成的jar包会在有启动类的那个模块之下
把他复制进存有安装包的那个文件夹,然后拖拽进服务器。
2.创建数据库
有两个方式,可以用本机的数据库操作工具比如Navicat,连接服务器数据库。
具体操作过程:
1.在服务器端打开cmd,使用 mysql -u root -p 命令登录mysql
2.运行 select user ,host from mysql.user; 查看访问权限
3.GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; 运行这个命令开放访问权限,返回 OK就是成功。其中 ‘123456’这个密码,可以任意设置。
4.再次查看权限,已更改成功
5.打开本机Navicat,新建连接,输入服务器公网ip,然后输入服务器端的mysql账号和密码,测试连接,连接成功。
6.然后新建数据库,导入sql文件。建议数据库名和后端一样。
7.数据库导入完成,就可以把访问权限关闭了,使用 use mysql 命令,使用mysql这个数据库,因为访问权限表 user 在这库中。
8.使用 delete from user where user=“root” and host="%" 命令,删掉权限
9.再次查看,这个权限就没有了。
注:如果使用命令行 但是cmd 显示这样,可以在命令后加一个 ;
3.运行jar包
我是放在桌面的,打开cmd
进入jar包所在的位置 cd C:\Users\Administrator\Desktop
然后输入运行命令 java -jar jar包名称.jar
只要后端环境配置没有错,比如数据库名称,redis密码等,那就可以正常运行了。
2.引入前端
1.前端打包。
打开终端,使用 npm run build:prod 命令打包。运行结束,会在node_moudle上方生成一个dist文件夹。
复制这个文件夹,把他放到niginx/html下面
2.niginx配置
niginx是部署项目过程中,我遇到的麻烦比较多的环境。因为它很重要,前后端的跨域是利用他完成的。
1.打开niginx.conf这个配置文件,需要更改一些东西。
我主要更改了以下地方
niginx默认的端口是80,但由于我的后端端口是8080,我担心端口冲突问题,自定义为8086。
niginx默认的server_name 是localhost,要改成公网ip或者域名,否则别人无法访问,只能在服务器本机访问。
其次是配置后端代理,/api/,一定要加后面的/,否则也会访问不到后端接口。至于/api/的由来,可以在前端配置文件中找到,一般前缀都是api。
然后是后端的路径。在本机电脑,后端接口路径是 localhost 或者是 127.0.0.1,但是在niginx配置文件中,要改成服务的公网ip,否则访问不到。
注意:前端跨域也要改成公网ip,否则访问不到。
我这个前端项目是一个开源项目,此项目的跨域疑似是这三个配置文件,我就把这三个配置文件中的 原 127.0.0.1 都改成了 公网ip。
至此,niginx配置结束
3.启动niginx
在根目录输入 cmd
使用 start nginx 启动niginx,此时会一闪而过
niginx 关闭命令:nginx -s stop
niginx 启动完成,在浏览器输入 公网ip:端口号 访问项目
3.引入图片
我这个项目的图片不是在src里面,所以正常打jar包是访问不到的。
需要把用到的图片,放在一个文件夹中,把jar包跟图片同一级目录。
然后更改后端代码,找到图片路径,更改为服务器图片的绝对路径。
我更改完成之后,还是访问不到图片。而且很奇怪的是,url请求和实际路径不符。
后面找到项目的过滤器,找到了访问图片路径的前缀,这个前缀127.0.0.1,后面更改为服务器ip,成功访问图片。
注:图片路径问题可以多去看看过滤器和拦截器。
成功部署
建议先启动后端jar包,再运行 niginx 启动前端。
遇到的一些小问题
1.启动jar包乱码
解决方法: 使用 java -Dfile.encoding=utf-8 -jar jar包名称.jar 命令运行 jar 包。
2.niginx启动了多个,无法关闭
niginx启动多个,会影响前后端跨域。
我遇到这个问题,是因为我前后端跨域失败,我更改了配置文件,想关闭niginx,然后重新打开。这个时候发现我关闭不掉。
解决方案参考这个帖子,亲测有用。
把jar包做成服务
更多推荐
所有评论(0)