category
tags
type
status
slug
date
summary
icon
password

前言

NotionNext可以轻松地使用Vercel免费托管,不过免费的流量和函数执行次数有限,如果你的网站访问量非常大,可以尝试在自己的云服务器、vps上部署。
用国内的VPS部署服务、会大大提升网站的访问速度。
💡
可以选择裸机安装Nodejs环境启动项目,或者也可以用Docker容器化部署。
💡
比较推荐有技术经验的小伙伴使用这套方案!

安装

💡
准备一台任意操作系统的VPS云服务器,不同系统的安装步骤大同小异,以下我用 linux-centos-7 主机为例

1. 安装Git

💡
git是一个代码托管工具,你可以用它来下载github上的代码。
执行效果

2.安装nodejs

💡
这里使用nvm进行安装,NVM(Node version manager)是nodejs的专用版本管理器,可以快速方便地安装并切换的nodejs的版本。

借助git下载nvm

执行以下指令下载Git
若您的服务器 因为网络限制 无法访问github,可使用国内的gitee下载nvm源码: git clone https://gitee.com/koalakit/nvm.git ~/.nvm && cd ~/.nvm && git checkout `git describe --abbrev=0 --tags`

使用nvm安装Nodejs

执行以下命令安装NodeJS
💡
题外话: 用 nvm list-remote 命令可查看所有可安装的nodejs版本 用 nvm ls可查看所有已安装到本地的nodejs 版本

3. 运行NotionNext

首次安装项目环境

将项目所有依赖的脚本和库下载到服务器中

执行项目编译

每次修改代码配置,包括修改blog.config.js文件的内容后,都需要重新执行这步骤。

启动项目

将上一步编译好的代码内容,在服务器中运行;
执行效果记录

访问项目

💡
项目默认将在 3000端口启动,访问你的服务器 http://ip:3000 即可打开网站。
💡
有时候3000端口可能无法访问,原因是服务器防火墙,以及云服务厂商的安全组限制。
关于阿里云服务器安全组 点击展开
阿里云在云服务器ECS→安全组中,手动添加一个安全组,暴露端口3000,授权对象0.0.0.0/0 表示所有ip的人都可以访问这个端口。另外,推荐再添加一个80端口暴露的安全组,便于nginx访问。
notion image
  • 访问效果,用服务器ip加端口号打开了网页
notion image

自定义端口

假如3000端口被占用,或您想多开notionnext可用以下命令指定端口

4.后台运行

直接使用 yarn start启动服务的话,一旦你关闭ssh终端或登出服务器,这个进程也会随之关闭。为了让你的网站始终在后台保持运行,可以用以下方式:
  1. ctrl+c 退出上面正运行的yarn进程
  1. 改用nohup运行
    1. 💡
      若想要输出日志文件,可执行nohup yarn start > notionnext.log 2>&1 &
      执行结果

如何关闭进程

或者麻烦点
执行效果
如下, 我用 ps -ef | grep yarn 指令 查出两个进程,id分别是 4952 ,5228 , 第一个进程4952就是正在运行的网站。
💡
其中 4952 就是要删除的进程号
 

5. 关于网站崩溃

部分网友的服务器运行yarn start 启动NotionNext站点后,总会出现过一段时间 站点进程莫名其妙被杀死,导致网站暂停,这个问题,我目前还没有发现根本原因。
如果您的站点出现这种情况,可以尝试这种做法,自动启动站点
创建一个脚本start_yarn.sh 在您的服务器上,
脚本的内容如下,粘贴到文本中
如何将脚本粘贴到文件中并保存?
为这个脚本添加执行权限

运行启动脚本

运行关闭脚本

自定义修改

1.用环境变量修改配置

💡
用环境变量的好处是,不需要修改代码,不用重新打包编译。直接重启服务即可。
  • NOTION_PAGE_ID等诸多配置支持用环境变量配置。
    • 💡
      删除环境变量可用以下命令: unset NOTION_PAGE_ID

2.修改代码

  • 如果修改blog.config.js或其他代码文件,需要重新执行 yarn build 才可 生效,
  • 您可以在项目根目录的.env.local文件中配置您的环境变量
  • 重新编译后需要先关闭旧进程,再用 yarn start 重启服务 。
 

Nginx反向代理

  • 为了隐藏你的3000端口号,用一个nginx就可以,如果你有宝塔面板之类的运维工具可以很方便地一键配置。
  • 小白安装nginx
    • 安装成功访问服务器地址 效果:
      notion image
  • 反向代理配置参考
    • 修改相关配置文件 /etc/nginx/conf.d/default.conf
      notion image
      notion image
      💡
      如果访问出错可能是SELinux设置不允许nginx的转发 ,执行 setsebool -P httpd_can_network_connect on 即可修复。