这个网站


以上是用到的tool。Github: https://github.com/lsq921224/blog

本地开发

首先我们在local新建一个rails5 app,(db我选的是postgres),然后在gemfile中加入spina CMS

    gem 'spina'

spina用到了active storage,所以也需要setup一下active storage
然后我们跑一下

    rails g spina:install

先在本地的app安装一下这个gem。

装完之后rails s,打开localhost/admin看一下是否安装成功。

(optional) 安装rspec或别的testing framework

设置CI/CD

我选择的是CircleCI + CodeDeploy,因为比较熟悉这两个。
CircleCI Config, CodeDeploy Scripts

需要注意的是在Circle CI中跑migration之前我们需要保证db service is up,所以需要这样一个step:

- run: dockerize -wait tcp://localhost:5432 -timeout 1m

我选择的server是AWS EC2,我们需要在上面装一下codedeploy的agent,还需要在Instance上设置需要的environment variable,比如RAILS_MASTER_KEY,还有数据库的密码等等。
为了方便我安装了一个gem 
gem 'figaro'
来帮助我管理这些ENV。

设置cloud storage

我选择用S3来host我的照片,attachment等等。我们只需在S3上建立一个bucket,然后建立一个IAM User来access这个bucket,再更新storage.yml
amazon:
  service: S3
  access_key_id: <%= ENV['AWS_S3_ACCESS_KEY_ID'] %>
  secret_access_key: <%= ENV['AWS_S3_SECRET_ACCESS_KEY'] %>
  region: us-west-2
  bucket: blog-spina-storage
需要注意的是我们同时需要更新一下production.yml

    config.active_storage.service = :amazon

否则prod上的文件不会被上传到s3。

设置puma app server

我们需要更改一下rails生成的puma config,让它能bind socket。
然后我们需要在systemd中设置puma,让puma能够在我们的ubuntu服务器上自动启动。

设置Nginx web server

设置完了App server,就要设置web server了。我们需要在nginx config中指定puma的socket。

购买域名

我是在AWS上购买的域名,17刀一年,可以接受。

设置DNS

购买域名后我们可以注册一个Cloudflare的个人账号,能够免费解析一个网站。Cloudflare还提供诸如访问者分析,防火墙等服务。
我们需要在AWS中将域名的name server改成Cloudflare的。

设置SSL

启动https通常能让访问者更放心。我们需要在Cloudflare中下载SSL certificate和一个private key,然后根据这里设置nginx即可


到这里就大功告成啦,开始享用你的个人部落格吧!