使用jekyll搭建个人博客

Posted by 帝八哥 on December 24, 2018

1.服务器环境搭建

  • 准备服务器
    • 申请服务器资源, 参见 阿里云腾讯云
    • 选择Linux系统
    • 创建root账户, 参见各云平台或百度操作, 一般分为3步
      • 配置管理员密码
      • 重启服务器
      • 记录服务器的公网IP地址

2.登录服务器, 安装必要的软件工具包

  • 安装ruby
    • 安装ruby
      # 安装ruby
      $ sudo yum install ruby
    
    • 安装rvm
      # 升级ruby版本2.4
      # 升级gcc
      $ yum install -y gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison iconv-devel
      # 安装rvm信任证书
      $ curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -
      # 安装rvm
      $ curl -L get.rvm.io | bash -s stable
      # 退出账户再登录, 以激活rvm
      $ exit
      # sshde登录
        
      $ ssh root@服务器公网IP
      # 输入密码, 确认
      # 加载rvm的配置
      $ source /etc/profile.d/rvm.sh
      # 查看rvm的版本, 以确认rvm安装成功
      $ rvm -v
    
    • 升级ruby, 版本2.4.5
      # 查看当前系统已安装的ruby的版本
      $ ruby -v
      # 查看ruby的所有已发布版本
      $ rvm list known
      # 制定安装版本(2.4较稳定)
      $ rvm install 2.4
      # 加载ruby的说明文档
      $ rvm docs generate-ri
    
    • 安装ruby-gem
      # 若提示'gem command not found', 则需要安装ruby-get
      $ yum install rubygems
    
      # 安装jekyll
      $ gem install jekyll bundler
      # 安装分页插件
      $ gem install jekyll-paginate
    
  • 安装git
    • 首先, 创建自己的软件管理目录, 个人建议方式: /你的名字/SoftWare, 示例:
      $ cd /
      $ mkdir caofanCPU
      $ cd /caofanCPU
      $ mkdir SoftWare
    
      # centos系统
      $ yum install curl-devel expat-devel gettext-devel \
         openssl-devel zlib-devel
      # ubuntu系统  
      $ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \
          libz-dev libssl-dev
        
      # 切换到软件目录下
      $ cd /caofanCPU/SoftWare
      # 创建git的根目录
      $ mkdir Git
      # 进入git根目录
      $ cd Git
        
      # 方式一: 软件安装
      $ yum install git-core
        
      # 方式二: 命令下载git源码, 重命名'git-latest'
      $ cd /caofanCPU/SoftWare/Git
      # 获取git-2.20.1的源码
      # wget https://www.kernel.org/pub/software/scm/git/git-2.20.1.tar.gz
      $ 解压
      $ tar -zxf git-2.20.1.tar.gz
      # 创建git软件目录
      $ mkdir git-local
      # 切换到源码目录
      $ cd ../git-2.20.1
      # 设置编译连接后的软件目录, 即git软件目录
      $ make prefix=/caofanCPU/SoftWare/Git/git-local all
      # 编译链接, 在git软件目录下生成软件
      $ sudo make prefix=/caofanCPU/SoftWare/Git/git-local install
      # 查看git版本, 确认源码安装成功
      $ git --version
    

3.克隆博客网站的源码

  • 建议在本机(Windows系统)安装IDEA, javapython都行 IDEA自动集成MarkDown, 方便以后写博客文章
  • 回到Linux服务器, 下载博客代码
    • 创建博客根目录
      $ cd /caofanCPU
      $ mkdir Blog
      $ cd Blog
      $ git clone https://github.com/caofanCPU/caofanCPU.github.io.git
    
  • 开启服务器端口
    • 网页配置(推荐), 到阿里云控制台配置, 参见阿里云服务器开端口
    • 装逼操作, shell解决, 参见阿里云iptablesw文件不存在
      • 关闭防火墙
        $ systemctl stop firewalld
      
      • 配置iptables服务
        # 安装服务
        $ yum install iptables-services
        # 启动服务
        $ systemctl enable iptables
        # 查看服务, 确认成功
        service iptables status
      
      • 配置端口文件
        $ vim /etc/sysconfig/iptables
        # 参照端口22添加8080-8099, 4000的端口
        # 22端口用于ssh登录, 默认开启
        -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
        # 80-89端口用于nginx集群
        -A INPUT -p tcp -m state --state NEW -m tcp --dport 80:89 -j ACCEPT
        # 8080-8099端口用于应用服务
        -A INPUT -p tcp -m state --state NEW -m tcp --dport 8080:8099 -j ACCEPT
        # 4000用于本博客
        -A INPUT -p tcp -m state --state NEW -m tcp --dport 4000 -j ACCEPT
      
      • 重启防火墙
        service iptables restart
      
      • 备注: 阿里云对于服务器端口有管控, 若方式二行不通, 就用方式一解决
  • 使用jekyll启动博客服务
    • Github网站上fork仓库

    注册并登录你的Github, follow caofanCPU, 他会提供技术支持的哦

    找到博客仓库, 点击fork, 再回到你自己的仓库

    复制你的仓库地址, 以下均以我自己的仓库为例子, 建议你改为你自己的

    • 切换到博客git仓库的根目录
      $ cd /caofanCPU/Bolg/caofanCPU.github.io
    
    • 指定公网IP启动博客服务
      $ nohup jekyll s -w --host=0.0.0.0 &
    
    • 解决jekyll版本更新的问题
      # 常见问题: 'jekyll 3.8.5 | Error:  jekyll-paginate'
       和 'Deprecation: The 'gems' configuration option has been renamed to 'plugins'. Please update your config file accordingly'
       更改配置文件 _config.yml
       将'gems: [jekyll-paginate]'改为'plugin: [jekyll-paginate]'
         
       改完后, 提交代码到远程仓库
       $ git fetch --all && git reset --hard origin/master && git pull
       $ git push -u
    
    • 再次启动服务
      $ nohup jekyll s -w --host=0.0.0.0 &
      # 看到如下内容则博客服务启动OK
      Auto-regeneration: enabled for '/caofanCPU/Bolg/caofanCPU.github.io'
          Server address: http://0.0.0.0:4000/
        Server running... press ctrl-c to stop.
    
    • 确认服务进程及端口号
      # 查询进程号
      $ ps -ef | grep jekyll
      # 根据进程号查询端口
      $ netstat -nap | grep 你看到的pid
    
  • 在浏览器上试着输入http://服务器公网IP:4000/ , 惊艳你了吗?

  • 拓展 换用域名访问博客(域名备案有点麻烦, 不想折腾的可以略过)
    • 安装Nginx

        # 安装基础工具包
        $ yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
        # 下载nginx版本1.14.0
        $ wget http://nginx.org/download/nginx-1.14.0.tar.gz
        # 解压
        $ tar -xvf nginx-1.14.0.tar.gz
        # 切换到解压后的根目录
        $ cd nginx-1.14.0
        # 执行配置
        $ ./configure
        # 编译连接
        $ make
        # 编译安装, 默认安装在/usr/local/nginx目录下
        $ make install
        # 切换到nginx软件目录
        $ cd /usr/local/nginx/conf
        # 增加虚拟域名(自定义域名)配置
        $ vim /usr/local/nginx/conf/nginx.conf
        # 在该文件倒数第二行写入(注意要带;): include vhost/*.conf;
        # 创建自定义域名配置文件目录
        $ mkdir vhost  
      
    • 配置域名代理

        # 每个域名单独创建一个配置文件, 文件命名: 域名或其缩写.config
        # 内容
        server {
            listen      80;
            server_name    你的域名(示例) www.baidu.com;
            #charset    koi8-r;
              
            #access_log    logs/host.access.log  main;
                  
            #location / {
                #root  /dev/shm/normal;
                #index  index.html  index.htm;
            #}
              
            location / {
                proxy_pass http://127.0.0.1:4000/;
                add_header Access-Control-Allow-Origin *;
                add_header Access-Control-Allow-Headers X-Requested-With;
                add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
            }
        }
      
    • nginx常用命令
      • 测试nginx所有配置是否OK
        $ /usr/local/nginx/sbin/nginx  -t  -c  /usr/local/nginx/conf/nginx.conf
      
      • 重启nginx
          $ /usr/local/nginx/sbin/nginx  -s reload
        
      • 停止nginx
          $ /usr/local/nginx/sbin/nginx  -s stop
        
      • 启动nginx
          $ /usr/local/nginx/sbin/nginx
        
      • 查看nginx主/副进程
          $ ps -ef | grep nginx
        
    • 附加 查看内存空间

        $ free -m
      
    • 收藏 jasypt密码加密
        $ cd /caofanCPU/
        $ mkdir MyUtil
        $ cd MyUtil/
        # 使用Xftp上传(XShell的快捷键 Ctrl + Alt + F), 命令方式请自行百度 'scp'
        # 上传后, 赋予脚本'pwd-encode.sh'权限
        $ chmod 777 pwd-encode.sh
        # 然后, 试试如下命令: ./pwd-encode.sh 你要加密的密码 你设定的加密盐值
        # 该脚本默认加密算法为, 如需更改, 请 vim pwd-encode.sh 可在第7行'algorithm=PBEWithMD5AndDES'进行更改
        $ ./pwd-encode.sh root 123
        # 福利, Linux生成n位随机字符串, 作为盐值, 示例: 32位的Base64随机字符串
        $ openssl rand -base64 32
      

总结

  • 欢迎关注Github 或 公众号帝八哥
  • 感谢jekyll提供的网站工具
  • 感谢博文网站源码作者Xuan Huang
  • 感谢博文原作者yezhwi
  • 捐赠|Donate, 实践撰文分享实属不易, 您的支持能为更多省时省事的分享提速, 谢谢!

微信


支付宝


MiXin