大家好!欢迎来访我的博客小站,这是我的第一篇博客,薅羊毛买了一台腾讯云服务器之后就着手搭建起自己的博客,迫不及待的想要给大家分享搭建过程,希望这篇文章可以给你们带来帮助。
一、环境搭建
1.拥有一台服务器
你想要拥有属于自己的特别小站吗?你想要一个不限速的云盘吗?你想要身处各地也可以和小伙伴们一起联机玩游戏吗?还是世界那么大,你想去互联网外面看看?喜欢多姿多彩(爱折腾)的生活的小伙伴快去买一台服务器吧!
2.安装Ruby和Jekyll
(1)介绍
RVM :一个命令行工具,可以提供一个便捷的多版本 Ruby 环境的管理和切换(这里使用RVM进行Ruby安装)
Ruby:一种简单快捷的面向对象程序设计的脚本语言(这里作为jekyll运行环境)
Gem:是封装起来的Ruby应用程序或代码库
Gemset:安装的Gem会放在这里面
Jekyll :一个简单的免费的Blog生成工具,将纯文本转换为静态博客网站
(2)安装RVM
-
获取密钥(两个看不懂的字串哈,太长了一行放不下,中间空格隔开就行)
gpg --keyserver keyserver.ubuntu.com --recv-key 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
顶顶顶顶
-
下载rvm并安装
curl -sSL https://get.rvm.io | bash -s stable
-
安装成功会出现开启rvm的命令
To start using RVM you need to run 'source ..........',运行引号内的命令
-
查看rvm版本
rvm -v
-
安装一下ruby的依赖包,诸如openssl之类的,防止各种问题
rvm requirements
-
输入一下命令检查安装情况
rvm requirements run
得到以下结果安装依赖结束: Checking requirements for centos. Requirements installation successful.
-
列出已知的 ruby 版本:
rvm list known
-
修改 RVM 的 Ruby 安装源到 Ruby China 的 Ruby 镜像服务器,这样能提高安装速度
echo "ruby_url=https://cache.ruby-china.com/pub/ruby" > ~/.rvm/user/db
-
安装ruby3.0(这里也可以选择其他版本)
rvm install 3.0.0
-
查询已经安装的 ruby
rvm list
-
卸载一个已安装版本(防止有默认的ruby环境不适用,可选,没有就不用执行)
rvm remove 2.0.0
-
建立 gemset(建立单独的gemset,防止安装gem混乱,并且切换不同的gemset使工作更灵活)
语法:rvm gemset create [自己设置gemset的名字] 例:rvm gemset create firstGemset
-
列出当前 Ruby 的 gemset
rvm gemset list
-
切换ruby或者 gemset
语法:rvm use [ruby版本] | rvm use [ruby版本]@[gemset的名字] 例:rvm use 3.0.0 | rvm use 3.0.0@firstGemset
-
设为默认gemset
语法:rvm [ruby版本]@[gemset的名字] --default 例:rvm 3.0.0@firstGemset --default
-
安装jekyll
gem install jekyll bundler //这里注意一下jekyll 4.3版本之后sass版本也升级了导致main.css中语法警告,暂未修复所以建议安装其他版本gem install bundle gem install jekyll -v 4.2.1
-
查看jekyll版本
jekyll -v
温馨提示:(后悔药)如果想要清空一个 gemset 的所有 Gem, 想重新安装所有 Gem,可以这样
rvm gemset empty 3.0.0@firstGemset
或者直接删除一个 gemset
rvm gemset delete firstGemset
3.安装nginx
(1)介绍
yum:一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装
nginx:是一个异步框架的 Web 服务器,也可以用作反向代理,负载平衡器 和 HTTP 缓存
(2)安装nginx
-
安装epel(epel-release会自动配置yum的软件仓库)
yum install epel-release
-
更新yum系统
yum update
-
安装nginx
yum install -y nginx
-
启动
自动注册了服务可以用这个
service nginx start
没有的话直接系统命令启动
systemctl start nginx
温馨提示:配置 Nginx 服务
systemctl enable nginx # 设置开机启动
service nginx start # 启动 nginx 服务
service nginx stop # 停止 nginx 服务
service nginx restart # 重启 nginx 服务
service nginx reload # 重新加载配置,一般是在修改过 nginx 配置文件时使用。
systemctl status nginx.service 检查nginx状态
4.安装Git
(1)介绍
Git:是一个开源的分布式版本控制系统
(2)安装Git
-
服务器安装
yum install -y git
-
win10客户端安装
Git官网 自己找对应32/64位版本下载,用setup安装版的,傻瓜式安装一直点就行
二、jekyll创建博客
-
执行创建命令(切成普通用户,进入自己想要放博客的目录,博客名myBlog随便取)
jekyll new myBlog
-
复制网上的博客模板到myBlog目录(注意:对比一下一开始new的myBlog和下载的模板文件都有一个Gemfile文件,不要把模板里的复制过去了,防止版本不对出现问题)
-
准备启动并解决问题
启动命令: jekyll serve -H 127.0.0.1 -P 7777 --detach --trace
报错问题:主打缺啥补啥(注意账号权限,之前root安装的要root权限才行)
(1) `rescue in block in require_with_graceful_fail’: jekyll-paginate-v2
(2) `rescue in block in require_with_graceful_fail’: jekyll-sitemap
(3) `require’: cannot load such file – webrick (LoadError)
一般应该是安装过的但是Gemfile文件没有就在最后面加上下面的就行
gem "jekyll-paginate-v2" gem "jekyll-sitemap" gem "webrick" 查找依赖:gem list |grep jekyll-paginate-v2 要是没有就用下面命令安装 gem install jekyll-paginate-v2 gem install jekyll-sitemap
-
访问(执行启动命令后,启动成功下面会有消息)
Server address: http://127.0.0.1:7777/
-
停止
pkill -f jekyll
三、nginx代理博客站点
-
安装(直接使用yum,当然会源码安装也行具体可看另一篇博客)
yum install nginx
-
配置(因为静态文件和看板娘模型也要代理,所以静态博客直接在/匹配代理)
location / { proxy_buffering on; #忽略头部避免缓存未命中 proxy_ignore_headers Cache-Control; proxy_buffer_size 128k; proxy_buffers 32 128k; proxy_busy_buffers_size 128k; proxy_cache mycache; proxy_cache_key $scheme$proxy_host$request_uri; proxy_cache_valid 200 1d; proxy_cache_valid 404 30s; proxy_cache_valid any 3m; add_header nginx-cache "$upstream_cache_status"; proxy_pass http://mv; // jekyll的服务 }
-
启动
systemctl start nginx
四、博客看板娘
-
准备
前端源码下载:https://github.com/stevenjoezhang/live2d-widget/
后端api下载:https://github.com/fghrsh/live2d_api
php-fpm工作流程: php-fpm启动后会先读php.ini,然后再读相应的conf配置文件,conf配置可以覆盖php.ini的配置。 启动php-fpm之后,会创建一个master进程,监听9000端口(可配置),master进程又会根据fpm.conf/www.conf去创建若干子进程,子进程用于处理实际的业务 (1) 安装php 更新源 远程: rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm 手动: https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm https://mirror.webtatic.com/yum/el7/webtatic-release.rpm rpm -Uvh epel-release-latest-7.noarch.rpm rpm -Uvh webtatic-release.rpm yum刷新一下 yum -y update 直接安装最新版php yum install php72w-common php72w-fpm php72w-opcache php72w-gd php72w-mysqlnd php72w-mbstring php72w-pecl-redis php72w-pecl-memcached php72w-devel 验证 php -v (2)配置php-fpm 上面流程说了我们直接配置/etc/php-fpm.d里的www.conf,当然这个名字随便取因为/etc/php-fpm.conf文件会引用所有配置include=/etc/php-fpm.d/*.conf 改一下www.conf里的user=博客目录的普通用户要是root也行 listen是启动的端口和ip看需求改 (3)启动php-fpm systemctl start php-fpm (4)查看状态 systemctl status php-fpm (5)停止 systemctl stop php-fpm
-
使用
将前端live2d-widget文件夹放入直接Jekyll的工程myBlog目录就行,后端live2d_api放到live2d-widget里面
-
部署启动api
(1)php-fpm已经再默认的127.0.0.1:9000服务启动了,用ng代理指向就行
//代理模型 location ^~ /live2d_api/model/ { root /home/test/blog/live2d-widget; //live2d-widget目录路径 } //服务指向 location /live2d_api/ { fastcgi_pass 127.0.0.1:9000; //php-fpm服务 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; root /home/test/blog/live2d-widget; //live2d-widget目录路径 }
(2) live2d-widget文件夹改一下autoload.js中的live2d_path和apiPath
const live2d_path = "/live2d-widget/";就这样就行 apiPath: "http://192.168.56.108:9999/live2d_api/", 地址要是nginx监听的ip和端口
(3) 改了记得重新启动jekyll就行了
五、Git提交自动部署
思路:服务器建立git裸库最为公共仓库,jekyll博客项目目录纳入git管理并关联公共仓库,工作电脑拉取共仓库代码进行修改提交。jekyll博客项目目录git设置post-update钩子,当工作电脑推送到公共仓库主线时自动拉取最新代码并重启相关服务。
post-update钩子示例:
#!/bin/bash
unset GIT_DIR
NowPath=`pwd`
DeployPath=/home/test/blog
cd $DeployPath
git pull origin master
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
rvm use 3.0.0
rvm use 3.0.0@firstGemset
jekyll build --source /home/test/blog --destination /home/test/blog/_site
cd $NowPath
exec git update-server-info
exit 0