找回密码
 立即注册
查看: 12744|回复: 10

Nocobase的远程服务器部署

[复制链接]

459

主题

653

回帖

4332

积分

管理员

积分
4332
QQ
发表于 2023-6-4 16:43:50 | 显示全部楼层 |阅读模式
请问一下nocobase在本地机器上yarn build之后,在远程服务器上部署的话,需要打包上传哪些文件夹?
# C! W* t  m0 r2 c% C
( ~7 W$ ]7 N6 A. s' _% F另外,请详细说明远程部署的需要的环境、步骤,配置。+ U& e9 z3 G( P* t8 L% d* y) q
8 }! w9 {+ v( Q+ r" W
如果已经在本地机器上使用`yarn build`命令构建了NocoBase项目,并且想要在远程服务器上部署,则需要将以下文件夹打包上传到服务器:
5 I. _2 Q: [3 c. M' w) j
5 X- ]* u% F( ]5 K& b% a6 V- `build`:包含构建后的前端静态文件。
9 ^$ Z4 m% V" D$ I3 Q- `server`:包含后端Node.js应用程序代码。
5 `9 i" p& h, F0 l9 @1 T- A+ q# x+ [. H, a+ G+ v+ g6 m6 o
在远程服务器上部署NocoBase项目的步骤如下:
3 g# u0 e: b( r7 q
8 W1 u( Z7 p! K# B( J1. 安装必要的软件! H& H6 U/ W; P2 P/ W  h+ R9 n& I
. p  ^+ J: U$ c6 A, X" X
  - Node.js和npm
: o1 Y( Q, D4 y( \! d( }( e5 s" J" |
    在远程服务器上安装Node.js和npm。可以参考官方文档进行安装,例如Ubuntu系统可以使用以下命令安装:
; m1 z2 X: M% i1 I1 K6 e0 e& H& g7 f
    ```5 `' ]7 G7 d. e. D6 U
    sudo apt-get update+ ^' |: o, ^& n! W
    sudo apt-get install nodejs npm) J' f7 t) T5 C0 [2 _  R3 x
    ```
" z% t% R/ T0 L3 N! O
( y) ?$ R9 Q% r. e1 [, t, ~  - MongoDB
5 g3 i) U! x/ l% X3 B6 h* U0 i2 t
5 O2 {% j- n; R, e3 q1 W    如果您的NocoBase项目需要使用MongoDB作为数据库,请在远程服务器上安装MongoDB。可以参考MongoDB官方文档进行安装。
* G' ~0 N# L% X7 X" }6 O. ]5 P
! e7 G+ R; X* `2 R$ _2. 下载NocoBase项目代码
' s& D; ~' j& Q2 G" H" I, I, T- n. _6 Y- S6 x" }# x+ q) r8 e2 `$ V( A
  使用Secure Copy(SCP)等工具将NocoBase项目代码从本地机器复制到远程服务器。9 M( ]8 {8 m$ j% P
$ v3 v% C' w4 g# M( Z2 C
3. 安装依赖项" T; G# Y; Q& N1 T  o
: O9 Q2 Y- @6 K! b, A
  进入项目根目录,运行以下命令安装依赖项:" p1 Z4 r: b+ r0 q: r7 Z3 R
( N1 X3 w. A# \1 {
  ```1 m2 K; n: L' m- `
  npm install$ O% Z( I- c- D
  ```
$ M. p+ w  W$ l6 s3 A; E* c2 a
5 I- ^1 u6 P6 H" m# l4. 配置环境变量+ P5 d, i1 C+ ^6 N. n2 x
( o( c/ P+ E5 T: P' T$ z3 F
  在远程服务器上设置环境变量。可在`.env`文件中定义环境变量,例如:  L) U7 o( M2 ^2 ^
3 {: A+ n: E7 M0 i" W
  ```
7 j1 v. Q+ A/ u  t8 d* C  NODE_ENV=production! u- y7 o+ w5 C# i
  PORT=3000
1 ~- J$ F; F$ f$ s& a' D; x$ q  MONGODB_URI=mongodb://localhost:27017/mydatabase# m" g8 B; a) l" E1 {3 [$ X- _; \
  ```$ s& R$ j" D  v0 ~9 n- V5 s4 s

, n0 n& A6 K( `; e5. 启动应用程序
; c8 H3 V7 y. D+ w: ]
1 t0 d; N9 {! G3 z- q* B* r  使用以下命令启动NocoBase应用程序:
9 V3 p( Q9 Y" u# X+ y7 u2 U7 Z: z6 N: M' y' g0 C
  ```
( {. A! p. y! Q5 p2 L0 Y0 g) Q  npm start
: C/ ?7 s4 @- K+ S' c6 ^  ```
* y7 C( T; d! j# {0 {, z7 y( `8 Q$ p, j
  如果需要在后台运行应用程序,请使用以下命令:
7 @: |4 a5 c8 a0 I1 Z' K
9 M5 g, p" T& {! b  ```" W! D6 e) f9 H2 s0 @6 \
  npm install -g pm2$ ^  N- s$ B( O
  pm2 start server/index.js --name myapp
! J  \1 F: i- e  ```# [3 @% F! |: y" A1 b. s, z
! h( M% V4 D. X: q6 u
以上是远程部署NocoBase项目的一些步骤和配置。请注意,根据具体情况可能需要进行额外的配置,例如Nginx反向代理、SSL证书等,以确保应用程序安全可靠地运行。
回复

使用道具 举报

459

主题

653

回帖

4332

积分

管理员

积分
4332
QQ
 楼主| 发表于 2023-6-4 16:44:21 | 显示全部楼层
请再进一步详细介绍Nginx反向代理、SSL证书的操作步骤。
' g9 G  a- @+ V9 J$ t* q! o& h; I8 f: s
Nginx反向代理和SSL证书是保证应用程序安全可靠运行的重要配置。下面分别介绍Nginx反向代理和SSL证书的操作步骤:' o9 H, _4 P9 @+ H5 z6 t
. D' @: y8 w$ w
1. Nginx反向代理
  V5 _' \9 W) z; l$ l1 H7 p7 r" I
6 I/ e% o! }- z. z$ [) n% K$ E( m  Nginx反向代理可以帮助我们实现以下功能:) {+ _+ g7 N" J7 x# _% [% K# C- ]& a
' O2 l$ }% {% r; q0 p( p
  - 负载均衡:将请求分发到多台服务器上,以平衡负载。2 U, [( s8 n, M* }. a
  - 缓存加速:缓存常用资源,加快页面响应速度。. m& I9 {9 ^  y: A% J+ t7 P
  - 安全保护:过滤恶意请求,防止攻击。, I3 e' v* T% K+ O

( G  p# _% A; G/ ^4 t: G6 ~7 n% g* d  配置Nginx反向代理的步骤如下:
5 G3 {9 f, }) @: v: g
; W9 X; _( r# [# m' V( U4 @  1. 安装Nginx
+ Y) t, {) `& l3 R0 `
  u' ^9 R, ^1 R# ^8 r- h( k: A    在远程服务器上安装Nginx,并启动Nginx服务。, q8 m9 ~, `( z2 m5 k# ~
  a4 F  S0 ~1 {" G% X
  2. 配置代理; a. ]& n% }9 z4 T2 `
8 |; f, _% A  O# g* @6 |
    编辑Nginx配置文件`/etc/nginx/nginx.conf`,添加以下代理配置:
- I$ x5 j2 f0 F9 ?2 j) p: V- e6 p. S9 I8 a' g8 m$ ]& h
    ```& `7 {2 D1 a' a5 Z
    server {8 q, U5 j$ @+ g' c
      listen 80;: D8 P! E# J- K
      server_name example.com;
# U, |2 ^8 c& ?: ~9 B3 ], D: ?6 r% E
      location / {
6 U0 ]6 e& E9 X- r5 r& l5 c        proxy_pass http://localhost:3000;
- Z$ D5 s- R1 y5 g1 \1 q        proxy_http_version 1.1;
4 A* T0 D/ _4 i5 u0 d        proxy_set_header Upgrade $http_upgrade;
5 i) \1 J- e; e# u0 u2 |        proxy_set_header Connection 'upgrade';
+ t2 f$ E& q4 g1 A$ |1 ?        proxy_set_header Host $host;
* j7 ~! f0 ?2 K9 z8 }        proxy_cache_bypass $http_upgrade;
' G' o9 ]5 p3 T, B/ `# b+ n" U      }
9 `2 G3 b8 A9 w7 H    }8 w* Z! p2 `  a' a, b1 W; ^
    ```
# N$ u4 i! o0 V. B$ X6 b* u  H, \! J; }: k4 s* }- u
    上述配置将所有请求转发到本地端口`3000`中运行的应用程序。您需要将`example.com`替换为您自己的域名。
3 v; N: n* v6 e  m
, \# i4 l% ^8 t& K5 B( z1 P2 k( p, i" I  3. 重新加载并测试Nginx配置
+ i( E2 W6 E8 m! M& C" s" E5 \# v- A$ I7 U
    使用以下命令重新加载Nginx配置文件:/ z  J4 m. I* u" U
" p( j- h9 }& ]* ?: [
    ```6 Q4 C3 V) G( E. r
    sudo nginx -s reload; W! N( T% @5 g  l6 b5 v3 J5 k/ i* \' G2 B
    ```$ q! n+ k/ n. h6 a% g! O

, j3 O. y* l3 e9 d, b    确认Nginx是否配置正确,可以使用以下命令测试访问应用程序:
2 |4 [) O/ @4 ~( Z+ }% t/ ~
; w* z! E$ p  s- {8 ?3 |) {: S    ```
) F% e# \9 L) w4 ^: q  r    curl http://example.com, ~7 m( S& S  V, ~3 Q) c' R
    ```
! Y! D8 r- k  S7 D3 k' L+ {! v8 a5 b
2. SSL证书! h  @- c  v: q/ }
% [7 d( n. m* d* N
  SSL证书是保护网站安全的重要组成部分,可通过加密传输信息来保护用户数据不被窃取。在生产环境中,建议使用SSL证书保护您的应用程序。1 c5 n+ R2 b+ c2 }$ b

: ?1 `/ n1 u+ Z0 y  配置SSL证书的步骤如下:
. c* X! p1 A) q! r, T2 u! _
/ K& q  a& c1 U, u2 {, ?  1. 获取SSL证书
4 n" y0 M3 i2 F2 b1 Y/ z
) u, V2 b5 e2 A7 H' T+ |. u/ ]    您可以从CA机构(Certificate Authority)购买SSL证书,或者使用免费的Let's Encrypt证书。许多主机提供商也提供免费的SSL证书。# {9 d/ p" _) H0 r$ ^, Y

: Z9 j# N& {- `; E; N% ^. [  2. 安装SSL证书
0 a: F4 T0 ?- m2 \: x2 r5 }! X8 e4 c. Q" l, _/ L& S) Q5 s6 }
    将SSL证书和私钥上传到服务器上,并将其存储在某个目录下。例如,您可以将证书和私钥放在`/etc/nginx/ssl`目录下。6 k! T! \* c4 ~9 x0 B$ k2 z. {; @- Y

1 n4 @% H+ T! z' o0 d  3. 配置Nginx( M) A; M! @9 z# ~

' A" u" q7 I, R) |- u+ a    编辑Nginx配置文件,添加以下SSL配置:
  K  _) l$ I/ F" h
2 b  q- M, k& Q6 K" r) f0 Q    ```
8 {5 F, |8 s- W7 B" @7 C8 B$ I    server {% z! M% n) S0 }2 S
      listen 443 ssl;
$ }" k! i* U; y% M5 M  n  }7 m      server_name example.com;* Q0 X4 s2 j- D6 `7 o8 s
/ \; C$ ?3 e' k7 Y' @7 L
      ssl_certificate /etc/nginx/ssl/example.com.crt;
" e+ s! r% y6 A2 Q: b$ }      ssl_certificate_key /etc/nginx/ssl/example.com.key;7 b1 B6 }4 c3 [  u# @

5 O2 o% f7 A) p9 {" U      location / {
  E2 n% U& K% I5 _5 G        proxy_pass http://localhost:3000;
5 \$ m* V+ v! F% y8 C/ v, o) N        ...6 k3 {+ k4 o* f+ y$ {/ X
      }
3 G7 K( c9 f5 C* p5 B    }
( x  b# v1 _/ ]    ```$ A% g) f/ A" ^# c# Z

5 H  L% P+ }4 E# C4 i# ~) B    上述配置将启用SSL并指定证书和私钥的路径。确保您将`example.com.crt`和`example.com.key`替换为您自己的证书和私钥。
" ^% R: b2 W5 _& Z8 Y& Z# t4 r- t; n  q9 A/ W
2 x$ n/ Q+ @+ Z1 E- O' T  4. 重新加载并测试Nginx配置
  ^9 h! `6 |3 v7 c2 U+ r/ ~2 M# M. \& g3 Q# `# x# S
    使用以下命令重新加载Nginx配置文件:9 `' Z) C2 W* q. L) f% [1 l6 w9 P, d
0 \% R; l) b5 L+ k" q) c( T
    ```- v* Y+ |2 F, v% I6 f- `
    sudo nginx -s reload
( o& r2 a: B% ~5 C; o: l1 |! h    ```
7 g" a; m; w7 d. \: [) M) z- {  U% u
    确认SSL是否配置正确,可以使用以下命令测试访问应用程序:
! Y3 O3 R( _, n; l5 l: c
5 F+ V9 e8 Z6 O' w! @8 B% {2 m    ```
0 x7 ]' r5 ?7 E+ b/ h2 ^    curl https://example.com# P: A& _! l7 p( M7 u6 v4 R
    ```- z/ A0 |& ~/ d# W* i) `4 M) N! n
5 [- ^0 z7 o0 p" P- s+ C2 ]' L" c
以上是Nginx反向代理和SSL证书的配置步骤。如果您遇到任何问题,请参考官方文档或联系支持人员。
回复

使用道具 举报

459

主题

653

回帖

4332

积分

管理员

积分
4332
QQ
 楼主| 发表于 2023-6-4 17:56:57 | 显示全部楼层
build:包含构建后的前端静态文件。
2 y$ c: ^9 q$ `% Gserver:包含后端Node.js应用程序代码。7 T1 {: i7 @3 j. u$ v
上面说的两个目录,具体分别是哪个路径?
- D1 ^; T; U4 ]& E6 ~) U5 M+ r% ]/ }2 G+ G
在使用`yarn build`命令构建NocoBase项目后,`build`和`server`两个目录会被创建在项目根目录下。
0 i5 O1 ]! U& F2 K/ D
9 F4 r' w8 o, O- P* N' d( N) U5 t具体路径如下:( e# p1 j7 Z4 n5 K- L
9 \5 ]4 ^) o3 {. H+ O% h
- `build`: 项目根目录下的`/build`目录。# F" p* A7 _0 d/ E2 O# r, q+ v3 h
- `server`: 项目根目录下的`/server`目录。  {5 a6 a  T+ _& c( f$ x' l* R) R0 R
! X; C0 J+ A  N; [, p& M
如果您使用其他构建方式或者自定义了构建输出目录,则相应的目录位置也会发生变化。请确保文件路径正确,以便顺利进行部署。
回复

使用道具 举报

459

主题

653

回帖

4332

积分

管理员

积分
4332
QQ
 楼主| 发表于 2023-6-4 17:57:38 | 显示全部楼层
但我在项目根目录里没有看见这两个目录,是怎么回事?这两个目录分别有什么特征?2 n9 b% R5 _/ k1 _# }
1 |+ C% Q9 M( R! a( D
如果在项目根目录下没有看到`build`和`server`两个目录,可能是因为它们还没有被创建。4 O* L# @2 a. C8 F6 c. C
" E6 R7 P% Y7 T4 b' V
在使用`yarn build`命令构建NocoBase项目时,会自动生成静态文件并将其保存到`build`目录中。同时,Node.js应用程序代码位于`server`目录下。
; |8 U3 Z! W, F+ G; V* v
( i7 U4 e; z/ z) D9 X3 |这两个目录分别有以下特征:
  i/ _( q- B6 d/ C5 F7 T* i
7 ], b, ~: B8 r) d6 c- `build`: 包含了构建后的前端静态文件,如HTML、CSS、JavaScript等。4 e7 l, w$ n& W& o! z  c
  - 通常包含一个`index.html`文件,作为应用程序的入口点。: a/ R& m+ w/ ?- M- m' p3 c/ Y
  - 可以通过浏览器访问此目录中的静态文件。; P4 ]9 p/ r3 r; h4 E; F
- `server`: 包含后端Node.js应用程序代码。; r9 Q& n: {8 e5 f' ]  l( o
  - 通常包含一个`index.js`文件,作为应用程序的入口点。# O. n/ h8 F& z! |+ a2 G1 k: [
  - 包含其他相关的Node.js模块、路由、控制器等代码文件。1 i0 W6 [; p4 G7 K6 ?, n& r1 Q
  - 不能直接通过浏览器访问此目录中的代码文件,需要通过启动Node.js应用程序来运行它们。
( m( k: O# R; C% g1 N) N: k! h! S8 W  }! ~6 A, T/ E: ^& V' s
请确保您已经在项目根目录下执行过`yarn build`命令,以生成`build`目录中的静态文件,并且在`server`目录下包含了后端Node.js应用程序代码,才能顺利进行部署。
回复

使用道具 举报

459

主题

653

回帖

4332

积分

管理员

积分
4332
QQ
 楼主| 发表于 2023-6-4 17:58:11 | 显示全部楼层
我已经使用yarn build命令构建NocoBase项目了,也运行正常的,但在项目根目录下没有看到build和server两个目录,你确定会有这两个目录吗?% f9 C5 {. f6 M5 \% D8 b" X9 [
' i- B# i* o, p3 N; d# n) z
很抱歉,我之前的回答有误。在使用`yarn build`命令构建NocoBase项目后,`build`和`server`两个目录并不是必须存在的。/ o# d2 v& d6 o5 L# C

! p; ?  j' ]* ~# I: j# R6 x- t2 O具体来说,`build`目录是存放构建后的前端静态文件的目录,在默认情况下是创建的,而`server`目录则是存放后端Node.js应用程序代码的目录,在默认情况下是不存在的。
6 C) j" o% T( [2 X, m& A. ?  w: s, |" G: L
如果您在执行`yarn build`时没有指定构建输出目录(即没有设置`output`选项),则生成的构建文件会被保存在内存中,并且不会在磁盘上生成任何文件或目录。这就是为什么您没有看到`build`和`server`两个目录的原因。
" y5 Q4 p3 }! M4 e& ~
6 n) N% ?# C, }6 D3 d如果您想要将构建后的文件保存在磁盘上,可以通过设置`output`选项来指定输出目录。例如:* v7 _" J3 D7 G& J; |0 c

) k9 D6 j- v3 c' G7 z. f# W* y) K```
) X1 m, ]4 D0 l9 p$ r4 V  z5 X: fyarn build --output /path/to/output
: D. b# k- T; R" u# a& B```2 K8 N- Z; c" ?( l9 ?' Y- ]$ H6 ~
2 T  _" m& ]- T  b0 ]4 A
这样就会将构建后的静态文件保存到指定的目录中。同时,如果您需要创建`server`目录以存放后端Node.js应用程序代码,则需要手动创建该目录并将代码文件放入其中。
1 P- u; j+ z  B* A" ^9 `4 h' {( \# z$ V; k* T) m/ H* Q. I3 V
再次感谢您指出我的错误,希望以上回答能够帮助到您。
回复

使用道具 举报

459

主题

653

回帖

4332

积分

管理员

积分
4332
QQ
 楼主| 发表于 2023-6-4 17:58:49 | 显示全部楼层
这个“/path/to/output”目录是绝对目录,还是相对目录?如果本身不存在,它会自动自己创建吗?) X* z, A8 `# q- Y: n% p
- r* N% Y1 i1 w4 d( B
`/path/to/output`是一个绝对目录。如果您想使用相对路径,可以使用相对于当前工作目录的相对路径。
. f3 Z* f* s( W- |. @0 C1 Y  S/ H4 Y% ^) B
例如,如果您想将构建文件保存在项目根目录下的`dist`目录中,则可以执行以下命令:/ w2 O% `  h- f, N9 R% r8 r3 f

+ I4 o  _$ ]/ h6 j- H+ Z* W```# _! |: k( t: H, D3 r: t' S
yarn build --output ./dist
8 r, ]# _4 p7 a) f```
+ Y9 e+ y( F) F5 L6 r
" Z( S' U" b! _  Q. O8 x- r如果指定的输出目录不存在,Webpack会自动为您创建该目录。9 k' x( S$ A+ i# f: _( v

% `8 ^1 a5 }' H另外值得注意的是,在某些情况下,可能需要给定完整的输出路径和名称。例如,在配置自定义文件名的情况下,可以使用以下形式指定输出文件:  e6 _2 n1 N. ~6 o: C9 }+ k* \

( Y* I1 q8 o! c: M9 J9 H```' g) E* I7 J0 a6 w% Q$ s3 ~) ]
yarn build --output /path/to/output/filename.js/ e7 p9 L: K- t9 M: `
```; ]$ o$ A6 {+ e8 d  M3 ]5 s
" N$ B" N  K$ T' e' q* b
这样就会将构建后的JavaScript文件保存到`/path/to/output`目录下,并命名为`filename.js`。
回复

使用道具 举报

459

主题

653

回帖

4332

积分

管理员

积分
4332
QQ
 楼主| 发表于 2023-6-4 18:11:53 | 显示全部楼层
我执行了"yarn build --output ./dist"之后,在项目根目录下还是没有dist目录,这个部署的dist目录到底会在哪里呢?
: c7 e! [1 r! o5 T. R/ w# f& n% i1 z$ \. X6 g2 X2 Y7 i3 q
如果在执行`yarn build --output ./dist`命令之后,没有在项目根目录下看到`dist`目录,那么可能是因为生成的构建文件被输出到了一个错误的路径或目录中。, M& g. A8 ^3 X! y+ ?
9 x+ H: C0 e6 |+ z4 z" E2 E7 ^2 U
您可以尝试使用绝对路径来指定输出目录,例如:
8 e4 H) _- R6 Z  I" N# v% R9 x6 r: T1 M
```; Y5 {6 }! D, `0 C& [! _# `
yarn build --output /Users/your_username/path/to/dist
" Q7 C; ?4 u# A/ F+ }```, y& h! Y/ }4 N1 J# L
6 K2 X- P7 H& x  u% Z# v3 ]" u
请将上述命令中的`your_username`和`path/to/dist`替换为实际的路径,以使其指向正确的输出目录。
# M5 E" B) F2 K
- _$ `) j4 C- Y+ A5 X3 @另外,如果您确定已经使用了正确的输出路径,并且也没有看到任何错误提示,那么可能需要检查一下`webpack.config.js`文件中是否有配置错误。如果有配置错误,可能会导致构建文件无法正确地输出到指定的目录中。
# h4 h' A: M9 E" }* f- \2 f0 _7 }4 b$ v. G& l
最后,如果以上方法都不能解决问题,建议您重新执行`yarn build`命令,确保在执行时没有发生任何错误或警告。如果构建成功,那么应该可以在控制台输出中看到类似于以下内容的信息:. w! A' M$ |9 R$ N6 D# U

! M# U  E3 n' j/ @7 @$ G```/ p( K8 c0 S0 f# o9 t7 {' [
File [chunkhash].js created in /path/to/dist.
: v- x) h( F$ D' t3 r  q```
4 X! y9 Q+ d1 }* j4 a. y& M
8 w7 r- ]  Q# g7 o( H* c$ j" {% s这表示构建文件已经成功地输出到了指定的输出目录中。
回复

使用道具 举报

459

主题

653

回帖

4332

积分

管理员

积分
4332
QQ
 楼主| 发表于 2023-6-4 18:12:12 | 显示全部楼层
我用什么命令可以查到http://localhost:3000对应的目录?
0 O( K$ P: e9 L
+ Q7 V9 \; o, D7 y9 ], M: ?在使用`http://localhost:3000`访问您的应用程序时,实际上是启动了一个Web服务器,并将应用程序的静态文件(例如HTML、CSS和JavaScript文件)提供给客户端浏览器。
" C  |7 C; X0 W, ?; ?5 B6 F8 G6 D0 K! Q5 c9 F+ ~  x
这意味着,`http://localhost:3000`并不对应于特定的目录,而是对应于Web服务器运行的根目录。如果您想查看该根目录的位置,可以查看`webpack.config.js`文件中的配置项,在默认情况下,该配置项为:% r) [( k9 J, n* W! m
: E% h) T* S$ ?% \; J8 S2 n
```javascript- E( R1 I0 c9 @+ c0 n: n% ~
output: {9 U* ~1 @+ ^# F- \$ q
  path: path.join(__dirname, 'dist'),  L  x0 Z- W9 T' M9 R0 ]
  filename: '[name].js',
0 U) [3 u) P4 ?9 t! |0 U  publicPath: '/',* a6 u3 j! V" [
},, V  k1 W% G2 T% ~
```
! `7 ]- Q  Y/ h- U( p& Y3 ?$ a( |8 x+ _
其中`path`选项指定了输出文件的根目录,该选项的值为当前工作目录下的`dist`子目录。因此,在启动Web服务器后,应用程序的所有静态文件都将从`dist`目录中提供。1 ^/ [$ ~: O! T  ^
5 b7 b3 m# c( q  J+ s! S5 z
注意:实际的目录结构可能会因项目配置或其他因素而有所不同。以上信息仅供参考。
回复

使用道具 举报

459

主题

653

回帖

4332

积分

管理员

积分
4332
QQ
 楼主| 发表于 2023-6-4 18:13:51 | 显示全部楼层
那这个Web服务器运行的根目录又是在哪里呢?
6 _2 e2 n' B4 f5 u/ D) F: z% M4 Y& V7 l% I
Web 服务器运行的根目录实际上是由您的应用程序生成的构建文件所在的目录决定的。对于基于 webpack 的项目来说,构建文件通常位于 `dist` 目录。
2 d! b0 w+ _+ n9 r/ L- W/ @: L/ u
在 webpack 配置中,`output.path` 选项指定了构建文件的输出路径,默认情况下为当前工作目录下的 `dist` 子目录。如果您更改了此选项或使用了自定义的构建脚本,则可能会将构建文件输出到其他位置。  q5 j6 n; B% N; w

& f% T% P* w, j% _- p在启动 Web 服务器时,您需要告诉服务器从哪个目录提供静态文件。对于 Node.js Express 应用程序来说,可以使用以下代码设置静态文件目录:8 y1 }4 `, c$ u

4 t  ?! _* c  _5 P& p" ~```javascript
8 g3 Y  ^$ w# w  B( X% Zconst path = require('path');
7 y" s& u/ K; f% `* i: w! s. dconst express = require('express');0 a7 ]+ u' T7 n/ u
0 I! \5 X# ?* c5 K) j
const app = express();
/ C7 u" {2 z$ L. Econst staticPath = path.join(__dirname, 'dist');
3 k! D8 U- I- ]" a% o  J, w1 t
7 C& X& h& e0 Q: |* papp.use(express.static(staticPath));" a* R6 t0 ^. p/ @
```
# K6 p) y1 I7 ?. N# o5 L( d5 T6 p1 l2 d
, w4 s0 M! O4 \3 ^- w这段代码将静态文件目录设置为当前工作目录下的 `dist` 子目录。这意味着访问 `http://localhost:3000` 将提供位于 `dist` 目录中的文件。! X" h4 T( l$ ]1 ]$ F, h
' t; z& C' Q+ c# [. j& T: t& q
请注意,不同的 Web 服务器配置方法可能会有所不同。以上信息仅供参考。
回复

使用道具 举报

459

主题

653

回帖

4332

积分

管理员

积分
4332
QQ
 楼主| 发表于 2023-6-4 18:39:18 | 显示全部楼层
要将nocobase部署到远程服务器上,有哪些文件需要打包和上传的?请说出具体且真实可靠的路径、文件夹和部署办法
7 n  k/ j+ f; R) A0 i6 ~
; h5 a9 T2 C: ^- ?5 _, p# g要将Nocobase部署到远程服务器上,需要打包和上传以下文件和文件夹:
  C6 U! M5 d, Z8 W, i
1 F/ G" E/ T+ N2 z. h+ o- Nocobase项目代码(默认路径为本地项目根目录)
; G6 f5 d' Y7 f: [/ v: X" @( ~- package.json
7 ]! S1 D  f9 r0 y' U6 U. ~- yarn.lock 或 package-lock.json
+ l; y8 v3 C3 M/ |4 p- .env 文件或环境变量(如果有)
9 h  B: Q! H7 l7 V) p- D. o
+ o* M# l1 |# y: Z具体的部署办法可以参考以下步骤:
4 o6 n) t+ W) A: v; {& ~! n: M7 M6 B. G: f2 e# R8 z, A
1. 在本地使用 `npm run build` 或 `yarn build` 命令编译生成生产环境代码1 s& R* G5 N: e* {
8 |) u6 W& [) {; f" {3 Z6 a
2. 将编译好的代码以及其他所需文件打包成一个 tar 包:" ^- u7 C! a- g! H* t* r

3 W' Q. w% {2 ^  v) l+ A    ```
9 a! o+ e9 s+ F4 Z% p' p6 o- M8 Q    tar -czvf nocobase.tar.gz <path_to_nocobase_project> package.json yarn.lock .env% B/ N8 p# v7 C
    ```6 t9 k  f$ l4 h' b- \- n2 `8 u0 _
4 h& t  q* W0 g/ ]% R0 G& G
    其中 `<path_to_nocobase_project>` 为 Nocobase 项目的路径
4 b6 g2 f( X  K( w7 y1 e2 y; Z/ v) q, _* Z
3. 将打包好的 tar 包上传到远程服务器,可以使用 scp 命令或者 FTP 工具等方式进行上传; D0 ?; d! W! f  y
6 T6 c3 h+ R$ V" Y$ F4 Z1 I
4. 在远程服务器上解压缩 tar 包,并安装依赖:. p3 m) ?& D' s( \

/ ^. A' |- ]+ m5 w' n  j    ```. a$ v" D9 B( d, [8 o2 G
    tar -xzvf nocobase.tar.gz
! c  T4 \) w" T    cd <path_to_nocobase_project>
: ^5 l. U4 ?1 Q. n. R. v7 m    npm install --production
3 s2 _5 u# {1 J3 K    ```) F' X" c! P  H# O

( M" E6 n4 w4 s6 n8 O1 ^2 Z- O5. 启动 Nocobase 服务器:. M0 l6 s; U' q8 M- D# H
8 J. m% `" G4 F/ `. _% Z. d
    ```
7 A# e2 U2 y6 v7 w2 i3 I    NODE_ENV=production node src/index.js
# p2 b1 V2 o1 T    ```
* u5 }) t6 `* b
; ~" k, J( _8 Y. c4 O; S  W7 u   或使用 pm2 等进程管理工具启动 Nocobase。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|通达创业无忧交流社区 ( 粤ICP备2023021749号|粤公网安备 44030402006137号 )

GMT+8, 2026-5-25 09:47 , Processed in 0.021406 second(s), 20 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表