搭建个人开发者云主机全过程-新云主机一步到位配置指南-免费HTTPS网关【小公司同样适用】【持续更新中】...

0x00

本文是笔者实践总结的技巧,介绍搭建云主机的方法,主要基于Docker部署系列服务。从个人开发者需求出发,一步一步搭建自己的服务。
本文适合兜里没很多?又希望拥有属于自己的云服务的开发者,完成下面的操作,需要基本的Linux使用技能。

说明

由于使用#做注释,所有命令行使用$做前缀,表示当前是一行命令

选购云主机

云主机品牌选择

云主机国内很多平台可以购买,腾讯的,阿里的,网易的等等,可根据自己的喜好进行选择,笔者选择的是阿里云。

云主机配置选择

选择好云主机品牌以后,需要选购云主机了,云主机配置越高价格越贵,笔者选择的是最低配的配置单核CPU1GB内存1M带宽,活动价购买的330RMB一年,经测,可以稳定运行后面提到的所有服务。人民币玩家可以选购更高的配置。
笔者购买的服务器是活动套餐,包含了1M带宽,所以不另外选择。如果是直接购买,建议个人开发者可以带宽选择按量计费,去年一年下来用不了几块钱,而1M带宽一年200+。

操作系统选择

这个可根据自己的使用习惯进行选择,下面的操作都是基于Ubuntu 16.04 x64进行操作,如果大家跟着输入命令,建议使用选择一样的系统。
我个人更喜欢Ubuntu,因为附带的命令行工具使用起来比较便捷,默认情况下的配置就很好,只需要很少的配置改动,用户体验比较好。

系统基本安装配置

配置免密码登录

本地主机操作:

# 检查公钥是否存在
$ cat ~/.ssh/id_rsa.pub

看到一长串字符串输出,这个是你本地电脑的公钥,将它复制到粘贴板。如果看不到任何输出,则输入下面的命令生成,注意备份这两个文件:~/.ssh/id_rsa ~/.ssh/id_rsa.pub 如果你还不知道这两个文件是什么,赶紧百度学习。知道他们是什么很很很很很很很很很很很重要。

# 一直按回车就可以了
$ ssh-keygen

连接到云主机,配置信任公钥

# xx.xx.xx.xx表示你的云主机公网IP,此时还需要输入密码才能连接
$ ssh root@xx.xx.xx.xx
$ mkdir ~/.ssh
# 把粘贴板里面的公钥粘贴到~/.ssh/authorized_keys文件内【文件不存在vi会自动创建】
$ vi ~/.ssh/authorized_keys
# 设置正确的权限,只有权限正确,才会生效
$ chmod 700 .ssh
$ chmod 600 .ssh/authorized_keys

验证配置

# 退出刚刚的连接回到本地电脑
$ exit
# 重新连接,如果此时不需要输入密码就能连接成功,配置正确进入下一步,如果配置失败请回到上一步仔细检查操作是否正确
$ ssh root@xx.xx.xx.xx

请务必确保已经验证配置的正确性再进行下面的步骤,否则可能导致关闭ssh密码登录后你无法连接到云主机

关闭ssh密码登录

# 编辑sshd配置文件
# 找到其中的两个参数配置:
# PasswordAuthentication
# ChallengeResponseAuthentication
# 将这两个参数值修改为no:
# PasswordAuthentication no
# ChallengeResponseAuthentication no
$ vi /etc/ssh/sshd_config
# 重启服务
$ service sshd restart

至此,你再也不用担心ssh会被黑客破解了,只有拥有你本地电脑密匙对的人才可以远程登录到云主机。

安装oh-my-zsh提高命令行效率(可选)

ho-my-zsh是一个很火爆的开源工具在github上star数5W+,可以显著提高命令行操作的效率,非常推荐大家安装使用,详细了解请访问项目地址:
https://github.com/robbyrusse...

$ apt-get install zsh
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

配置虚拟内存

由于我选购的主机内存比较低,降低系统完全卡死的概率,需要挂载一个虚拟内存。
虚拟内存的大小,一般不要超过当前内存大小,笔者选购的云主机是1GB内存,所以设置1GB虚拟内存。

# 创建虚拟内存文件
$ dd if=/dev/zero of=/mnt/swap bs=1024 count=1048576
# 格式化虚拟内存文件
$ mkswap /mnt/swap
# 挂载虚拟内存
$ swapon /mnt/swap
# 检查虚拟内存挂载成功
$ free -h
              total        used        free      shared  buff/cache   available
Mem:           992M        476M         77M        3.9M        438M        345M
Swap:          1.0G          0B        1.0G
# 配置重启电脑后自动挂载虚拟内存
# 添加以下内容到/ect/fstab文件
# /mnt/swap swap swap defaults 0 0
$ vi /etc/fstab

防火墙疑问

为什么不开启防火墙,因为Docker跟防火墙有冲突,某些情况下会导致防火墙失效,为了配置方便,系统内不开启防火墙,直接使用云主机提供商提供的防火墙进行端口防护。如果使用阿里云,在网页后台可以进行配置。

域名配置(可选)

域名选购

域名购买的渠道很多,com域名比较贵,cn域名性价比最高,笔者买的是cn域名,10年,费用300+RMB

DNS配置

DNS配置一个A记录*指向主机公网IP即可。

clipboard.png

DNS服务商,可以选用域名购买放的配置后台,也可以转到别的平台上配置,腾讯家的DNSPod配置简单易用,所以笔者一直在用这个。
DNS配置好了以后,后面ssh连接就可以直接使用域名连接了,不需要记忆晦涩的IP地址了。

Docker安装部署配置

Docker安装

本来Docker官方安装步骤比较多,而且服务器在国外,速度非常慢。还好,阿里工程师做了国内景象,并且写好了一键安装脚本,一行命令搞定。
另外,国内的DaoCloud也提供类似的镜像服务https://download.daocloud.io/...,也可加速安装过程。

$ curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -

安装Docker Compose

这里用的是DaoCloud的镜像加速下载,当然也可到源项目地址里面下载,只是速度略慢:
https://github.com/docker/com...

$ curl -L https://get.daocloud.io/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose

docker pull 加速

在国内从Docker官方服务器拉取镜像,速度非常慢,还好国内很多公司做了免费的加速镜像,阿里云、DaoCloud都有提供这样的免费服务。

clipboard.png

针对 Ubuntu 15.04 16.04 的用户,下面的配置里面,最关键的是加速地址https://xxxx.mirror.aliyuncs.com,使用阿里云的话,需要登录阿里云后台以后,访问以下地址即可获取到:
https://cr.console.aliyun.com...
DaoCloud在这里获取:
https://www.daocloud.io/mirro...

$ mkdir -p /etc/systemd/system/docker.service.d
$ tee /etc/systemd/system/docker.service.d/mirror.conf <<-'EOF'
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --registry-mirror=https://xxxx.mirror.aliyuncs.com
EOF
$ systemctl daemon-reload
$ systemctl restart docker

部署HTTP网关(使用caddy,支持https)

背景

说起HTTP网关,大家听到过最多的,我想应该是 nginx apache,这两个软件确实是稳定、功能强大,并且大家都比较熟悉,但是,唯一的问题是,他们的配置实在是太太太太太太太太太繁琐了,配置文件可以写得很长,老鸟也需要备份一些常用配置片段,菜鸟们更是经常被一堆配置吓到,亦或是因为一点点配置细节没注意到耽误了一个下午。

当我们的站点需要支持HTTPS时,还需要额外弄到证书,购买或者申请免费的Let's Encrypt,并且我们还得关注证书是否已经过期,我偶尔也会看到一些站点,因为证书过期,浏览器提示访问不安全。

解决方案

为了解决上面提到的问题,我们请出今天的主角Caddy Server

clipboard.png

主要特点

  • 默认开启HTTPS,自动管理HTTPS证书(利用Let's Encrypt
  • 使用go语言开发,单二进制文件运行,无任何依赖
  • 非常适合初学者(老鸟用着也省心)
  • 性能稳定,可用于线上产品
  • 默认开启 HTTP 2.0 支持
  • 配置起来疯狂地简单

HTTPS安全检测

使用https://myssl.com进行评估:
第一个是笔者的网站,直接使用Caddy的默认配置,后面三个都是站点大家都认识,大家可以感受一下测试结果。使用Caddy,最少只需要一行配置,就可以拥有A级的HTTPS安全防护!

图片描述

Caddyfile简介

Caddyfile是caddy的配置文件,详细文档查看这里https://caddyserver.com/docs/...

以下是一个Caddyfile示例,它的效果是,启动www.ineva.cn ineva.cn两个静态文件虚拟主机,访问这两个站点时,如果访问的是http协议,会自动跳转到https,开启HTTP2.0支持,网站资源文件在/www目录下。

www.ineva.cn, ineva.cn {
  root /www
}

开启gzip压缩支持

www.ineva.cn, ineva.cn {
  gzip
  root /www
}

反向代理

api.ineva.cn {
  proxy / localhost:8080
}

反向代理,并且让后端服务感知到客户端

api.ineva.cn {
  proxy / localhost:8080 { transparent }
}

反向代理,并支持websocket

api.ineva.cn {
  proxy / localhost:8080 { websocket }
}

快速部署

文件清单

  • docker-compose.yml

官方的caddy docker镜像,只有基本功能,找了个alpine版的zzrot/alpine-caddy,所有功能都编译到里面了,并且包很小,下面是配置内容

version: '2'

services:
  web:
    image: zzrot/alpine-caddy:v0.9.5
    restart: always
    network_mode: host
  • Caddyfile

ineva.cn需要改成你的域名

www.ineva.cn, ineva.cn {
  gzip
  proxy / localhost:8080 { transparent }
}

把上面两个文件上传到云主机/docker/caddy目录

$ cd /docker/caddy
# 启动服务
$ docker-compose up

浏览器访问你的域名,看看浏览器地址,恭喜你,已经部署了自己的https服务,但是由于你服务器8080端口上没有开启服务,所以页面应该是看到500。

clipboard.png

部署git服务(使用gogs)

背景介绍

git服务有很多选择,除了大名鼎鼎的 https://github.com
国内还有:
https://git.oschina.net
https://coding.net
上面的服务都是注册账号就可以使用的。但是说起自部署的git服务,大家可能第一个想到的是
https://gitlab.com/
gitlab大法是好,并且也可以很容易用docker一键部署,但是它2G内存起步的配置要求,单核1G内存的低配主机表示吃不消。
gogs对配置要求极地,并且功能基本齐全,是非常好的选择

gogs简介

  • 开源项目地址:https://github.com/gogits/gogs
  • 基于go开发,单二进制文件即可运行
  • 完全仿照gihub设计,大部分功能都已经完成了
  • 对配置要求极地,下面是闲置时获取的数据指标,内存占用不到100M
    NAME                CID                 CPU                 MEM                 NET RX/TX           IO R/W              PIDS
 ◉  gogs_gogs_1         655cea130d96                 0%              91M / 1.95G    12M / 74M           5.98G / 28M         17

安装部署

/docker/gogs/docker-compose.yml

version: "2"

services:
  gogs:
    image: gogs/gogs:0.11.4
    restart: always
    ports:
      - "9002:9002"
      - "9003:9003"
    volumes:
      - ${PWD}/data:/data

/docker/gogs/data/gogs/conf/app.ini

配置文件需要自己修改一些关键值

APP_NAME:站点标题
DOMAIN:域名
ROOT_URL:外部URL
SECRET_KEY:安全密码

APP_NAME = Gogs
RUN_USER = git
RUN_MODE = prod

[database]
DB_TYPE  = sqlite3
HOST     = 127.0.0.1:3306
NAME     = gogs
USER     = root
PASSWD   =
SSL_MODE = disable
PATH     = data/gogs.db

[repository]
ROOT = /data/git/gogs-repositories

[server]
DOMAIN       = git.xxxxx.cn
HTTP_PORT    = 9002
ROOT_URL     = https://git.xxxxx.cn/
DISABLE_SSH  = false
SSH_PORT     = 9003
OFFLINE_MODE = false
START_SSH_SERVER = true

[mailer]
ENABLED = false

[service]
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL     = false
DISABLE_REGISTRATION   = true
ENABLE_CAPTCHA         = true
REQUIRE_SIGNIN_VIEW    = true

[picture]
DISABLE_GRAVATAR = false

[session]
PROVIDER = file

[log]
MODE      = file
LEVEL     = Info
ROOT_PATH = /app/gogs/log

[security]
INSTALL_LOCK = true
SECRET_KEY   = xxxxxx

[other]
SHOW_FOOTER_BRANDING = false
SHOW_FOOTER_VERSION = false

启动服务

$ cd /docker/gogs
$ docker-compose up

浏览器访问 http://git.xxxx.cn 搞定

懒人包

快捷系统备份还原

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值