目录
访问www.b.com:8080/abc/ 看到的是 /var/www/html 目录里面的内容
Nginx ----> PHP
Tomact ------> Java(可以写动态网站)
Java简介:
Java是一种跨平台的,面向对象的程序设计语言,Java技术具有卓越的通用性,高效性,平台移植性和安全性。
Java在写程序的过程中借鉴的虚拟机的原理。
Tomcat是免费的的跑java程序的,tomcat也是apache发布的。
JDK简介:
JDK是Sun针对java开发者退出的java语言的软件开发工具包
JDK是整个java的核心
Servlet是java扩展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 //检查如果有8005、8009、8080端口则正常
tomcat目录:
bin 存放主程序
logs 存放日志
conf 配置文件
webapps 存放网站页面
lib 存放库文件
work 存放编译后页面文件
检查如果有8005、8009、8080端口则正常
由于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 //检查如果有8005、8009、8080端口则正常
测试静态页面:
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 "%r" %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、
8009、8080端口
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 //修改102、103行
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 //打开配置文件,32、33行
ip range = 10.10.10.10-10.10.10.18 //给客户分配的ip
local ip = 192.168.2.100 //本机ip
vim /etc/ppp/options.xl2tpd //修改配置文件,将第10、16行
注释掉,删除掉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端口!