Mac配置Tomcat

Tomcat的配置

查看被占用的端口号

sudo lsof -i | grep LISTEN 

Tomcat是Java的web服务器,目前最新版是8.5.6,可以从这里下载到:http://tomcat.apache.org/download-80.cgi

Tomcat并不区分Linux版和Mac版(但Windows版却是要区分的),下载下来就是一个tar.gz包,真正的绿色软件,解压,放到合适的位子去,就算完成安装了。一般来说,是放到/usr/local去,/usr目录就相当于Windows的“program files”目录嘛。

/usr/local/apache-tomcat-8.5.6

//为了防止误操作破坏系统,再用户状态下时没有权限操作系统重要文件的,所以先要取得root权限

sudo -s

//给.sh加权

sudo chmod 755 *.sh

//启动或者暂停Tomcat

./startup.sh		
./shutdown.sh

我习惯性地不修改默认的目录名,依然叫“apache-tomcat-8.5.6”,但我会做一个软链接指向这个目录:(软链接)

$cd /Library/Tomcat
$ ln -s /usr/local/apache-tomcat-8.5.6 ApacheTomcat

这样就能轻易用/Users/用户名/ApacheTomcat去访问tomcat了。这样做还有一个好处,哪天Tomcat更新的新版本,我直接把Home指向新版本的目录即可,其它关于对Tomcat的路径引用的配置不用改,旧的版本可以继续保留用于测试,要换回去也很简单,改一下Home的指向即可。

启动Tomcat:

$cd ApacheTomcat/bin
$./startup.sh

立即用浏览器访问一下:http://localhost:8080/,你应该能看到:

配置管理员账号

$vim ApacheTomcat/conf/tomcat-users.xml
<user username="admin" password=“qweasd" roles="manager-gui" />

就设置好了一个叫admin的管理员,密码是qweasd。(这也能叫密码?)重启Tomcat生效。

需要在localhost后面加上8080会让你感到不爽,你想把这个去掉,使用默认端口号80,可以在这里配置:

$vim ApacheTomcat/conf/server.xml

找到这一行:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

把8080改为80即可。但!且慢,由于系统权限的问题,80端口不是随随便便谁都能开启的,你需要root权限来运行Tomcat,否则绑定端口就会失败。我建议是放弃,毕竟谁会用自己的Mac来做服务器呢?但我会把8080改为8079,这是因为后面用IntelliJ调试程序的时候,IntelliJ会启动新的Tomcat实例,大家都习惯性地使用8080这个端口,为了避免这个冲突,把默认的8080改一下是有必要的。

顺便提一下,在Mac下想知道哪些端口被占用了,可以用:

$sudo lsof -i | grep LISTEN

在Linux下可以用netstat,但Mac下的netstat命令貌似跟Linux下的出入蛮大,不知道为什么会这样。

配置HTTPS

虽然没有绝对的安全,但大牛们说“不用SSL的安全都是‘假装安全’”。所以……

从图中可以看出,我们要配置https其实就是要配置Connector,Connector在之前配置端口的地方已经接触过了,有印象吧?当然,我们还得准备些材料。那就是密钥,准备方法如下图:

如果你的个人目录(即“cd ~”转到的目录)已经有“.keystore”,那么还要提示你输入密钥库的口令,我这里秘钥库的口令是654321,tomcat这个密钥的口令也是654321。

这样一来,就在你的密钥库中创建了一个叫tomcat的密钥,其中只指明了“名字与姓氏”的信息为localhost,别的都可以留空。完之后你可以看看.keystore到底是个什么玩意儿:

$od ~/.keystore

其实啥都看不出来,一堆加密的二进制码。

接着就是Tomcat的server.xml文件了:

$vim /Library/Tomcat/Home/conf/server.xml

在<Service>节点中加一个<Connector>节点:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystorePass="654321" />

注意,一点都不能写错,包括字母大小写都要完全写正确方可。保存,重启服务器,打开:https://localhost:8443/

Safari浏览器提示你无法验证localhost身份,这是很显然的,你的证书是你自己造的,没有CA(证书颁发机构)的担保,所以浏览器默认是不信任你的,但你可以选择“继续”。

提示:https在实际生产环境中是非常有用的东西,但在开发环境中没什么用,我们只需要知道有这回事,这里先把这个配置拿掉。不拿掉的话后面运行程序的时候可能会出现一个8443端口被占用的错误提示。(尽管此错误其实也无关痛痒)。

添加web应用

有两种方法:

第一是直接把应用放在webapps目录下,Tomcat会自动解释;

另一种是在conf/Catalina/localhost下面放入一个xml文件,如放一个叫test.xml的文件,内容是:

<Context docBase="/Users/guogangj/test" />

然后在/Users/guogangj/test下创建一个index.html,随便写点内容:

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>
test
</title>
</head>
<body>
<h1>test</h1>
</body>
</html>

然后访问:http://localhost:8079/test/index.html,就能看到test这几个大字了。

IntelliJ的安装

下载的安装包是个dmg,安装无压力,打开并拽入“应用程序”中即可。直接运行,根据提示进行一些默认的配置即可。

创建Java Web项目

说实在的,IntelliJ的项目创建方式不如其它IDE的直观,反正我一开始是没搞懂(其实搞懂也很简单),另外IntelliJ的不同版本之间是有差异的,网上找的一些资料并不准确,最好还是直接看官方文档,根据它的Tutorial走走,这次我看的官方文档是针对IntelliJ v12的,而现在我用的是v13,所幸的是差别并不大。 

New Project,然后这样选:

那个Versions只能选3.1,貌似之前还能选3.0,这个版本其实是Servlet的版本,最新的版本是3.1,需要用Tomcat8来承载,如果你选择用Tomcat7来承载的话,会有一个warning说不认识这个版本,使用默认版本云云,忽略这个warning就是。

在下一步中指定项目名,SDK果断选择最新的1.8(Java8):

这样一来你的服务器的运行环境得部署为Java8,不过这个也没啥压力,Java8多了不少很有用的新特性,如果没有什么历史负担的话干嘛不用?

Finish,我们现在来看看整个project的结构:

.idea这是IntelliJ的相关东西,我们不用管,src目录用于放java源文件,web目录用于放web资源,WEB-INF是java web应用固定的存放配置及类库的目录,index.jsp是我们首页,HelloWorld.iml是IntelliJ的项目文件,打开工程就是打开它了,External Library是一些外部引用的库,展开看看好多。

现在我们来创建一个Servlet,Servlet是Java的服务器端小程序(其实也可以不小),右击src目录:

然后命名为SayHello:

展开,打开SayHello.java的时候却发现IntelliJ提示找不到符号:

这一定是因为某些包没引用。如何引用?一般都是设置CLASSPATH,告诉java如何去找它的包,而这里我们可以直接指定包的位置。 

打开Project Struture设置对话框(快捷键为<Cmd>+<;>),如图:

点加号,选“Jars or directories…”,再找到Tomcat下的servlet-api.jar。

这样就可以了,我们把doPost删掉,用不到,再在doGet方法中写点东西输出,SayHello.java就变成这样:

package com.mycompany;

import java.io.IOException;
import java.io.PrintWriter;

/**
 * Created by guogangj on 14-5-13.
 */
public class SayHello extends javax.servlet.http.HttpServlet {
    protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Hello World!</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>Hello World!</h1>");
        out.println("</body>");
        out.println("</html>");
    }
}

java的代码写好了,配置文件也要加点东西,打开web.xml,加上一个“<servlet-mapping>”节点,改完后的web.xml变成这样:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <servlet>
        <servlet-name>SayHello</servlet-name>
        <servlet-class>com.mycompany.SayHello</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>SayHello</servlet-name>
        <url-pattern>/sayhello</url-pattern>
    </servlet-mapping>
</web-app>

编译(<Cmd>+<F9>),通过无压力。但,怎么运行?

运行Java Web项目 

Java Web项目无法单独运行,它需要一个程序来承载(Host)它,这和微软体系的东西是很类似的,ASP.net程序需要IIS来承载对不?而现在我们很明显需要用Tomcat来承载这个Web程序。

首先我们要配置好Tomcat,<Cmd>+<,>打开IntelliJ的配置。 

如上图那样配置好Tomcat。

然后打开Project的运行配置:

继续看图:

再看图,如此般设置:

这里它提示你有个问题,说缺乏artifacts配置,你可以顺着它的指引,fix一下即可。点OK。

这次可以跑了,<Shift>+<F10>。注意看IntelliJ的输出窗口里有什么提示信息,如果有,想想看是什么原因,我常常会碰到一些端口无法打开的问题,一般都是端口被占用了。

IntelliJ运行Java Web程序的时候会开启新的Tomcat实例,很可能会和之前运行的Tomcat实例发生冲突,解决冲突的最快的办法通常是直接把之前运行的Tomcat shutdown掉。

现在看看运行的成果吧:http://localhost:8080/sayhello

是不是看到“Hello World!”?这是用Java代码输出的“页面”,而不是静态页面。

打成war包 

工程编译后生成的内容在/work/HelloWorld/out/production/下,我们要对其中的内容进行打包的话,可以这样:

$tar cvf HelloWorld.war /work/HelloWorld/out/production

IntelliJ当然也可以帮助你做这个动作,如图:在工程配置中选择artifact的类型,artifact不知道中文怎么翻译好,在很多游戏中,它都被翻译为“神器”,但这里可以简单把它理解为Java的发布包。

这样你就能在其中指定的Output directory中找到那个War包了,把War包直接丢到Tomcat的webapps目录下,Tomcat会自动加载它。

希望本文对读者起到抛砖引玉的作用。

http://www.cnblogs.com/guogangj/p/3725371.html

时间: 2024-11-18 09:56:18

Mac配置Tomcat的相关文章

Mac配置JAVA/MAVEN开发环境教程

配置JAVA_HOME: 用户目录下opne .bash_profile 如果没有这个文件可以自己创建一个 可以了解下mac下的配置文件 ./etc/profile 文件   全局共有配置,无论哪个用户登录,都会读取此文件/etc/bashrc    (一般在这个文件中添加系统级环境变量)全局(公有)配置,bash shell执行时,不管是何种方式,都会读取此文件.~/.bash_profile  (一般在这个文件中添加用户级环境变量) 配置环境: MAVEN_HOME=/Users/taoyu

手把手教你----MyEclipse中 配置 Tomcat

电脑上配置Tomcat服务器 安装Tomcat并配置环境变量 测试是否配置成功 MyEclipse中配置Tomcat 想要开发Java Web的程序,首先在MyEclipse中必须配置Tomcat,一起来动手操作吧. 电脑上配置Tomcat服务器 安装Tomcat并配置环境变量 官网上下载Tomcat,记住你下载安装的版本,后面再MyEclipse中配置的时候会用到,安装时记住你安装的目录,安装成功后,配置环境变量,在系统环境变量中新建 输入的内容如下: 变量名:CATALINA_HOME 变量

如何配置Tomcat 5和IIS 5协同工作

iis 目录序 摘要 准备工作 下载 Java 2 SDK 1.4.2 (或更高版本) Tomcat 5.0.24 (或更高版本) Tomcat Web Server 连接器 安装 Java 2 SDK Tomcat 5 Tomcat JK2 IIS 连接器 设置 Tomcat Tomcat IIS 连接器 Windows IIS 设置ISAPI筛选器 创建ISAPI筛选器使用的虚拟目录 重新启动IIS服务 测试 Tomcat IIS 参考文献  序最近遇到一个项目,无法避免的需要将IIS和To

CentOS下安装配置Tomcat环境

  CentOS下安装配置Tomcat 演示环境 系统:Linux CentOS 6.3 32位 环境:无安装apache.php.mysql 账号:Root 一.下载相关安装包 注:可以先进入 #cd /usr/local/ /进里面后再下载(也可以根据自己情况而定) 1.下载jdk 2.下载Tomcat 二.安装JDK和Tomcat 注:可以先进入 #cd /usr/local/ /再执行下面的命令 1.编译安装Jdk #chmod 777 jdk-6u41-linux-i586-rpm.b

关于eclipse中配置tomcat的问题

问题描述 关于eclipse中配置tomcat的问题 自己原来写java用的eclipse,后来写jsp的时候,用editplus写,然后放入定义好的文件, 用浏览器看运行结果,最近下了web的插件,想在Java中编写jsp代码,但是卡在tomcat 和eclipse的相互配置上. 现在我想把写好的jsp文件保存在自己的D盘JspWeb目录下, 自己浏览器默认的端口改成了80,我的原来的路径是这样的 < Context=path"JspWeb" docBase="D:J

myeclipse配置tomcat,但是在部署java web工程后就无法启动,具体原因见图。

问题描述 myeclipse配置tomcat,但是在部署java web工程后就无法启动,具体原因见图. myeclipse配置tomcat,但是在部署java web工程后就无法启动,具体原因见图. 希望前辈们帮帮忙. 解决方案 tomcat 服务开启了没有??? 解决方案二: 服务器无法开启.可能是你的项目路径配置有问题.看看你的webroot配置 解决方案三: 有可能你的tomcat端口重复了,我看你有三个tomcat: 然后具体问题你可以根据提示去看tomcat的日志,里面会写的很详细,

linux的tomcat配置-linux下非root用户在MyEclipse2014配置tomcat无法启动的问题!!!

问题描述 linux下非root用户在MyEclipse2014配置tomcat无法启动的问题!!! 我在linux下的MyEcpLise配置类tomcat7,但是启动时却显示: 二月 21, 2015 12:38:08 下午 org.apache.catalina.startup.Catalina load 警告: Unable to load server configuration from [/opt/tomcat7.0/conf/server.xml] 二月 21, 2015 12:3

log-如何配置tomcat把访问日志也输出到tomcat命令窗口

问题描述 如何配置tomcat把访问日志也输出到tomcat命令窗口 目前我用的是tomcat7或8,请问各位配置把localhost_access_log.txt的日志也输出到tomcat命令窗口. tomcat命令窗口的日志存放在Tomcat 8.0logs目录下,该目录下有多个文件?,都是记录日志的,我发现 localhost_access_log.txt的?日志只会记录在该文件中,请问怎么配置让它也可以输出到tomcat命令窗口? 解决方案 配置Tomcat的访问日志格式化输出配置Tom

eclipse配置tomcat后,启动能打开8080的界面,但是就是打不开自己写的jsp

问题描述 eclipse配置tomcat后,启动能打开8080的界面,但是就是打不开自己写的jsp eclipse配置tomcat后,启动能打开8080的界面,但是就是打不开自己写的jsp,以前打开过,今天新加了jsp并且把项目中的jsp的文件夹移动了,发现打不开,然后我又把它移回去,还是没用,之后跟着百度上各种改,现在已经不知道是什么原因了,不过觉得应该不是配置web-xml的问题吧,毕竟上一次打开也没动它十二月 12, 2015 4:20:29 下午 org.apache.catalina.