關(guān)于公司服務(wù)器的部署和搭建

服務(wù)器的獲取

首先部署項(xiàng)目,需要獲得一個(gè)可以長(zhǎng)久穩(wěn)定運(yùn)行的服務(wù)器,可以在阿里云、騰訊云等獲取,具體不做贅述,本次的服務(wù)器部署,是在阿里云上進(jìn)行的。

運(yùn)行環(huán)境的準(zhǔn)備

一、數(shù)據(jù)庫

在一個(gè)空白的服務(wù)器上部署項(xiàng)目,需要搭建相關(guān)的運(yùn)行環(huán)境,要是數(shù)據(jù)庫也在同一臺(tái)服務(wù)器上,則也需要搭建服務(wù)器,這邊使用的是MySQL數(shù)據(jù)庫,具體搭建教程在網(wǎng)絡(luò)上都有教程,這里不多做陳述。

二、后端的運(yùn)行環(huán)境

由于后臺(tái)項(xiàng)目代碼是通過.net來編寫的,所以在安裝.net的相關(guān)運(yùn)行時(shí)環(huán)境,這邊安裝的是.Net Desktop Runtime 6的,相關(guān)鏈接:https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/runtime-desktop-6.0.28-windows-x64-installer
下載后在服務(wù)器直接安裝即可(注:下載時(shí)請(qǐng)選擇合適自己項(xiàng)目的版本,其他版本鏈接:https://dotnet.microsoft.com/zh-cn/download/dotnet

三、前端的運(yùn)行環(huán)境

前端運(yùn)行環(huán)境是使用的nginx,這邊使用的是nginx 1.18.0的版本
官方的下載地址,尋找自己需要的版本:https://nginx.org/en/download.html

后端文件打包和運(yùn)行

打開Visual Studio,找到自己需要發(fā)布的文件,點(diǎn)擊發(fā)布,發(fā)布到指定的文件路徑即可


發(fā)布步驟

如果需要改變發(fā)布路徑,點(diǎn)擊“顯示所有設(shè)置”


變更路徑

發(fā)布完畢后,到發(fā)布所在的目錄,將其打包,然后移動(dòng)至服務(wù)器中

服務(wù)器中解壓后,點(diǎn)擊Configurations文件夾,修改其中的ConnectionStrings.json文件,把連接的數(shù)據(jù)庫替換成需要連接的數(shù)據(jù)庫


修改連接的表名和數(shù)據(jù)庫

然后在Configurations文件夾的父級(jí)文件中,在文件路徑一欄,輸入cmd,然后回車


輸入cmd

出現(xiàn)命令窗口后,輸入"C:\Program Files\dotnet\dotnet.exe" JNPF.API.Entry.dll --urls=http://*:58001
修改端口僅需修改最后的58001即可

前端的打包和運(yùn)行

打開Visual Studio Code,打開項(xiàng)目所在的項(xiàng)目文件夾,在終端窗口中,運(yùn)行npm build或者pnpm build,將項(xiàng)目打包;完成后,在項(xiàng)目路徑中,會(huì)出現(xiàn)一個(gè)“dist”的文件夾


dist文件夾

將整個(gè)文件夾打成壓縮包,上傳至服務(wù)器中,在服務(wù)器中解壓
在服務(wù)器中,找到或者移入nginx 1.18.0程序的壓縮包,解壓后,點(diǎn)擊conf文件夾,修改其中的nginx.conf文件


nginx.conf文件

點(diǎn)擊進(jìn)去,在http的里面添加 include web/*.conf; 保存,退出;
include web/*.conf;

然后在該目錄中增加一個(gè)web文件夾,創(chuàng)建一個(gè).conf文件,點(diǎn)擊編輯(注:下面的配置僅筆者使用的,不一定適用所有情況,需要更據(jù)實(shí)際情況來配置)

server {
        listen       3500; #你自己的端口
        server_name  localhost; #你端口的前綴,更據(jù)你自己的需求改變
        index index.html index.htm;
        root D:\work\mhwz\front\dist; #上面在服務(wù)器中解壓出的dist的路徑

  #JNPF-Start

    #設(shè)置上傳文件的大小
  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;
  
  #請(qǐng)求頭總長(zhǎng)度大于128k時(shí)使用large_client_header_buffers設(shè)置的緩存區(qū)
  client_header_buffer_size 128k;

  #指令參數(shù)4為個(gè)數(shù),128k為大小,默認(rèn)是8k。申請(qǐng)4個(gè)128k。
  large_client_header_buffers 4 128k;
  
  #指定允許跨域的方法,*代表所有
  add_header Access-Control-Allow-Methods 'GET,PUT,POST,DELETE,OPTIONS';
  
  # 預(yù)檢命令的緩存,如果不緩存每次會(huì)發(fā)送兩次請(qǐng)求
  add_header Access-Control-Max-Age 3600;
  
  #帶cookie請(qǐng)求需要加上這個(gè)字段,并設(shè)置為true
  add_header Access-Control-Allow-Credentials true;
  
  #   表示允許這個(gè)域跨域調(diào)用(客戶端發(fā)送請(qǐng)求的域名和端口) 
  #   $http_origin動(dòng)態(tài)獲取請(qǐng)求客戶端請(qǐng)求的域   不用*的原因是帶cookie的請(qǐng)求不支持*號(hào)
  add_header Access-Control-Allow-Origin $http_origin;
  #   表示請(qǐng)求頭的字段 動(dòng)態(tài)獲取
  add_header Access-Control-Allow-Headers $http_access_control_request_headers;
  
  
  # 前端主項(xiàng)目偽靜態(tài)
  location / {
    try_files $uri $uri/ /index.html;
  }
  
  # 大屏偽靜態(tài)
  location /DataV {
    try_files $uri $uri/ /DataV/index.html;
  }
  
  # 報(bào)表偽靜態(tài)
  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;
  }
  
  # 數(shù)據(jù)報(bào)表接口配置
  location /ReportServer/ {
    proxy_pass http://localhost:30007/;
  }
  
  # 文件預(yù)覽服務(wù)
  location /FileServer {
    proxy_pass http://localhost:30090;
  }
  
  # 解決文件預(yù)覽服務(wù)無法加載js,css問題
  location ~ /FileServer/*.*\.(js|css)?$ {
        proxy_pass http://localhost:30090;
  }
  #JNPF-End 

    }

保存后,來到nginx的目錄文件,點(diǎn)擊nginx.exe運(yùn)行前端


nginx.exe

打開任務(wù)管理,在進(jìn)程中找到兩個(gè)nginx.exe進(jìn)程,即啟動(dòng)成功


進(jìn)程

輸入上面配置的地址和端口

相關(guān)問題和建議

1.進(jìn)入登陸頁面,后臺(tái)報(bào)錯(cuò)缺少yitidgengo.dll文件

在登錄頁,提示報(bào)錯(cuò),然后再后端的命令窗口中提示缺少yitidgengo.dll文件,到你后端的項(xiàng)目根目錄中尋找文件
路徑是 你的項(xiàng)目位置\back\src\application\JNPF.API.Entry\lib\regworkerid_lib_v1.3.1
然后將lib文件夾復(fù)制到服務(wù)器的后端目錄中

2.關(guān)于創(chuàng)建啟動(dòng)后端的startup.bat文件

在服務(wù)器后端的目錄中,創(chuàng)建一個(gè)新建文本,將后綴改為.bat,后編輯,將"C:\Program Files\dotnet\dotnet.exe" JNPF.API.Entry.dll --urls=http://*:58001輸入;之后即可在cmd直接啟動(dòng)startup.bat,也方便下面將后端作為服務(wù)啟動(dòng)

3.創(chuàng)建服務(wù)

需要下載nssm工具,官網(wǎng)地址:www.nssm.cc

nssm是一個(gè)服務(wù)封裝程序, 它可以將普通exe程序封裝成服務(wù),實(shí)現(xiàn)開機(jī)自啟動(dòng),同類型的工具還有微軟自己的srvany,不過nssm更加簡(jiǎn)單易用,并且功能強(qiáng)大。
它的特點(diǎn)如下:
●支持普通exe程序(控制臺(tái)程序或者帶界面的Windows程序都可以)
●安裝簡(jiǎn)單,修改方便
●可以自動(dòng)守護(hù)封裝了的服務(wù),程序掛掉了后可以自動(dòng)重啟
下載地址:https://nssm.cc/download

解壓后選擇win64的即可


解壓后

將里面的nssm.exe復(fù)制到需要?jiǎng)?chuàng)建服務(wù)的文件夾,并創(chuàng)建兩個(gè)bat文件,分別是nssm_install.bat和nssm_uninstall.bat


bat文件

nssm_install.bat中內(nèi)容是 nssm install 你要?jiǎng)?chuàng)建的服務(wù)名稱


nssm_install.bat

nssm_uninstall.bat中內(nèi)容是 nssm remove 你要?jiǎng)h除的服務(wù)名稱


nssm_uninstall.bat

創(chuàng)建完成后,雙擊nssm_install.bat,會(huì)出現(xiàn)nssm的service install 窗口


service install

1.Application Path: 選擇系統(tǒng)安裝的exe或bat。
2.Startup directory: 選擇exe或bat項(xiàng)目的根目錄。
3.Arguments: 輸入啟動(dòng)參數(shù)。
4.Service name:服務(wù)名稱
點(diǎn)擊Install service即可完成服務(wù)安裝


完成服務(wù)的安裝

服務(wù)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容