本文记录域名申请和获取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 push
git
上传代码到云服务器了。接下来开始将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 -f
work-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 -d
wangjili
用户的密码即可。
到这里,就可以在浏览器通过server_name
对应的值访问了,成功的话,会出现你的博客内容;
403或404错误
403是没有访问权限,使用root
将blog.git,webblog
和父级文件夹改为777
即可;404是找不到文件,建议查看webblog
文件夹是否有源文件。