本文记录域名申请和获取SSL证书。
双十一期间阿里云搞活动,我也买了一台云服务器玩玩。先想着搞个网站试一下,下面记录整个过程。
域名和服务器
要想将一个web项目上线,要有一台服务器(正常情况下,如果你的网站想被搜索到,需要一个公网IP;建议买一台云服务器)、一个域名(需要ICP备案,这个不是必需的,但是IP是很难记住的,而且可能会变,域名一般是个人申请的,只要按时续费,一直存在)、一个Web服务器(Nginx、Apache等)。
域名
首先查询想申请的域名是否已被申请,我习惯直接搜索阿里云域名查询。搜索结果如下,点击第一个
点击进去后,输入要查询的域名,比如我查询wangjili.cn;
点击查询,结果如下图,显示已注册,在写此文前,我已注册该域名。
。
注意,你要注册的域名必须没有被注册。之后选择阿里云、腾讯等注册,按照提示填写相关信息即可。
注册完成后,只有完成ICP备案才能被其它人通过域名访问到(可以在这个网站查看相关内容)。
服务器和ICP 备案
我是个人备案
备案的时候,大部分信息都有提示,按提示输入即可,需要注意的是网站用途不能包含学习、博客等字眼,再就是必须要有一台有公网IP的服务器(因为上面有一个实例与IP地址,这一项需要填公网IP)。之后等待审核,中间会收到一条包含备案信息的验证码,在https://beian.miit.gov.cn/#/Integrated/index,输入验证码和个人信息,验证成功后,就可以等待审核结果了,结果会以短信的形式通知你。
服务器选择阿里云、腾讯等依据个人需要买一台即可。
申请SSL证书
如果想自己的域名以https解析,则需要申请SSL证书并配置在Web服务器上(我用的是nginx)。
以阿里云为例,登录阿里云,在控制台,点击最左边的菜单,搜索数字证书管理服务。
点击进去,选择SSL证书
点进去,选择免费证书,点击立即购买,按照提示输入内容即可。当然,如果你不想使用免费的,也可以选择购买其它证书
在上面的证书列表列表中可以看到绑定域名这一项,只有这里面的域名才能用对应的证书,比如第一行的blog.wangjili.cn,则下载后,只能在blog.wangjili.cn对应的web服务器配置项才会生效。
将对应的证书下载下来,解压后会得到两个文件xxx.key和xxx.pem。(xxx是申请的时候填的域名,我只知道选择nginx下载解压出来的是这两个文件)。
下面记录有关nginx的配置。
Nginx
要想nginx能配置https服务,在安装的时候需要增加--with-http_ssl_module参数。推荐阅读 Linux 系统安装 Nginx、配置支持https、ssl。
安装成功,开始配置nginx,下面给出示例
# 找到nginx的安装位置
whereis nginx
# 我的安装目录 /usr/local/nginx
cd /usr/local/nginx
ls # 找到conf文件夹
cd ./conf
vim ./nginx.conf

一个server就是一个服务,上图中的server是一个https服务,都是一些常规设置,网上都有,就不重复造轮子了。说一下红色框的注意事项,有时候配置了一个静态目录/data/blog,在浏览器上访问的时候,可能会报403的错误,一个原因是:启动nginx的用户和/data/blog的读写权限不一致,可以将nginx的user对应的nobody改为当前用户;再就是将/data/blog的权限改一下chmod -R 777 /data,chmod -R 777 /data/blog,之后在nginx的安装目录,找到sbin文件夹,进去重启./nginx -s reload。之后在访问,就会发现变为https服务了。
使用Nginx和Hexo部署静态博客网站
简单记录一下。
- 在云服务器安装
git,然后创建一个用户,比如wangjili,然后给这个用户配置权限; - 在云服务器的
root的目录下新建.ssh文件夹,并创建authorized_keys文件; - 在本地
.ssh文件下创建密钥,ssh-kengen -t rsa -C "服务器地址" -f id_me_git,将生成的id_me.git.pub文件上传到服务器,并将其内容复制到authorized_keys文件中,cat id_me_git.pub >> authorized_keys; - 在云服务器上,切换到
wangjili用户,到cd /home/wangjili目录下,创建一个用于保存代码的文件夹,比如projects,cd projects,然后使用git init --bare blog.git,生成一个git仓库; - 在本地,使用
git clone wangjili@你的服务器地址:/home/wangjili/projects/blog.git;如果成功,则说明第一步成功了; - 在本地,试着打开刚才的
blog文件夹,创建一个test.txt文件,写一些内容上去,然后使用下面的命令:
如果成功,至此,你就可以使用git add . git commit -m "create test.txt" git pushgit上传代码到云服务器了。接下来开始将Hexo的博客内容上传上去。 - 在云服务器上创建一个保存博客的仓库,
git init --bare blog2.git,名字随意,注意,这里需要切换到wangjili这个用户下操作,否则后面在本地上传不了源码; - 在云服务器上,到刚才创建的
blog2.git文件夹中,cd ./hooks,创建一个post-receive的文件,写入以下内容
我刚开始不理解是什么意思,其实就是两个git --work-tree=/home/wangjili/projects/webblog --git-dir=/home/wangjili/projects/blog2.git checkout -fwork-tree表示blog2.git源码保存的文件夹,这个需要先创建;git-dir表示git仓库。 - 在云服务上切换到
root用户下,在/etc/ssh文件下,打开vim sshd_config,输入或取消注释以下内容,按:wq保存。PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys RSAAuthentication yes - 在云服务器上,修改
nginx.conf,修改如下内容,注意,这里的/home/wangjili/projects/webblog,就是前面work-tree的值location /{ root /home/wangjili/projects/webblog; index index.html index.htm; } - 在本地
Hexo项目中,将_config.yml文件中的url改为上面nginx配置中server对应的server_name,然后将deploy改为如下内容:deploy: type: 'git' repo: 'wangjili@你的服务器地址:/home/wangjili/projects/blog2.git' branch: master - 到这里,可以使用如下命令上传博客内容:
可能会让你输密码,输入hexo clean hexo g -dwangjili用户的密码即可。
到这里,就可以在浏览器通过server_name对应的值访问了,成功的话,会出现你的博客内容;
403或404错误
403是没有访问权限,使用root将blog.git,webblog和父级文件夹改为777即可;404是找不到文件,建议查看webblog文件夹是否有源文件。
