Showing Posts From

博客

博客搭建介绍及腾讯云服务器配置

前置说明 一直以来都是用GithubPage搭建的博客,因为服务器在国外,访问速度一直比较慢,再后来有一批服务器被墙掉了导致国内网络环境直接无法访问。这里可以多说一句,GithubPage跟Github用的可以不是同一IP地址服务器,被墙很多是通过锁定IP进行的,GithubPage搭建博客有些可以访问有些不可以,就是因为某些IP被封了,如果更换IP也是可以解决的,但访问速度还是不够快。前段时间看到腾讯云服务器打折,就考虑如果想保证国内的访问速度还是要将服务器迁移到国内来。 这篇文章的作用是对搭建博客做一个整体介绍,对博客中用到的方案进行一些比较,有些会写的比较简略还需要再转到别文章去看,另外重点会写一下迁移腾讯云及域名备案需要做的具体操作。 博客的搭建一般需要关注这五个部分:博客框架、域名、服务器、图床、Markdown工具。各个环节都有免费和付费版本的选择,一般来说免费能满足基本需求,付费则能提供更优质的体验,如何选择就看大家的需求了。这五部分的对比如下:付费版本 免费版本博客框架 Wordpress(部分内容付费) Hexo/Jekyll域名 万网/腾讯云 freenom/dot.tk内容托管平台 阿里云/腾讯云 GithubPage/GiteePage图床 七牛/又拍 Github/GiteeMarkdown工具 MWeb Typora接下来会围绕这五部分展开说明。博客框架 当前热门的方案是Hexo和Jekyll,Hexo是基于Node.js开发的,Jekyll是基于Ruby开发的,他们的作用都是将Markdown语法的内容转译成HTML,并根据配置的主题进行显示。 Wordpress 功能更强大,且相比前两个方案更简单,它可以不依赖Markdown语法,直接选用模板进行线上编辑即可。我对Wordpress摸索的较少,它的优缺点不便于多说,但还是推荐大家拿来试试。 这里介绍几个使用上述方案搭架的博客,大家可以参考看下: Jekyll:https://onevcat.com/,https://draveness.me/ Hexo:http://blog.sunnyxx.com/,https://zhangferry.com/ Wordpress:http://blog.cnbang.net/ 网站样式的差别不是由框架决定的,而是主题,以上三者都有大量的主题可供选择。我使用的是Hexo,使用方法可以参考这篇:基于Hexo搭建自己的博客小屋。 域名 域名选择 免费版本 免费版本域名,像freenom和dot.tk,一般都有固定的使用时间,一般为一年左右,超过一年还想使用就需要付费了。 如果依赖GithubPage 或者 GiteePage 这样的托管服务,我们是可以设置像username.github.io或username.gitee.io这样的域名。 如果想尝试GithubPage的话,也可以参考这篇基于Hexo搭建自己的博客小屋 付费版本付费版本的域名可以是我们常见的.com、.cn、.net等,可以到万网或者腾讯云进行购买,一般可选1-10年使用期限。 域名备案 不是所有域名都需要备案的,如果网站服务器在国外是不需要备案的,在国内是需要备案的。GithubPage服务器在国外,使用域名不需要备案;如果要使用国内服务器,腾讯云或者阿里云等则需要备案。 以下是腾讯云的域名备案流程:主要步骤都可以通过备案小程序进行。 备案申请条件首先会提交到腾讯云后台,由他们进行一个初审,如果没有通过他们会联系你,并告知你哪里需要修改,修改之后可以再次提交。 我在初审时遇到了两个问题: 1、域名备案时需要是不可访问状态,如果当前正在使用,需要停止解析。 2、网站描述不能包含博客字样,可以用学习笔记代替。 腾讯云的初审通过之后,他们会将备案信息提交至管局。管局的审核会久一些,一般是20个工作日之内,我的审核时间用了16天。 备案号 审核通过之后会获得一个备案号,我们需要在网站底部加上这个备案号并附带链接到域名信息备案管理系统,备案号可以在腾讯云的备案管理界面查看。这里会会有两个地方显示备案号:主体信息和已备案网站。主体信息是自然人或单位的意思,已备案网站是针对网站的,因为一个主体可能会用到多个网站,所以网站备案号是以主体备案号为基础加上自然序号。如果再次备案域名,新的备案号会是主体备案号-2的形式。我们网站中出现的备案号应该是网站备案号,即京ICP备2020035857号-1。 接下来需要在网站中添加备案号,如果你使用的是Hexo或者Jeklly框架,可以在主题文件目录下搜索Powered by,找到对应的底栏配置文件。我使用的Icarus主题,其底部文件为footer.jsx,找到对应位置添加: <a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">&nbsp;京ICP备2020035857号-1</a>效果如下:公安备案 在网站开通后的30日之内还需要进行公安备案,登录网站全国互联网安全管理服务平台,填写信息。因为是政府网站,开代理一般无法访问,需要关闭代理,如果仍无法访问,可能是DNS污染了,可以将DNS服务器设置成114.114.114.114再次刷新网站。登录之后注册、登录并填写开办者信息:这里会有很多坑,我尝试了很多次均已失败告终,直到现在也没成功,如果有知道怎么搞定的小伙伴可以告诉我,以下记录一些解决的坑:图片选择时需要开启Adobe Flash 对身份证的识别好像是通过图片比例进行的,拍出来的身份证照片需要把多余的内容剪裁掉,只保留身份证主体内容 手持身份证照片如果不能验证通过可以按照实例图片剪裁成一定比例或者换个白色背景拍照 常住地址第二和第三个选项框有时无法弹出,这个只能不断刷新尝试,我隔几天再试地区弹框才能展开 填完之后点提交审核一直加载,1分钟之后还是卡着不动,试了几次都是同样的问题,这一步一直没成功公安备案我看很多网站也没有写,所以暂时也不打算管了。这里可以告诉大家公安备案是指什么,以掘金为例:上面箭头指向的津ICP备是网站备案号,京公网安备指的是公安备案,下面这个即是公安的备案号,很多博客网站都没有写好像重要性不是很大。 域名解析 域名解析可以使用腾讯的DNSPod,因为我之前做过从GithubPage服务器的域名解析,这里只需将原来指向GithubPage的服务器IP地址该为自己的服务器地址即可。 关于域名的配置可以参考我之前的一篇博客:为博客设一个自定义域名 以下是我的域名解析配置,被擦掉的内容为服务器IP地址:全球递归DNS服务器的刷新不超过72小时,我们验证解析是否生效可以通过 ping zhangferry.com命令进行,如果展示的ip地址是我们修改后的ip地址,就证明域名解析已经生效。 服务器 云服务器选择 分为免费和付费版本,其实免费版不属于服务器,只不过起到一个服务器托管的作用。 免费版本 Github的GithubPage和码云的GiteePage是两个比较常见的静态网页托管服务。这里简单总结下两者的特点:对比项 GithubPage GiteePage默认域名 username.github.io username.gitee.io自定义域名 支持 免费版不支持,付费版支持访问速度 国内无法访问,翻墙之后访问速度也较慢 国内可访问,但访问速度较慢热度 较高,有很多开发者使用这个方案 较低,使用者较少如果你刚打算写博客,想尝尝鲜,我的建议是先从这俩平台中选一个,玩一玩。如果有长期维护的打算,并期望保证一定的用户体验,还是得购买服务器的。 付费版本 可供选择的阿里云和腾讯云,我选的是腾讯云,阿里云也是同理。 购买时我们需要指定操作系统,服务器的话一般都是Linux。有两种比较流行的Linux发行版:Ubuntu和CentOS,这两者在包管理工具上是不一样,在后面的安装工具过程中需要注意这一点。Ubuntu上用的包管理工具是apt-get,CentOS用的包管理工具是yum。 我选择的是CentOS,服务器创建完之后就可以登录了。腾讯云有两种登录方式 1、通过腾讯云网页端SSH登录,首次登录需设置密码,登录成功之后会进入一个远程终端页面,这里的登录时通过root用户登录的。 2、本机SSH登录,通过ssh root@host-ip的形式进行登录,之后需要输入首次登录创建的root用户密码。本机SSH可选择其他用户登录。 服务器配置 之后的配置和命令设置有些是在远程服务器操作的,有些是本地操作,下面会以remote$和local$开头进行区分,ip地址以host-ip的形式展示,用户名以zhangferry的形式展示。 安装依赖与Git 首先登录服务器,安装一些依赖工具。 1、安装依赖库 remote$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel2、安装编译工具 remote$ yum install gcc perl-ExtUtils-MakeMaker package3、安装Git 虽然Linux发行版一般都装有Git,但是很多版本都比较旧,我们需要一个相对新的Git版本,所以需要安装最新版本的Git。 查看Git版本 remote$ git --version如果看到的版本是2.0之前的,那就升下级吧。 删除旧版Git remote$ yum remove git由于yum跟git版本更新不一致,可以选择源码编译升级,如果嫌麻烦也可以选择yum升级。当前最新版本是2.28.0。如果选择yum升级可以使用yum install git,逃过源码升级这一步即可。 源码升级 选择一个目录来存放下载下来的 git 安装包。这里选择了/usr/local/src 目录,我们进入到这个目录 remote$ cd usr/local/src下载Git压缩包至这个目录 remote$ wget http://ftp.ntu.edu.tw/software/scm/git/git-2.28.0.tar.gz解压到当前目录 remote$ tar -zvxf git-2.28.0.tar.gz进入解压的目录,并编译 remote$ cd git-2.28.0 remote$ make prefix=/usr/local/git all安装 git 到 /usr/local/git 目录下 remote$ make prefix=/usr/local/git install设置Git环境变量,即可以在命令行找到Git命令,你可以试下 remote$ git --version如果看到的版本号是我们安装的2.28.0,即证明当前环境变量设置正确,如果现实comond not found,我们需要修改环境变量使终端能够找到git命令。 使用vim打开 remote$ vi /etc/profile按i进入编辑模式,在文件末尾增加下面内容 PATH=$PATH:/usr/local/git/bin # git 的目录 export PATH保存退出再次查看git版本号,应该就变成我们安装的版本了。 创建新用户 创建用户的目的是为了便于分配权限,该用户用于远程登录,并推送网站内容。我们也可以直接用root用于进行直接登录,如果嫌创建用户麻烦,可以跳过这一步。 创建用户zhangferry,并设置连接密码: remote$ adduser zhangferry remote$ passwd zhangferry #该命令回车输入密码,有二次确认获取sudoers文件的编辑权限 remote$ chmod 740 /etc/sudoers remote$ vim /etc/sudoers按 i 键进入文件的编辑模式,按向下键找到如下字段: root ALL=(ALL) ALL在其后面增加一句: zhangferry ALL=(ALL) ALL即我们新建的用户拥有了超级用户的权限,之后退回sudoers文件的编辑权限: remote$ chmod 400 /etc/sudoers切换用户的命令是: remote$ su zhangferry #su root切换root用户这时我们可以在本机使用ssh命令,试下是否可以通过zhangferry用户成功登录,需要我们输入刚才为zhangferry用户设置的密码: local$ ssh zhangferry@host-ip每次输入密码很麻烦,可以通过秘钥,进行免密登录。 SSH登录 这一步是非必须的,但推荐这样做,这会省去我们后面输入密码的操作。 1、本地生成秘钥,一般指定RSA加密算法,会生成一对公钥私钥。 local$ ssh-keygen -t rsa -C "zhangferry11@gmail.com" #这里邮箱需要换成自己的如果已经生成过,不要再次生成了,因为它会覆盖我们原有的秘钥,导致之前的秘钥配置失效。检验方式是: local$ cat ~/.ssh/id_rsa.pub秘钥的位置是在.ssh文件夹内,如果有输出内容说明我们已经生成过。 2、复制ssh公钥至远程主机的~/ .ssh/authorized_key文件里 local$ ssh-copy-id root@host-ip如果提示失败或者无文件,需要手动生成同名文件,将内容复制进去即可。 3、测试连接 local$ ssh zhangferry@host-ip如果命令行左侧内容显示为带有[centos]或者标记我们远程服务器的字样即代表登录成功。创建git仓库和网站目录 1、这一步的目的是创建git仓库,本地博客内容需要推送至这里。 remote$ su root #在root权限里操作 remote$ mkdir /home/zhangferry remote$ mkdir /home/hexo #网站目录 remote$ cd /home/zhangferry remote$ git init --bare blog.git #创建git裸仓库裸仓库的意思就是只保留git提交记录,不保留文件内容。 2、创建一个git的post hook,用于自动部署。这一步的作用是在我们往服务器推送仓库时,将内容转移到网站目录,因为裸仓库是不包含内容的。 remote$ vi blog.git/hooks/post-receivehooks文件是git自动生成的目录,里面有很多用于编辑hook的示例,其中post-receive用于在push操作的hook。它的内容如下: #!/bin/sh git --work-tree=/home/hexo --git-dir=/home/zhangferry/blog.git checkout -f这里需要注意,work-tree对应工作区的目录即网站目录,git-dir对应git仓库位置,如果你有自定义的命名,记得修改这两处地方。 这里大家可以想一下为什么要将git目录和网站目录分开处理,如果不分开也是可以的。我的理解是分开是为了便于权限管理,git的操作一般会是一个单独的用户权限,很多人都可以操作git,它对网站的影响是间接的,而网站内容的权限应该更高一些,只有root才可以直接操作。所以就将两者分开了。 3、修改git仓库权限 只需要将git仓库放权给zhangferry用户,网站目录的更新由post hook完成。 remote$ cd /home/zhangferry remote$ chown zhangferry:zhangferry -R blog.git # blog.git的拥有者为zhangferry remote$ chmod +x blog.git/hooks/post-receive # 修改post-receive为可执行安装Nginx Nginx是一个高性能的HTTP和反向代理web服务器,这里我们只将其作为HTTP web服务器使用。 1、安装nginx remote$ yum install -y nginx2、修改配置文件 remote$ vi /etc/nginx/nginx.conf修改内容如下: server { listen 80 default_server; listen [::]:80 default_server; server_name zhangferry.com; #博客域名 root /home/hexo; #网站目录 # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }我们只需要修改server里的server_name和root选项,他们分别代表博客域名和网站目录。 listen代表监听端口,http默认监听的是80端口。error_page代表出错之后的展示页面,无数据的40x.html和服务器错误的50x.html都可以在这里指定。 3、nginx的几个命令 remote$ start nginx #启动nginx remote$ nginx -t #检测配置文件是否有语法错误 remote$ nginx -s reopen #重启nginx remote$ nginx -s stop #退出nginx正常的流程应该是当我们修改完nginx的配置文件,先用nginx -t检测下是否有错误的配置,它还会检测一些待修复但不影响运行的警告信息,如果有错误需要修改再次检测。当配置没有问题了需要启动nginx:start nginx,之后的配置修改需要重启nginx:nginx -s reopen。 4、启动检测 nginx启动之后我们就可以在本地浏览器输入http://host-ip:80 进行访问,这时我们看到的应该是一个nginx的缺省页,因为/home/hexo目录并没有任何内容。 上传Hexo博客内容至腾讯云 修改博客根目录里_config.yml文件的deploy配置: deploy: type: git repo: zhangferry@host-ip:/home/zhangferry/blog.git #上面配置的裸git目录 branch: master部署hexo,并推送: local$ hexo g local$ hexo d #发布hexo会触发push操作,将repo推送至我们配置的git路径有可能你会出现bash: git-receive-pack: command not found这样的错误,command not found是一种常见的问题,上面的意思是在服务器方git-receive-pack命令无法找到。简单扩展下,git push内部分为两步,本地运行send-pack,它会判断哪些提交记录是它有但服务器没有的,然后它告知服务器端的receive-pack本次更新内容,receive-pack接收推送来的数据。网上对这一问题的解决方式是通过ln关联git-receive-pack: remote$ sudo ln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pack/usr/local/git/bin/git-receive-pack为实际的命令路径,/usr/bin/git-receive-pack为创建的快捷路径,但我并不能通过这个方法解决。 但从错误本身出发,命令安装了却找不到一般都是环境变量的问题,我直接修改环境变量: remote$ su zhangferry #如果使用子用户推送的,需要切换至该用户 remote$ vi ~/.bashrc在.bashrc底部增加export PATH=$PATH:/usr/local/git/bin,然后更新环境变量: remote$ source ~/.bashrc再次部署hexo,应该就会成功了。 local$ hexo d我一开始想到了修改环境变量,但是在root下修改的,而root和zhangferry是两个隔离的环境变量配置! 关于环境变量文件之间的关系有一张图可供参考:/etc/bashrc目录下的配置是全局的,~/.bashrc 下的配置只针对当前登录的用户。所以对于上面环境变量的修改,我们在全局或者zhangferry用户下修改都是可以的。 推送成功之后再次浏览器访问http://host-ip:80,如果我们域名DNS解析生效,直接访问http://zhangferry.com也一样,如果能正常显示博客首页即证明我们迁移成功了。 HTTPS支持 这一步是非必须的,如果你不打算使网站支持https到这里就可以结束了。支持HTTPS需要三步: 1、申请SSL证书 2、将证书上传至服务器 3、配置Nginx关联SSL证书 以下是对这三步的详细说明。 申请SSL证书 腾讯云有免费的https证书可以申请,有效期只有一年,过期需要再申请。这个申请流程很快,一般1个小时左右,如果时间过长,比如超过了一天,可以再次申请,这样他们会很快通过你的申请,并打回最早那次申请(我就是遇到了这种情况0。0)。 上传证书至服务器 证书通过之后有一个下载按钮,下载下来是一个包含多种服务器类型的证书文件。我是使用Nginx搭建的服务器,所以找到Nginx目录里的证书文件,它有两个:.crt后缀和.key后缀。 1、我们还需要在Nginx目录创建一个文件夹,用于存放这些证书: remote$ cd /etc/nginx/ remote$ mkdir ssl2、使用scp命令上传本地证书文件至服务器: local$ scp /path/filename zhangferry@host-ip:/etc/nginx/ssl/修改Nginx配置 网上相关教程很多,都是上来就告诉你怎么改,并没有说明其中的关系和原因,这样很容易因为一些配置环境不同导致错误。 我简单总结下:nginx有一个默认配置是通过nginx.conf控制,我们可以将证书配置写到这里面。但一个服务器允许配置多个域名,只有一个配置文件是不够的,解决方案是在conf.d目录下建一个以域名命令的.conf配置文件,它可以用来管理单独的域名,这两个配置文件是同级别的会一起生效。 我是移除了原有nginx.conf的配置项内容,将端口和证书的配置都写到了conf.d下的zhangferry.conf里。 nginx.conf内容: server { listen 81 default_server; listen [::]:81 default_server; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }这里移除了server_name和root,因为我们要在zhangferry.conf里配置监听,所以这里的配置项都去掉;将监听端口改成了81,是为了避免两处配置一样的端口引起警告。 zhangferry.conf内容: server { listen 80; server_name zhangferry.com; root /home/hexo; #重定向设置,如果使用http访问会重定向至同路径的https链接 rewrite ^(.*)$ https://$host$1 permanent; }server { listen 443 ssl; #证书位置,需跟自己证书位置对应 ssl_certificate /etc/nginx/ssl/1_host.com_bundle.crt; ssl_certificate_key /etc/nginx/ssl/2_host.com.key; #绑定域名 server_name zhangferry.com; root /home/hexo; #ssl配置,以下几项必须要有 ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { } }分别为80和443接口进行配置,配置完之后通过以下命令验证配置是否有问题: remote$ nginx -t -c /etc/nginx/nginx.conf如果出现test is successful字样即是没问题。 重启nginx服务器: remote$ nginx -s reopen访问https://zhangferry.com和http://zhangferry.com验证是否生效,如果出现加锁即证明配置成功了:图床 图床选择 图床一定要考虑持久性,像是免费的临时方案和存到一些非图床的网站上都是不靠谱的。我们访问某些博客时应该遇到过图片开裂无法查看的情况,这些都是因为之前使用的图片存储被删除或者被更改了位置导致的。我的博客之前是用的简书的图床,现在很多也都无法查看了。所以下面介绍的方案会优先考虑存储的稳定性和持久性。 免费版本 免费版有Github和Gitee可供选择,即把git仓库当做图片存储。 Github做图床时加载速度会比较慢,这个可以通过 jsDeliver 这个CDN服务进行解决,我之前很多github的图片链接都换成了通过jsDeliver的CDN链接。 另外一个方案是Gitee,这个正常使用就可以了,因为服务器在国内,访问速度还是比较快的。但Gitee有一个限制,图片超过1M就无法显示了,所以对于一些特定图片我们需要做好剪裁和缩放。 Github+jsDeliver和Gitee都是比较推荐的图床方案。 付费版本 有七牛云,又拍云,腾讯云可供选择,付费版能提供更快的访问速度和更高的稳定性,但因为上面的免费方案已经满足我的需求了,所以就没做这些尝试,不同图床方案使用起来基本一致。 图床工具 图床的使用最好搭配一些趁手的工具,使我们可以通过截屏,拖动等操作轻易的上传指定图片至图床,这个工具就是PicGo。有一个配置教程可以参考:一次艰难的图床选择经历(MWeb+PicGo+Github)。 这个是一年前的文章,现在我使用的方案Typora+PicGo+Gitee,他们之间并没有太大的变化。 Markdown工具我之前使用的是MWeb,但MWeb功能有点太多了,直到发现Typora,我一眼就相中了这个界面简洁的Markdown编辑工具,关键还是免费的,爱了爱了。别看Typora界面简洁其实功能不少,它可以搭配PicGo插件一起使用,使图片的管理更加简便。因为是工具型东西,就不写教程了,大家多多摸索应该就会了。

艰难的图床优化方案(MWeb+PicGo+Github)

博客写作优化 写博客就肯定会遇到插入图片的情况,我之前的做法是先在Boostnote这种Markdown编辑器里面写个草稿,如果有图片就附上图片,然后再粘到简书的web端。当然图片也需要另拖,会生成一个简书的图片链接,相当于把简书作为图床,然后我再把简书排好版的文章发布到自己的博客。。。当然是很麻烦的方式,这种写法持续了大半年之后,开始寻找更高效的写博客的方式。首先客户端,最终选了MWeb。然后是要解决麻烦的图床问题,因为MWeb内嵌了七牛云图传服务,所以申请了七牛云账号,用了一段时间感觉真是如丝般顺滑。 图床历险记 直到我收到了这个:在七牛云上申请的只是测试域名服务,只有一个月的有效期。如果想继续使用就需要绑定自己的域名,而且这个域名还需要备案。 于是我在腾讯云上注册了两年的zhangferry.com这个域名。填写资料时,我看到系统提示域名要进行备案,备案过程中又发现,要有绑定腾讯云服务才能进行备案。??我只是要域名并不需要云服务啊。隐约感觉好像被下套了,需要解决的问题一个套一个。我还怀着侥幸的心理看了下腾讯云服务的价格,用不起用不起。。。 看到提示说如果不备案域名,三个月后会被回收,有点慌。询问客服之后得知,服务器在国内且没有备案的情况下才会被回收,因为我的博客是搭在Github上的,所以可以不备案,松了一口气,域名保住了。但是,不备案七牛云又不干了,what f。。。 纠结一段时间之后我只能放弃七牛云,寻找其他的图床服务,知乎上有一个总结比较全的文章盘点一下免费好用的图床。原来是有很多免费服务的,感觉找到了解决方案。但是,又是一个但是,图床这个东西,免费就意味着不稳定,万一哪天挂了,图片就都丢了。最后文末有总结:如果打算长期稳定使用请优先选择又拍云或者七牛云,如果是存储并不重要的图片可以使用免费不限大小的SM.MS图床。 再结合我对图床的需求:免费+稳定。SM.MS好像是最接近的方案了,虽然SM.MS知名度不算低,但是我还是有点担心它的稳定性。 再继续找,找到了这个PicGo,一个图床管理工具,顺着PicGo(v2.0.3)我找到了Github作为图床这一方案。Github,对啊,我直接就确认了这种方案。虽然有人说Github图片国内访问会慢一些,但是它肯定能保证数据的稳定性啊。这样图床工具和图床服务都找好了,喜大普奔! Github图床配置 说了很多废话,终于到了这个理想图床的配置阶段了,比较简单。 1、建一个仓库 用于存需要上传的图片。这个仓库最好是public的,因为private的仓库,图片链接会带token,这个token又存在过期的问题。 2、获取授权token 在Github的Developer setting界面生一个token。记得保存,因为它只会显示一次。3、配置PicGo 根据图示:4、使用 使用也很方便,PicGo有两种方式: 屏幕截图 截取图片之后,图片会出现在PicGo的待上传列表里面。我们手动点一下会触发上传,上传成功之后,剪贴板会有对应markdown格式的图片文本,直接粘贴可以使用。 固定图片 我们需要将需要使用的图片拖到PicGo的客户端内手动上传,上传成功之后,会自动复制成markdown文本,可以直接粘贴使用。 终于搞定了,撒花!

为博客设一个自定义域名

现在越来越多的人悬着使用githubpage搭建自己的个人博客,但是github提供的默认的域名是这种形式:username.github.io,是个二级域名,这对于很多人来说可能感觉不是很酷。那么我们今天就来做一件比较酷的事情,为站点自定义一个域名。目录0、准备工作 1、域名申请 2、为站点添加CNAME 3、在DNSPOD配置域名解析 4、修改DNS 5、验证结果准备工作一个完整的github page博客项目。 名词解释: DNS:网域名称系统。你可以把它想象成一张域名和IP地址映射的数据表。 DNS解析:就是通过我们输入的网址(域名)查找到对应的主机(IP地址) CNAME重定向:username.github.io和username.tk是两个域名,添加CNAME文件选择首选域,使其指向同一主机。 DNS原理>>申请域名 有很多网站都有域名购买服务,我使用的是Freenom。常见的域名注册网站还有万网、腾讯云、GoDaady(狗爹)。 我选择Freenom的最主要原因就是:免费+顶级域名。对,你没有听错就是免费的顶级域名,一开始就认为注册域名肯定要花费不少moneyd的人是不是感觉赚到了😉。进入该网站注册成功之后,选择Register a New Domain进行域名申请检验。它可以提供免费的顶级域名有:tk,ml,ga,cf,gq选择你喜欢的域名,进入选购界面在Period里面可以选择使用时间,最多是一年的免费使用,顶级域名耶,已经很大的优惠了。当然如果你是土豪这都无所谓了。 为站点添加CNAME文件 在Hexo的本地站点里,进入source文件,新建文件CNAME,注意没有后缀,打开文件填入刚申请的域名zhangferry.tk保存。然后发布站点,这时CNAME文件就被发布到了github上对应的站点仓库中CNAME文件的作用: CNAME是一个别名记录,它允许你将多个名字映射到同一台计算机。比如刚才添加的CNAME文件,会被github自动识别,当我们输入zhangferry.github.io和输入zhangferry.tk时,它将指向同一个ip地址,展示同样的内容。 在DNSPOD中配置域名解析 注册DNSPOS账号,进入管理控制台点击添加域名,输入我们刚刚申请的域名。确定之后就是进行添加记录添加记录的每一项,系统都会提示代表意思,这里主要解释记录类型A记录:地址记录,用来指定域名的IP地址 CNAME记录:如果需要将域名指向另一个域名,再由另一个域名提供IP地址,就需要添加CNAME记录 NS记录:域名服务器记录,如果需要把子域名交给其他DNS服务商解析,就需要添加NS记录上面的NS记录是系统默认添加的。 A记录就是指向对应IP地址,这里的192.30.252.153和192.30.252.154是github的服务器IP地址。 CNAME记录这里可填可不填,因为A记录已经将zhangferry.tk和zhangferry.github.io的域名统一为一个IP地址了。有一种情况就是为了提高访问速度,要区分国内国外不同用户使用不同的网站进行重定向需要添加对应的CNAME记录。 修改域名DNS 再回到刚才的域名申请网站,点Services->My Domains->Manage Domain->Management Tools->Nameservers将f1g1ns1.dnspod.net和f1g1ns2.dnspod.net填入到Nameserver1和Nameserver中,点击Change Nameservers保存操作。注意到刚填的域名服务就是对应NS记录的记录值。完成之后稍等片刻,DNSPod会有如下提示,否则就按照提示进行检验哪一步出了问题。验证结果 之后需要等待全球递归DNS服务器刷新(最多72小时) 在命令行执行:$ dig zhangferry.tk,出现以下结果说明配置成功,主要IP地址的对应。参考 Hexo博客系列:域名和DNS 为你的Github Pages博客绑定一个免费顶级域名吧

基于Hexo搭建自己的博客小屋

作为一名技术人员没有属于自己的博客,就像是喜欢LOL的玩家却没有一款炫酷的皮肤一样,这不叫真爱。虽然现在是微博的时代,讲究方便阅读,易传播,但是对于博客来说,特别是技术博客,专业性永远都是第一位的。我们需要用大大的篇幅去阐述自己对技术的理解并将其分享给其他人,所以无论社交软件如何发展,我们都需要博客。下面就跟着我一块搭建属于自己的博客小屋吧。搭建环境 已经安装Git的Mac电脑,这个默认都能满足,所以就不详细介绍了。 创建github page 首先注册github账号,然后在repository选项卡里New一个新的仓库来存储我们的网站然后命名为username.github.io。安装Hexo 在安装Hexo之前我们需要安装nvm和Node.js。Hexo是目前很流行的博客管理框架,基于Node.js nvm是Node.js的版本管理工具 而Node.js是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。不太理解和想要深入了解各软件作用的同学可以自行google,接下来我们开始安装这些东西(确实挺多的)。 1、通过curl方式安装node版本管理工具nvm curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.30.2/install.sh | bash其他方式的安装可以自行google。 2、配置环境变量 完成之后nvm就被安装在了~/.nvm下,接下来配置环境变量 在~/目录下看是否有.zshrc,.bash_profile,或者.profile,如果没有就新建一个.profile文件。 注意:.开头的文件是隐藏文件,在终端查看的时候使用命令ls -a,然后打开对应的配置文件在最后一行加上: export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm这一步的目的是每次新打开一个bash,nvm都会被自动添加到环境变量中。 3、验证nvm安装 在命令行输入nvm看到如下信息: Node Version ManagerNote: <version> refers to any version-like string nvm understands. This includes: - full or partial version numbers, starting with an optional "v" (0.10, v0.1.2, v1) - default (built-in) aliases: node, stable, unstable, iojs, system - custom aliases you define with `nvm alias foo`Usage: nvm help Show this message nvm --version Print out the latest released version of nvm nvm install [-s] <version> Download and install a <version>, [-s] from source. Uses .nvmrc if available --reinstall-packages-from=<version> When installing, reinstall packages installed in <node|iojs|node version number> nvm uninstall <version> Uninstall a version nvm use [--silent] <version> Modify PATH to use <version>. Uses .nvmrc if available nvm exec [--silent] <version> [<command>] Run <command> on <version>. Uses .nvmrc if available nvm run [--silent] <version> [<args>] Run `node` on <version> with <args> as arguments. Uses .nvmrc if available nvm current Display currently activated version nvm ls List installed versions nvm ls <version> List versions matching a given description (usually `~/.nvm`)那么恭喜你!nvm安装成功了。这一步在我看来是最容易出错的。 4、安装node.js 如果上面的步骤完成了,node.js的安装就简单多了,直接: nvm install node这个指令是安装最新版node 安装成功后可以使用nvm ls查看当前node版本号 5、安装Hexo 安装Hexo也比较简单 sudo npm install hexo-cli -g配置Hexo站点 完成所需组建的安装,接下来就要建立本地站点,配置站点了。 1、本地新建博客目录 目录可以自由选择,我选择在主目录下: ~$ mkdir username.github.io ~$ cd username.github.io ~$ hexo init username.github.io2、配置站点 在站点下有一个_config.yml,这里我们可以进行一些对博客的配置 language: en #语言设置 theme: next #主题设置,因为下面将使用next主题 deploy: type: git repo: https://github.com/username/username.github.io.git这里的repo就是我们新建仓库的git地址,之后发布的时候就会将内容发布到这个地址下。更多设置可以查看更多Hexo配置 3、配置主题我使用的是目前最受欢迎的一款Hexo主题Next使用它的话,我们需要先把它clone到本地 $ cd username.github.io $ git clone https://github.com/iissnan/hexo-theme-next themes/next在theme文件夹内也有一个_config.yml文件,这里是用来配置主题的,详细设置 新建、发布博客 经过上面的努力终于可以开心的写博客了,Hexo博客是基于Markdown格式编译的,所以,我们需要了解常用的Markdown语法,不了解Markdown的可以点这里参考Markdown,以下命令均在博客站点目录操作 1、新建 hexo new "my blog"文件生成在username/source/_posts/my-blog.md,打开文件,利用markdown语法将内容写到里面。 2、编译 hexo generate //可以简写为hexo g这一步的作用是将刚才的markdown语法的博客内容编译成html语言。编译之后生成public文件夹,里面放的是生成的html文件。之后同步到github上的就是这个文件夹的内容。 3、** 开启本地服务** hexo server //可以简写hexo s这个命令的作用是开启本地服务。之后会有下面两条语句生成 INFO Start processing INFO Hexo is running at http://localhost:4000/. Press Ctrl+C to stop.我们就可以访问 http://localhos:4000/预览博客内容了。 4、部署 hexo deploy //可以简写为 hexo d部署的作用就是将博客内容发布到网络。执行完成之后我们就可以访问http://username.github.io了,当你能够看到自己写的内容呈现在自己眼前的时候有没有很激动呢。哈哈 5、清楚public内容 hexo clean 这个命令用在当我们更改source内部的资源路径之后,执行此命令可以重新编译生成public文件夹。好了,讲解到此结束,下一篇讲解如何发布博客到指定域名。这个是我的博客http://zhangferry.tk,欢迎访问