当前位置: 首页 > news >正文

NewsNow搭建喂饭级教程

大家在自媒体写文章里遇到最难的问题便是查找题材了,随便选择的题材没多少人会去看,平台也不会给流量推送,所以,只有围绕热门题材去进行文章创作,才能得到平台的重点推送以及大家的关注!

在做这个功能前,博主也查阅了很多聚合实时热点的工具,像目前比较火的一款DailyHot(源码地址:https://github.com/imsyy/DailyHotApi),星标也还可以有3K

界面如下,基本把国内的主流媒体内容全部聚合进来了!

不过,它的缺点也很明显,只有国内资讯信息,而且里面很多信息都是雷同的,对于咱搞AI的朋友们来说,做信息频道那必须和国际接轨,所以这个也就被我PASS了。经过一番查找,还真让我找到了一款**开源且支持全球各个频道的聚合资讯热榜网站**,而且星标也有12.7K之高。

相较于传统的聚合网站,它不仅除了有国内外新闻实时,还支持像github、稀土掘金、雪球股票推荐等不同类型的排行榜。

先来看下它的强大之处(截图只展示了一小部分信息,具体详情可以查看:NewsNow)

好了,接下来,我将详细讲解如何从0到1部署一套这样的实时资讯聚合资讯系统

1、下载newsnow源码

执行以下命令克隆源码

git clone git@github.com:ourongxing/newsnow.git

本地无法访问github的有两种方式,一种是修改本地Host配置,添加下中转ip映射,ip具体如何找可以参考我之前分享的方法

另外一种方法是使用加速器,比如:虾壳(虾壳 - GitHub下载加速网站 GitHub Proxy加速器)把地址转一道

2、安装Node.js

因该工程使用的TypeScript编写的,需要使用npm(国内用户可以使用pnpm)安装相关的依赖包,如何安装nvm可以参考我之前的文章(不会装nvm?Node.js版本老旧?手把手带你升到node18+,高效搭建微信群聊机器人!),里面有详细介绍nvm安装多版本node的步骤,这里需要安装20或20以上的node版本,安装完成后,使用以下命令:node -v 查看,可以看到版本号即安装完成

3、安装包依赖

进到newsnow文件夹下,使用命令:**pnpm i **进行相关依赖安装,没有pnpm命令的可以到圈友互联AI(https://ai.quanyouhulian.com/#/chat/)去问AI如何安装该命令!

这里首次安装依赖时候我遇到了个问题,pinyin包安装不上去,可以使用以下命令先去单独安装这个特定的包

pnpm add @napi-rs/pinyin@1.7.5 -D

然后再重新执行下:pnpm i,可以看到所有包都成功安装了

4、本地启动开发环境

接下来,启用下开发环境:pnpm dev,可以看到项目已经成功启动了

本地浏览器也打开下,完美运行!

5、打包

接下来,就是进行项目打包了,使用命令:pnpm build,可以看到成功打出了dist文件夹,该文件夹下有两个文件夹,一个public(前端静态文件),一个server(使用node部署的后端文件)

6、推送dist文件夹内容到云服务器上

本地使用scp命令推送dist下全部文件及文件夹到:/usr/share/nginx/html/news/ 下,云服务器安装完nginx后,html的默认路径便是:/usr/share/nginx/html/

scp -r /newsnow/dist/* root@你的服务器ip地址:/usr/share/nginx/html/news/

7、启动后端服务

SSH登录云服务器后,切换到server目录下

cd /usr/share/nginx/html/news/output/server

使用pm2启动后端server服务,没有安装pm2的去圈友互联AI(圈友互联AI)问AI获取详细安装步骤

pm2 start "node ./index.mjs" --name newsnow

8、Nginx配置域名及代理

接下来就是配置域名了,这里域名使用你自己的地址,解析到对应的服务器。这里需要配置/api/指向到本地的3000端口,当前项目后端使用的是该接口,如果你改了端口就改成你对应的端口即可!

    server {listen 80;server_name news.quanyouhulian.com;# 网站根目录设置为前端静态文件的路径root /usr/share/nginx/html/news;index index.html;# 处理前端路由location / {try_files $uri $uri/ /index.html;}# 将所有 /api 的请求转发给后端 Node.js 服务location /api/ {proxy_pass http://127.0.0.1:3000; # 后端服务监听的地址和端口proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection 'upgrade';proxy_set_header Host $host;proxy_cache_bypass $http_upgrade;}listen 443 ssl;ssl_certificate /etc/letsencrypt/live/news.quanyouhulian.com/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/news.quanyouhulian.com/privkey.pem;include /etc/letsencrypt/options-ssl-nginx.conf;ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;}

我这里SSL证书使用的是免费的,如何安装免费SSL证书可以参考我之前的文章:个人网站SSL证书太贵?30秒完成HTTPS证书配置,而且免费永不过期!

9、部分无法抓取的网站改用代理地址

因为里面的Hacker news和Product Hunt国内网络无法直接访问到,所以这里需要做一层反向代理,在海外云服务器搭一层nginx作反向代理即可,这里云服务器可以使用极速云联:极速云联-香港云服务器主机租用_美国免费高防服务器测试_最便宜的VPS云主机购买,这里把nginx.conf配置如下反向代理配置

    server {server_name 你自己的域名地址;location / {proxy_pass https://news.ycombinator.com;proxy_set_header Host news.ycombinator.com;proxy_set_header X-Real-IP $remote_addr;proxy_ssl_server_name on;proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;}listen 443 ssl;ssl_certificate /etc/letsencrypt/live/xxxxxx.com/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/xxxxxx.quanyouhulian.com/privkey.pem;include /etc/letsencrypt/options-ssl-nginx.conf;ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;}server {server_name 你自己的域名地址;location / {proxy_pass https://www.producthunt.com;proxy_set_header Host www.producthunt.com;proxy_set_header X-Real-IP $remote_addr;proxy_ssl_server_name on;proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;}listen 443 ssl;ssl_certificate /etc/letsencrypt/live/xxxxxx.com/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/xxxxxx.com/privkey.pem;include /etc/letsencrypt/options-ssl-nginx.conf;ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;}

10、修改代码地址并重新打包发布

把hackernews.ts和producthunt.ts改成新地址

重新打包推到云服务器发布后,可以看到数据成功刷出来了,完美搞定!

http://www.dtcms.com/a/342084.html

相关文章:

  • SQL中对视图的操作命令汇总
  • STM32H750 CoreMark跑分测试
  • [最新]Dify v1.7.2版本更新:工作流可视化和节点搜索
  • 2025 年 8 月《GPT-5 家族 SQL 能力评测报告》发布
  • SQL视图、存储过程和触发器
  • OBCP第四章 OceanBase SQL 调优学习笔记:通俗解读与实践指南
  • CentOS 7安装FFmpeg
  • QT QProcess, WinExec, ShellExecute中文路径带空格程序或者脚本执行并带参数
  • Qt实现TabWidget通过addTab函数添加的页,页内控件自适应窗口大小
  • Qt文件压缩工具项目开发教程
  • 【Bug】CentOS 7 使用vim命令报错vim: command not found
  • 开源 C++ QT Widget 开发(四)文件--二进制文件查看编辑
  • Elasticsearch官方文档学习-未完待续
  • java项目:如何优化JVM参数?
  • 【深入理解 Linux 网络】收包原理与内核实现(下) 从 TCP 传输层到应用
  • 遥感机器学习入门实战教程|Sklearn案例⑤:集成学习方法全览
  • ES_flattened
  • Nacos部署微服务
  • Python机器学习入门:用scikit-learn构建你的第一个预测模型
  • 安装nvtop编译报错:fatal error: linux/kcmp.h: No such file or directory
  • 亚远景科技助力力邦合信通过ASPICE CL2评估
  • 今日科技焦点 | A股科技芯片受追捧,美股科技股承压——技术赛道的资本与市场博弈
  • 云计算下数据隐私保护系统的设计与实现(LW+源码+讲解+部署)
  • 2025高性能氢气传感器领域的创新引领者:杭州德克西智能科技有限公司
  • 云计算学习笔记——用户和组的管理、周期性任务篇
  • ECCV 2020 | 动态图像在3D MRI图像阿尔茨海默病分类中的应用
  • Wireshark USRP联合波形捕获
  • 软件测试体系建设要怎么做
  • 手写MyBatis第28弹:告别代理,直击本质:手写MyBatis SqlSession的增删改查奥秘
  • 深入解析HashMap的存储机制:扰动函数、哈希计算与索引定位