📔

本地化运行Notion站点及linux服务器部署站点

配置

fork nextjs-notion-starter-kit,Clone 代码到本地,按照其 README 的说明配置相关信息

本地测试

修改好配置之后,可以本地测试一下是否配置生效。在有 Nodejs 的环境下,在项目根目录执行
npm install
npm run dev
然后就会提示你打开本地的 localhost:3000
 
这里本地打开的网页是实时抓取Notion上的数据处理渲染的,因此存在刚打开时较慢的情况,耐心等待

Linux部署

配置第一次启动

ssh 进入 Linux 服务器后,安装 NodeJs 环境。

centos 7 安装

  • centos 7 yum
yum install -y epel-release
/usr/bin/yum install -y nodejs

centos 6安装

  • 由于yum源版本过低,cnpm安装失败,使用nvm管理node包的时候
yum remove nodejs -y
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.29.0/install.sh | bash
  • 安装成功后:一定要重新启动shell
command -v nvm
  • 查看nvm可安装版本
nvm ls-remote
  • 安装nodejs
nvm install v6.12.3

国内安装源

  • cnpm
/usr/bin/npm install -g cnpm --registry=https://registry.npm.taobao.org
  • 配置文件 ~/.npmrc 文件中写入源地址
registry =https://registry.npm.taobao.org
 
拥有NodeJs 环境后上传本地测试完成的代码,进入到项目目录
npm install
npm run build
这需要一定的时间,你会看到终端打出很多页面内容的信息。npm build 相当于是先把Notion上的页面信息抓取了一遍存起来。
npm run start

使用 pm2 管理进程

为了使 Node 进程持久化,使用进程管理工具,推荐使用 pm2
npm install -g pm2
在项目目录下,启动进程
pm2 start npm --name mysite -- run start # --name 后面可以修改为你喜欢的名字
检查进程是否启动成功,即查看该进程的日志,检查是否有 error,
pm2 logs mysite
查看所有进程
pm2 l
有时会遇到服务卡死的情况,这时就需要重启该进程
nginx reload mysite
注:设置开机启动
$ pm2 save #保存当前进程状态。
$ pm2 startup #生成开机自启动的命令
注:
#停止进程
pm2 stop (id/all)
#启动/重启进程
pm2 start/restart id
#开启对个app.js进程守护(负载均衡)
pm2 start app.js -i +进程数量
 
如果你觉得麻烦可以使用7.8版本后的Node Js管理器进行运行和管理
 

Nginx 反向代理

使用源里默认的nginx
apt install nginx -y
/etc/nginx/site-enables 创建配置文件 yourdomian.conf
server {
      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_certificatessl_certificate_key ,配置完成后,检验nginx 配置
nginx -t
如有错误,可根据错误Debug,如无误,重载nginx 配置,
nginx -s reload
设置好对应的域名解析,即可顺利用你的域名访问你的网站了
【注:nodejs版本不同会直接影响是否正常运行,如不正常工作,请更换版本】
 

《2022版部署教程》

linux下centos 7.8版本

直接软件商店安装node.js版本管理器(注意:仅7.8及之后面板才会有)同时命令行版本选择V14.17.6
notion image
notion image
安装pm2,为持续化运行项目做准备
npm install -g pm2
将本地修改好的代码打包上传到宝塔面板新建的文件夹中,并添加Node项目,在模块管理中选择一键安装
在这一步中,将自动安装依赖模块省去自己手动安装
notion image
保存好后不要运行,如你选择了运行请关闭运行,在项目根目录下终端输入
npm run build
notion image
notion image
所有页面被打包后 运行
npm run start
服务启动成功后,端口为 3000,持续运行可参考前面的PM2管理
在项目目录下,启动进程
pm2 start npm --name mysite -- run start # --name 后面可以修改为你喜欢的名字
运行成功后即可得到页面:
notion image
接着进行域名反代就可以了,以上部署就结束了

【扩展】

如果直接用Node管理器直接运行,运行命令不要更改,也能运行,但属于即时刷新(访问一次刷新一次)页面,服务器不是特别高端的情况下,容易把服务器卡死,所以不推荐这种
notion image
如果在最开始直接运行,添加真实端口3000及添加外网映射并设置SSL后直接启用
notion image
如果你更改了目录或安装时手欠刷新了页面可以在模块管理中再一键安装项目模块再启动即可
notion image
notion image