tomcat服务器中的web应用程序部署在哪个物理位置
finebi是一个servlet应用。servlet是一种服务器端的java应用程序,具有独立于平台和协议的特性,可以生成动态的web页面。
web服务器部署通常分两个步骤,首先是在服务器上安装web服务器并进行环境配置,然后将web工程部署到web服务器上并发布出来;这样能通过IP地址和ServerURL来访问这个web工程达到应用的目的。
对于将同一个经过加密的 Webconfig 文件部署到数台服务器上的网络场,这会非常有用。在这种情况下,还必须将相同的 RSA 密钥容器部署到这些服务器上。为了实现此目的,需要为应用程序创建一个 RSA 密钥容器,将它导出到 XML 文件,然后在每台需要对加密的 Webconfig 文件进行解密的服务器上导入该文件。在承载多个 ASPNET 应用程序的单台 Web 服务器上,创建 RSA 密钥容器也非常有用。通过为一个客户的每个或每组应用程序都创建一个 RSA 密钥容器,可以确保一个应用程序的 RSA 密钥容器不能用来对另一个应用程序的 Webconfig 文件进行解密,从而提高应用程序的敏感配置信息的安全性。创建RSA 密钥容器若要创建 RSA 密钥容器,请使用 ASPNET IIS 注册工具 (Aspnet_regiisexe) 及 –pc 开关。必须为密钥容器指定一个名称,该名称标识应用程序的 Webconfig 文件的 configProtectedData 节中指定的 RsaProtectedConfigurationProvider 所使用的密钥容器。为确保可以导出新创建的 RSA 密钥容器,必须包括 -exp 选项。例如,下面的命令创建一个名为 SampleKeys 的 RSA 密钥容器,该容器是可导出的计算机级密钥容器。aspnet_regiis -pc "SampleKeys"–exp下面的示例演示了 Webconfig 文件的 configProtectedData 节。该节指定使用名为 SampleKeys 的计算机级 RSA 密钥容器的 RsaProtectedConfigurationProvider。<configProtectedData> <providers> <add name="SampleProvider" type="SystemConfigurationRsaProtectedConfigurationProvider, SystemConfiguration, Version=2000, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a processorArchitecture=MSIL" keyContainerName="SampleKeys" useMachineContainer="true" /> </providers> </configProtectedData>授予对 RSA 密钥容器的访问权限默认情况下,RSA 密钥容器受到所在服务器上的 NTFS 访问控制列表 (ACL) 的严密保护。这样能够限制可以访问加密密钥的人员,从而增强加密信息的安全性。必须首先向 ASPNET 应用程序的进程标识授予对该 RSA 密钥容器的读取访问权限,然后 ASPNET 才能使用 RSA 密钥容器。有关设置和确定 ASPNET 应用程序标识的信息,请参见 ASPNET 模拟。可以使用 Aspnet_regiisexe 工具及 -pa 开关,向 ASPNET 应用程序的标识授予读取 RSA 密钥容器的权限。例如,下面的命令向 Windows Server 2003 NETWORK SERVICE 帐户授予对名为 SampleKeys 的计算机级 RSA 密钥容器的读取访问权限:aspnet_regiis -pa "SampleKeys" "NT AUTHORITY/NETWORK SERVICE"若要使用计算机配置中指定的默认 RsaProtectedConfigurationProvider,必须首先向应用程序的 Windows 标识授予对名为 NetFrameworkConfigurationKey 的计算机密钥容器的访问权限,该计算机密钥容器是为该默认提供程序指定的密钥容器。例如,下面的命令向 NETWORK SERVICE 帐户授予对默认 RsaProtectedConfigurationProvider 所使用的 RSA 密钥容器的访问权限。aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITY/NETWORK SERVICE"NetFrameworkConfigurationKey RSA 密钥容器是 Aspnet_regiisexe 工具所发出的命令的默认密钥容器。因此上述命令也可以按以下方式发出:aspnet_regiis -pa "NT AUTHORITY/NETWORK SERVICE"导出RSA 密钥容器若要将 RSA 密钥容器导出到 XML 文件,可以使用 Aspnet_regiisexe 工具及 –px 开关。XML 文件可以用作 RSA 密钥容器的备份,也可用于在其他服务器上导入 RSA 密钥容器。若要对加密信息进行解密,RSA 密钥容器的私钥部分是必需的。若要在另一台服务器上使用导出的密钥容器,还需导入私钥。通过在导出密钥时指定 –pri 选项,可以在 XML 文件中包括私钥。还必须指定导出的密钥容器是计算机级还是用户级的。若要导出用户级密钥容器,必须以其 Windows 配置文件存储了密钥的用户的身份登录。若要指定用户级密钥,请在导出加密密钥信息时包括 -pku 选项;否则,导出的密钥将来自计算机密钥存储区。有关计算机级和用户级加密密钥的更多信息,请参见 了解计算机级别和用户级别的 RSA 密钥容器。例如,下面的命令将名为 SampleKeys 的计算机级 RSA 密钥容器导出到名为 keysxml 的文件中并包括了私钥信息。aspnet_regiis -px "SampleKeys" keysxml -pri导入RSA 密钥容器可以使用 Aspnet_regiisexe 工具和 –pi 开关,从 XML 文件导入 RSA 密钥容器。还必须指定导入的密钥容器是计算机级还是用户级的密钥容器。
一,开发工具的选择
Java
EE,或者是JSF应用开发,Netbeans和Glassfish是最好的搭配选择,前者对于后者有非常好的支持。但要注意netbeans的版
本,55是不支持glassfish v2的。而netbeans6还很不稳定,所以现阶段最好的版本是netbeans551。
关于Netbeans下开发Java EE应用,官方有文档介绍:Java EE 应用程序相关教程,这里主要介绍一下生产环境中web应用在glassfish下的部署和配置
二,下载安装Glassfish V2
1)下载Glassfish v2并解压缩。下载完毕後,执行以下命令:
java -Xmx256m -jar glassfish_filenamejar
点击接受弹出的协议后(这里sun比较无聊啊,所有软件都是,明明一个普通压缩包,非压成jar让你看一下协议才行),glassfish会解压到一个名为glassfish的目录里。
2) 修改端口
glassfish是通过ant来安装的,安装脚本在setupxml下,在里面可以修改一些配置,比如端口等等。在setupxml中主要有以下设置:
xml 代码
﹤property name="domainname" value="domain1"/﹥ 域名
﹤property name="instancename" value="server"/﹥
﹤property name="adminuser" value="admin"/﹥ 管理员用户名
﹤property name="adminpassword" value="adminadmin"/﹥ 管理员密码
﹤property name="adminport" value="4848"/﹥ 管理平台端口
﹤property name="instanceport" value="8080"/﹥ 实例端口,也就是通过这个端口来访问web应用
﹤property name="orbport" value="3700"/﹥
﹤property name="imqport" value="7676"/﹥
﹤property name="httpsport" value="8181"/﹥ https端口
根据需要修改以上设置,执行:ant -f setupxml,如果系统没有安装ant,在glassfish\lib\ant下有一个ant16版。安装结束后,进入glassfish/bin下,在控制台执行下面命令启动glassfish:
asadmin start-domain domain1 // domain1是上面设置的domainname,系统默认domain1
启动结束后,进入http://localhost:8080测试是否已经正确启动
asadmin stop-domain domain1 //停止服务器
三,部署web应用
有三种方式,可以直接将war或ear放在glassfish/domain/autodeploy目录下,glassfish启动后会自动部署。
第二是通过命令asadmin deploy部署应用, 另外 asadmin updeploy 卸载应用。通过asadmin deploy
--help 和 asadmin undeploy --help 获得更多帮助。
第三是通过我推荐的方式,通过glassfish管理控制台进入http://localhost:4848,默认用户admin,密码adminadmin。打开後看到如下界面:
进入左侧菜单, Applications -> Web
Applications,在列表中可以看到已经部署的应用,如要部署新应用,点击deploy按钮,选择本地的war,设定好context
path,点击OK,无论部署成功或失败,都会看到相应的信息提示
注:通过这种方式,可以进行远程部署,只要打开目标服务器上的管理控制台,选择一个本地的war,就可以快速的部署到远程服务器上,非常方便,这也是推荐的原因。对于EJB应用,在Enterprise Applications下部署,方法同上
四,配置jdbc数据源
对于Java EE应用,经常需要事先设定数据源,否则部署时会报javaxnamingNameNotFoundException
配置方法是进入Resources -> JDBC,会看到JDBC Resources和Connection pools
先设定Connection
pools,以MySql为例,点击New,命名为MySqlPools,ResourceType选择
javaxsqlConnectionPoolDataSource,Database
vendor肯定选择mysql,然后点击next进入下一页面。最主要的是设定Additional
Properties,也就是jdbc连接配置,设定好url, user,
password,其他的保持默认值,也可以根据需要自己添加属性。设定好连接池后,接着设定JDBC
Resources,新建一个JDBC,名称要和你的web应用里的持久化单元采用的数据源的名称一致。
然后再次部署web应用,就会正常运行了。
Docker部署WEB 应用时,本地可以成功打开测试页,在公网上(阿里云服务器)却不能打开。
1、环境:阿里云服务器
2、CentOS7系统
3、Docker成功部署
这里前提docker 已经成功部署啦,现有有一个简单的测试案例,在docker上部署一个应用从而访问web。
接下来让我们尝试使用 docker 构建一个 web 应用程序。
我们将在docker容器中运行一个 Python Flask 应用来运行一个web应用。
通过 -p 参数来设置一样的端口:
docker ps 查看正在运行的容器
容器内部的 5000 端口映射到我们本地主机的 5000 端口上。
这时我们可以通过浏览器访问WEB应用
访问失败
指定外网端口为5000,
1 本地测试能否打开测试页
本地没有问题。
2 浏览器中访问
在任意一台电脑上输入公网IP+端口号 (此端口号为运行WEB应用时指定的端口号5000) 如我的阿里云公网IP为123111111 此时在任意一台有网络的浏览器地址栏输入公网IP:http://123111111:5000 应该会出现测试页
但现在出现如下图所示:
显示打不开
查啦大量资料,以前曾经也解决过,一定弄明白自已购买的地区后,再去设置安全组的配置规则。
1 登录阿里云管理控制台
2找到云服务器ECS-概览
3 点击云服务器ECS,这个是我购买的类型,其他类型的就不清楚啦。
4 点击本安全组后,再次点击配置规则:
5 手动添加端口5000
6 最后保存,再从浏览器地址栏输入公网IP加端口号3344成功显示测试页如图:
您好,提问者:
首先你要了解一个带有源码的web应用程序的结构,下面请看结构分析:
web应用程序结构分析:
--src:基本存放java和一些像strutsxml的文件。
--web-root:部署web项目就是部署这个文件。
--web-root下web-inf:存有页面(jsp/html)和java生成的class文件。
--------------------------------Tomcat部署结构--------------------------------
1、它不会添加的你的src目录,它会把你web-root这个文件夹给你改成web项目的名字部署到apache-tomcat-6020\webapps\目录下。
2、apache-tomcat-6020\work\Catalina\localhost\目录下是你的web项目驱动程序。
3、apache-tomcat-6020\conf\tomcat-usersxml可以配置你的tomcat密码等信息。
4、apache-tomcat-6020\conf\webxml下是一些查用格式等等信息。
5、apache-tomcat-6020\conf\contextxml下就是配置ip和端口的一些信息,驱动web项目也是在这个xml走通的!
0条评论