大家在自媒體寫文章里遇到最難的問題便是查找題材了,隨便選擇的題材沒多少人會去看,平臺也不會給流量推送,所以,只有圍繞熱門題材去進行文章創作,才能得到平臺的重點推送以及大家的關注!
在做這個功能前,博主也查閱了很多聚合實時熱點的工具,像目前比較火的一款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改成新地址
重新打包推到云服務器發布后,可以看到數據成功刷出來了,完美搞定!