Hexo系列教程

使用Centos7+Nginx+Hexo+GitLab+butterfly主题搭建个人博客并自动部署-配置篇

CentOS7下安装GitLab

新建tsinghua.repo

'vim /etc/yum.repos.d/tsinghua.repo'

输入以下内容

'[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1'

缓存相关内容

'yum makecache'

安装依赖

'yum install -y curl policycoreutils-python openssh-server'

安装gitlab-ce

'yum install -y gitlab-ce'

出现如下画面证明安装成功

配置Gitlab

打开gitlab配置文件

'vim /etc/gitlab/gitlab.rb'

修改如下内容

'# 改域名,修改成自己的域名,如果用的https,改成https://gitlab.xxxxxx.com
external_url 'http://gitlab.suyuening.com'
# CPU使用核数,默认好像是24核,用不了那么多,改成2
unicorn['worker_processes'] = 2
# 时域
gitlab_rails['time_zone'] = 'Asia/Shanghai''

修改完后,执行下面命令,使配置重新加载

'gitlab-ctl reconfigure'

访问 http://gitlab.suyuening.com,第一次进入后台,会提示修改root密码(gitlab123456),修改后重新登录。

CentOS7下安装Git

yum命令安装:

'sudo yum install -y git'

源码安装

安装前要手动安装下依赖包(可使用rpm -qa | grep wget命令查看是否有安装包)

'sudo yum install -y wget
sudo yum install -y gcc-c++
sudo yum install -y zlib-devel perl-ExtUtils-MakeMaker'

去官网下载最新版本的git源码包

'wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.0.tar.gz'

接下来就是解压,配置,安装

'tar -zxvf git-2.9.0.tar.gz
cd git-2.9.0
./configure --prefix=/usr/local
make
sudo make install'

./configure后面的–prefix=/usr/local,指定安装路径为usr/local

查看git版本

'git --version'

Git使用

配置一个用于提交代码的用户

'git config --global user.name "Your Name"'

同时配置一个用户的邮箱

'git config --global user.email "email@example.com"'

生成公钥和私钥(用于gitlab)

'ssh-keygen -t rsa -C "youremail@example.com"'

和gitlab通信,将步骤3中生成的公钥(id_rsa.pub文件中的内容)拷贝到github

安装并配置Nginx

安装Nginx

# 使用yum install命令安装nginx
'yum install nginx -y'

# 检查是否安装成功
'nginx -v'

# 终端输出nginx版本信息说明安装成功,否则说明安装失败
# nginx version: nginx/1.6.3

# 启动nginx
'nginx'

本地浏览器输入”阿里云公网IP”即可访问到下图的界面

配置Nginx服务

# 使用find命令查看nginx.conf文件存放位置
'find / -name "nginx.conf" -type f | grep "nginx.conf"'
# 终端输出nginx.conf的路径
# /etc/nginx/nginx.conf'

# 备份nginx.conf文件
'mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf_back'

# 使用vi命令写入如下内容
'vim /etc/nginx/nginx.conf'

# 按下i键,复制以下内容并进行替换
# ---------------*  复制内容开始   *---------------
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
events {
worker_connections 1024;
}

http{
server {
listen 80 default_server;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_set_header Connection '';
proxy_pass http://localhost:4000/;
proxy_redirect default;
}
}
}

# ---------------* 复制内容结束 *---------------

保存内容并重启Nginx

# 修改完毕后,按下键盘的'ESC'按键,然后输入:wq保存内容
':wq'

#保存完毕重启nginx
'nginx -s reload'

安装和配置Node.js

安装Node.js

# 使用yum install命令安装Node.js

'yum install nodejs'

# 检查是否安装成功

'node -v'
# 终端输出版本号,说明安装成功,否则安装失败
# v12.2.0

将Node.js加入环境变量

# 使用type命令获取node的安装路径
'type node'

# 使用vi编辑Linux的配置文件
'vi ~/.bash_profile'

# 按下键盘的i,然后输入以下内容,双引号之间替换为type输出的路径
'export NODE_PATH='/etc/nvm/versions/node/v12.2.0''

在PATH=的后面追加'$NODE_PATH/bin:'

输入完毕后,按下键盘的”ESC”,然后输入”:wq”保存文件

# 使用source命令,更新环境变量使其生效
source ~/.bash_profile

Hexo配置

Hexo不了解的可以先去官网看一看

配置hexo后台运行 安装pm2

#使用npm install命令来安装pm2
'npm install -g pm2'

# 查看是否安装成功
'pm2 -v'

# 终端输出pm2版本说明安装成功,否则安装失败
# 3.5.0

# 使用cd命令切换到博客所在路径
'cd /var/blog'

# 使用vi命令添加pm2的配置信息
'vi hexo.js'

# 按下i键,复制以下内容并进行替换
// ---------------*  复制内容开始   *---------------
var spawn = require('child_process').spawn;

free = spawn('hexo', ['server', '-p 4000']);/* 其实就是等于执行hexo server -p 4000*/

free.stdout.on('data', function (data) {

console.log('standard output:\n' + data);

});

free.stderr.on('data', function (data) {

console.log('standard error output:\n' + data);

});

free.on('exit', function (code, signal) {

console.log('child process eixt ,exit:' + code);

});
// ---------------* 复制内容结束 *---------------

使用pm2启动hexo

# 修改完毕后,按下键盘的'ESC'按键,然后输入:wq保存内容
':wq'

# 保存完毕重启nginx
'pm2 start hexo.js'

# 检查是否启动成功
'pm2 list'

成功启动hexo后如下图所示

本地浏览器输入'公网Ip地址' 就可以访问到自己的博客了

配置ssl证书实现https

vim /etc/nginx/nginx.conf
1. 把原来的server全部打上注解
2. # PC端https配置
server{
# 监听443端口
listen 443 ssl;
server_name javahna.com;
# 证书上传更换路径
ssl_certificate /etc/nginx/ssl/5805665_www.javahna.com.pem;
ssl_certificate_key /etc/nginx/ssl/5805665_www.javahna.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;

location /api {
root /usr/share/nginx/html;
index index.html index.htm;
}

location / {
rewrite ^.+api/?(.*)$ /$1 break;
include uwsgi_params;
# 实际后台服务器地址,此地址就是http的,可以实现https转发http(因为前端后台部署在同一台服务器)
proxy_pass http://javahna.com:4000;
proxy_set_header Cookie $http_cookie;
proxy_set_header Host $host:$server_port;
proxy_set_header Remote_Addr $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 1000m;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server{
# 监听80端口:将80端口的请求转到443
listen 80;
server_name www.javahna.com;
rewrite ^/(.*)$ https://javahna.com:443/$1 permanent;
}

启动、重启nginx

#配置生效
nginx -s reload
# 启动
systemctl start nginx
# 重启
systemctl restart nginx
# 停止
systemctl stop nginx
# 开机默认启动
systemctl enable nginx