一、前言
这几天正直双11,阿里云搞活动,于是还是新用户的我,团购了3年阿里云服务器,当然配置是最低级的那种。既然买了服务器,趁着备案期间,左右没事,就先把博客弄过来吧。废话不多说,下面是我搭建博客的步骤。用小本本记下来,以后备用。
二、准备工作
- 服务器环境:
- centos7 7.4.1708
- 软件工具
- SSH远程终端工具:xshell
- 预期效果
- 博客完美运行,可使用
127.0.0.1:4000
访问 - 搭配域名,使用nginx达到域名访问的效果
- 博客完美运行,可使用
三、搭建博客
-
安装rvm
- 为啥要安装rvm?因为我们jekyll是运行在ruby上。而ruby官方建议使用rvm装。所以我们就装吧。
- 安装步骤:
- 执行
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
命令,该命令是从rvm官网拷贝下来的。它的官网是:https://rvm.io/
。执行完后如图所示:
- 等待上方执行完毕后,执行
\curl -sSL https://get.rvm.io | bash -s stable
命令。安装rvm。静待它执行完毕,结果如图所示:
- 一般如果安装成功后,会出现上图红框所示。下面就按照它的提示执行下,即
source /etc/profile.d/rvm.sh
- 执行
rvm -v
,查看是否安装成功。
- 执行
-
安装ruby
- rvm安装完毕了。接下来使用rvm安装ruby吧。
- 使用
rvm list known
列出可安装ruby的版本
- 我们这边安装ruby 2.5.1版本。输入
rvm install 2.5.1
. - 安装完后使用
ruby -v
查看已安装ruby的版本。输入gem -v
查看gem的版本
- 输入命令
gem sources --add https://mirrors.tuna.tsinghua.edu.cn/rubygems/ --remove https://rubygems.org/
使用清华源,并且移除默认的源 - 输入
gem sources -l
查看gem使用的源
-
安装jekyll
- 接下来就剩安装jekyll了,然后我们就可以搭建了一个属于我们自己的博客了。
- 输入命令:
gem install jekyll bundler
- 输入命令
jekyll -v
- 至此jekyll就安装好了。接下来因为我是迁移。所以我本地有一份备份的数据。我直接把文件夹copy到服务器的
/opt/local/blog
下。 - 到
/opt/local/blog
下执行jekyll server -I -B
命令启动jekyll。出现如下错误。
- 如果目录下有
Gemfile.lock
文件,则删除该文件后按照提示,我们执行下bundle install
出现如下提示,我们先不管,让他执行下去
- 如果目录下有
- 执行结束后,我们再输入
jekyll server -I -B
启动我们的jekyll服务.(-I:开启新增文件自动编译,-B:后台运行)
- 到此,博客迁移完成。
四、安装宝塔面板
- 为啥要装这个面板:
- 因为该面板可以方便的管理Linux系统资源,支持一键创建网站、FTP、数据库、SSL;安全管理,计划任务,文件管理,PHP多版本共存及切换;自带LNMP与LAMP等等。所以我们装一个玩玩吧。
- 宝塔官网:
https://www.bt.cn/
.这里我们安装5.9版本。 - 输入
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh
,安装5.9免费版 - 安装完成后,会把访问面板的连接、用户名、密码输出到屏幕上。如图:
- 接下来就可以登录该地址玩耍了~~
五、配置nginx
- 登录宝塔后,他会弹出界面让你选择是否需要安装LAMP或者LNMP。因为我不会PHP。所以这里我就只装nginx。
- 安装完nginx后。他的配置目录在
/www/server/nginx/conf
下。我们新建个conf.d
文件夹。以后我们所有的配置都放到该文件夹下。 - 编辑
/www/server/nginx/conf/nginx.conf
文件。把/www/server/nginx/conf/conf.d
下面的所有*.conf包含进来1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40.....
http
{
....
server
{
#监听888端口
listen 888;
#匹配指定域名
server_name www.bt.cn;
# 主页html文件名
index index.html index.htm index.php;
#跟路径
root /www/server/phpmyadmin;
#error_page 404 /404.html;
include enable-php.conf;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /\.
{
deny all;
}
#访问日志
access_log /www/wwwlogs/access.log;
}
include /www/server/panel/vhost/nginx/*.conf;
#把`/www/server/nginx/conf/conf.d`下面的所有*.conf包含进来 使用相对路径
include conf/conf.d/*.conf;
} - 到
conf.d
目录,创建我们自己配置文件jekyll.conf1
2
3
4
5
6
7
8
9
10
11server{
#监听80端口
listen 80;
#匹配指定域名
server_name blog.zyzling.top;
#所有的请求
location / {
#转发请求到本地的jekyll
proxy_pass http://localhost:4000;
}
} - 重启nginx(service nginx restart,至此可以使用域名
blog.zyzling.top
访问自己的博客了
六、编写jekyll自启动脚本
- centos自启动脚本可以放到
/etc/init.d
目录下。我们到改目录创建我们的启动脚本startBlog.sh
。该脚本是我自己百度拼凑的。所以写的不怎么好。脚本内容如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59!/bin/bash
chkconfig: 345 80 20
description: start the jekyll server
Source function library
prog=startBolg
博客的根路径
BLOG_HOME=/opt/local/blog
jekyll命令的位置
JEKYLL_HOME=/usr/local/rvm/rubies/ruby-2.5.1/bin
导入环境变量
export PATH=$JEKYLL_HOME:$PATH
#################启动Jekyll服务#####################
startBlog()
{
### 获取指定进程的PID
JEKYLL_PID=`ps -ef | grep jekyll | grep -v grep | awk '{print $2}'`
if [ ! -n "$JEKYLL_PID" ]; then
echo "starting jekyll..."
cd $BLOG_HOME
jekyll server -I -B
else
PID不为空,则提示jekyll已经运行,并且打印端口
echo "jekyll server already running.PID is $JEKYLL_PID"
fi
}
###############停止Jekyll服务######################
stopBlog(){
echo "stoping jekyll..."
### 获取指定进程的PID,结束进程时用
JEKYLL_PID=`ps -ef | grep jekyll | grep -v grep | awk '{print $2}'`
## 先判断pid是否为空,如果不为空就kill -9,如果为空则说明没有运行jekyll
if [ ! -n "$JEKYLL_PID" ]; then
echo "jekyll server don't run.."
else
echo "kill jekll pid is $JEKYLL_PID"
kill -9 $JEKYLL_PID
fi
}
case "$1" in
start)
startBlog
;;
stop)
stopBlog
;;
restart)
stopBlog
startBlog
;;
*)
echo "Usage: $prog {start|stop|restart}"
;;
esac
exit 0 - 2019-1-7 修改
startBlog
,实现jekyll自动加载博文并且终端结束也不会断开。主要使用了nohup
命令。关于nohup
命令大家可以自行百度下。我也是小白~~文件如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65!/bin/bash
chkconfig: 2345 100 20
description: start the jekyll server
Source function library
prog=startBolg
博客的根路径
BLOG_HOME=/opt/local/blog
jekyll命令的位置
JEKYLL_HOME=/usr/local/rvm/gems/ruby-2.5.1/bin:/usr/local/rvm/gems/ruby-2.5.1@global/bin:/usr/local/rvm/rubies/ruby-2.5.1/bin
JEKYLL_HOME=/usr/local/rvm/gems/ruby-2.5.1/bin/:/usr/local/rvm/rubies/ruby-2.5.1/bin/:/usr/local/rvm/gems/ruby-2.5.1@global/bin/
JEKYLL_HOME=/usr/local/rvm/gems/ruby-2.5.1/bin/bundle:/usr/local/rvm/rubies/ruby-2.5.1/bin/bundle
JEKYLL_HOME=/usr/local/rvm/rubies/ruby-2.5.1/bin/:/usr/local/rvm/gems/ruby-2.5.1/bin/:/usr/local/rvm/gems/ruby-2.5.1/bin/bundle
导入环境变量
export PATH=$JEKYLL_HOME:$PATH
echo $PATH
#################启动Jekyll服务#####################
startBlog()
{
### 获取指定进程的PID
JEKYLL_PID=`ps -ef | grep jekyll | grep -v grep | awk '{print $2}'`
if [ ! -n "$JEKYLL_PID" ]; then
echo "starting jekyll..."
cd $BLOG_HOME
主要修改了这里,使用了nohup命令
nohup jekyll server -I >/dev/null &
bundle exec jekyll server -I -B
/usr/local/rvm/gems/ruby-2.5.1/bin/jekyll server -I -B
else
PID不为空,则提示jekyll已经运行,并且打印端口
echo "jekyll server already running.PID is $JEKYLL_PID"
fi
}
###############停止Jekyll服务######################
stopBlog(){
echo "stoping jekyll..."
### 获取指定进程的PID,结束进程时用
JEKYLL_PID=`ps -ef | grep jekyll | grep -v grep | awk '{print $2}'`
## 先判断pid是否为空,如果不为空就kill -9,如果为空则说明没有运行jekyll
if [ ! -n "$JEKYLL_PID" ]; then
echo "jekyll server don't run.."
else
echo "kill jekll pid is $JEKYLL_PID"
kill -9 $JEKYLL_PID
fi
}
case "$1" in
start)
startBlog
;;
stop)
stopBlog
;;
restart)
stopBlog
startBlog
;;
*)
echo "Usage: $prog {start|stop|restart}"
;;
esac
exit 0 - 更改文件为
startBlog
并添加执行权限。运行试试效果。结果如下:
- 执行
chkconfig startBlog on
加入启动项。重启后验证是否成功。
七、总结
- 这次迁移,又复习了下如何搭建jekyll以及如何写简单的shell脚本。
- 总之收货还是有的。其次还有点问题。后面的自启动jekyll的shell脚本还是有点问题。不能做到开启启动。应该是因为环境变量的问题。但是不知道怎么去解决了,原谅我对linux玩不熟。望大家指点。
然后jekyll有个毛病,即如果是后台运行,你添加文件到_post目录,他不会自动加载,得非后台时才会自动加载。但是我们终端关闭后,后台也自动结束了。这个问题没有解决。网上应该有解决方案。留到下次解决吧 到现在,只能在每次加入新博文的时候,手动去执行startBlog restart
命令去重启jekyll。这点待优化- 到现在,需要在重启服务器后,自己执行下
startBlog start
命令,然后后面新增博文也不用执行startBlog restart
命令重启jekyll服务了。 add by 2019-01-07
评论