閱讀57 返回首頁    go 阿裏雲 go 技術社區[雲棲]


基於阿裏的Node全棧之路[源碼分享]——打造高效的開發流程

上一次,在社區裏麵有童鞋說,如果係列文章能夠有代碼作為基石,會更好理解,也對新手會更加的友好,所以這裏整理了下我的框架,然後趁著上個周末不出去玩,搭建了一個仿cnode的一個小論壇,並持續的更新下去。

github地址

我的阿裏雲棲博客

本代碼搭建的博客

交流QQ群:428812779

文章列表

基於阿裏的Node全棧之路(一)部署Docker

基於阿裏的Node全棧之路(二)阿裏負載均衡的HTTPS優化方案

基於阿裏的Node全棧之路(三)利用阿裏雲OSS實現前後端分離

基於阿裏的Node全棧之路(四)前後端分離進階-自動上傳前端代碼到OSS

基於阿裏的Node全棧之路(五)前後端分離進階-接口篇

基於阿裏的Node全棧之路(六)專有網絡VPC的應用

項目部署

項目分為兩部分,前端[www]和後端[api],同時部署也是分開的。
依賴:

Node > 7
Mongodb
Redis

api

後端框架是eggjs,數據庫采用mongodb + redis,參數配置可參照下方代碼.

/**
 * 參數全部從Docker環境變量中獲取
 * @argument mongodb_host mongodb的主機地址
 * @argument redis_host redis的主機地址
 * @argument redis_password redis的訪問密碼
 * @argument redis_db redis的第幾號數據庫
 */
const mongodb_host = `mongodb://${process.env.mongodb_host || 'localhost'}/blog`;
const redis_host = process.env.redis_host || 'localhost';
const redis_password = process.env.redis_password || '';
const redis_db = process.env.redis_db || 0;
module.exports = {
  logger: {
    dir: './logs',
  },
  security: {
    csrf: false,
  },
  redis: {
    client: {
      port: 6379,
      host: redis_host,
      password: redis_password,
      db: redis_db,
    },
  },
  mongoose: {
    url: mongodb_host,
    options: {},
  },
};

參數可以自行修改,配好後,構建環境並啟動:

npm install & npm run debug
# or
yarn install & yarn run debug

到這裏,後端api就啟動成功了,可以直接訪問 https://localhost:7001/blog/v1/session ,檢查是否啟動成功。

app

後端框架是vue,采用了vue-cli,模板采用的是webpack,eslint采用airbnb的.

const merge = require('webpack-merge');
const prodEnv = require('./prod.env');
/**
 * 參數從Docker環境變量中獲取
 * @argument blog_host 後端api地址
 */
const host = process.env.blog_host ? `"${process.env.blog_host}"` : '"https://api.mumuimp.com/blog/v1"';

module.exports = merge(prodEnv, {
  NODE_ENV: '"development"',
  host,
});

構建環境並啟動:

npm install & npm run dev
# or
yarn install & yarn run dev

其實這些參數是可以在係統的環境變量中設置的。
Windows: 參照java環境變量設置,在環境變量中添加blog_host環境變量.(建議在用戶變量中添加)
Linux & Mac: 直接在.bashrc或者.bash_profile添加環境變量.


_1_

當然!你也可以直接改了它!;)

項目發布

Docker部署api

具體參照基於阿裏的Node全棧之路(一)部署Docker

阿裏雲OSS部署web

創建index.js,具體代碼可以參考index-example.js,並填寫好你自己的參數:

const store = oss({
  accessKeyId: '< your accessKeyId>',
  accessKeySecret: '< your accessKeySecret>',
  bucket: '< your bucket>',
  region: '< your region>',
});

最後,

yarn run publish

友情推薦:

一個好用的接口管理平台,支持本地部署,開源MIT,去哪兒前端大神團隊開發。

親情推薦:

egg-tablestore,阿裏雲的tablestore數據庫在egg上的插件,為啥親情推薦呢?因為是我寫的, wo lianpi hou.

License

MIT

最後更新:2017-10-24 17:34:14

  上一篇:go  ASP.NET Core應用針對靜態文件請求的處理[1]: 以Web的形式發布靜態文件
  下一篇:go  zookeeper也能掛