3fbd9510b97e81d508178eb1ba99ae52.png

准备工作

  • 本地Hexo博客环境搭建(此处不做细讲)
  • 本地Hexo博客推送到云服务器配置
  • 云服务器端配置

本地客户端配置

  • 找到Hexo博客根目录下_config.yml
  • 在最后找到repository或者repo选项,设置推送路径。配置如下,

repository: ubuntu@server_name:/home/git/hexoBlog

  • 需要注意的是,腾讯云ubuntu服务器默认的服务器用户名为ubuntu,server_name填写服务器公网IP

服务器配置

hexo安装

sudo apt-get install npm
npm install hexo-cli hexo-server -g
// 如果直接在服务器端直接启动hexo,而不是通过git上来的静态文件

git配置

  1. 安装git sudo apt-get install git
  2. 创建git仓库
  • 在/home目录下创建git目录并初始化, 修改目录的所有权和用户权限
  • 一般的网站用的到也就是777、755、644这三种权限。其中每个权限都有三位数字组成,第一位表示所有者的权限,第二位表示同组用户权限,第三位表示公共用户权限,r代表读取权限等于4,w代表写入权限等于2,x代表执行权限等于1。
  1. 777的权限就是:rwxrwxrwx 。第一位7等于4+2+1,所以就是rwx,所有者有读取、写入、执行的权限;第二位7也是4+2+1,rwx,同组用户具有读取、写入、执行权限;第三位7,代表公共用户有读取、写入、执行的权限。
  2. 755的权限就是:rwxr-xr-x。第一位7等于4+2+1,所以就是rwx,所有者有读取、写入、执行的权限;第二位5也是4+0+1,r-x,同组用户具有读取、执行权限;第三位5,代表公共用户有读取、执行的权限。
  3. 644的权限就是:rw-r–r–。第一位6等于4+2+0,所以就是rw-,所有者有读取、写入的权限;第二位4也是4+0+0,r–,同组用户具有读取的权限;第三位4,代表公共用户有读取的权限。
 sudo mkdir git
 sudo chown -R $USER:$USER /home/git
 sudo chmod -R 755 /home/git
 cd /home/git 
 git init --bare hexoBlog.git
 
    • 效果如下

cd6ec9f6f4adf7cf7f26c6773f60682e.png

3. 创建git钩子

  • 将本地通过git上传的文件放到指令的hexo博客目录
  • 在home目录下创建Hexo博客存储目录,该目录与上面本地所推送的目录保持一致
  • 在hooks生成新的请求钩子
 vi /home/git/hexoBlog.git/hooks/post-receive 
 添加下面 两行代码
 !/bin/bash
 git --work-tree=/home/hexoBlog --git-dir=/home/git/hexoBlog.git checkout -f
 
  • 保存并退出,增加克执行权限chmod +x /home/git/hexoBlog.git/hooks/post-receive

nginx配置

​ 关于此处的配置,网上的一些说法对于新手来说很不友好。例如没有指出具体配置文件的路径,而且在使用apt-get install 方式安装的nginx在/etc/nginx/nginx.conf文件中没有server字段。

  • 具体配置如下
  • 打开配置文件sudo vi /etc/nginx/sites-available/default
  • 找到server字段,配置如下
    	  # 网站备案之后可使用80端口 
  			listen 80 default_server;
        listen [::]:80 default_server;

        # SSL configuration
        #
#       listen 443 ssl default_server;
#       listen [::]:443 ssl default_server;
        #
        # Note: You should disable gzip for SSL traffic.
        # See: https://bugs.debian.org/773332
        #
        # Read up on ssl_ciphers to ensure a secure configuration.
        # See: https://bugs.debian.org/765782
        #
        # Self signed certs generated by the ssl-cert package
        # Don't use them in a production server!
        #
        # include snippets/snakeoil.conf;

        root /home/hexoBlog; # 博客静态文件存放路径

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        server_name paolo.vip; # 域名


 
  • 此时配置完成之后使用 sudo nginx -t测试配置参数是否有误,正常情况返回success
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok   
nginx: configuration file /etc/nginx/nginx.conf test is successful
 
  • 重新启动nginx服务:service nginx restart
  • 重新加载配置文件:nginx -s reload
  • 上述配置完成之后可通过域名访问到博客,但是由于未增加SSL证书,会提示连接不安全。下面介绍ssl证书配置
  • 申请证书
  • 点击下载证书得到一个以你域名为文件名的压缩包,解压。将Nginx的内容推送到服务器。

1e3bda6aafb8c82086f5198be61d4f2d.png
  • scp 上传下载介绍
  1. 从服务器上下载文件

scp username@servername:/path/filename /var/www/local_dir(本地目录)
例如scp root@192.168.0.101:/var/www/test.txt 把192.168.0.101上的/var/www/test.txt 的文件下载到/var/www/local_dir(本地目录)

    1. 上传本地文件到服务器

scp /path/filename username@servername:/path
例如scp /var/www/test.php root@192.168.0.101:/var/www/ 把本机/var/www/目录下的test.php文件上传到192.168.0.101这台服务器上的/var/www/目录中

    1. 从服务器下载整个目录

scp -r username@servername:/var/www/remote_dir/(远程目录) /var/www/local_dir(本地目录)
例如:scp -r root@192.168.0.101:/var/www/test /var/www/

    1. 上传目录到服务器

scp -r local_dir username@servername:remote_dir
例如:scp -r test root@192.168.0.101:/var/www/ 把当前目录下的test目录上传到服务器的/var/www/ 目录

  • 使用上传目录指令将文件传到服务器

6e8270504ec0844aa03a3ef86b5a0b95.png
  • 在/etc/nginx/nginx.conf中的http字段修改配置
    • 配置之后重新启动nginx服务:service nginx restart
    • 重新加载配置文件:nginx -s reload
http {

	##
	# Basic Settings
	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 65;
	types_hash_max_size 2048;
	# server_tokens off;

	# server_names_hash_bucket_size 64;
	# server_name_in_redirect off;

	include /etc/nginx/mime.types;
	default_type application/octet-stream;

	##
	# SSL Settings
	##

	ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
	ssl_prefer_server_ciphers on;

	##
	# Logging Settings
	##

	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;

	##
	# Gzip Settings
	##

	gzip on;

	# gzip_vary on;
	# gzip_proxied any;
	# gzip_comp_level 6;
	# gzip_buffers 16 8k;
	# gzip_http_version 1.1;
	# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

	##
	# Virtual Host Configs
	##
	        # http节点中可以添加多个server节点
    server{
        #监听443端口
        listen 443;
        #对应的域名,把xyz.com改成你们自己的域名就可以了
        server_name _;
        ssl on;
        #从腾讯云获取到的第一个文件的全路径
        ssl_certificate /usr/local/nginx/cert/1_www.paolo.vip_bundle.crt;
        #从腾讯云获取到的第二个文件的全路径
        ssl_certificate_key /usr/local/nginx/cert/2_www.paolo.vip.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;

        location / {
                #文件夹
                root /home/hexoBlog;
                #主页文件
                index index.html;
        }
    }
    server{
        listen 80;
        server_name _;
        rewrite ^/(.*)$ https://127.0.0.1:443/$1 permanent;
    }
	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
}

完结撒花

  • 如有问题,欢迎指正
  • 参考博客如下https://juejin.im/post/5d825725f265da03c34c335dhttps://cloud.tencent.com/developer/article/1004587https://cloud.tencent.com/developer/article/1589152https://cloud.tencent.com/developer/article/1549684https://blog.csdn.net/Shiloh_My/article/details/79996426https://blog.csdn.net/kwuwei/article/details/39495065
  • 效果如下

788f3ad6e71533695b8edc9f8970b6d2.png
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐