Ubuntu搭建Tale个人博客

2017/10/29 other

Ubuntu搭建Tale个人博客

一直以来,Java类型的动态博客相比静态博客都是处于劣势,即便现在也是一样。但作为一个写Java的码农,总是更青睐于Java自己写的博客。

Tale博客基于Java语言编写,最新版只需要Java运行环境即可,Github主页有详细的介绍。这里附下我的安装过程供参考。

Tale博客我已经搭建好半年之久了,搭建过程也遇到了一些问题,但是当时没有记录,Tale作者自己写的教程比较简单,附的教程也是别人写的,这次受到国外服务器访问风波,换了一个服务器,重新搭建了新版的Tale,在此记录搭建过程。有疑问或对本文内容有不同意见的欢迎留言。

服务器信息

操作系统:Ubuntu 16.04 X86_64

安装前须知

本人使用的是Windows系统,如果你也是,你需要必备以下的基础才能继续操作

  • 知道Windows怎么连接linux,这里我用的为Shell
  • 知道怎么上传文件到服务器,我用的WinSCP
  • 基本了解Linux的常用命令操作,尤其是vim操作(虽然本文附出大部分命令,但如果你一点不了解,你会寸步难行)
  • 本系列教程全部使用root账户操作,进行操作前请将账户切换为root。命令:su,也可不切换,但必须在下面每条命令前添加sudo

JDK1.8安装

下载

因为oracle官网的jdk下载地址有权限验证,需要自己手动到oracle官网去下载jdk1.8, 下载地址:这里

如果服务器为国外的服务器,直接在服务器上下载会比你在本地下载再上传到服务器快很多 下载方式:进入上面的下载地址下载,我下载的是Java SE Development Kit 8u152版本,再到浏览器的下载管理右键复制链接,再到shell终端输入命令 wget -O jdk1.8.tar.gz 复制的链接地址即可下载到当前目录并保存文件名为“jdk1.8.tar.gz”

假设已将压缩包下载到/home/veir目录下

进入目录
cd /home/veir
#解压
tar -zxvf jdk1.8.tar.gz
#将jdk文件夹复制到/usr/local目录下,同时重命名为jdk1.8
mv jdk1.8.0_152 /usr/local/jdk1.8
#解压后即可删除原压缩包,如果怕后面还需要,也可暂时不删除
rm -rf jdk1.8.tar.gz

环境变量配置

#编辑环境变量配置文件
vim /etc/profile
#在文件的最后加入下面的配置信息,注意JAVA_HOME路径要与jdk实际路径匹配
export JAVA_HOME=/usr/local/jdk1.8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
#使环境变量生效
source /etc/profile

验证

要验证是否安装成功很简单,在终端输入 java -version,显示出java版本号代表配置成功

安装Tale

下载

在Tale的github主页下载最新版博客,上传到服务器,我将文件上传到服务器的/home/veir目录下

启动

使用前先解压

unzip unzip tale-least.zip

Tale博客启动特别简单,进入到tale目录一条命令即可搞定:java -jar tale-least.jar,但这里不推荐这种启动方式,因为这种方式启动,一旦关闭终端,Tale也就停了

新版的博客自带了一个脚本tale-cli,查看该脚本的用法:

COMMANDS:
    start    启动tale
    stop     停止当前tale实例
    reload   重新启动当前tale实例
    log      查看当前tale日志
    status   查看当前tale状态
    upgrade  升级当前的tale版本
    help, h  Shows a list of commands or help for one command

使用脚本的启动方式就为

cd /home/veir/tale
#给脚本执行权限
chmod +x tale-cli
#启动Tale
./tale-cli start

现在即可看到tale成功启动的提示:

root@ubuntu:/home/veir/tale# ./tale-cli start
Tale 启动成功, 可以使用 ./tale-cli log 命令查看日志.

安装

接下来就更简单了,访问http://ip地址:9000,开始傻瓜式操作,填写必要的信息,完成即可。

开机自启动

服务器一般不必重启,所以一般也不必配置开机自启动;但是我自己经常鼓捣我的服务器,会不可避免的重启,所以还是配置一下开机自启动为好。

#写一个自启动脚本
cd /etc/init.d
vim tale

#在文件加入以下内容
#######文件内容分割线#######
#!/bin/bash
#program

export JAVA_HOME=/usr/local/jdk1.8
export JRE=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE/lib:.
export PATH=$PATH:$JAVA_HOME/bin/:$JRE/bin

nohup java -jar /home/veir/tale/tale-least.jar >/home/veir/tale/logs/tale.log  &

exit 0
#######文件内容分割线#######

#给tale可执行权限
chmod +x tale
#配置开机自启动此脚本 99表明一个优先级,越高表示执行的越晚
update-rc.d tale defaults 99
#移除Ubuntu开机脚本
#update-rc.d -f tale remove

现在reboot试试,看看在开机之后能否直接访问之前的地址

安装过程本来到现在为止也就完了,但我们是在服务器上访问,我总不能一直输入ip+端口号来访问吧?所以我们要配置域名访问

域名访问(Nginx代理)

平时我们以类似于www.veir.site这样的域名方式来访问,这就要看下面的过程。

注意:要以域名访问,如果服务器在国内,那必须得在工信部备案才能正常访问,但是部分小众域名在国内暂时又是不能备案的;国外的服务器就可以免去这些烦恼。

域名解析

要配置域名访问,首先得要有一个域名,我是在阿里云购买的域名,地址,当然其他地方购买的也可以

购买好后,进入控制台管理刚注册的域名,点击”添加解析”,添加一个”A”记录解析到你服务器地址

记录类型:A
主机记录:@
解析线路:默认
记录值:IP地址
TTL值:10分钟(默认就好)

上面的解析是将这样的域名解析到服务器ip地址上(比如:veir.site解析到94.xx.xx.xx) 如果你想veir.site访问,那到此为止,域名解析也就完了;如果你想以这样的域名www.veir.site来访问,则需要添加二级域名解析:

记录类型:CNAME
主机记录:www
解析线路:默认
记录值:域名.后缀   (例如:veir.site)
TTL值:10分钟(默认就好)

这样,就将www.veir.site解析到你到服务器上面了

免端口访问

现在请求是能到达你的服务器了,但是现在还要在域名后加一个端口号“:9000”才能访问,因为浏览器访问网站的默认端口为80(HTTPS端口为443),想要不加端口号也能访问,有两种方式:

  • 修改Tale的默认端口号为80: 修改tale/resources/目录下app.properties文件,添加一行
    server.port=80
    
  • 使用Nginx代理,这也是本文推荐的方式

使用Nginx代理有很多优点,除了可以代理服务器上除Tale之外的应用,使二级域名访问不同的应用外,还可以对网站启用SSL访问,简直不能太好!

Nginx安装

先在服务器上安装Nginx

apt-get update
apt-get install nginx

此时Ngin应该在你的服务器上安装好了,我们使用systemctl status nginx查看Nginx是否启动 如果看到“Active: active (running)”字样说明已经成功启动,否则可以尝试systemctl start nginx来启动Nginx,还是失败的后可能是80端口被占用,可以尝试下面的方式解决

netstat -ntlp | grep 80     #查看占用的进程
kill -9 进程号     #杀死进程

启动成功后可以在浏览器输入http://服务器IP,成功访问会看到“Welcome To Nginx”字样

附上Nginx的常用命令:

systemctl start nginx   #启动
systemctl stop nginx    #停止
systemctl restart nginx #重新启动
systemctl reload nginx  #修改配置文件后重新加载配置文件
systemctl disable nginx #关掉开机自启动Nginx
systemctl enable nginx  #开启开机自启动

Nginx代理Tale

我们写一个Nginx配置文件,为了方便管理和查看,文件名就为要访问的域名,一个域名一个文件

vim /etc/nginx/sites-available/www.veir.site
#写入下面的内容

#######文件内容分隔线#########
server {
    server_name www.veir.site;
    listen 80;
    location / {
        proxy_redirect off;
        proxy_pass http://127.0.0.1:9000;
        proxy_http_version 1.1;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    }
}

#如果想输入veir.site也能直接访问www.veir.site的话,再添加下面的,否则就不用了
server {
    server_name veir.site;
    return 301 $scheme://www.$host$request_uri;
}
#######文件内容分隔线#########

#建立一个软链接到nginx生效的目录
ln -s /etc/nginx/sites-available/www.veir.site /etc/nginx/sites-enabled/www.veir.site
#使配置文件生效
systemctl reload nginx.service  #Ubuntu 16 版本方式
#service nginx reload #Ubuntu 14 版本方式

这时,在Nginx和Tale都已经启动了,并且域名管理的地方也做了域名解析并生效之后,我们就可以直接输入域名访问Tale了。试试看!

给网站添加HTTPS

SSL协议主要用来提供对用户和服务器的认证,激活SSL协议,实现数据信息在客户端和服务器之间的加密传输,可以防止数据信息的泄露。保证了双方传递信息的安全性,而且用户可以通过服务器证书验证他所访问的网站是否是真实可靠。————以上摘自百科。

当我们使用浏览器访问类似于百度、谷歌这样的大型网站的时候,我们会在浏览器的地址栏左边看到一个“绿色加锁”的符号,chrome还会显示“安全”字样,这样的网站代表他是受浏览器信任的,现在还有部分网站没有开启SSL证书访问,这样的网站通常会以一个感叹号来标示,而证书有问题的网站,chrome默认会禁止访问并给出访问警告。所以,给自己的网站开启SSL访问时很有必要的。

一般SSL证书是要给钱的,但还好有我们的开源世界,他就是Let's Encrypt,具体的大家自行去搜索了解就够了,下面给出安装Let's Encrypt证书的过程。

apt-get update
apt-get install software-properties-common
add-apt-repository ppa:certbot/certbot
apt-get update
apt-get install python-certbot-nginx

#自动配置Nginx,根据提示进行操作
certbot --nginx

这时你再访问你的网站,看看https://域名能否正常访问,在chrome等浏览器中地址栏左边是否出现了“绿锁”图标,是的话,恭喜你,大功告成了!

遗憾的是,Let's Encrypt每次申请的SSL证书只有90天的有效期,我们可以通过以下命令设置证书自动续订

#测试自动续订能否工作
certbot renew --dry-run
#设置自动续订
certbot renew

其他

Ubuntu服务器默认没有开启防火墙,但是作为一台服务器,为了安全着想,防火墙最好还是开启为好。

ufw是ubuntu自带的防火墙管理工具,相比linux默认的iptables配置更简单,这里以ufw为例。如果运行下面的命令出现“找不到ufw”命令,使用apt-get install ufw安装。

#先给ufw允许访问的list中添加一些常用端口,尤其是你shell连接到服务器的端口
ufw allow 80    #允许80端口访问
ufw allow 22    #如果SSH端口为默认的22,开启此端口的访问
ufw allow 443    #允许HTTPS的443端口访问
……
#其他类似
ufw allow 3000-3003    #开启3000到3003之间的所有端口
ufw enable  #开启防火墙并开机启动
ufw default deny    #默认拒绝所有端口访问
ufw status      #查看ufw允许访问的端口列表

如果要删除之前建立的规则

ufw status numbered     #带行号显示
ufw delete 行号      #删除某条规则

结束

恭喜你完成了个人博客的搭建。但搭建只是一方面,个人博客更重要的是内容,所以经常写博客才是更重要的事。

如果你在安装过程中出现了其他问题,欢迎给我留言或给我发邮件,QQ直接找我请备注好信息。

Search

    Table of Contents