服务器部署
部署到Vercel上,国内访问速度一般,而且有时候还存在访问障碍,这里记录的是在自己服务器上部署。
我使用的是腾讯云的轻量应用服务器,操作系统为CentOS 7.9 64bit,安装的是宝塔Linux面板 7.6.0
以及之后在群晖7.1内安装的centos+宝塔面板,也可以同样操作。
安装Git
宝塔面板直接在软件商店搜索
git,选择一个版本进行安装。安装Nodejs环境
宝塔面板在软件商店搜索
node,安装PM2管理器安装完成之后,点击
PM2管理器 - 设置,切换nodejs版本到 v16.20.2等切换完成之后,进入
模块管理,需要安装以下模块- npm
- pm2
- yarn
- eslint
拉取项目
我的宝塔默认在网站在
/www/wwwroot 文件夹下宝塔面板可以直接在文件夹下使用终端,或者在终端通过代码进入文件夹
git clone https://github.com/yunzhongci/notion
或者
先创建一个文件夹比如 notion文件夹,然后进入文件夹初始化这个新文件夹的git仓库
git init
然后在git仓库的代码过来(非公开的仓库):
git pull git@github.com:*****/notion.git
安装依赖
按照教程,在项目根目录通过
npm 或者 yarn 安装依赖。可以先查看npm或者yarn的当前版(比较推荐实用yarn)。
npm -v
yarn -v
如果有需要可以先将npm升级到最新版本,这样可以避免版本太低产生的某些问题。
npm install npm@latest -g
升级npm的时候,可能需要以管理员或 root 用户身份运行该命令,可以尝试使用 sudo 再次运行该命令:
sudo npm install npm@latest -g
然后安装所有依赖,也可以跳过更新最新版本直接先执行安装依赖,有问题再试着升级版本或者其他方式解决遇到的问题。
yarn install
如果实用npm则是
npm install 后续也可以通过npm outdated 来检查项目的依赖包是否过期,如果过期则会列出它们的最新版本。然后通过npm update更新当前项目中的所有 npm 包。它会读取项目中的 package.json 文件,并将所有已安装的包更新到其最新版本。在依赖安装完成之后执行:
如果是npm则是用
npm runyarn build
这一步会在终端中打印很多页面内容,相当于是把Notion上的页面内容抓取到服务器存起来。
启动服务:
yarn start
返回
[root@centos notion]# yarn start yarn run v1.22.17 $ next start ready - started server on 0.0.0.0:3000, url: http://localhost:3000
这时候就可以访问本地3000端口查看了。
确定服务启动成功,并且没有问题,使用
ctrl + C 返回,进行下一步。使用PM2管理进程持久化
这时候的测试的,关闭终端就没有内容了
需要使Node进程持久化,使用进程管理工具,推荐使用
pm2安装
pm2yarn install -g pm2
在项目目录下,启动进程
pm2 start npm --name notion -- run start # --name 后面可以修改为你喜欢的名字
检查进程是否启动成功,即查看该进程的日志,检查是否有 error,
pm2 logs notion
查看所有进程
pm2 l
有时会遇到服务卡死的情况,这时就需要重启该进程
nginx reload notion
以上是常规pm2操作,在宝塔面板下,我们可以使用pm2管理器来查看、关闭和启用进程。位置在 pm2管理器 - 设置 - 项目列表
更新服务
之后如果项目有代码更新,关闭进程,进入项目根文件夹依次执行以下步骤即可
## 更新项目代码 git pull ## 重新启动进程 pm2 start npm --name "notion" -- start
反向代理到域名
宝塔面板反向代理非常简单
直接在面板中点 网站 - 添加站点,加上域名,PHP版本选择静态。
然后站点设置中,添加反向代理,将网站指向 3000 端口,如下图:
之后做好域名解析,就可以通过域名访问了。
同时也可以通过这里设置SSL,并且强制https访问。
其他Linux服务器
其他Linux服务器上部署,基本方式是一样的
安装Git,安装Nodejs环境,最后使用Nginx来反向代理。
Nginx反向代理
使用源里默认的nginx
apt install nginx -y
在
/etc/nginx/site-enables 创建配置文件 yourdomian.confserver { listen 80; listen [::]:80; server_name yourdomain.com; server_name www.yourdomain.com; listen 443 ssl http2; listen [::]:443 ssl http2; ssl_certificate /etc/nginx/ssl/youdomian.com/fullchain.pem; ssl_certificate_key /etc/nginx/ssl/youdomian.com/key.pem; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; }
修改
server_name 后面的 domain 为你的域名,为你的域名申请证书并放到指定目录下,配置正确的 ssl_certificate 和 ssl_certificate_key ,配置完成后,检验nginx 配置nginx -t
如有错误,可根据错误Debug,如无误,重载nginx 配置,
nginx -s reload
设置好对应的域名解析,即可顺利用你的域名访问你的网站了。
指令说明
部分在安装、调试和后续更新中可能用到到指令
指令 | 说明 |
-v | 用于查看版本,比如 node -v 查看nodejs版本,或者查看yarn 或者 nmp 、 pm2的版本 |
yarn install | 默认安装 package.json中所有依赖的模块的指定版本 |
yarn add <模块名> | 安装指定依赖模块的最新版本 |
yarn build | yarn run build 或者 npm run build 启动 package.json 文件 scripts 区域的 build 指令应用程序拉取到静态文件中进行生产。 |
yarn strat | yarn run start 或者 npm run start 启动 package.json 文件 scripts 区域的 start 指令 |
pm2 delete 0 | 关闭并删除指定id为 0 的应用 |
pm2 delete all | 关闭并删除所有应用 |
pm2 restart all | 重启所有应用 |
更新依赖
部分Notion后续更新的特性不被支持,其实只是依赖没有更新到最新
将
package.json 的 notion-client 、 notion-types 、 notion-utils 、 react-notion-x 四项更新到更新的版本就可以。⚠️
其他依赖如果不懂不要乱动,容易出问题
npm更新指定指定的依赖到最新版本,可以使用以下命令:
npm install <package-name>@latest --save
"--save" 选项将更新的包版本写入 package.json 文件。例如本项目需要更新四个依赖如下:
npm install notion-client@latest --save npm install notion-types@latest --save npm install notion-utils@latest --save npm install react-notion-x@latest --save
yarn更新指定依赖的方式:
yarn add notion-client yarn add notion-types yarn add notion-utils yarn add react-notion-x