如果你看了上期视频的话,那么你应该学会了怎么在本地搭建一个 docusaurus 博客,但是你不能只在本地来看这个博客吧,得让全世界来欣赏你的杰作,所以说咱们得把这个博客部署到服务器上。部署有两种方式:
在发博客之前得先把项目发布到 github 上,这个之前我简单的介绍过,它就是一个远程的 git 的代码仓库,所有人都可以看到你的代码,还能一起维护。或者也可以把它当成私有的,这样的话可以当成自己的一个云端的代码仓库,作为代码的版本跟踪管理。
首先要在 github 上创建一个仓库,打开它的官网:
没有账号的话先去注册一个,有的话就直接登录,登录之后在自己的主页左边点击 New
这个按钮创建一个仓库,这里需要填一些信息:
Repository Name
- 仓库的名字,必填的,比如我这里叫fh-blog
。Description
- 仓库的描述,这个是可选的,这里我写一个我的博客
。私有
还是公开
- 如果后边在 Zeit 上部署,这里选公开。README
- 这里不添加了,因为咱们本地已经有了,另外.gitignore
和add a licence
也都不用添加。完了之后点击 Create repository
仓库创建好了。之后它会跳转到仓库的首页,下边写了两种方式把代码提交到 github,第一种是按全新的仓库,就是本地还没有的。咱们这里用第二种,把现有的代码推送到 github 上。具体操作:
source control
。initialize repository
按钮进行初始化。initial commit
,再点击上边的对勾提交代码。command(Mac)/ctrl(Windows) + shift + p
, 打开快捷命令行工具,输入 add remote
,在出来的提示中选择 Git: Add Remote
。origin
,代表这是咱们项目的起源仓库。按下回车。https://github.com/zxuqian/fh-blog.git
,然后按下回车。...
菜单,选择 push,等完成之后,再刷新一下 github 仓库,有了代码就代表推送成功了。代码推送到 github 之后,就能愉快的部署到服务器上了。
这里推荐给你一个比较好用的国外的服务器,配置超级简单,它叫 zeit,也是 docusaurus 官方推荐的,不过可能有些地方因为某些原因,会访问不了,或者非常慢。不过因为它太方便了,所以还是要介绍一下。它的免费版包括下边的特性:
HTTPS-enabled Custom Domains
- 可以自动给自定义域名添加 https 支持Continuous Deployment with Git
- 能够利用 git 进行持续集成High-performance Smart CDN
- 高性能的智能 CDNUnlimited Websites & APIs
- 支持创建无数个网站和 apiServerless Functions in Node.js, Go, and more
- 支持使用 Node.js 和 Go 语言等创建无服务的函数。接下来注册一个账号,根据它的要求完成之后就可以开始部署了。
要发布到 zeit 上,首先安装它的命令行工具:
npm i -g now 复制代码
接下来在 VS Code 中打开一个命令行窗口,用快捷键 ctrl + `, 默认的路径就是当前工程的根目录,输入命令:
now 复制代码
它会要求一些信息,比如用注册邮箱接收一个验证码,项目名称,配置信息。等它运行完毕之后,项目就可以部署到 zeit 上了。去 zeit 官网,可以看到它自动关联了 github 的项目,也可以看到它给咱们生成的域名,点开它就可以访问了,如果要添加自定义的域名,就点开 domains
菜单,点击 add
,选择一个部署的项目,再点 continue
,输入自己的域名,点击 Add
就可以添加了,最后要把域名的 DNS 指向 zeit 提供的那几个。怎么修改域名 DNS 我稍后会讲,不同的域名提供商也有不同的操作。
Zeit 可能在国内某些地方访问不太稳定,那咱们可以部署在国内服务器上。之前在前端路线图的视频里我大致讲过了域名和服务器的概念,要部署咱们的网站,就需要购买一个域名和一台服务器,因为咱们这个网站是静态的,不需要太过复杂的功能,所以服务器用一台虚拟主机就可以了,虚拟主机是一台服务器里边,分隔出来了不同的目录给不同的用户,所有的这一台服务器上的用户都共享它的 cpu、内存等资源,然后有固定的带宽、存储容量还有数据库等等。
这里以某里云为示例,打开它的官网 https://www.aliyun.com/,在搜索框上边选择域名,然后输入一个自己想要的域名,比如 fhdev
,再选择一个可用的域名,加入到清单中,完成之后点击立即结算,选择年限,添加实名信息之后,付款购买就可以了。
服务器用共享的虚拟主机即可,点击传送,新用户的话可以选择云虚拟主机,可能会有优惠。操作系统选择 linux
,然后选择购买时长,最后购买就可以了。
在某里云买了服务器之后,它就提供备案服务了,可以点击右上角备案菜单,根据提示进行备案,用手机备案填写资料会更快一些。
登录到某里云的控制台,在左侧折叠菜单里选择云虚拟主机,就能看到你购买的虚拟主机了,点击它右边的管理
菜单,就可以看到它的信息了,这里要把域名指向这台虚拟主机,下边它有网站开通参考,大家可以自己看一下操作。这里我点击左侧菜单的主机信息,找到它的 IP 地址,复制它,返回到控制台,在菜单中选择域名
,找到刚才购买的域名,点击管理。
这里提一下,如果要把 DNS 指向 zeit 提供的,那就在菜单选择 DNS修改
,再点击右侧 修改DNS服务器
,把 zeit 提供的 dns 地址一项一项填进去。
解析到自己的服务器上的话,可以直接就用某里云默认的 dns 就可以了,然后在菜单项里选择域名解析
,点开之后点击添加记录
,记录类型选择 A 记录,A 记录就是说这个域名要解析到一个 ip 地址上边,这里咱们有虚拟主机的 IP 地址,所以选择A
,主机记录填写@
,这个意思是访问根域名时对应的 ip,也就是说不带www
这个前缀的,比如zxuqian.cn
,然后解析线路保持默认就好,记录值把刚复制的 ip 地址粘贴上就可以了,然后点击确定。
再添加一条,这里主机记录填写www
,其它的跟@
的一致,这个就是访问 www.zxuqian.cn
这个域名时,指向的 IP 地址,跟@
记录是一样的。
接下来就是上传网站文件到服务器上就行了,可以使用 ftp 工具,比如 FileZilla,不过这样每次写完博客之后都要手动再上传一次网站文件,比较麻烦,这里可以利用一下 github actions 这个持续集成工具。在项目的根目录下创建 .github/workflows
这样层级的文件夹,然后在里边创建nodejs.yml
文件,里边写上下边的代码:
name: Node.js CI on: [push] jobs: build: runs-on: ubuntu-latest strategy: matrix: node-version: [12.x] steps: - uses: actions/checkout@v2 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v1 with: node-version: ${{ matrix.node-version }} - run: npm install - run: npm run build --if-present - name: FTP Deploy uses: SamKirkland/FTP-Deploy-Action@3.0.0 with: ftp-server: 你的虚拟主机 FTP 上传地址/ftp 目录 ftp-username: ${{ secrets.ftp_user }} ftp-password: ${{ secrets.ftp_pwd }} local-dir: build/ env: CI: true 复制代码
这个文件是告诉 github actions,这个项目在 Node.js 12 版本,unbuntu 最新版本下,运行下边的命令:
这里发布 FTP 的时候,需要几个参数:
ftp://byu*********.my3w.com/htdocs
。需要注意的是,因为咱们上传到 github 上的代码不包括build
文件夹,所以,需要把 github actions 运行之后生成的 build 文件夹上传到服务器,这里在项目的根目录里,添加一个 .git-ftp-include
文件,写上:
!build/ 复制代码
意思就是把 npm run build
之后生成的 build 目录上传到服务器中。
ftp-password
这种机密信息的设置方法是:
settings
。Secretes
。Add a new secret
。name
处输入变量的名字。value
处输入变量的值。最后点击Add secret
按钮添加就可以了。
在把所有的这些文件弄好之后,把代码推送到 github 上等 github actions 运行完之后,就可以访问自己的网站了。以后再发表文章,只需要在本地写好之后,推送到 github 上完事儿了。到这里你自己的博客就搭建好了,向全世界展示你的文采吧!