tomcat

目录

Nginx    ---->  PHP

Tomact  ------>  Java(可以写动态网站)

Java简介:

JDK简介:

tomcat

测试静态页面:

测试动态页面:

使用tomcat创建虚拟主机

tomcat访问路径与页面位置

如何实现?

访问www.b.com:8080/abc/ 看到的是 /var/www/html 目录里面的内容

使用tomcat搭建https网站

准备工作

将源码包转换为rpm包

VPN  虚拟专用网


Nginx    ---->  PHP

Tomact  ------>  Java(可以写动态网站)

Java简介:

Java是一种跨平台的,面向对象的程序设计语言,Java技术具有卓越的通用性,高效性,平台移植性和安全性。

Java在写程序的过程中借鉴的虚拟机的原理。

Tomcat是免费的的跑java程序的,tomcat也是apache发布的。

JDK简介:

JDKSun针对java开发者退出的java语言的软件开发工具包

JDK是整个java的核心

Servletjava扩展web服务器功能的组件规范

tomcat

 

工作原理:

cd  ~/lnmp_soft/
tar  -xf  apache-tomcat-8.0.30.tar.gz     //释放tomcat软件包
cp  -r  apache-tomcat-8.0.30  /usr/local/tomcat
cd  /usr/local/tomcat/
yum -y install java-1.8.0-openjdk    //安装java程序运行环境包
[root@proxy tomcat]# bin/startup.sh   //开启服务
http://192.168.2.5:8080/     //使用火狐访问
netstat  -ntulp | grep  java   //检查如果有800580098080端口则正常    

tomcat目录:

bin  存放主程序

logs  存放日志

conf  配置文件

webapps  存放网站页面  

lib  存放库文件

work  存放编译后页面文件

检查如果有800580098080端口则正常    

由于tomcat服务开启时需要大量随机字符,但系统中随机字符

不够多的话会导致tomcat服务启动失败

排错:

解决方案1
mv  /dev/random  /dev/random.bak    //将random改名
ln  -s  /dev/urandom  /dev/random   //用urandom替换random
解决方案2
yum -y  install  rng-tools
systemctl  start  rngd
killall   java   //杀掉所有java程序
[root@proxy tomcat]# bin/startup.sh   //重新开启服务
netstat  -ntulp | grep  java   //检查如果有800580098080端口则正常

测试静态页面:

cd  /usr/local/tomcat
echo  "tomcat-test~~~~"  >  webapps/ROOT/test01.html
http://192.168.2.5:8080/test01.html   火狐访问测试

测试动态页面:

vim webapps/ROOT/test02.jsp		
<html>
<body>
<center>
Now time is: <%=new java.util.Date()%>
</center>
</body>
</html>
http://192.168.2.5:8080/test02.jsp   火狐访问测试

使用tomcat创建虚拟主机

回顾,

httpd搭建虚拟主机

<virtualhost *:80>

servername www.a.com

documentroot  /var/www/html

</virtualhost>

nginx搭建虚拟主机

http  {

server  {

listen 80;

server_name www.a.com;

root html;

index index.html;

}

}

tomcat搭建虚拟主机

<Host  name=域名 appBase=网站页面位置  >

</Host>

vim conf/server.xml  //打开配置文件在122行添加虚拟主机配置

<Host  name="www.b.com"  appBase="web_b">      //这里顺便把下面的默认的

虚拟主机的name="localhost"改成 name="www.a.com"

</Host>

mkdir -p web_b/ROOT    //之后创建b网站的目录
echo "tomcat-A~~~" > webapps/ROOT/index.html
echo "tomcat-B~~~" > web_b/ROOT/index.html
tail -1 /etc/hosts   //查看域名解析
192.168.2.5  www.a.com  www.b.com 
bin/shutdown.sh   //关闭tomcat
bin/startup.sh   //开启
[root@proxy tomcat]# curl www.a.com:8080   //测试
tomcat-A~~~
[root@proxy tomcat]# curl www.b.com:8080
tomcat-B~~~

自动更新开发工程师编写的网站功能代码

再次修改虚拟主机配置
<Host name="www.b.com" appBase="web_b"
unpackWARs="true" autoDeploy="true">      //添加unpackWARs自动
解war包,和autoDeploy可以自动更新开发工程师编写的网站功能代码
</Host>
bin/shutdown.sh     //然后重启tomcat
bin/startup.sh    //开启服务
netstat  -ntulp | grep  java    //检查
yum -y install java-1.8.0-openjdk-devel  //安装可以制作war包的工具
jar  -cf  b.war  /var/log   //之后可以使用jar命令打war包
cp  b.war  web_b/  //将war包放入虚拟主机的网页目录
ls  web_b/    //检查,可以看到已经自动解开

tomcat访问路径与页面位置

Context  path  匹配用户访问路径  

docBase 定义页面位置

测试 1
<Host name="www.b.com" appBase="web_b"
unpackWARs="true" autoDeploy="true">			
<Context  path=""  docBase=""  />	       
</Host>
echo "web_b/ROOT/index.html" > web_b/ROOT/index.html   //默认页面路径
echo "web_b/index.html" > web_b/index.html   //创建素材,定义新路径
curl  www.b.com:8080   //测试可以看到的是默认的页面路径
web_b/ROOT/index.html
之后重启tomcat
curl  www.b.com:8080    //重启后测试可以看到新路径
web_b/index.html

测试 2
<Host name="www.b.com" appBase="web_b"
unpackWARs="true" autoDeploy="true">
<Context  path=""  docBase="abc"  />   //修改成abc
</Host>
mkdir  web_b/abc    //创建测试目录
echo "web_b/abc/index.html"  >  web_b/abc/index.html  //测试页面
重启tomcat
[root@proxy tomcat]# curl www.b.com:8080   //查看,见到新路径
web_b/abc/index.html

测试 3
<Host name="www.b.com" appBase="web_b"
unpackWARs="true" autoDeploy="true">
<Context  path=""  docBase="/abc"  />   //修改成/abc
</Host>
mkdir  /abc  //创建测试目录
echo  "/abc/index.html"  > /abc/index.html    //创建测试文件
重启tomcat
[root@proxy tomcat]# curl www.b.com:8080    //得到新路径
/abc/index.html

测试 4
<Host name="www.b.com" appBase="web_b"
unpackWARs="true" autoDeploy="true">
<Context  path="/test"  docBase="/abc"  />   //path后面添加内容可以匹配
用户访问路径,当用户访问www.b.com:8080/test/时,看到的是/abc的内容,如果
访问www.b.com:8080就看到web_b/ROOT的内容
</Host>
重启tomcat
[root@proxy tomcat]# curl www.b.com:8080/test/
/abc/index.html
[root@proxy tomcat]# curl www.b.com:8080
web_b/ROOT/index.html

测试 5
<Host name="www.b.com" appBase="web_b"
unpackWARs="true" autoDeploy="true">
<Context  path="/test"  docBase="abc"  />     ///abc改成abc
当用户访问www.b.com:8080/test/时,可以看到web_b/abc里的内容
当用户访问www.b.com:8080时就看到web_b/ROOT的内容
重启tomcat
[root@proxy tomcat]# curl www.b.com:8080/test/		 
web_b/abc/index.html
[root@proxy tomcat]# curl www.b.com:8080
web_b/ROOT/index.html

如何实现?

访问www.b.com:8080 看到的是 /usr/local/tomcat/dc/dcc目录里面的内容

访问www.b.com:8080/abc/ 看到的是 /var/www/html 目录里面的内容

<Host name="www.b.com" appBase="dc"

unpackWARs="true" autoDeploy="true">

<Context path="/abc" docBase="/var/www/html" />

<Context path="" docBase="dcc" />

</Host>

给新创建的虚拟主机添加日志功能

vim conf/server.xml   //修改配置文件,复制最后一页默认虚拟主机的日志配置
其中prefix是日志名称,suffix是日志后缀名
<Host name="www.b.com" appBase="test01"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="abc" />
     <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="www_b_com" suffix=".log"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
配置好之后开启或者重启tomcat服务
curl  www.b.com:8080   //访问一次网站,可以产生日志记录
[root@proxy tomcat]# ls logs/    查看日志目录可以看到b网站的日志名称

使用tomcat搭建https网站

准备工作

killall  java
cd  ~/lnmp_soft
rm  -rf  /usr/local/tomcat/
cp  -r  apache-tomcat-8.0.30  /usr/local/tomcat
yum -y install  java-1.8.0-openjdk
cd  /usr/local/tomcat/
bin/startup.sh    //开启服务
netstat -ntulp | grep java   //检查端口,需要看到8005
80098080端口
vim conf/server.xml   //修改配置文件,打开找到85行,将前后的注释删除 <!--   -->
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"
keystoreFile="/usr/local/tomcat/keystore"
keystorePass="123456"  />   //这里
添加keystoreFile(指定公钥私钥文件)keystorePass(公钥私钥文件密码)
keytool  -genkeypair  -alias  tomcat  -keyalg RSA  
-keystore  /usr/local/tomcat/keystore  //创建密钥对,别名是tomcat,加
密算法是RSA,最后是存储位置
输入密钥库口令: 输入123456
再次输入新口令: 再次输入123456
您的名字与姓氏是什么?
  [Unknown]:  dc
.....
CN=dc, OU=dc, O=dc, L=dc, ST=dc, C=dc是否正确?			
  []:  y
输入 <tomcat> 的密钥口令
        (如果和密钥库口令相同, 按回车):   直接回车
Warning:
ls  //检查下/usr/local/tomcat下面会产生keystore则成功
bin/shutdown.sh    //重启tomcat
bin/startup.sh
netstat -ntulp | grep java    //检查可以看到8443端口
echo  "tomcat-https~~"  >  webapps/ROOT/index.html   //准备测试页面
curl  -k  https://192.168.2.5:8443   //访问安全加密网站

将源码包转换为rpm包

[root@proxy ~]# yum -y install  rpm-build    //安装制作rpm包的工具
[root@proxy ~]# rpmbuild  -ba  nginx.spec  //制作rpm包,但是没有配
置文件会报错,报错也需要敲,会产生所需的目录
[root@proxy ~]# ls    //可以看到一个rpmbuild目录
[root@proxy ~]# cp  ~/lnmp_soft/nginx-1.17.6.tar.gz  rpmbuild/SOURCES/  
//拷贝源码包到rpmbuild的工作目录
[root@proxy ~]# yum -y install  gcc  make  pcre-devel  openssl-devel
vim  rpmbuild/SPECS/nginx.spec  //编写将nginx转换为rpm包的配置文件
Name:nginx     //软件名
Version:1.17.6    //版本
Release:1       //发布的rpm包的版本
Summary:test~    //简单描述
#Group:
License:GPL    //授权协议 ,GPL表示自由软件
URL:www.abc.com    //网址
Source0:nginx-1.17.6.tar.gz     //源码包 
#BuildRequires:   
#Requires:
%description    //详细描述
test~ test~ 
%post      //可以添加安装rpm包之后执行的命令,不是必须
useradd  nginx
%prep
%setup -q
%build
./configure  //配置,如果要添加选项或者模块可以继续写
make %{?_smp_mflags}     //编译
%install
make install DESTDIR=%{buildroot}    //安装
%files
%doc
/usr/local/nginx/*     //将改路径下文件打包成rpm
%changelog
rpmbuild  -ba  rpmbuild/SPECS/nginx.spec  //根据上述文件制作rpm包
ls  rpmbuild/RPMS/x86_64/nginx-1.17.6-1.x86_64.rpm  //查看最终结果,
已经产生nginx的rpm包则成功

VPN  虚拟专用网

1,使用gre技术搭建vpn,适用于linux环境
[root@web1 ~]# modprobe  ip_gre    //在内核中开启gre功能
[root@web1 ~]# lsmod | grep  gre  //检查,可以看到gre字样信息即可
ip tunnel add tun0 mode gre remote 192.168.2.200 local 192.168.2.100    //创建
vpn隧道,名字叫tun0,mode是使用gre技术,与2.200连接,自己ip是2.100
ip  tunnel  del  tun0   //如果错误,可以删除重配
ip addr add 10.10.10.100/8 peer 10.10.10.200/8 dev tun0  //在tun0隧道(dev)中使
用私有ip地址,本机是10.100 ,对面(peer)10.200
ip addr del 10.10.10.100/8 peer 10.10.10.200/8 dev tun0  //如果错误可以删除
ip link set tun0 up    //激活tun0
ip addr show tun0   //查看

2,使用pptpd搭建vpn,支持windows环境
[root@web1 ~]# cd  ~/lnmp_soft/vpn/
yum  -y  install  ppp   //安装vpn依赖软件包
rpm  -ivh  pptpd-1.4.0-2.el7.x86_64.rpm   //安装vpn工具
vim  /etc/pptpd.conf   //修改102103
localip  192.168.2.100   //本机ip
remoteip  10.10.10.10-18  //给windows客户机分配的ip(vpn隧道内
使用的地址,可以自定义),范围是10.10.10.10~10.10.10.18
vim  /etc/ppp/options.pptpd   //修改配置,定义dns,66行将#去掉
vim  /etc/ppp/chap-secrets   //定义windows客户机的用户名和密码
tom  *  123456  *     //另起一行创建用户tom,配置密码123456
systemctl  restart  pptpd   //开服务
netstat  -ntulp  |  grep  pptpd    //检查
然后使用windows系统设置vpn	

最下面 用户名写tom  密码123456

3,使用xl2tp搭建vpn,支持windows环境,更安全
systemctl  stop  pptpd
首先第一个环节,配置加密:
[root@web1 vpn]# yum  -y  install  libreswan   //安装加密工具
[root@web1 vpn]# cp  myipsec.conf  /etc/ipsec.d/   //复制配置文件到
ipsec.d目录
[root@web1 vpn]# vim  /etc/ipsec.d/myipsec.conf    //修改配置第16行
left=192.168.2.100    //设置为本机ip
vim  /etc/ipsec.secrets   //修改配置,添加加密信息
192.168.2.100  %any:  PSK  "randpass"   //另起一行,添加2.100是本机
ip,%any:是允许任何客户机连接本服务器,PSK是预共享密钥,randpass
是密码,等windows客户连接vpn服务器时需要该密码
rpm  -ivh  xl2tpd-1.3.8-2.el7.x86_64.rpm
vim  /etc/xl2tpd/xl2tpd.conf    //打开配置文件,3233
ip range = 10.10.10.10-10.10.10.18  //给客户分配的ip
local ip = 192.168.2.100    //本机ip
vim  /etc/ppp/options.xl2tpd   //修改配置文件,将第1016
注释掉,删除掉21行的#以及空格,就可以启用加密
systemctl  start  ipsec   //开启加密服务
netstat  -ntulp |grep  :500    //之后检查加密服务
systemctl  start  xl2tpd  //开启xl2tpd服务
netstat  -ntulp |grep  xl2tpd

4.编写Unit文件,使systemctl命令控制nginx
cd  /usr/lib/systemd/system 
cp httpd.service nginx.service    //拷贝模板
vim  nginx.service   //修改
[Service]
Type=forking  //nginx是多进程类型程序,要设置为forking
ExecStart=/usr/local/nginx/sbin/nginx  //当执行了systemctl start nginx之后执行的命令
ExecReload=/usr/local/nginx/sbin/nginx -s reload   //当执行了systemctl reload nginx之后执行的命令
ExecStop=/bin/kill -s QUIT $MAINPID    //当执行了systemctl stop nginx之后执行的命令,这里是用kill命令发送退出信号给nginx的进程号,相当于停止nginx服务,-s QUIT是发送退出信号,使nginx优雅关闭(处理完客户请求才退出),$MAINPID是变量,里面存了nginx的进程号
[Install]
WantedBy=multi-user.target   //支持开机自启
systemctl daemon-reload      //激活刚才的test.service文件,但有时可能不好使,可以重启系统
然后重启服务之后可以用systemctl等命令控制nginx
提示:必须要提前先安装好nginx服务,并且没有其他服务占用80端口!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值