Tomcat8.0.37
Install via apt
// Update
sudo apt-get update && apt-get upgrade
// Install tomcat packages
sudo apt-get install tomcat8( default is tomcat 8.0)
// Optional
sudo apt-get install tomcat8-docs tomcat8-admin tomcat8-examples tomcat8-user
// Make sure you have defined java environment varibale JAVA_HOME
// To start/stop/reatart
sudo service tomcat8 start/stop/restart
// If success, you can access tomcat via http://localhost:8080
以上命令对我的ubuntu16.04尽然失败了。
Install Manually
Step 1: Download
可以去官网(http://tomcat.apache.org/)下载tomcat8.0.37,选择Binary distribution => Core => Download 来下载”tar.gz”格式的包;也可以使用命令下载8.0
wget http://apache.fayea.com/tomcat/tomcat-8/v8.0.37/bin/apache-tomcat-8.0.37.tar.gz)
Step 2: Install
首先解压并创建软链接
cd ~/Download # enter tomcat package dir
sudo tar -xzf apache-tomcat-8.0.37.tar.gz -C /opt # extract archieve to directory /opt
// 这里创建一个软链接到apache-tomcat-8.0.37的目的就是方便以后更换tomcat版本,只用更换apache-tomcat-8.0.37目录下的内容即可
// 另外,注意/opt/tomcat8后面不要带'/'
sudo ln -s /opt/apache-tomcat-8.0.37/ /opt/tomcat8 # create link for conveniece
下面添加tomcat8用户是为了安全考虑,tomcat8由tomcat8用户和组运行,其他人没有权限;并更改软链接和目录的owner;
sudo useradd -s /sbin/nologin tomcat8 # add user to run tomcat service
sudo chown -R tomcat8:tomcat8 /opt/tomcat8 # and give it ownership
sudo chown -R tomcat8:tomcat8 /opt/tomcat8/ # to tomcat's directory
然后创建系统服务,这一部分可以选择不要。在/etc/init.d/下面新建一个tomcat8文件,将以下代码拷贝过去;
#!/bin/sh
### BEGIN INIT INFO
# Provides: tomcat8
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/Stop Apache Tomcat 8
### END INIT INFO
TOMCAT_USER=tomcat8
TOMCAT_DIR=/opt/tomcat8
case "$1" in
start)
echo "Starting Apache Tomcat 8..."
su - $TOMCAT_USER -s /bin/bash -c "$TOMCAT_DIR/bin/startup.sh"
exit $?
;;
stop)
echo "Stopping Apache Tomcat 8..."
su - $TOMCAT_USER -s /bin/bash -c "$TOMCAT_DIR/bin/shutdown.sh"
exit $?
;;
restart)
$0 stop
$0 start
exit $?
;;
*)
echo "Usage: /etc/init.d/tomcat8 {start|stop|restart}"
exit 1
;;
esac
exit 0
最后启动服务
sudo chmod 755 /etc/init.d/tomcat8 # make it executable
sudo systemctl daemon-reload
sudo service tomcat8 start # run tomcat as service
sudo update-rc.d tomcat8 defaults # make tomcat run with system
最后可以使用一下命令启动/关闭/重启tomcat;
sudo service tomcat8 stop
sudo service tomcat8 start
sudo service tomcat8 restart
以上的设置是成功的,但是你无法再用自己的账户访问/opt/tomcat8了,因为他属于tomcat8用户(chown),这个很蛋疼;除非你切换到root用户。其实我们不一定要这样设置一个新用户来运行tomcat8,之所以这样设置是出于安全考虑的;下面来看看用户管理;
你会好奇这个命令是干什么?
sudo useradd -s /sbin/nologin tomcat8 # add user to run tomcat service
这里关于用户管理只讲解本教程相关问题,更多请参考鸟哥私房菜;再一次提醒,linux下的终端terminal不是shell,千万不要被表面迷惑;我们都知道linux是多用户多任务的系统;但是由于现在我们都是用微机也就是个人电脑,基本上就你一个人在用,所以没有感觉什么叫多用户多任务;如果回到过去,没有盖茨和乔布斯的时代,那个时候个人是很难用到电脑的,你要用计算机,你得申请某一个时段,到机房去,在一个显示器面前使用命令行,登陆,然后进项相应任务,但你看到的并不是主机,那只是从大型主机连接过来的显示器或者说终端(现在你应该知道为啥叫terminal了吧),所以很多个科学家登陆到同一台主机同一时间段做任务,这就需要主机操作系统可以进行多用户多任务管理了。
同样,现在,我们人手一台计算机,其他人不用了,就你一个人用,当然可以同时执行多个任务,这个在操作系统分时调度任务大家应该都知道,并且如果你用的是Windows,你就更不可能很好的理解什么叫多用户了。如果是在linux下面,初学者也很少碰到多用户管理,因为一直是自己用。但是实际上,linux上有很多用户(用户不一定是人,也可以是程序),并且有的还和你一起在同时使用linux呢。
现在在linux上,你使用Ctrl+Alt+T打开终端Terminal(记住那不是shell),严格来说这是一个终端模拟器,并不是真正的终端;真正的终端会占用整个显示器的,就是字符终端,不信你可以试试Ctrl+Alt+F1~F12,这是不同的终端。终端控制显示器,而不同的用户和任务会控制终端,当操作系统调度到该任务的时候,如果他需要用到终端显示器,此时终端控制权就给了该任务(比如用C语言写一个hello world);因此,你登陆后其实默认只是你自己的账户,你也可以切换到root账户,但是你会发现目录什么的都变了。这就是多用户显示出来的区别了,现在root掌管了你的虚拟终端,并且你以root身份登陆到了shell中,即root用户使用shell(shell也有很多种,bash,zsh等等)控制了你的终端模拟器(就是你看到的那个黑框框),你会看到root@your-host-name:,对,这个就说明现在是root在掌管了。你可以exit,然后就回到你现在的用户了,变成了your-name@your-host-name对吧。但是你还是在同一个黑框框下面(记住他是虚拟终端而不是shell,shell是一个程序在运行,而terminal负责输入输出显示器),你先在应该有了terminal和shell的区别的概念了吧,同时也知道了多用户的概念了吧。
不过你可能有疑惑,并没有实现多个用户同时登陆啊,是的,刚才每次只有一个用户在执行。其实你可以打开多个terminal,然后在每一个terminal中使用sudo su account-name来切换用户,这几个终端登陆不同的用户,结果,你发现几个不同的用户同时登陆了你的主机了。如果你的主机开放了端口并且可以当做服务器,别人如果有你的账户和密码,也是可以通过ssh username@host-ip(如果是内网直接ssh username@hostname也可以)远程登陆到你的主机的。不信,如果你开通了腾讯云主机,你可以使用这种方法登陆你的云主机。我们如何添加一个用户呢?很简单使用adduser或者useradd就可以了。
再回到我们的主题,上面那个sudo useradd -s /sbin/nologin tomcat8中,-s /sbin/nolongin其实是设置这个用户的登陆方式。这里其实压根没有给tomcat8登陆方式,因为ubuntu16.04没有这个目录和shell。正确的应该是/usr/sbin/nologin或者/bin/false,你可以到相应的目录找到这两个程序,他们都是禁止登陆的。也就是你使用sudo su tomcat8没有用的,你不能登陆。
为什么设置一个不能登陆的用户?就是为了安全,前面说过,别人可以用账户名和密码远程登陆你的服务器的。这样别人就没办法入侵了。另外,如果你是在自己电脑上而不是服务器上,其实可以设置一个可以登陆的shell的;使用 less /etc/passwd可以看到你的tomcat用户的登陆方式,你可以使用sudo usermod -s /bin/bash tomcat8 来更改tomcat8的登陆shell。这样,你就可以登陆到tomcat8用户了,就可以访问/opt/tomcat8了。你现在可以直接进入/opt/tomcat8/bin目录,执行./startup.sh或./catalina.sh start或者./catalina.sh run(调试模式)就可以启动tomcat8了。其实开始讲的创建service模式也是调用这个目录下的命令程序。
以上单独创建tomcat8用启动tomcat8是为了在production server中部署,在本地开发环境中开发没必要;所以再次我把tomcat8用户删除了,并且tomcat目录用户权限全部改成自己常用的了,这样更方便开发,要不然每次到都要切换用户或者到root权限才能修改文件;
// 删除tomtcat8
sudo userdel tomcat8
// 修改tomcat8所属用户
sudo chown -R kinny:kinny /opt/tomcat8
sudo chown -R kinny:kinny /opt/tomcat8/
// tomcat8的执行权限可以不用修改,还是755
//最后将/etc/profile.d/tomcat8文件中的TOMCAT\_USER变量修改为your_account (例如我的是TOMCAT\_USER=kinny)
Step 3:setup user account
为了通过web方式管理webapp和tomcat,可以设置tomcat用户
在/opt/tomcat8/conf目录下找到tomcat-users.xml,设置用户如下:
<role rolename="manager-gui"/>
<user username="manager" password="manager" roles="manager-gui"/>
<role rolename="admin-gui"/>
<user username="admin" password="admin" roles="manager-gui,admin-gui"/>
此时,你就可以通过主页上Manager APP和Host Manager输入用户名和密码就可以通过web管理tomcat了;
Mysql JDBC Driver
sudo apt-get install libmysql-java
// 在该目录下会看到mysql-connector-java.jar
ll /usr/share/java/mysql-connector-java*
-rw-r--r-- 1 root root 987191 2月 7 2016 /usr/share/java/mysql-connector-java-5.1.38.jar
lrwxrwxrwx 1 root root 31 2月 7 2016 /usr/share/java/mysql-connector-java.jar -> mysql-connector-java-5.1.38.jar
// 拷贝到/usr/lib/jvm/java-8-oracle/jre/lib/ext/目录下(因为如果你的servlet程序需要访问mysql数据库,需要mysq-connector-java.jar包,就需要tomcat知道他在哪儿,为了简单,你可以直接拷贝到jre/lib/ext/库里,其实还可以设置环境变量,这是linux高级主题),记住不是tomcat8的lib,而是tomcat8使用的jre的lib
sudo cp /usr/share/java/mysql-connector-java-5.1.38.jar /usr/lib/jvm/java-8-oracle/jre/lib/ext/