{"id":17125973,"url":"https://github.com/2fps/blooog","last_synced_at":"2026-01-19T13:02:07.205Z","repository":{"id":42114120,"uuid":"167171827","full_name":"2fps/blooog","owner":"2fps","description":"基于material-ui+react+koa2+mongodb的个人博客系统","archived":false,"fork":false,"pushed_at":"2022-12-22T09:40:28.000Z","size":1390,"stargazers_count":2,"open_issues_count":13,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-06T02:46:02.811Z","etag":null,"topics":["blog","koa2","material-ui","mongodb","mongoose","react","react-redux","react-router","redux-thunk","typescript"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/2fps.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-01-23T11:29:17.000Z","updated_at":"2019-10-30T04:49:09.000Z","dependencies_parsed_at":"2023-01-30T06:46:28.395Z","dependency_job_id":null,"html_url":"https://github.com/2fps/blooog","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/2fps/blooog","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2fps%2Fblooog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2fps%2Fblooog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2fps%2Fblooog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2fps%2Fblooog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/2fps","download_url":"https://codeload.github.com/2fps/blooog/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2fps%2Fblooog/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28568833,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T12:50:50.164Z","status":"ssl_error","status_checked_at":"2026-01-19T12:50:42.704Z","response_time":67,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blog","koa2","material-ui","mongodb","mongoose","react","react-redux","react-router","redux-thunk","typescript"],"created_at":"2024-10-14T18:46:22.737Z","updated_at":"2026-01-19T13:02:07.174Z","avatar_url":"https://github.com/2fps.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# blooog\nblooog\n基于material-ui + react + koa2 + mongodb的个人博客，目前仍在开发中，只有很简单的功能。\n\n技术栈：\nUI: material-ui、toastr(全局提示组件)、semantic-ui-react（pagination组件）。  \nJS：React、react-router、redux、redux-thunk。  \n服务端: koa2 (将逐步替换ts)。  \n数据库: mongodb（mongoose）。  \n\ndemo地址：http://132.232.131.250:3000    admin / admin  \n上域名太麻烦了，请轻测。  \n\n主要目的：  \n1. 练习无法在工作中使用的技术栈。  \n2. 可能的话，替换掉现在的博客系统。\n\n文档详细地址：https://www.kancloud.cn/fps_2fps/test1/937003  \nAPI详细地址：https://www.showdoc.cc/234860389352945?page_id=1338365306594574  \n修改记录地址：https://www.kancloud.cn/fps_2fps/test1/961710  \n问题记录：https://www.kancloud.cn/fps_2fps/test1/973491  \n\n## 已实现功能\n1. 文章的增删改查。\n2. 标签的增删改查。\n3. 站点配置。\n4. 加密登录和修改密码功能。\n\n## fontEnd\n此文件夹下存放的是前端代码。\n\n### 安装依赖\n```\ncd fontEnd\nnpm install\n```\n### 启动开发环境\n```\nnpm run start\n```\n浏览器中访问 http://127.0.0.1:3000/\n\n### 修改代理服务器地址\n由于使用了create-react-app脚手架，所以只要在package.json中的proxy字段中输入代理的url路径即可（最新版的3.0只支持字符串了）。\n\n### 编译生成静态资源\n```\nnpm run build\n```\n\n## backEnd\n此文件夹下存放的是服务端代码。\n\n### 服务器启动\n我是在window下开发的，在mongodb安装目录的bin目录下启动powershell或者cmd，输入 ./mongod.exe --dbpath D:/data/ （我是选择D盘的data文件夹存放数据的）。\n\n### 默认基础配置\n在config文件夹下的config.js中，可以设置默认用户的账户名和密码（服务器启动后会写入数据库），请启动前修改，或启动后修改密码。  \n更多配置修改和设置在后期提供。\n\n### 安装依赖\n```\ncd backEnd\nnpm install\n```\n### 启动开发环境\n```\nnpm run start\n```\n服务端的端口是8000，可自行修改。\n\n### 数据库\n使用到的数据库是mongodb，window下的mongodb下载路径如下：http://dl.mongodb.org/dl/win32/x86_64。  \n本人使用的是3.4.19版本的，并使用了robomongo可视化工具。  \n可视化工具下载地址：https://robomongo.org/download。 \n生产环境中的是在ubuntu下安装的。   \n\n## 生产环境搭建\n本人是在ubuntu16.04下搭建的。\n\n### 安装mongodb\n```\nsudo apt update\nsudo apt install mongo -y\n\nmongo -version\n```\n如果能出现对应的版本，那么就安装成功了，本人服务器上安装的是2.6.10版本。\n安装完后的数据库默认是启动的。\n\n### 启动koa2\n本人是在服务端直接clone github上的代码，并启动node程序的。\n\n#### 安装git\n```\nsudo apt-get install git\n// 配置git账户\ngit config --global user.name \"xxx\"\ngit config --global user.email \"你的邮箱地址\"\n```\n\n#### 安装node与npm\n```\nsudo wget https://nodejs.org/dist/v11.9.0/node-v11.9.0-linux-x64.tar.xz\nsudo tar -xvf node-v11.9.0-linux-x64.tar.xz\nsudo mv node-v11.9.0-linux-x64 /usr/local\nsudo ln -s /usr/local/node-v11.9.0-linux-x64/bin/node /usr/local/bin/node\nsudo ln -s /usr/local/node-v11.9.0-linux-x64/bin/npm /usr/local/bin/npm\n\nnode -v\nnpm -v\n```\n\nnode与npm都能输出正确的版本的话，即安装正确了。\n\n#### 获取代码并启动服务\n本人在/home/目录下克隆了github仓库中的代码。\n```\nsudo git clone https://github.com/2fps/blooog.git\ncd blooog/backEnd/ \u0026\u0026 sudo npm install\nsudo npm install pm2 -g\nsudo ln -s /usr/local/node-v11.9.0-linux-x64/bin/pm2 /usr/local/bin\nnpm run prd\n```\n\n### 安装nginx并配置\n前端build出的代码给nginx做静态资源的代理，而api则被代理到其他koa2的端口上。\n```\nsudo apt-get install nginx -y\n\ncd /etc/nginx/sites-enabled/\nsudo touch web\nsudo vi web\n```\n将nginx的配置修改为：\n```\nserver {\n\tlisten 3000;\n\t\n\tgzip on;\n\tgzip_min_length 1k;\n\tgzip_buffers 4 16k;\n\tgzip_comp_level 6;\n\tgzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css;\n\n\tlocation / {\n\t\troot /home/resource;\n\t\tindex index.html index.htm;\n\t}\n\n\tlocation /api {\n\t\tproxy_redirect off;\n\t\tproxy_set_header HOST $host;\n\t\tproxy_set_header X-Real-IP $remote_addr;\n\t\tproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n\t\tproxy_pass http://127.0.0.1:8000/api;\n\t}\n}\n```\n\n重启nginx\n```\nsudo server nginx restart\n```\n\n#### 上传静态资源\n本人是在本地build前端的资源文件，再上传到服务端上的。没有安装ftp，所以使用了rz命令。\n进入build目录，压缩成 ***.zip，再用unzip命令进行解压。\n```\nsudo apt-get install lrzsz\nsudo apt-get install unzip\n```\n安装完命令后，cd到 /home/resource 文件夹下，没有的话，请先创建。\n接着选中需要上传的压缩文件。\n```\nsudo rz\nsuzo unzip ***.zip\n```\n\n## 最后一步\n此时在浏览器的地址栏中输入，http://ip:3000 （自己有域名的话，可以挂上），可以访问到blooog了。  \n如果使用admin/admin密码的请登录后，再右上角点击修改密码。  \n为了博客的一些功能的正常使用，请在设置中增加正确的配置。  \n\n刚起步，其他功能正在加入或优化。\n\nHave Fun!","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2fps%2Fblooog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F2fps%2Fblooog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2fps%2Fblooog/lists"}