服务器的获取
首先部署项目,需要获得一个可以长久稳定运行的服务器,可以在阿里云、腾讯云等获取,具体不做赘述,本次的服务器部署,是在阿里云上进行的。
运行环境的准备
一、数据库
在一个空白的服务器上部署项目,需要搭建相关的运行环境,要是数据库也在同一台服务器上,则也需要搭建服务器,这边使用的是MySQL数据库,具体搭建教程在网络上都有教程,这里不多做陈述。
二、后端的运行环境
由于后台项目代码是通过.net来编写的,所以在安装.net的相关运行时环境,这边安装的是.Net Desktop Runtime 6的,相关链接:https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/runtime-desktop-6.0.28-windows-x64-installer
下载后在服务器直接安装即可(注:下载时请选择合适自己项目的版本,其他版本链接:https://dotnet.microsoft.com/zh-cn/download/dotnet)
三、前端的运行环境
前端运行环境是使用的nginx,这边使用的是nginx 1.18.0的版本
官方的下载地址,寻找自己需要的版本:https://nginx.org/en/download.html
后端文件打包和运行
打开Visual Studio,找到自己需要发布的文件,点击发布,发布到指定的文件路径即可
如果需要改变发布路径,点击“显示所有设置”
发布完毕后,到发布所在的目录,将其打包,然后移动至服务器中
服务器中解压后,点击Configurations文件夹,修改其中的ConnectionStrings.json文件,把连接的数据库替换成需要连接的数据库
然后在Configurations文件夹的父级文件中,在文件路径一栏,输入cmd,然后回车
出现命令窗口后,输入"C:\Program Files\dotnet\dotnet.exe" JNPF.API.Entry.dll --urls=http://*:58001
修改端口仅需修改最后的58001即可
前端的打包和运行
打开Visual Studio Code,打开项目所在的项目文件夹,在终端窗口中,运行npm build或者pnpm build,将项目打包;完成后,在项目路径中,会出现一个“dist”的文件夹
将整个文件夹打成压缩包,上传至服务器中,在服务器中解压
在服务器中,找到或者移入nginx 1.18.0程序的压缩包,解压后,点击conf文件夹,修改其中的nginx.conf文件
点击进去,在http的里面添加 include web/*.conf; 保存,退出;
然后在该目录中增加一个web文件夹,创建一个.conf文件,点击编辑(注:下面的配置仅笔者使用的,不一定适用所有情况,需要更据实际情况来配置)
server {
listen 3500; #你自己的端口
server_name localhost; #你端口的前缀,更据你自己的需求改变
index index.html index.htm;
root D:\work\mhwz\front\dist; #上面在服务器中解压出的dist的路径
#JNPF-Start
#设置上传文件的大小
client_max_body_size 100m;
#添加头部信息
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#请求头总长度大于128k时使用large_client_header_buffers设置的缓存区
client_header_buffer_size 128k;
#指令参数4为个数,128k为大小,默认是8k。申请4个128k。
large_client_header_buffers 4 128k;
#指定允许跨域的方法,*代表所有
add_header Access-Control-Allow-Methods 'GET,PUT,POST,DELETE,OPTIONS';
# 预检命令的缓存,如果不缓存每次会发送两次请求
add_header Access-Control-Max-Age 3600;
#带cookie请求需要加上这个字段,并设置为true
add_header Access-Control-Allow-Credentials true;
# 表示允许这个域跨域调用(客户端发送请求的域名和端口)
# $http_origin动态获取请求客户端请求的域 不用*的原因是带cookie的请求不支持*号
add_header Access-Control-Allow-Origin $http_origin;
# 表示请求头的字段 动态获取
add_header Access-Control-Allow-Headers $http_access_control_request_headers;
# 前端主项目伪静态
location / {
try_files $uri $uri/ /index.html;
}
# 大屏伪静态
location /DataV {
try_files $uri $uri/ /DataV/index.html;
}
# 报表伪静态
location /Report/icons/{
try_files $uri $uri/ /Report/icons/;
}
# 后端接口
location /api/ {
proxy_pass http://localhost:5000;
}
# websocket
location /websocket {
proxy_pass http://localhost:5000/api/message/websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 600s;
}
# 数据报表接口配置
location /ReportServer/ {
proxy_pass http://localhost:30007/;
}
# 文件预览服务
location /FileServer {
proxy_pass http://localhost:30090;
}
# 解决文件预览服务无法加载js,css问题
location ~ /FileServer/*.*\.(js|css)?$ {
proxy_pass http://localhost:30090;
}
#JNPF-End
}
保存后,来到nginx的目录文件,点击nginx.exe运行前端
打开任务管理,在进程中找到两个nginx.exe进程,即启动成功
输入上面配置的地址和端口
相关问题和建议
1.进入登陆页面,后台报错缺少yitidgengo.dll文件
在登录页,提示报错,然后再后端的命令窗口中提示缺少yitidgengo.dll文件,到你后端的项目根目录中寻找文件
路径是 你的项目位置\back\src\application\JNPF.API.Entry\lib\regworkerid_lib_v1.3.1
然后将lib文件夹复制到服务器的后端目录中
2.关于创建启动后端的startup.bat文件
在服务器后端的目录中,创建一个新建文本,将后缀改为.bat,后编辑,将"C:\Program Files\dotnet\dotnet.exe" JNPF.API.Entry.dll --urls=http://*:58001输入;之后即可在cmd直接启动startup.bat,也方便下面将后端作为服务启动
3.创建服务
需要下载nssm工具,官网地址:www.nssm.cc
nssm是一个服务封装程序, 它可以将普通exe程序封装成服务,实现开机自启动,同类型的工具还有微软自己的srvany,不过nssm更加简单易用,并且功能强大。
它的特点如下:
●支持普通exe程序(控制台程序或者带界面的Windows程序都可以)
●安装简单,修改方便
●可以自动守护封装了的服务,程序挂掉了后可以自动重启
下载地址:https://nssm.cc/download
解压后选择win64的即可
将里面的nssm.exe复制到需要创建服务的文件夹,并创建两个bat文件,分别是nssm_install.bat和nssm_uninstall.bat
nssm_install.bat中内容是 nssm install 你要创建的服务名称
nssm_uninstall.bat中内容是 nssm remove 你要删除的服务名称
创建完成后,双击nssm_install.bat,会出现nssm的service install 窗口
1.Application Path: 选择系统安装的exe或bat。
2.Startup directory: 选择exe或bat项目的根目录。
3.Arguments: 输入启动参数。
4.Service name:服务名称
点击Install service即可完成服务安装