项目github地址:github.com/pc859107393…
实时项目同步的地址是国内的码云:git.oschina.net/859107393/m…
我的简书首页是:www.jianshu.com/users/86b79…
上一期是:[手把手教程][第二季]java 后端博客系统文章系统——No7
行走的java全栈工具
- IDE为idea16
- JDK环境为1.8
- gradle构建,版本:2.14.1
- Mysql版本为5.5.27
- Tomcat版本为7.0.52
- 流程图绘制(xmind)
- 建模分析软件PowerDesigner16.5
- 数据库工具MySQLWorkBench,版本:6.3.7build
本期目标
在Linux上面发布项目
思路解析
在win上面我们发布java web项目我们的大致思路如下:
① 配置JDK
② 安装MySQL
③ 安装Tomcat
④ 发布项目
⑤ 安装Nginx等···
但是我们这里忽略了最重要的初始第一步,what?其实不论我们在什么设备上面进行操作,第一件事是需要连接到设备上面。
但是我们平常做的操作就是一直在操作我们可以直接触碰到的物理机,也就是说我们通过直接操作物理机连接了我们面前的电脑设备。
所以,当我们需要将项目发布到服务器的时候,我们需要通过手段连接到服务器设备上面。常见的发布项目的连接手段有:
- 远程连接(win系统服务器常用)
- ssh连接( linux/mac服务器,可以直接通过Linux/mac的终端连接 )
- SFTP连接(基于SSH连接的文件传输协议)
- 等···
通过上面的介绍后,我们也就明白要想连接上Linux/mac的服务器,我们需要通过ssh链接或者SFTP连接上服务器。
SSH连接服务器
既然我们要发布项目到服务器,首先我们需要在本地连接上远程服务器,连接成功的截图如下:
ssh连接服务器成功我们可以看到上面途中我用红色矩形圈出来一部分东西,同时在右边写上了编号。
- ①这里的命令是使用ssh协议登录服务器的意思。
ssh 10.211.55.7 -l pc
//这里的意思是使用ssh协议、远程服务器IP地址是10.211.55.7、被登录的用户是pc
//当然我们可以简单点,不指定用户登录如:
ssh 10.211.55.7
//但是这样的话终端中会询问使用什么用户登录。 所以推荐使用第一种指定用户登录的方式。复制代码
- ②提示SSH连接的密钥信息,输入yes继续,或者输入no结束。
- ③输入登录用户的密码,该密码不会再终端中显示。
当一切需要的信息都正确后,我们就能链接到服务器了。当然我们通过终端连接服务器成功后,我们终端中的操作就相当于本地命令操作。所以,我们需要了解Linux常用命令。
正如上图所示,我们已经连接成功服务器,接着就应该执行上面的五步。
安装和配置JDK
a. 检测jdk是否存在,在终端中输入java -version后如下所示:
[pc@centos-linux ~]$ java -version
java version "1.7.0_131"
OpenJDK Runtime Environment (rhel-2.6.9.0.el6_8-x86_64 u131-b00)
OpenJDK 64-Bit Server VM (build 24.131-b00, mixed mode)
[pc@centos-linux ~]$复制代码
检查java版本的命令执行后我们可以看到对应的提示信息如下:
- 已经存在JDK
- JDK版本是1.7.0_131
- 最重要的是JDK不是我们常用的 oracle JDK,而是开源的OpenJDK
这个时候我们需要处理什么呢?严格的来说,我们需要将服务器上面的jdk置换为我们开发版本所使用的JDK,这样我们能避免很多不必要的问题,所以我们应该执行后续步骤,也就是卸载OpenJDK,然后安装和配置oracle JDK。
b. 检测openJDk,并卸载,在终端输入 rpm -qa | grep java 后如下:
[pc@centos-linux ~]$ rpm -qa | grep java
java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el6_8.x86_64
tzdata-java-2017a-1.el6.noarch
java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el6_8.x86_64
[pc@centos-linux ~]$
//注意:
//rpm是小红帽下面的包管理,相关的请自行百度
//rpm -qa 是查询本机当前系统下所有的Linux软件包
// | grep java 是管道查询java相关的包
//具体的详细信息请自行百度,不再多余赘述复制代码
在上面的命令运行结果中我们可以看到跟java相关的东西有三个,但是有一个tzdata-java-2017a-1.el6.noarch我们不知道是什么,既然我们不知道那么我们就不管它,直接卸载OpenJDk。
- 先卸载 openjdk-1.7
- 再卸载 openjdk-1.6
- 既然在终端中操作,那么我们接着就应该输入命令来删除jdk,如下:
[pc@centos-linux ~]$ rpm -e --nodeps java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el6_8.x86_64
error: can't create transaction lock on /var/lib/rpm/.rpm.lock (Permission denied)
[pc@centos-linux ~]$
// 这里提示我们不能进行卸载操作,原因是我们没有足够的权限。
//所以我们接着使用root用户来卸载,如下:
[pc@centos-linux ~]$ su
Password:
[root@centos-linux pc]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el6_8.x86_64
[root@centos-linux pc]#
//这时候按照道理讲我们应该已经删除了JDK1.7,不过为了验证我们还是需要执行查看java包的命令,如下:
[root@centos-linux pc]# rpm -qa | grep java
java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el6_8.x86_64
tzdata-java-2017a-1.el6.noarch
[root@centos-linux pc]#
// 我们可以看到已经成功的卸载了jdk1.7,接着卸载jdk1.6再验证
[root@centos-linux pc]# rpm -e --nodeps java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el6_8.x86_64
[root@centos-linux pc]# rpm -qa | grep java
tzdata-java-2017a-1.el6.noarch
[root@centos-linux pc]#复制代码
上面的操作中我们已经卸载完成了jdk,涉及到的主要命令有:
- rpm的管道查询java包,命令是:rpm -qa | grep java
- rpm卸载java包,命令是: rpm -e --nodeps 完整包名
c. 安装oracleJDK
我们来回顾下我们在win上面安装jdk的步骤。
- 下载jdk
- 找到jdk安装文件并运行该文件
- 设置jdk存放目录,等待安装程序执行完成
- 配置环境变量
- 重启电脑使环境变量生效
通过上面的总结我们可以大致明白Linux的步骤应该是类似的,可能只是在一些细节上面不一样。let's go!
第一步: 上传jdk安装包到服务器。因为我是mac系统,我就直接使用了图形化工具Cyberduck来进行SFTP连接,如下:
Cyberduck连接到服务器在左上角的新建连接那里我们可以点击后新建连接,然后在弹出框里面输入对应的信息(服务器地址、用户名、密码)就可以创建连接成功。接着我们开始上传文件:
我们在图形化界面中,可以手动选择指定目录到/usr/src/java,当然也可以是其他目录。这个图形化界面基本操作就和文件浏览器一样,主要快捷功能都在鼠标右键里面。
文件上传成功后,我们可以看到信息如下:
Cyberduck上传文件成功第二步: 安装jdk到服务器。这个时候我们切换到终端来继续操作。输入安装指令如下:
[root@centos-linux java]# ls
jdk-8u131-linux-x64.rpm
[root@centos-linux java]# chmod +x jdk-8u131-linux-x64.rpm
[root@centos-linux java]# rpm -ivh jdk-8u131-linux-x64.rpm
Preparing... ########################################### [100%]
1:jdk1.8.0_131 ########################################### [100%]
Unpacking JAR files...
tools.jar...
plugin.jar...
javaws.jar...
deploy.jar...
rt.jar...
jsse.jar...
charsets.jar...
localedata.jar...
[root@centos-linux java]#复制代码
首先我们先给可执行文件(jdk的安装包)授予可执行权限,代码为: chmod +x 可执行文件完整路径和名称。 当然如果在当前目录下,则是直接使用: chmod +x 文件名。
接着,我们使用rpm命令执行安装程序,命令为:rpm -ivh 文件名。
到这里我们的JDK安装程序基本是完成了。接着我们应该配置环境变量。
第三步骤: 配置环境变量。 我们先查询安装jdk的目录,具体如下:
[root@centos-linux java]# ls
jdk-8u131-linux-x64.rpm
[root@centos-linux java]# cd ..
[root@centos-linux src]# ls
debug java kernels
[root@centos-linux src]# cd ..
[root@centos-linux usr]# ls
bin games java lib64 local share tmp
etc include lib libexec sbin src
[root@centos-linux usr]# cd java
[root@centos-linux java]# ls
default jdk1.8.0_131 latest
[root@centos-linux java]# cd jdk1.8.0_131
[root@centos-linux jdk1.8.0_131]# ls
bin javafx-src.zip man THIRDPARTYLICENSEREADME-JAVAFX.txt
COPYRIGHT jre README.html THIRDPARTYLICENSEREADME.txt
db lib release
include LICENSE src.zip
[root@centos-linux jdk1.8.0_131]# pwd
/usr/java/jdk1.8.0_131复制代码
通过上面的一系列操作,我们拿到了jdk的目录,接下来创建环境变量,输入命令:vi /etc/profile 后结果如下:
# /etc/profile
# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc
# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.
pathmunge () {
case ":${PATH}:" in
*:"$1":*)
;;
*)
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
esac
}
if [ -x /usr/bin/id ]; then
if [ -z "$EUID" ]; then
# ksh workaround
EUID=`id -u`
UID=`id -ru`
fi
USER="`id -un`"
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
fi
# Path manipulation
if [ "$EUID" = "0" ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
else
pathmunge /usr/local/sbin after
pathmunge /usr/sbin after
pathmunge /sbin after
fi
HOSTNAME=`/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
export HISTCONTROL=ignoreboth
else
export HISTCONTROL=ignoredups
fi
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
# By default, we want umask to get set. This sets it for login shell
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi
for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null 2>&1
fi
fi
done
unset i
unset -f pathmunge复制代码
在上面的代码中我们没有看到jdk的配置,所以我们接着按一下a键开始输入内容,输入内容如下:
#set java enviroment
JAVA_HOME=/usr/java/jdk1.8.0_131
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH复制代码
输入完成后,我们按一下esc退出编辑,接着输入 :wq 退出并保存编辑,最后我们输入命令查看是否写入成功,命令如下:
//查看环境变量配置文件
[root@centos-linux /]# cat /etc/profile
//应用环境变量
[root@centos-linux /]# source /etc/profile复制代码
我们可以看到已经把配置写入环境变量中了,这时候输入:java -version可以看到我们的jdk已经安装完成并且生效。
[root@centos-linux jdk1.8.0_131]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
[root@centos-linux jdk1.8.0_131]#复制代码
注意:如果你最后发现所有命令都失效,建议仔细检查profile里面的内容是否有错误修改或者是否插入了非英文状态下的符号
Linux安装JDK总结:
- 卸载OpenJDK
- 上传JDK的rpm安装包(mac系统使用Cyberduck,win下使用FlashFXP)
- ssh中使用命令安装JDK
- 配置环境变量
- (可选) 删除OpenJDK依赖,添加OracleJDK依赖
- 应用环境变量(source /etc/profile)
安装和配置MySQL
通过类比归纳,我们安装软件的步骤都是一样类似的,所以下面简要的介绍MySQL在centos上面的安装。
- 检测系统是否存在MySQL,有则卸载,无则进行第二步。
检查mysql是否存在:rpm -qa | grep mysql
卸载mysql: rpm -e --nodeps mysql名称复制代码
- 进入MySQL官网选择MySQL Yum Repository,在该页面选择对应的linux版本进行下载对应的安装包。
MySQL官网下载中心连接:https://dev.mysql.com/downloads/repo/yum/
我这里直接执行命令下载:wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-5.6.22-1.el6.i686.rpm-bundle.tar
解压后安装:rpm -ivh MySQL-server-5.6.22-1.el6.i686.rpm
提示资源缺失,执行命令:
yum install zlib.i686
yum install libaio.so.1
yum install libstdc++.i686
接着执行mysql安装命令,最后顺利安装。提示信息如下:
[root@centos-linux mysql]# rpm -ivh MySQL-server-5.6.22-1.el6.i686.rpm
Preparing... ########################################### [100%]
1:MySQL-server ########################################### [100%]
···省略若干字···
A RANDOM PASSWORD HAS BEEN SET FOR THE MySQL root USER !
You will find that password in '/root/.mysql_secret'.
You must change that password on your first connect,
no other statement but 'SET PASSWORD' will be accepted.
See the manual for the semantics of the 'password expired' flag.
Also, the account for the anonymous user has been removed.
In addition, you can run:
/usr/bin/mysql_secure_installation
which will also give you the option of removing the test database.
This is strongly recommended for production servers.
See the manual for more instructions.
Please report any problems at http://bugs.mysql.com/
The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com
New default config file was created as /usr/my.cnf and
will be used by default by the server when you start it.
You may edit this file to change server settings
至此安装基本完成,接着我们需要配置什么呢?看上面的提示信息,可以发现最重要的是mysql密码,接着修改密码如下:
一、 安装mysql连接工具:rpm -ivh MySQL-client-5.6.22-1.el6.i686.rpm
二、提示出错,需要依赖资源:libncurses.so.5 libtinfo.so.5
三、执行命令安装依赖:yum -y install libncurses.so.5 libtinfo.so.5
四、最后再安装mysql连接工具。复制代码
- 查看MySQL服务状态,并且确保启动mysql
查看:service mysql status
启动:service mysql start
停止:service mysql stop复制代码
- 修改mysql的root密码
查看第一次登陆密码:cat /root/.mysql_secret
登录,并且输入上面的密码: mysql -uroot -p;
更新root密码:SET PASSWORD = PASSWORD('你的密码');复制代码
- 开启mysql远程访问(可选)
设置远程访问(使用root密码):
grant all privileges on *.* to 'root' @'%' identified by '123456';
flush privileges;
防火墙打开3306端口
开启3306端口:/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
保存配置:/etc/rc.d/init.d/iptables save
检测端口状态:/etc/init.d/iptables status复制代码
- 设置开机启动mysql服务
加入到系统服务:
chkconfig --add mysql
自动启动:
chkconfig mysql on
查询列表:
chkconfig复制代码
安装和配置Tomcat
根据上面案例和以前的经验,我们得出tomcat是绿色版程序只需要解压到指定目录直接执行就OK。
- 下载tomcat到服务器
- 解压到 /usr/src/tomcat
- 授予可执行文件的可执行权限: chmod 777 *.sh
- 启动: ./startup.sh
- 查看日志(按下 Ctrl+C 退出当前的阻塞命令):tail -f ../logs/catalina.out
- 服务器开放端口:
开启8080端口:/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT 保存配置:/etc/rc.d/init.d/iptables save 检测端口状态:/etc/init.d/iptables status复制代码
安装套路总结
应用程序分为两种:① 安装版本 ② 绿色版本
安装版本:
- 检测是否存在对应程序:
rpm -qa | grep 程序名称复制代码
- 存在对应程序,检查是否符合标准,否则卸载:
rpm -e --nodeps 上面检查到的程序名称复制代码
- 上传安装包到服务器(推荐利用SFTP上传)
- 安装文件,并查看提示信息
- 出现错误,根据提示信息解决问题(一般是资源依赖失败)
安装命令:yum -y install 提示信息中出现的缺失的依赖资源(如:libncurses.so.5 libtinfo.so.5,多个资源中使用空格隔开,使用这种方式可以自动扫描包名并且进行加载)复制代码
- 最后再执行安装程序
- 还有可选设置(开机启动和服务自启)
- 检测是否存在对应程序:
绿色版本:没啥好说的就是上传、解压、设置运行权限(chmod 777 *.sh)
本期文章到此基本结束,至于Nginx设置,粗略的估计放到下一期吧。部署项目的话,直接把war包扔到tomcat的webapps目录下就行了。