wblog博客线上部署

2022-11-24 18:01:22 浏览数 (2)

SpringBoot博客部署

环境准备

博客项目地址

wblog

安装JDK

JDK8以上就行,但建议使用JDK11,下面以JDK11为例。

  • 下载安装
代码语言:javascript复制
apt-get install openjdk-11-jdk
  • 配置环境变量

打开source /etc/profile,添加如下内容

代码语言:javascript复制
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
  • 查看版本
代码语言:javascript复制
java -version

安装MySQL

安装MySQL5.7docker版本。

代码语言:javascript复制
#安装docker
apt install docker.io
# 安装mysql
docker pull mysql:5.7

服务器安全组中务必放行3307端口,用来远程连接数据库。

  • 启动mysql
代码语言:javascript复制
sudo docker run -p 3307:3306 --name mysql 
-v /mydata/mysql/log:/var/log/mysql 
-v /mydata/mysql/data:/var/lib/mysql 
-v /mydata/mysql/conf:/etc/mysql/conf.d 
-e MYSQL_ROOT_PASSWORD=root 
-d mysql:5.7

3307:3306做了映射,所以外部访问3307即可。当然你自己可以定义用哪些端口号。

  • 查看运行状态
代码语言:javascript复制
docker ps
  • 查看日志
代码语言:javascript复制
docker logs mysql
  • 其他
代码语言:javascript复制
# 停止服务
docker stop mysql
# 删除镜像
docker rm mysql
# 重启docker
systemctl restart docker
# 开启开机自启
systemctl enable docker

还有很多关于docker的操作,就自己去补课了。

  • 导入数据库

我这里用的navcat远程客户端操作。

打jar包

使用IDEA打开项目,配置好数据库信息。安装下图操作,生成一个jar包。

等待打包完成。

部署

在服务器上创建一个目录,用来存放项目的目录。

代码语言:javascript复制
# 创建目录
mkdir -p /root/user/wblog
  • 上传刚刚打好的jar包到/wblog目录下。

上传的方法很多,可以用scp命令,也可以用其他ssh客户端,比如xshell,finalshell等。

  • 执行命令,运行jar包。

该命令也是需要切换到wblog目录下执行的。

代码语言:javascript复制
nohup java -jar jarname.jar &

jarname.jar指的就是刚刚上传到目录下的jar包,一定要带.jar后最的全称。

按回车执行之后会出现下面的结果

当然了,我这个只是演示,没有在指定的目录下,这就表示jar包已经成功跑起来了,如何查看目前正在运行的java服务呢?

代码语言:javascript复制
ps -ef | grep java

当然,方法并不唯一。

查看的结果如上图,箭头所指的就是改服务的PID,后期如果需要,我们可以通过 kill命令将该进程杀死,再重新运行新的java进程。

上面的步骤走完,不出意外的话,我们打开浏览器,输入服务器的IP访问8080端口就可以正常访问博客网站了。


域名访问配置

在开始之前,默认你已经买了属于自己的域名并且完成备案(非大陆服务器忽略)工作,否则是没办法继续这一步的,网站会被拦截。

说到服务器、域名,国内有很多不错的供应商,比如什么阿里云、百度云、腾讯云、华为云等等,还有一些小的云服务提供商我自己也都用过

进入控制台,找到域名DNS解析。

如果没有域名,点击【添加域名】,之后等待解析,【DNS服务器状态】显示正常之后,点击域名进入域名解析详情:

点击【添加记录】我们添加两个A记录即可,具体如下:

注意,【主机记录】的对方每次只能添加一种记录,所以需要执行两次【添加记录】的操作,分别是www和@。

www记录的意思就是解析以www开头的记录,映射到对应的IP地址上,而@表示直接解析域名。举个例子:

代码语言:javascript复制
www.ilikexff.xyz
ilikexff.xyz

上面的两个域名都可以被正常解析访问。

配置完域名解析之后,我们就可以通过域名进行访问了,方法就是直接将之前的IP地址部分替换为刚刚解析的域名,但是8080端口号不能少,否则是不能正常访问的哈,这是因为我们访问是服务器默认访问的80端口,而我们项目用的端口是8080,所以这里要将端口进行转发,将8080端口转发到域名,使得直接访问域名即可访问到对应的网站,而不再需要输入端口号。这也就是下一步反向代理技术。

反向代理

反向代理我们用的是nginx服务。

  • 安装nginx.
代码语言:javascript复制
apt install nginx -y
  • 配置nginx
代码语言:javascript复制
# 切换到nginx的配置目录,创建一个针对博客的配置文件
cd /etc/nginx/conf.d/
# 创建blog.conf配置文件
touch blog.conf
  • 配置内容

由于我们是对每一个服务采用独立的配置文件,所以不需要在原生的nginx.conf中作配置,只需要独立的配置 blog.conf即可,因为在源配置文件中有这样一句:

这就表示改配置文件会把在/etc/nginx/conf.d/目录下的所有以.conf结尾的文件都自动的包含进来进行加载使用。

在blog.conf中添加下面的内容:

代码语言:javascript复制
server {
    listen       80;
    server_name  www.ilikexff.xyz ilikexff.xyz;
    location / {
        proxy_pass   http://103.133.176.214:8080;
        index  index.html index.htm;
        proxy_set_header Host $host;
        proxy_set_header X-Real-Ip $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
    access_log /logs/ilikexff.xyz.access.log;
}

作为使用教程,我们只需要大致了解下面几点即可:

  • listen : 监听80端口,也就是我们上面提到的默认访问端口
  • server_name:服务名,这里指的就是需要将服务转发到哪些地址,比如前面配好的两个域名。
  • proxy_pass : 反向代理的地址,也就是使用IP访问时候的地址,他会将该地址直接转发到配置好的域名下,达到访问域名即可访问站点的效果。
  • access_log:日志记录文件。

关于nginx,作为一篇搭建教程来说,上面的东西足够了,但是作为一门技术来说,上面的东西又只是皮毛,所以想要了解更多的内容还是得自己去学。

到此为止,反向代理部分就结束了,重启nginx服务之后,在浏览器输入:

www.ilikexff.xyz ilikexff.xyz

两个域名之一都可以正常访问站点了,无需再追加8080端口。

下面给几个关于nginx得常用命令:

代码语言:javascript复制
# 启动
systemctl start nginx
# 停止
systemctl stop nginx
# 重启
systemctl reload nginx
# 状态查看
systemctl status nginx

https加密访问

经过上面反向代理步骤,我们已经可以通过域名访问博客了

但是如上显示,访问得时候浏览器会提示网站不安全,即我们还是通过普通得http协议进行访问,这是一种很不安全的协议,任何中间人都可以通过技术手段对网站收发的数据进行拦截,尽管说作为普通的博客站点,我们也许没有如支付,转账等敏感的操作,但是安全起见,我们需要使用到另外一种协议,HTTPS(HTTP SSL),就目前而言,这是一种足够安全的协议,具体为什么安全,这是个话题,请自行了解。

(很多博客都有友链功能,很多朋友的博客对友链的要求都需要是https安全访问的,所以这一步必不可少)

  • 申请SSL证书

证书申请

下载证书之后,在 etc/nginx/新建一个 cert文件夹,把证书中两个后缀名为.pem和.key的文件重命名为 sslconfigure.pemsslconfigure.key,并放到cert目录下,方便管理。

在之前的 blog.conf配置文件中新增如下内容:

代码语言:javascript复制
upstream backend {
    server localhost:8080; # Solo 监听端口
}
# 这里存放之前的内容部分
server {
        listen 443 ssl;  # 1.1版本后这样写
        server_name www.iliexff.xyz; #填写绑定证书的域名
       
        ssl_certificate "/etc/nginx/cert/sslconfigure.pem";
        ssl_certificate_key "/etc/nginx/cert/sslconfigure.key";
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
        ssl_prefer_server_ciphers on;
      location / {
            proxy_pass http://backend$request_uri;
            proxy_set_header Host $host:$server_port;
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header http_x_forwarded_for $remote_addr;
            client_max_body_size 10m;
 root   html; #站点目录,绝对路径
            index  index.html index.htm;
        }
    }

重启nginx

代码语言:javascript复制
systemctl reload nginx

再次访问博客

哇哦!这不就成功了吗?so easy to happy!

全剧终

0 人点赞