这次双十一, 牛客网联合华为云搞活动, 惊爆价, 学生机一年只要9块钱, 9块钱, "老夫"激动得无以言表, 简直太棒了!

  活动一开始, 我就立马下单购买了, 要做第一个吃螃蟹的人. 买了, 也不能闲置吃灰, 我得把华为云服务器用起来, 顺便写篇文章记录下.

  首先, 我要用华为云服务器搭建一个个人博客. 个人考察了常见的博客系统, WordPress、Typo、Zblog、Ghost、Solo、Hexo、Hugo, 前面5个是带后台的动态博客, 其中WordPress、Typo、Zblog是基于PHP的, Ghost是基于Nodejs的, Solo是基于Java的, Hexo、Hugo是静态博客生成器, 最后我选择了Solo, 虽然它是Java写的, 但是很省内存, 运行时只占用100多MB的内存. 而且Solo比较符合我的个人需求, 功能不多不少, 有很多定制的皮肤.

  下面使用docker在华为云上搭建Solo博客, 跟着一步步做就差不多了, 注意可能要修改一些参数. 我选择的操作系统是Ubuntu 18.04 server 64bit, 其他Linux系统也是大同小异的, 没多大区别. 首先得根据Docker的官方文档安装docker, Ubuntu参考https://docs.docker.com/install/linux/docker-ce/ubuntu/, 这里不再累述.
创建自定义网络给容器固定ip

docker network create --opt com.docker.network.bridge.name=mynetwork --subnet=172.28.0.0/16 mynetwork
# 默认情况下, 重启Docker服务进程, 会导致docker容器的ip变化, 所以要把容器ip固定下来.

创建nginx-proxy和letsencrypt-nginx-proxy-companion容器(开启https)

docker run -d -p 80:80 -p 443:443 \
--name nginx-proxy \
--network mynetwork --ip 172.28.0.2 --dns 114.114.114.114 \
-e TZ=Asia/Shanghai \
-v /etc/nginx/certs \
-v /etc/nginx/vhost.d \
-v /usr/share/nginx/html \
-v /var/run/docker.sock:/tmp/docker.sock:ro \
--restart=always \
jwilder/nginx-proxy

docker run -d \
--name nginx-proxy-letsencrypt \
-e "DEFAULT_EMAIL=你的邮箱地址" \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
--volumes-from nginx-proxy \
--restart=always \
jrcs/letsencrypt-nginx-proxy-companion

创建mysql容器并减少mysql内存占用

docker run -d \
--name mysql \
--network mynetwork --ip 172.28.0.3 --dns 114.114.114.114  \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=你的数据库密码 \
-e MYSQL_ROOT_HOST=172.28.0.% \
-v /home/ubuntu/mysql57:/var/lib/mysql \
--restart=always \
mysql/mysql-server:5.7.27
# 删除容器数据不会丢, 数据保存在/home/ubuntu/mysql57, 可以自己改成其他路径.

docker exec -it mysql bash -c "cat >> /etc/my.cnf << 'EOF'
# Reducing MySQL memory usage
performance_schema_max_table_instances=400
table_definition_cache=400
table_open_cache=256
EOF"

docker restart mysql

创建solo容器

docker run -d \
--name solo \
--network mynetwork --ip 172.28.0.4 --dns 114.114.114.114 \
-e "VIRTUAL_HOST=www.example.com,example.com" \
-e "LETSENCRYPT_HOST=www.example.com,example.com" \
-e solo_server_host="example.com" \
-e RUNTIME_DB="MYSQL" \
-e JDBC_USERNAME="root" \
-e JDBC_PASSWORD="你的数据库密码" \
-e JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \
-e JDBC_URL="jdbc:mysql://172.28.0.3:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC" \
--restart=always \
registry.cn-shenzhen.aliyuncs.com/jin7/solo
# 注意把www.example.com和example.com改成你自己的域名.
# 这个Solo镜像是我自己定制的, 把lute-http(更高效的markdown渲染引擎)和solo整合在一起了. 该镜像每日自动构建, 保持Solo是最新的版本.

  至此Solo博客就搭建好了, 访问你的域名, 尽情享用吧.

  除了搭建博客, 我们再来玩玩VSCode远程开发. VSCode远程开发可以让我们利用华为云服务器做开发, 具体有两种开发方式, 直接在华为云服务器上做开发, 或者在华为云服务器上的Docker容器中做开发. 如图所示SSH TARGETS(直接在服务器上开发)和CONTAINERS(在容器中开发).
图片说明

  SSH TARGETS具体的配置方法很简单,
在$home/.ssh/config中添加:

Host huaweicloud
User 用户名
HostName 华为云服务器IP地址
Port 22
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
# 记得把本地电脑上的公钥 ~/.ssh/id_rsa.pub内容粘贴到华为云服务器上的~/.ssh/authorized_keys中.

  CONTAINERS的配置方法也不复杂,
在vscode添加设置:

"docker.host":"tcp://localhost:23750",

开启本地端口转发(本地端口-->远程端口)

ssh -NL localhost:23750:/var/run/docker.sock 用户名@华为云服务器IP地址 -f
# Windows10自带了ssh, Win7如果没有ssh, 安装git就有, 指明一下详细路径.

在华为云上创建一个python容器用于远程开发

docker run -t -d \
--name python \
-e TZ=Asia/Shanghai \
-v /home/ubuntu/development/python_root:/root \
--restart=always \
python:3.7.5

vscode remote安装扩展

ms-python.python
formulahendry.code-runner
visualstudioexptteam.vscodeintellicode

  至此VSCode远程开发配置完毕, 尽情享用吧. 具体的官方文档参考https://code.visualstudio.com/docs/remote/remote-overview.

  华为云服务器可玩性很高, 可以做很多事情, 我这里就介绍了两个, 还有很多可挖掘的空间, 可以尽情地去探索、去发现!
  感谢牛客网+华为云, 9块钱上云!