{"id":24344374,"url":"https://github.com/arnozhang/phoenix-blog-framework","last_synced_at":"2025-04-09T17:15:21.559Z","repository":{"id":143871785,"uuid":"71519680","full_name":"arnozhang/phoenix-blog-framework","owner":"arnozhang","description":"A personal blog framework build with Typescript + React.js  + Node.js+ MongoDB.","archived":false,"fork":false,"pushed_at":"2017-10-25T03:24:07.000Z","size":2277,"stargazers_count":73,"open_issues_count":0,"forks_count":11,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-09T17:15:13.736Z","etag":null,"topics":["blog","express","mongodb","node","react","typescript","webpack"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/arnozhang.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-10-21T01:49:13.000Z","updated_at":"2025-02-19T14:07:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"267b243b-4965-4fd2-86fe-a613c06cdc4e","html_url":"https://github.com/arnozhang/phoenix-blog-framework","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arnozhang%2Fphoenix-blog-framework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arnozhang%2Fphoenix-blog-framework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arnozhang%2Fphoenix-blog-framework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arnozhang%2Fphoenix-blog-framework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arnozhang","download_url":"https://codeload.github.com/arnozhang/phoenix-blog-framework/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248074922,"owners_count":21043490,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","express","mongodb","node","react","typescript","webpack"],"created_at":"2025-01-18T09:34:34.890Z","updated_at":"2025-04-09T17:15:21.551Z","avatar_url":"https://github.com/arnozhang.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# phoenix-blog-framework 文档\n\n### 1、简介\n\n**`phoenix-blog-framework`** 是我开发的一款个人博客框架。比如我的个人博客，就是采用这个框架完成的：[http://arnozhang.com/](http://arnozhang.com/)\n\n![博客截图](https://github.com/arnozhang/phoenix-blog-framework/blob/master/docs/arnozhang-blog.png?raw=true)\n\n前后台均采用 Typescript 编写。各模块采用技术如下：\n\n|模块|技术|\n|---|---|\n|语言|Typescript|\n|页面|React.js + CSS-Modules + pug + jQuery|\n|后台|Node.js + Express|\n|数据库|MongoDB + mongoose|\n\n`phoenix-blog-framework` 的特点：\n\n- 前后台均采用 Typescript 编写，管理方便；\n- 拥有强大的后台管理系统，以及 Markdown 博客写作系统；\n- 部署方便；\n- 博客采用 Markdown 存放；\n- 可自由添加实现渲染模板，可定制页面展示。\n\n### 2、博客环境配置\n\n在 `sources/src/server/server.config.ts` 中配置了博客环境，其中指定了 MongoDB 的 host 和端口、博客管理后台的帐号密码，以及页面的渲染组件。这些配置可以根据你的需求灵活修改：\n\n```typescript\nexport var config = {\n    db: {\n        host: 'localhost',\n        port: 27017,\n        database_name: 'phoenix_blog'\n    },\n\n    user: {\n        userName: 'phoenix blog',\n        email: 'zyfgood12@163.com',\n        portrait: '/default_portrait.png'\n    },\n\n    site: {\n        siteTitle: 'Phoenix Blog',\n        subTitle: 'github.com@phoenix_blog',\n    },\n\n    // render engine.\n    render: 'default',\n\n    admin: {\n        name: 'admin',\n        password: '123456'\n    }\n};\n```\n\n页面渲染引擎自定义可以通过参考 `sources/src/client/render/RenderEngines.ts` 文件，来实现页面渲染自定义。\n\n### 3、部署 \u0026 运行\n\n#### 3.1、部署环境\n\n先要安装 [Node.js](https://nodejs.org/en/) 、 [npm](https://www.npmjs.org/) 以及 [Webpack](https://www.npmjs.com/package/webpack)。然后安装 `Typescript` 和 `Typings`。\n\n```\nnpm install --global typescript\nnpm install --global typings\nnpm install --global webpack\n```\n\n#### 3.2、拉取代码\n\n```\ngit clone https://github.com/arnozhang/phoenix-blog-framework\n```\n\n#### 3.3、安装依赖包\n\n```\ncd phoenix-blog-framework/sources\n\nnpm install\nnpm link typescript\n```\n\n#### 3.4、安装 MongoDB，并启动 MongoDB\n\n具体方法参考 [MongoDB 官网](http://www.mongodb.org/)。\n\n### 4、启动博客\n\n#### 4.1、编译 Server 端代码（将 Typescript 转化为 Javascript）\n\n```\ncd phoenix-blog-framework/sources\ntsc\n```\n\n#### 4.2、启动 Webpack，编译客户端代码\n\n这里有两种方法，一种是用来调试，这时候会 watch 本地代码更新，如果有更新，则 Webpack 会同步编译：\n\n```\ncd phoenix-blog-framework/sources\nwebpack --watch\n```\n\n另一种是部署到正式环境，则不会 watch：\n\n```\ncd phoenix-blog-framework/sources\nwebpack -p\n```\n\n#### 4.3、启动博客\n\n仍然有两种方法，第一种是调试运行：\n\n```\nnode ./dist/build/server/index.js\n```\n\n第二种是正式部署时，这时候我们可以用 `forever` 这个 npm 包，来让博客永久运行：\n\n```\nforever start ./dist/build/server/index.js\n```\n\n**需要注意的是，在 Linux 环境下，当启动 80 端口时，需要 sudo 权限。**\n\n#### 4.4、打开博客\n\n打开博客首页：[http://localhost](http://localhost)\n\n打开博客后台管理页面：[http://localhost/admin](http://localhost/admin)\n\n打开博客写作页面：[http://localhost/write_new_post](http://localhost/write_new_post)\n\n博客写作、后台管理页面均需要输入管理员帐号和密码——亦即在 `server.config.js` 文件中配置的帐号和密码。\n\n\u003cbr\u003e\n\n## License\n\n```\n/**\n * Phoenix blog project.\n *\n * Copyright 2016-2016 Arno Zhang \u003czyfgood12@163.com\u003e\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farnozhang%2Fphoenix-blog-framework","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farnozhang%2Fphoenix-blog-framework","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farnozhang%2Fphoenix-blog-framework/lists"}