Windows+ECS+个人域名+HEXO搭建个人博客


title: Windows+ECS+个人域名+HEXO搭建个人博客
declare: true
tags: 个人博客
abbrlink: f7136b46
date: 2021-10-16 16:38:48
banner_img: https://w.wallhaven.cc/full/72/wallhaven-72rd8e.jpg
index_img: https://w.wallhaven.cc/full/3z/wallhaven-3z32j3.jpg
sticky: 100
comment: valine
categories:

  • 环境部署
  • 前端开发
  • 技术提升

搭建个人博客网站,用来学习it技术,小可爱们快来呀!

准备工作

版本控制之git

官网地址

两个功能

1、需要通过ssh进行免密登录,将git用户信息发送给服务器

2、hexo博客框架需要

生成ssh秘钥

打开终端cmd,用户密码登录,输入

ssh-keygen -t rsa

image-20220124001424547

会提示密钥存放路径,一般存放在默认路径,直接回车即可

后续会用到

包管理工具nodejs

官网下载路径

http://nodejs.cn/

安装

下一步下一步。。。

环境变量配置

image-20211016205111581

测试是否安装成功

node -v
npm -v

image-20211016204957153

淘宝镜像

npm install -g cnpm --registry=https://registry.npm.taobao.org

购买阿里云ECS

1、官网购买

2、安全组开放端口

image-20211016210432301

image-20211016210505150

image-20211016210527143

image-20211016210614135

image-20211016210629994

image-20211016210654308

image-20211016210720395

3、博客内容存放在云服务器

image-20211016210957694

购买个人域名

1、购买域名

https://wanwang.aliyun.com/domain/recommend?spm=5176.10695662.1158081.4.2f774234NtE3TG#/

image-20211016205701355

2、域名备案

image-20211016205908408

1、尽量采取手机端,各种信息采集手机端好操作。

2、备案时间一般是两周左右,关键是信息完整就行。

3、备案期间手机尽量保持畅通,阿里云服务人员会核实个人信息。

3、公安备案

image-20211123164254342

4、阿里云DNS解析

我们在通过网站网址打开网站的过程中,其实就是浏览器获取到了隐藏在网址背后的网站服务器的i p 地址啊,通过访问这个i p 地址的网站服务器呢来打开网站。也就是说啊所有的域名,也就是我们常说的网址真正起作用的是它背后的服务器的i p 地址。按浏览器之所以知道每一个域名背后对应的网站服务器的i p 地址,靠的就是d n s.

  1. 首先,我们登录阿里云,然后点击右上角的【控制台】,进入控制台。
image-20211017100257034
  1. 进入控制台之后,显示当前用户的产品服务页面,比如ECS,Redis,OSS对象存储技术,这些技术都会显示在当前页面;由于DNS解析之前没有操作过,故而不显示当前页面
image-20211017100530955
  1. 鼠标触碰当前页面左上角,显示各种各样的功能模块,查找云解析
image-20211017100729883
  1. 显示DNS解析页面,默认显示个人的域名信息
image-20211017100842300
  1. 点击域名,进入解析设置,添加记录
image-20211017101043911

5、重点来了,解析的内容之记录类型。一般就两种,云服务器或VPS的话,选择A,虚拟主机的话,选择CNAME就行。

记录类型

image-20211017101211513

主机记录

image-20211017101237412

解析线路,选择默认就行。

记录值。这个就是服务器或者虚拟主机的外网IP地址。在你购买的服务器查看。TTL,这个默认的10分钟就行。最后点击【确定】就解析好了。

image-20211017101408133

image-20211017101425456

这只是解析了一个前缀。若你的网站想www和不加www前缀都能访问。那你要至少要解析这两个。解析好后,我们等几分钟,就可以访问我们的网站了。

hexo

快速、简洁且高效的博客框架

官网

https://hexo.io/zh-cn/

image-20211016211234052

安装前提

nodejs:http://nodejs.org/

git:http://git-scm.com/

安装hexo

$ npm install -g hexo-cli

建站

安装 Hexo 完成后,请执行下列命令,Hexo 将会在指定文件夹中新建所需要的文件。

$ hexo init <folder>
$ cd <folder>
$ npm install

image-20211016212106960

本地运行

hexo server

image-20211016212613329

http://localhost:4000

本地访问端口号4000,访问界面如下

image-20211016212646966

hexo init 博客文件名字执行该指令之后,会生成如下目录文件,其中文件简要说明。

image-20211016212106960

_config.yml

网站的 配置 信息,您可以在此配置大部分的参数。

package.json

{
  "name": "hexo-site",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "build": "hexo generate",
    "clean": "hexo clean",
    "deploy": "hexo deploy",
    "server": "hexo server"
  },
  "hexo": {
    "version": ""
  },
  "dependencies": {
    "hexo": "^5.0.0",
    "hexo-generator-archive": "^1.0.0",
    "hexo-generator-category": "^1.0.0",
    "hexo-generator-index": "^2.0.0",
    "hexo-generator-tag": "^1.0.0",
    "hexo-renderer-ejs": "^1.0.0",
    "hexo-renderer-marked": "^4.0.0",
    "hexo-renderer-stylus": "^2.0.0",
    "hexo-server": "^2.0.0",
    "hexo-theme-landscape": "^0.0.3"
  }
}

scaffolds

模版 文件夹。当您新建文章时,Hexo 会根据 scaffold 来建立文件。

Hexo的模板是指在新建的文章文件中默认填充的内容。例如,如果您修改scaffold/post.md中的Front-matter内容,那么每次新建一篇文章时都会包含这个修改。

source

资源文件夹是存放用户资源的地方。除 _posts 文件夹之外,开头命名为 _ (下划线)的文件 / 文件夹和隐藏的文件将会被忽略。Markdown 和 HTML 文件会被解析并放到 public 文件夹,而其他文件会被拷贝过去。

themes

主题 文件夹。Hexo 会根据主题来生成静态页面。

指令简写
hexo n "我的第一篇文章"`  <=>   `hexo new "我的第一篇文章"`  <=> `hexo new post "我的第一篇文章"`    
`hexo p` 等价于 `hexo publish`
`hexo g` 等价于 `hexo generate`  
`hexo s`等价于 `hexo server`     
`hexo d` 等价于 `hexo deploy`
`hexo deploy -g`  等价于 `hexo deploy --generate`
`hexo generate -d`等价于`hexo generate --deploy

注: hexo clean 没有 简写, git --version 没有简写

服务器端

安装nginx

安装ngin需要相关的依赖库,我们先进行库的安装。

1、安装gcc gcc-c++

yum install -y gcc gcc-c++

2、安装PCRE库

切换到usr/local目录,下载的pcre,安装此目录

cd /usr/local/

当前目录(usr/local)下载pcre

wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz

压缩包解压gz

tar -xvf pcre-8.37.tar.gz

编译执行pcre

cd pcre-8.37

./configure

make && make install

pcre-config --version
image-20211017102536025

3、安装 openssl 、zlib 、 gcc 依赖

yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel

4、安装nginx

安装nginx一定要在local文件夹下

-- 切换到local目录
cd /usr/local/

-- 下载nginx安装包
wget http://nginx.org/download/nginx-1.17.9.tar.gz

-- 解压nginx安装包
tar -xvf nginx-1.17.9.tar.gz

-- 切换目录nginx
cd nginx-1.17.9

-- 使用nginx默认配置
./configure

-- 编译安装
make && make install

nginx启动

-- 进入sbin目录,可以看到有一个可执行文件nginx,直接./nginx执行就OK了
cd /usr/local/nginx/sbin
./nginx

image-20220124001702483

浏览器访问ECS(http://geekmice.cn/)即可显示nginx成功页面

image-20211017103437822

重启nginx

 /usr/local/nginx/sbin/nginx -s reload

停止nginx

 /usr/local/nginx/sbin/nginx -s stop

问题1:nginx: [alert] kill(3475, 15) failed (3: No such process) 解决方案

答:

1、查看nginx安装目录下的pid文件存放路径

cat /usr/local/logs/nginx.pid

2、删除这个nginx.pid文件

rm -rf nginx.pid

3、之后再次杀掉nginx进程

-- 查询进程nginx
ps -ef | grep nginx

-- kill -9 杀死进程
kill -9 进程号

参考博客

安装git以及nodejs

1、安装nodejs

curl -sL https://rpm.nodesource.com/setup_10.x | bash -

yum install -y nodejs

node -v

npm -v

image-20211017104007329

2、安装git及新建git用户

yum install git

adduser git

chmod 740 /etc/sudoers

vi /etc/sudoers

在如下位置添加 git ALL=(ALL) ALL vi指令执行之后按i进入输入模式
编辑完成之后按一下esc,然后输入:wq即可退出。

image-20211017104157515

执行以下指令更改文件夹权限

chmod 400 /etc/sudoers
# 设置git用户密码 geekmice
    sudo passwd git

切换git用户并且建立密钥

# 切换git用户
su git
# 切换家目录
cd ~
# 创建.ssh文件夹
mkdir .ssh
# 进入.ssh文件夹
cd .ssh
# 创建秘钥文件,将本地git生成的公钥复制到此文件(id_rsa.pub)
vi authorized_keys
# 授权秘钥文件
chmod 600 ~/.ssh/authorized_keys

chmod 700 ~/.ssh

image-20211017104853625

创建git仓库

cd ~
-- bare repository主要是用作分享版本库。开发者使用bare repository可以向其他人分享存储在本地的版本库,以便于实时分享代码更新和团队协作 

git init --bare blog.git
-- Initialized empty Git repository in /home/git/blog.git/

vi ~/blog.git/hooks/post-receive
# 该文件添加如下内容
# 用户上传到git仓库的内容默认转移到/home/www/website,这个位置就是
# 最后博客保存的位置,需要新建文件夹/home/www/website 需要切换root
git --work-tree=/home/www/website --git-dir=/home/git/blog.git checkout -f
# 保存退出
:wq
# 授权
    chmod +x ~/blog.git/hooks/post-receive
# 以上指令都需要在su git 之后执行 如果中途断开重新连接过,需要重新执行 su git指令 进入git账户。

切换root用户

创建/home/www/website文件夹,到时候博客位置就在此

[root@lYIK5tHp ~]# mkdir -p /home/www/website
[root@lYIK5tHp ~]# cd /home/www/website
[root@lYIK5tHp website]# ll
total 0

注意:文件夹权限

chmod 777 /home/www/website
chmod 777 /home/www

本地命令行打开执行ssh命令

ssh -v git@服务器的公网ip

image-20211017105745303

若是失败的话:

因为以前部署过本地记住了服务器秘钥,发生改变时候报错,只需要删除本地电脑.ssh目录的known_hosts文件就行了。

注意这个密码是:geekmice

修改nginx配置文件

cd /usr/local/nginx/conf/

vim nginx.conf

image-20211017110231260

将本地博客推送服务器

修改本地博客配置文件

repo: git@这里改为服务器公网IP:/home/git/blog.git

image-20211017110508597

推送博客

hexo g -d

再次访问公网IP即可显示博客内容,并且博客内容在www/website目录就已经生成了

image-20211017110727519

然后重启nginx,再次访问公网IP显示博客主页

在/etc/init.d/路径下添加脚本文件,名称为nginx,内容如下

该目录包含许多系统各种服务的启动和停止脚本

#!/bin/bash
#Startup script for the nginx Web Server
#chkconfig: 2345 85 15
nginx=/usr/local/nginx/sbin/nginx
conf=/usr/local/nginx/conf/nginx.conf
case $1 in 
start)
echo -n "Starting Nginx"
$nginx -c $conf
echo " done."
;;
stop)
echo -n "Stopping Nginx"
killall -9 nginx
echo " done."
;;
test)
$nginx -t -c $conf
echo "Success."
;;
reload)
echo -n "Reloading Nginx"
ps auxww | grep nginx | grep master | awk '{print $2}' | xargs kill -HUP
echo " done."
;;
restart)
$nginx -s reload
echo "reload done."
;;
*)
echo "Usage: $0 {start|restart|reload|stop|test|show}"
;;
esac

执行以下命令即可

chmod +x nginx

控制指令

# 启动
service nginx start
# 停止
service nginx stop
# 重启
service nginx reload

如何给博客添加ssl证书

阿里云获取免费ssl证书

参考:如何申请阿里云免费ssl证书,可用于https网站,下载下来

官网获取地址

https://common-buy.aliyun.com/?spm=5176.2020520163.cas.1.zTLyhO&commodityCode=cas#/buy

注意:需要有个人域名,linux安装nodejs

操作流程如下

登录到阿里云后台,并选择 “SSL证书(应用安全)” 菜单

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eqW9bs6A-1642957172048)(https://yqfile.alicdn.com/47953e4804855cc5980082d0c222622a2973932a.png)]

点击购买证书按钮

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kCoo8OLZ-1642957172049)(https://yqfile.alicdn.com/bab8d30b3e4faf1d1f45fc4a2b80abb758961b65.png)]

选择免费型DV SSL,Symantec,点击立即购买按钮。
(这里需要注意,阿里云免费证书一次只能购买一年)

image-20211115095110309

支付操作

image-20211112133741008

支付成功

image-20211112133849705

填写相关信息并点击下一步dns验证

image-20211112134650306

具体解析dns

image-20211115095539249

点击验证按钮对证书进行验证,也可以在第6步完成后,根据提示进行验证

image-20211112134804531

验证通过,即可下载

image-20211112135049707

推荐nginx下载

image-20211112135108117

nginx配置ssl证书

参考:nginx配置ssl证书

前提:阿里云开通443端口号,防火墙开启443端口监控

阿里云开通443端口号

image-20220124003723655

image-20220124003735919

防火墙开启443端口监控

1、先查看服务器防火墙开放的端口

firewall-cmd --zone=public --list-ports     //查看防火墙的开放端口

2、允许防火墙放行443端口

命令含义:

–zone #作用域

–add-port=443/tcp #添加端口,格式为:端口/通讯协议

–permanent #代表永久生效,没有此参数重启后失效

firewall-cmd --zone=public --add-port=443/tcp --permanent

3、重启防火墙

firewall-cmd --reload

将ssl证书信息上传到linux,在/usr/local/nginx/conf目录创建cert文件夹,解压之后放置如图所示

cd /usr/local/nginx/conf

mkdir cert

通过远程连接工具(xftp,winscp)上传

image-20211115101241338

修改nginx配置文件/usr/local/nginx/conf/nginx.conf

cd /usr/local/nginx/conf
vim nginx.conf

需要在http中添加一个server节点,如图所示,若是嫌在linux修改配置文件麻烦的话,可以通过连接工具winscp或者xshell将nginx.conf下载到本地,修改之后再上传该文件到对应的目录;在没有配置之前,用户使用的是http协议进行访问,那么默认打开的端口是80,所以需要进行重定向,在上一个server节点基础上,增加一个节点进行重定向服务。


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    # 你的 my.com 要指向  你服务器的 ip 具体配置方式:阿里云 配置时 主机前缀使用 @ 
    server {
        listen     80;
        server_name  geekmice.cn;  #浏览器访问 geekmice.cn 请求时,使用该配置
		# rewrite ^ https://www.geekmice.cn$request_uri; # 区别是 http 跳转到 https
		rewrite ^/(.*)$ https://www.geekmice.cn:443/$1 permanent;

    }
	 # 你的 www.geekmice.cn 要指向  你服务器的 ip
	server {
        listen       80;
        server_name  www.geekmice.cn; #浏览器访问  www.geekmice.cn 请求时,使用该配置
		# rewrite ^ https://www.geekmice.cn$request_uri; # 区别是 http 跳转到 https

    }

    # HTTPS server  SSL 安全链接配置 
    server {
        listen       443 ssl;
        server_name  www.geekmice.cn; # 拦截  https://www.irzhd.com 链接

        ssl_certificate      /usr/local/nginx/conf/cert/6590304_www.geekmice.cn.pem;
        ssl_certificate_key  /usr/local/nginx/conf/cert/6590304_www.geekmice.cn.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        # error_page   404  500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/local/nginx/html;
        }
		
		location / {
            root   /home/www/website;
            index  index.html index.htm;
        }
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

/usr/local/nginx/sbin/nginx

结果一重启,duang~出错了。

nginx:[emerg]unknown directive ssl,就是这个错误提示,因为我们配置这个ssl证书需要引用到nginx的ssl这模块,但是我们开始编译nginx时候并没有将ssl模块一块编译进去,所以导致这个错误

首先来到当初下载nginx包压缩的解压目录,我的目录如下

image-20211115120843608

进入到解压目录,执行以下命令进行编译操作

./configure --with-http_ssl_module

重新添加这个ssl模块

执行make命令,但是不要执行make install,因为make是用来编译的,而make install是安装,不然你整个nginx会重新覆盖的。

make

执行make命令,但是不要执行make install,因为make是用来编译的,而make install是安装,不然你整个nginx会重新覆盖的。

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak //备份,备份则不用执行

cp objs/nginx /usr/local/nginx/sbin/nginx

出现错误,删除掉/usr/local/nginx/sbin/下的 nginx 再复制过去即可

最后我们来到Nginx安装目录下,来查看是否有安装ssl模块成功。执行

cd /usr/local/nginx/

./sbin/nginx -v

image-20211115121211296

nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use)

执行以下命令首先关闭nginx,然后再开启nginx

cd /usr/local/nginx/sbin
# 关闭nginx
./nginx -s stop
# 开启nginx
./nginx  

image-20220124005339986如何将博客部署到云服务器

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值