VPS本地服务器

category
tags
type
status
slug
date
password
Last edited time
Apr 28, 2024 10:17 AM
summary
icon

前言

NotionNext可以轻松地使用Vercel免费托管,不过免费的流量和函数执行次数有限,如果你的网站访问量非常大,可以尝试在自己的云服务器、vps上部署。
用国内的VPS部署服务、会大大提升网站的访问速度。
💡
可以选择裸机安装Nodejs环境启动项目,注意:服务器的操作系统、CPU内存配置都有可能影响到服务运行。推荐用Docker容器化部署。
💡
比较推荐有技术经验的小伙伴使用这套方案!
 
分享一篇网友自己实践分享的教程:

安装步骤

💡
准备一台任意操作系统的VPS云服务器,不同系统的安装步骤大同小异,以下我用 linux-centos-7 主机为例
安装分为三个步骤,一是下载NotionNext代码;二是安装NodeJS运行环境、三十启动项目。

一、NotionNext代码下载

  1. 安装Git
    1. 💡
      git是一个代码托管工具,你可以用它来下载github上的代码。
      执行效果
  1. 从Github仓库拉取代码
     

    二、安装NodeJS环境

    这里我推荐使用nvm进行安装,NVM(Node version manager)是nodejs的专用版本管理器,可以快速方便地安装切换nodejs的版本,方便以后升级NodeJS环境。
    1. 使用git下载nvm源代码
      1. 若您的服务器 因为网络限制 无法访问github,可使用国内的gitee下载nvm源码: git clone https://gitee.com/koalakit/nvm.git ~/.nvm && cd ~/.nvm && git checkout `git describe --abbrev=0 --tags`
    1. 使用nvm安装Nodejs
      1. 💡
        题外话: 用 nvm list-remote 命令可查看所有可安装的nodejs版本 用 nvm ls可查看所有已安装到本地的nodejs 版本
    1. 安装yarn环境
      1. NodeJS 自带了 NPM(Node Package Manager),他可以用来安装打包编译NotionNext这类基于Webpack打包的项目。不过npm不太好用,这里安装一个npm升级版yarn。

    三、运行NotionNext

    1. 安装NotionNext依赖的库
      1. 如果你没有安装yarn,也可以用 npm install 命令进行安装依赖。
    1. 项目编译
      1. 每次修改代码,包括修改blog.config.js文件的内容后,都需要重新执行这步骤。
    1. 启动项目
      1. 执行效果记录

    访问项目

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

    重要-项目后台运行

    直接使用 yarn start启动服务主要用于调试排查日志,一旦你关闭ssh终端或登出服务器,这个进程也会随之关闭。

    方式一:nohup运行

    nohup是linux系统的指令,用于在系统后台不挂断地运行命令。为了让你的网站始终在后台保持运行,可以用以下方式:
    1. ctrl+c 退出上面正运行的yarn进程
    1. 改用nohup运行
      1. 💡
        若想要输出日志文件,可执行nohup yarn start > notionnext.log 2>&1 &
        执行结果

    如何关闭进程

    方式二:使用PM2管理NotionNext

    PM2作为Node的进程管理工具,可以提升您维护站点的效率,您可以阅读《使用PM2启动Notionnext实现多开和进程守护》获取帮助。
     

    FAQ: 网站崩溃问题

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

          关于本地代码配置修改

          1.用环境变量修改配置

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

          2.修改代码

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

          3.自定义端口

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

          隐藏端口: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 即可修复。
               

              VPS部署NotionNext如何自动更新?

              因为代码是在自己的服务器上拉取和部署,所以每次都要执行更新代码,编译代码,并重启服务的步骤,建议是创建一个update.sh脚本在服务器上。
              示例代码,仅供参考:
              这是最简易的自动脚本,当然也可以做成可交互的高级脚本。
          Netlify云函数部署Web3.0-4EverLand
          Loading...
          ✨ 更新日志
          🚀 安装部署
          ✒ 写作指引
          🛠 站点配置
          📊 网站统计
          ⭐ 主题配置
          📩 评论插件
          🧷 外部插件
          🔊 站点订阅
          ⌨ 开发指引
          👨‍👦‍👦 联系方式
          🤝 合作共赢