从零开始:打造创业公司官网——(三)运维篇

本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载、或重新修改使用,但需要注明来源。 署名 4.0 国际 (CC BY 4.0)

此系列共分以下几篇

零、项目规划
一、UI 设计
二、前端实现篇
三、项目运维 本篇

运维篇

本篇开始要实施项目的运维部署,让前面所做的工作最终落地。

我们使用的是阿里云服务器,在服务器上已经使用 docekr 部署了一套基础的服务环境,可参考 基于 traefik v2 的本地开发、部署一致环境方案,现在就需要将前端项目、Phabricator 系统部署在这台服务器上面来供用户访问使用。

针对两个项目分别进行规划:

由于服务器是 docker 环境,因此我们只需要做好每一个项目的编排文件就可以搭建好项目的运行时环境。

  1. 网站端
    我们网站的实现是基于vuejs 的 nuxtjs 框架,所以需要一套 nodejs 服务环境,它由 Dockerfile + docker-compose 组成。

Dockerfile 内容如下

FROM node:10-alpine
# 设置镜像作者
MAINTAINER baisheng <baisheng@gmail.com>
# 设置时区
RUN sh -c "echo 'Asia/Shanghai' > /etc/timezone"
# 使用 aliyun 仓库加速
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

# 以下软件根据实际情况选择是否安装
#RUN apk add --no-cache make gcc g++ python git
# Nodejs 服务的淘宝源配置
RUN npm config set registry https://registry.npm.taobao.org && \
    npm config set disturl https://npm.taobao.org/dist && \
    npm config set electron_mirror https://npm.taobao.org/mirrors/electron/ && \
    npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/ && \
    npm config set phantomjs_cdnurl https://npm.taobao.org/mirrors/phantomjs/

WORKDIR /app

COPY package.json .
ENV HOST=0.0.0.0
RUN yarn --frozen-lockfile --non-interactive
COPY . /app
RUN yarn build

EXPOSE 3000
CMD ["yarn", "start"]

这个文件中基于 node 官方的 alpine 镜像,由于需要在镜像内做构建工作,设置 npm 源为国内源可以加速构建

docker-compose.yml 文件内容如下

version: '3.5'
services:
  website:
    build: .
    restart: 'unless-stopped'
    networks:
      - traefik
      - default
    expose:
      - 3000
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.website.entrypoints=web, web-secure"
      - "traefik.http.routers.website.tls=true"
      - "traefik.http.routers.website.rule=Host(`caixie.top`, `www.caixie.top`, `caixie.ltd`)"
      - "traefik.http.routers.app_https.service=website"
      - "traefik.docker.network=traefik"
networks:
  traefik:
    external: true

这个编排文件主要是配置好 Dockerfile 的构建以及让 traefik 去识别我们新开启的服务,让反向代理能够工作。

文件配置好后,执行以下命令:

docker-compose up -d --build

执行过程及结果如下:

# 执行结果
Building website
Step 1/13 : FROM node:10-alpine
 ---> 288d2f688643
Step 2/13 : MAINTAINER baisheng <baisheng@gmail.com>
 ---> Using cache
 ---> 43f7cce00704
Step 3/13 : RUN sh -c "echo 'Asia/Shanghai' > /etc/timezone"
 ---> Using cache
 ---> 38ae5055ef52
Step 4/13 : RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
 ---> Using cache
 ---> 4463d3e3f02a
Step 5/13 : RUN npm config set registry https://registry.npm.taobao.org &&     npm config set disturl https://npm.taobao.org/dist &&     npm config set electron_mirror https://npm.taobao.org/mirrors/electron/ &&     npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/ &&     npm config set phantomjs_cdnurl https://npm.taobao.org/mirrors/phantomjs/
 ---> Using cache
 ---> b2df0e507af0
Step 6/13 : WORKDIR /app
 ---> Using cache
 ---> b4311163db84
Step 7/13 : COPY package.json .
 ---> Using cache
 ---> 8bebbb69624b
Step 8/13 : ENV HOST=0.0.0.0
 ---> Using cache
 ---> 9f392ae2670a
Step 9/13 : RUN yarn --frozen-lockfile --non-interactive
 ---> Using cache
 ---> 8c3c4910913c
Step 10/13 : COPY . /app
 ---> Using cache
 ---> ac58285a3548
Step 11/13 : RUN yarn build
 ---> Using cache
 ---> 740bc2148595
Step 12/13 : EXPOSE 80
 ---> Using cache
 ---> 081db1e15be8
Step 13/13 : CMD ["yarn", "start"]
 ---> Using cache
 ---> 8b86964361c6
Successfully built 8b86964361c6
Successfully tagged caixie-website-nuxtjs_website:latest
caixie-website-nuxtjs_website_1 is up-to-date

Ok,完成后,我们来验证一下,首先登录 traefik 的管理端看一下反向代理是否识别了服务,工作是否正常。


treafik dashboard

我们可以看到已经正常识别服务,浏览器测试访问也一切正常,网站端部署完毕。

  1. Phabricator

因为当前没有特别的定制需求,我们直接用的是 Bitnami 容器方案,目前社区最新版是 《2020.5.0-ol-7-r2 release》 Bitnami 会定期从官方仓库中获取版本,并进行容器封装

采用 bitnami 的 docker-compose.yml 配置如下

version: '3'
services:
  works:
    image: jwilder/nginx-proxy:alpine
    depends_on:
      - phabricator
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
        # - ./nginx/certs:/etc/nginx/certs:ro
      - ./nginx/vhost.d:/etc/nginx/vhost.d
      - ./nginx/html:/usr/share/nginx/html
    expose:
      - 80
    labels:
      - "traefik.docker.network=traefik"
      - "traefik.enable=true"
      - "traefik.http.routers.works.tls=true"
      - "traefik.http.routers.works_https.service=works"
      - "traefik.http.routers.works.entryPoints=web, web-secure"
      - "traefik.http.routers.works.rule=Host(`w.caixie.top`)"
    networks:
      - traefik
      - phabricator-tier
  mariadb:
    image: 'bitnami/mariadb'
    networks:
      - phabricator-tier
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
      - MARIADB_EXTRA_FLAGS=--local-infile=0
    volumes:
      - 'mariadb_data:/bitnami'
  phabricator:
    image: 'bitnami/phabricator:latest'
    ports:
      - '8080:80'
    volumes:
      - 'phabricator_data:/bitnami'
      - './extensions:/opt/bitnami/phabricator/src/extensions'
    depends_on:
      - mariadb
    environment:
      - PHABRICATOR_HOST=w.caixie.top
      - VIRTUAL_HOST=w.caixie.top
      - VIRTUAL_PORT=80
    networks:
      - phabricator-tier
volumes:
  mariadb_data:
    driver: local
  phabricator_data:
    driver: local
networks:
  phabricator-tier:
  traefik:
    external: true

对程序进行汉化

采用社区网友提供的汉化补丁,下载仓库中指定的 PhabricatorSimplifiedChineseTranslation.php 文件,将其放置在 extensions 目录中后,启动应用 docker-compose up -d

启动后访问 w.caixie.top 输入默认

  • 用户名 user
  • 密码 bitnami1

然后可以在 user/config 中进行界面语言配置、密码修改等操作

界面语言配置

由于 phabricator 默认的开放规则需要系统用户可见,但我们是需要开放一些内容可以让来访者看得到,达到服务和宣传的作用。现在开启公开可见的策略:


策略配置

最后

Phabricator 的搭建只是第一步,与现有仓库集成、与CI 集成等内容会在业务服务的工作中进行整合。请大家关注后续的运营篇。

--EOF


相关资源

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容