Wangjili
文章58
标签12
分类9
域名及SSL证书

域名及SSL证书

本文记录域名申请和获取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证书搜索
点击进去,选择SSL证书
SSL证书
点进去,选择免费证书,点击立即购买,按照提示输入内容即可。当然,如果你不想使用免费的,也可以选择购买其它证书
免费证书
在上面的证书列表列表中可以看到绑定域名这一项,只有这里面的域名才能用对应的证书,比如第一行的blog.wangjili.cn,则下载后,只能在blog.wangjili.cn对应的web服务器配置项才会生效。
将对应的证书下载下来,解压后会得到两个文件xxx.keyxxx.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

nginx配置
一个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部署静态博客网站

简单记录一下。

  1. 在云服务器安装git,然后创建一个用户,比如wangjili,然后给这个用户配置权限;
  2. 在云服务器的root的目录下新建.ssh文件夹,并创建authorized_keys文件;
  3. 在本地.ssh文件下创建密钥,ssh-kengen -t rsa -C "服务器地址" -f id_me_git,将生成的id_me.git.pub文件上传到服务器,并将其内容复制到authorized_keys文件中,cat id_me_git.pub >> authorized_keys
  4. 在云服务器上,切换到wangjili用户,到cd /home/wangjili目录下,创建一个用于保存代码的文件夹,比如projectscd projects,然后使用git init --bare blog.git,生成一个git仓库;
  5. 在本地,使用git clone wangjili@你的服务器地址:/home/wangjili/projects/blog.git;如果成功,则说明第一步成功了;
  6. 在本地,试着打开刚才的blog文件夹,创建一个test.txt文件,写一些内容上去,然后使用下面的命令:
    git add .
    git commit -m "create test.txt"
    git push
    如果成功,至此,你就可以使用git上传代码到云服务器了。接下来开始将Hexo的博客内容上传上去。
  7. 在云服务器上创建一个保存博客的仓库,git init --bare blog2.git,名字随意,注意,这里需要切换到wangjili这个用户下操作,否则后面在本地上传不了源码
  8. 在云服务器上,到刚才创建的blog2.git文件夹中,cd ./hooks,创建一个post-receive的文件,写入以下内容
    #!/bin/sh
    git --work-tree=/home/wangjili/projects/webblog --git-dir=/home/wangjili/projects/blog2.git checkout -f
    我刚开始不理解是什么意思,其实就是两个work-tree表示blog2.git源码保存的文件夹,这个需要先创建;git-dir表示git仓库。
  9. 在云服务上切换到root用户下,在/etc/ssh文件下,打开vim sshd_config,输入或取消注释以下内容,按:wq保存。
    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys
    RSAAuthentication yes
  10. 在云服务器上,修改nginx.conf,修改如下内容,注意,这里的/home/wangjili/projects/webblog,就是前面work-tree的值
    location /{
        root /home/wangjili/projects/webblog;
        index index.html index.htm;
    }
  11. 在本地Hexo项目中,将_config.yml文件中的url改为上面nginx配置中server对应的server_name,然后将deploy改为如下内容:
    deploy:
      type: 'git'
      repo: 'wangjili@你的服务器地址:/home/wangjili/projects/blog2.git'
      branch: master
  12. 到这里,可以使用如下命令上传博客内容:
    hexo clean
    hexo g -d
    可能会让你输密码,输入wangjili用户的密码即可。

到这里,就可以在浏览器通过server_name对应的值访问了,成功的话,会出现你的博客内容;

403或404错误

403是没有访问权限,使用rootblog.git,webblog和父级文件夹改为777即可;404是找不到文件,建议查看webblog文件夹是否有源文件。

本文作者:Wangjili
本文链接:https://blog.wangjili.cn/2023/11/27/domain/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可