阿里云双11买的云服务器ECS(1核 2GiB),一年才七八十块,也买了腾讯云和华为云,先对比试着用一下,确定一下个人需求和使用情况,再决定下一年的购买计划。
我的需求不多,只希望搞自己的个人网站,打造一下个人品牌,并同时体验一下云服务相关技术。毕竟技术博客可以在CSDN等网站上写,敏感话题自然更不能写在国内网站,直接放在github上啊。
还有,记得购买域名,并备案登记。
一、初始化
进入阿里云控制台,搜索云服务器ECS,进入概览页面,可以看到自己的云服务器,并按照下面的教程,初始化个人云服务器,腾讯云/华为云的教程也看过,还是阿里的教程比较合我胃口。
我选择的是部署开发环境,具体可以跟着官网走,我写在这里,不过是为了在其他云或环境上也能使用,统一配置,方便移植。
1. 登录云服务器
(1)打开电脑上的命令行终端工具,Windows:Powershell ;MAC:Terminal。
(2)Windows用户请检查系统中是否安装有SSH工具。检查方法:
在终端中输入命令
ssh -V
如果显示SSH版本则表示已安装,如下图所示;如果未安装,请下载安装OpenSSH工具。
(3)在终端中输入连接命令ssh root@[ipaddress],将其中的 ipaddress 替换为ECS服务器的公网IP地址。
ssh root@123.123.123.123
命令显示结果如下。
输入 yes,然后输入云服务器的登录密码。
登录成功后会显示如下信息。
2. 安装Docker CE
使用docker容器,后期即使服务器到期,也可以提交机器上的容器打包成镜像,提交到镜像仓库中,以防止相关数据丢失,也方便移植,而且使用过程中多个环境,互相隔离,不用为烦人的环境问题为大动肺火。
# 安装Docker的依赖库
yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加Docker CE的软件源信息,使用阿里源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装Docker CE
yum makecache fast
yum -y install docker-ce
# 启动Docker服务
systemctl start docker
3. 配置阿里云镜像仓库(镜像加速)
Docker的默认官方远程仓库是hub.docker.com,由于网络原因,下载一个Docker官方镜像可能会需要很长的时间,甚至下载失败。为此,阿里云容器镜像服务ACR提供了官方的镜像站点,从而加速官方镜像的下载。下面介绍如何使用阿里云镜像仓库。
(1)使用体验平台提供的阿里云子账号登录 容器镜像服务控制台。
(2)单击 [镜像中心] > [镜像加速器],可以看到阿里云为您提供了一个专属的镜像加速地址。
(3)配置Docker的自定义镜像仓库地址。请将下面命令中的镜像仓库地址https://kqh8****.mirror.aliyuncs.com替换为阿里云为您提供的专属镜像加速地址。
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://kqh8****.mirror.aliyuncs.com"]
}
EOF
(4)重新加载服务配置文件。
systemctl daemon-reload
(5)重启Docker服务。
systemctl restart docker
二、功能:
1、proxy-nginx
我的想法是先添加一个 nginx ,用来做反向代理。根据子域名进行分发给其他任何容器(包括 wordpress、python、java、easy-mock等等)。
不建议使用docker 容器 创建 nginx,很麻烦,涉及很多网络问题,端口问题,而且云平台会禁止一些操作,所以最好还是将nginx直接安装在服务器中。
具体请参考教程:https://www.runoob.com/linux/nginx-install-setup.html
安装完成后,配置default.conf 内容如下:
server {
listen 80;
listen 443;
server_name easymock.star-sea.site;
location / {
proxy_pass http://127.0.0.1:7300/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
listen 443;
server_name www.star-sea.site;
location / {
proxy_pass http://127.0.0.1:8000/;
# proxy_set_header Host $host;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
listen 443;
server_name star-sea.site;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.html;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
重启nignx,使配置生效
// 进入nginx可执行目录sbin下,输入命令
./nginx -s reload
2、easy-mock
官网:https://github.com/easy-mock/easy-mock-docker
mkdir -p /opt/dockerfiles/easymock # 与 easymock 有关的都放这里
vim docker-compose.yml
vim production.json
docker-compose.yml
version: '3'
services:
mongodb:
image: mongo:3.4.1
volumes:
- './data/db:/data/db'
networks:
- easy-mock
restart: always
redis:
image: redis:4.0.6
command: redis-server --appendonly yes
volumes:
- './data/redis:/data'
networks:
- easy-mock
restart: always
web:
image: easymock/easymock:1.6.0
command: /bin/bash -c "npm start"
ports:
- 7300:7300
volumes:
- './logs:/opt/dockerfiles/easymock/logs'
networks:
- easy-mock
restart: always
networks:
easy-mock:
生成镜像容器命令
docker-compose up -d
3、博客 wordpress
mkdir -p /opt/dockerfiles/wordpress # 与 easymock 有关的都放这里
vim docker-compose.yml
docker-compose.yml
version: '3.3'
services:
db:
image: mysql:5.7
volumes:
- /usr/local/mysql:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
退出保存,使用开启镜像容器
docker-compose up -d