基于Spring+SpringMVC+MyBatis博客系统的开发教程(十八)

第18课:Linux 系统部署发布

项目打 War 包

项目打包之前确保你的编码格式都是 UTF-8 的,否则到 Linux 系统中会出现乱码。设置好编码格式后,看下配置文件有没有乱码,如果有乱码,将乱码文字替换成之前的中文。发生乱码的原因是有的配置文件之前采用的是 GBK 编码格式,设置编码格式如下:

enter image description here

上次我们打包使用的是 install 命令,这次我们换个打包方式,如图:

enter image description here

enter image description here

War 和 war exploded 的区别请参见博客:《Tomcat 部署时 war 和 war exploded 区别以及平时踩得坑》

在你的项目路径 dreamland\dreamland-web\target 下找到刚打包好的 dreamland-web.war,复制到桌面重命名为 ROOT.war,待会部署到 Linux 系统。

Linux 系统安装相关服务

部署项目需要 JDK、Tomcat、MySQL 等环境,所以要先安装相关服务。

准备

1. 安装 CentOS7。

不会安装的同学请参考博文:《VMware 安装14.0安装 CentOS7.2》

2. 下载安装 Xshell6 和 Xftp6。

为了更方便操作 Linux 系统,我们下载安装 Xshell6 和 Xftp6,具体步骤参考博文:Xshell6 下载安装

3. 开启虚拟机。

CentOS7 安装好以后,开启虚拟机,输入用户名密码,登陆后输入命令:

ip addr

查看该虚拟机分配的 IP 地址,如图:

enter image description here

然后打开 Xshell6,新建连接,输入名称和 IP 后点击确定,如图:

enter image description here

然后点击 dreamland,输入用户名和密码即可连接此虚拟机,如图:

enter image description here

4. 首先我们在 /home 目录下创建 softs 目录,将相关安装包都放在该目录下:

cd /home/
mkdir softs

5. 点击 xftp 图标,打开文件传输窗口,找到我们要使用的安装包,通过鼠标右键 -> 传输,将安装包上传到我们刚刚创建的 softs 目录下,如图:

enter image description here

相关安装包我会放到百度网盘中。

JDK 安装及环境变量配置

进入 softs 目录查看:

cd /home/softs/ 
ll

enter image description here

然后使用 tar -zxvf 压缩包名 解压命令解压 JDK 安装包。

tar -zxvf jdk-8u77-linux-x64.tar.gz 

解压完成以后,配置环境变量,编辑 profile 文件:

vi /etc/profile

在 profile 文件最后,点击键盘 i 可编辑内容,在文末加入以下内容:

export JAVA_HOME=/home/softs/jdk1.8.0_77  #你的jdk安装路径
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$PATH:$JAVA_HOME/bin

然后ESC,输入

:wq!

保存退出(取消保存是 :q!),如图:

enter image description here

输入以下命令使配置的环境变量立即生效:

source /etc/profile 

查看 Java 版本:

java-version

如果出现 Java 版本信息就表示配置环境变量成功,如图:

enter image description here

Tomcat 安装及开机自启动配置

进入 softs 目录,使用同样方法解压 Tomcat 安装包:

tar -zxvf apache-tomcat-8.0.47.tar.gz 

编辑 rc.local 文件,配置 JDK 路径和开机启动设置:

vi /etc/rc.d/rc.local 

在 rc.local 文件最后加上下面两行脚本,保存后退出:

export JAVA_HOME=/home/softs/jdk1.8.0_77  # jdk的安装路径
/home/softs/apache-tomcat-8.0.47/bin/startup.sh start #tomcat安装目录的启动文件

修改 rc.local 文件为可执行:

cd /etc/rc.d
chmod +x rc.local

通过下面命令可查看防火墙状态:

firewall-cmd  --state

显示 running,说明防火墙默认是打开的。

查看防火墙开放的端口:

firewall-cmd --list-ports

发现现在还没有开放端口,所以即使启动了 Tomcat 也访问不了。

防火墙设置

这里根据需要设置防火墙,即开放我们需要的端口,你也可以直接关闭防火墙。

开放端口命令如下:

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=61616/tcp --permanent
firewall-cmd --zone=public --add-port=8161/tcp --permanent

然后重启防火墙:

firewall-cmd --reload 

再次查看已开放端口:

firewall-cmd --list-ports

发现我们需要的端口已经开放,结果如下:

8161/tcp 3306/tcp 61616/tcp 80/tcp 8080/tcp

开启、关闭防火墙命令,永久性生效,重启后不会复原。

开启: chkconfig iptables on

关闭: chkconfig iptables off

开启、关闭防火墙命令即时生效,重启后复原:

开启: service iptables start

关闭: service iptables stop

防火墙设置好以后,我们重启 Linux 系统(或者使用 reboot 重启):

shutdown -r now

重启完成后,重新连接,然后输入以下命令可查看 Tomcat 服务是否开机启动:

ps -ef | grep tomcat

如果出现下图所示,说明 Tomcat 开机启动成功:

enter image description here

然后可以通过:http://192.168.241.129:8080/,访问 Tomcat 页面,如图:

enter image description here

ActiveMQ 安装及开机自启动配置

进入 softs 目录,同样方法解压 ActiveMQ 压缩包:

    tar -zxvf apache-activemq-5.15.2-bin.tar.gz

将 ActiveMQ 文件拷贝到 /etc/init.d 目录下:

cp /home/softs/apache-activemq-5.15.2/bin/activemq /etc/init.d/

编辑 /etc/init.d 目录下的 ActiveMQ 文件:

vi /etc/init.d/activemq

将 BEGIN INIT INFO 和 END INIT INFO 之间的内容修改如下:

### BEGIN INIT INFO
# chkconfig: 345 63 37
# description: Auto start ActiveMQ
# Provides:          activemq
# Required-Start:    $remote_fs $network $syslog
# Required-Stop:     $remote_fs $network $syslog
# Default-Start:     3 5
# Default-Stop:      0 1 6
# Short-Description: Starts ActiveMQ
# Description:       Starts ActiveMQ Message Broker Server
### END INIT INFO

在 EXEC_OPTION="" 下添加以下内容:

export JAVA_HOME=/home/softs/jdk1.8.0_77 #jdk路径
ACTIVEMQ_HOME=/home/softs/apache-activemq-5.15.2 #activemq路径

如图:

enter image description here

ESC 保存后退出:

:wq!

然后进入 /etc/init.d/ 目录下:

cd /etc/init.d/

修改 ActiveMQ 权限:

chmod +x activemq

然后将 ActiveMQ 添加到系统服务:

chkconfig --add activemq

使用以下命令可查看系统服务列表:

chkconfig --list 

如果出现 ActiveMQ 服务,说明添加系统服务成功。

然后重启 Linux 系统:

shutdown -r now

重启完成后,重新连接,然后输入以下命令可查看 ActiveMQ 服务是否开机启动:

ps -ef | grep activemq

如果出现下图所示,说明 ActiveMQ 开机启动成功:

enter image description here

可通过:http://192.168.241.129:8161/,访问 ActiveMQ 的 Web 管理页面,如图:

enter image description here

Redis 安装及开机自启动配置

进入 softs 目录下,解压 Redis 压缩包:

tar -zxvf redis-3.2.5.tar.gz

编写开机自启动脚本:

vi /etc/init.d/redis

输入以下脚本内容,注意将 EXEC、REDIS_CLI 和 CONF 的值改为自己的路径(最好是通过文件传输将 Redis 文件上传,因为复制的内容语法格式可能会发生错误。Redis文件已放入百度网盘,记得修改相关参数):

# chkconfig: 2345 10 90  
# description: Start and Stop redis   

PATH=/usr/local/bin:/sbin:/usr/bin:/bin
REDISPORT=6379
EXEC=/home/softs/redis-3.2.5/src/redis-server    #改为你的server路径
#EXEC=/usr/local/bin/redis-server
REDIS_CLI=/home/softs/redis-3.2.5/src/redis-cli   #改为你的client路径

PIDFILE=/var/run/redis.pid   
CONF="/home/softs/redis-3.2.5/redis.conf"       #改为你的redis.conf路径
AUTH="1234"  


case "$1" in   
    start)   
            if [ -f $PIDFILE ]   
            then   
                    echo "$PIDFILE exists, process is already running or crashed."  
               else  
                       echo "Starting Redis server..."  
                       $EXEC $CONF   
               fi   
               if [ "$?"="0" ]   
               then   
                       echo "Redis is running..."  
               fi   
               ;;   
       stop)   
               if [ ! -f $PIDFILE ]   
               then   
                       echo "$PIDFILE exists, process is not running."  
               else  
                       PID=$(cat $PIDFILE)   
                       echo "Stopping..."  
                      $REDIS_CLI -p $REDISPORT  SHUTDOWN    
                       sleep 2  
                      while [ -x $PIDFILE ]   
                      do  
                               echo "Waiting for Redis to shutdown..."  
                              sleep 1  
                       done   
                       echo "Redis stopped"  
               fi   
               ;;   
       restart|force-reload)   
               ${0} stop   
               ${0} start   
               ;;   
       *)   
              echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2  
               exit 1  
esac    

保存后退出:

:wq!

然后进入 /etc/init.d/ 目录下:

cd /etc/init.d/

设置 Redis 权限为可执行文件:

chmod 755 redis

设置 Redis 开机自启动:

chkconfig redis on

然后重启 Linux 系统:

shutdown -r now

重启完成后,重新连接,然后输入以下命令可查看 Redis 服务是否开机启动:

ps -ef | grep redis

如果出现下图所示,说明 Redis 开机启动成功:

enter image description here

MySQL 安装及开机自启动设置

因为我们需要使用 wget 命令下载 MySQL 源码包,所以先下载安装 wget(需联网):

yum -y install wget

然后下载 MySQL 源安装包:

wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

安装 MySQL 源:

yum localinstall mysql57-community-release-el7-8.noarch.rpm

中间有提示“Is this ok”,输入:y。

检查 MySQL 源是否安装成功:

yum repolist enabled | grep "mysql.*-community.*"

如果出现下图所示,说明安装成功:

enter image description here

安装 MySQL:

yum install mysql-community-server

设置 MySQL 开机启动:

systemctl enable mysqld

重新载入 systemd,扫描新的或有变动的单元:

systemctl daemon-reload

然后重启 Linux 系统:

shutdown -r now

重启完成后,重新连接,然后输入以下命令可查看 MySQL 服务是否开机启动:

ps -ef | grep mysql

如果出现下图所示,说明 MySQL 开机启动成功:

enter image description here

MySQL 安装完成之后,在 /var/log/mysqld.log 文件中给 root 生成了一个默认密码。通过下面的命令找到 root 默认密码:

grep 'temporary password' /var/log/mysqld.log

如图所示:

enter image description here

在修改密码之前,我们先修改下 MySQL 密码检查策略,因为 MySQL 5.7默认安装了密码安全检查插件,默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。太复杂不方便记忆,你也可以选择不修改。

编辑 /etc/my.cnf 文件:

vi /etc/my.cnf

在文件最后添加 validate_password = off 禁用密码检查策略。

重新启动 MySQL 服务使配置生效:

systemctl restart mysqld

修改 MySQL 默认登录密码,首先登录 MySQL,用户名为 root,密码为上面查到的:s/jOu_fdr3,r,输入:

mysql -uroot -p

然后输入密码后回车,此方式可使密码不可见。

MySQL 登录成功后,设置新密码,我这里就把密码设置为 root (和项目中的数据库密码一致):

set password for 'root'@'localhost'=password('root'); 

添加远程登录用户,下面语句表示:允许 wly 用户在任意主机上访问该数据库,访问密码为 root

GRANT ALL PRIVILEGES ON *.* TO 'wly'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

此时我就可以通过 Navicat 管理工具访问 MySQL 数据库了,如图:

enter image description here

退出 MySQL 的命令是:

exit

退出后,设置 MySQL 默认编码为 UTF-8,修改 /etc/my.cnf 配置文件:

vi /etc/my.cnf

在 [mysqld] 下添加编码配置,如下所示:

[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'

保存后退出。

重新启动 MySQL 服务:

systemctl restart mysqld

可用新密码登录 MySQL 并查看数据库默认编码:

show variables like '%character%';

查询结果如图:

enter image description here

将本地数据库导出为 dream_db.sql,在 /home 目录下新建 dreamland 目录,通过 xftp 文件上传工具,将 dream_db.sql 文件上传到 /home/dreamland/ 目录下。

然后登录 MySQL,创建数据库 dream_db 并设置字符集:

create database dream_db default charset utf8 collate utf8_general_ci;

使用 show databases; 可查看所有数据库,然后切换数据库:

use dream_db;

导入 SQL 文件:

source /home/dreamland/dream_db.sql;

使用 show tables; 可查看所有表。

使用 desc user; 可查看 User 表的表结构。

部署项目

1. 将 /home/softs/apache-tomcat-8.0.47/webapps/ 目录下的 ROOT 文件夹删除。

2. 通过 xftp 文件传输工具将之前放在桌面的 ROOT.war 上传到 /home/softs/apache-tomcat-8.0.47/webapps/ 目录下。

3. 重启 Linux 系统,重启完成后访问:http://192.168.241.129:8080/,即可访问我们的项目,如图:

enter image description here

4. 将 Tomcat 图标换成自己的,之前申请 QQ 互联的时候有上传网站图标。通过 xftp 将 favicon.ico 图标上传到 ROOT 目录下,如图:

enter image description here

重新访问,图标已更换,如图:

enter image description here

5. 注意修改你的 QQ 回调地址,在 /home/softs/apache-tomcat-8.0.47/webapps/ROOT/WEB-INF/classes/ 目录下:

redirect_URI = http://192.168.241.129:8080/qq_login

同时你的 QQ 互联网站回调域中也要增加此回调地址。

6. QQ 登录时出现 Table 'dream_db.Open_User' doesn't exist,这是因为 Linux 下 MySQL 表名默认是区分大小写的,编辑 my.cnf 文件:

vi /etc/my.cnf

在文件最后加上以下内容,表示表名不区分大小写:

lower_case_table_names = 1 

然后重新启动 MySQL 服务:

systemctl restart mysqld

注意: 如果你的 QQ 第三方登录总是报500错误,可能是浏览器缓存的原因。清除浏览器缓存或者更换浏览器访问!

7. 激活邮件中的激活地址得修改成你的 IP:

message.setContent( "<a href=\"http://192.168.241.129:8080/activecode?email="+email+"&validateCode="+va....

重新打包后,将 SendEmail.class 文件替换即可。

注意: 如果你用的是阿里云服务器,因为25端口被封禁,需使用465端口,添加以下代码:

props.put("mail.smtp.auth", "true"); //这样才能通过验证
props.put("mail.smtp.socketFactory.port", "465");// 设置ssl端口
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

8. Linux 下的 solr 服务。

将之前本地 Tomcat 的 webapps 目录下的 solr 上传到 Linux 系统 Tomcat 的 webapps 目录下,如图:

enter image description here

然后将之前的 solr_home(我放在了 D 盘根目录下)文件夹上传到 /home/dreamland/ 目录下,如图:

enter image description here

然后编辑 /home/softs/apache-tomcat-8.0.47/webapps/solr/WEB-INF/ 下的 web.xml:

vi /home/softs/apache-tomcat-8.0.47/webapps/solr/WEB-INF/web.xml 

将 solr_home 的路径修改为 /home/dreamland/solr_home,如图所示:

enter image description here

保存后退出。

最后编辑 applicationContext-solr.xml 文件:

vi /home/softs/apache-tomcat-8.0.47/webapps/ROOT/WEB-INF/classes/applicationContext-solr.xml

将 mycore 的访问路径修改如下:

<constructor-arg name="builder" value="http://192.168.241.129:8080/solr/mycore"/>

重新启动 Linux 系统。然后在首页测试 solr 搜索功能,如下图所示:

enter image description here

9. 在 /home/dreamland/ 目录下新建 logs 目录,我们将日志存放在这里:

cd /home/dreamland/
mkdir logs

编辑 log4j.properties 文件:

vi /home/softs/apache-tomcat-8.0.47/webapps/ROOT/WEB-INF/classes/log4j.properties 

将日志存储位置改为 /home/dreamland/logs/ 目录下:

log4j.appender.File.File=/home/dreamland/logs/run.log

重启 Linux 系统。重启完成后,进入 logs 目录下:

cd /home/dreamland/logs/

使用以下命令可实时查看日志:

tail -f run.log 

Ctrl+C 退出当前窗口。

如果 Linux 系统下 Tomcat 日志出现中文乱码,可在 /home/softs/apache-tomcat-8.0.47/bin/目录下的 catalina.sh 文件中加入以下设置解决:

JAVA_OPTS="$JAVA_OPTS -Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8 -Duser.language=zh_CN -Dsun.jnu.encoding=UTF-8"

温馨提示: 在 vi 编辑页面使用 :g/指定内容,可查找指定内容,比如查找 JAVA_OPTS

:g/JAVA_OPTS 

按 n 查找下一个,Shift+n 查找上一个。

第18课百度网盘地址:

链接:https://pan.baidu.com/s/1Wp6PG4vXO0MDzJQ53RKbkA

密码:if82

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

exodus3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值