TOMCAT

這裏是JDK的下載地址,我使用的是rpm包




這裏是tomcat的下載地址

部署tomcat
1.使用rz傳輸JDK的rpm包到本地
2.rz傳輸tomcat的tar包到本地

 1030 rpm -ivh jdk-10.0.1_linux-x64_bin.rpm (安裝jdk)
 1031  mkdir /usr/local/tomcat   (自定義目錄)
 1032  tar -xf apache-tomcat-8.0.52.tar.gz -C /usr/local/tomcat/  (將包解壓到自定義目錄)

[root@localhost bin]# vim /etc/profile 
export JAVA_HOME=/usr/java/jdk-10.0.1   (添加JDK環境變量,提供給tomcat使用,如果只在命令行運行,子程序會繼承)

 /usr/local/tomcat/apache-tomcat-8.0.52/bin
[root@localhost bin]# ls
bootstrap.jar       commons-daemon.jar            daemon.sh         setclasspath.sh  startup.sh            tool-wrapper.sh
catalina.bat        commons-daemon-native.tar.gz  digest.bat        shutdown.bat     tomcat-juli.jar       version.bat
catalina.sh         configtest.bat                digest.sh         shutdown.sh      tomcat-native.tar.gz  version.sh
catalina-tasks.xml  configtest.sh                 setclasspath.bat  startup.bat      tool-wrapper.bat
[root@localhost bin]# ./startup.sh  (啓動tomcat)

TOMCAT
TOMCAT
*(1和2已經說明問題,接下來直接配置就可以了)

[root@localhost conf]# vim tomcat-users.xml 
<role rolename="manager-gui"/>
<user username="boke" password="123" roles="manager-gui"/>  (自己設置用戶,密碼)
</tomcat-users>
重啓tomcat

TOMCAT


TOMCAT
*(現在啓動是可以的,但是一看進程,都是root在工作?這樣會帶來很大的安全隱患,解決方法)

基於daemon的啓動
[root@localhost bin]# vim daemon.sh 

TOMCAT

TOMCAT

源碼編譯生成jsvc文件

[root@localhost bin]# tar -xf commons-daemon-native.tar.gz (bin目錄下就有)
[root@localhost bin]# ls
bootstrap.jar commons-daemon-1.1.0-native-src configtest.sh setclasspath.bat startup.bat tool-wrapper.bat
catalina.bat commons-daemon.jar daemon.sh setclasspath.sh startup.sh tool-wrapper.sh
catalina.sh commons-daemon-native.tar.gz digest.bat shutdown.bat tomcat-juli.jar version.bat
catalina-tasks.xml configtest.bat digest.sh shutdown.sh tomcat-native.tar.gz version.sh
[root@localhost bin]# cd commons-daemon-1.1.0-native-src/
[root@localhost commons-daemon-1.1.0-native-src]# ls
LICENSE.txt NOTICE.txt README RELEASE-NOTES.txt unix windows
[root@localhost commons-daemon-1.1.0-native-src]# cd unix/
[root@localhost unix]# ls
configure configure.in INSTALL.txt Makedefs.in Makefile.in man native support
[root@localhost unix]# ./configure (編譯)
Current host
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking cached host system type... ok
C-Language compilation tools
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for ranlib... ranlib
checking for strip... strip
Host support
checking C flags dependant on host system type... ok
Java compilation tools
checking for JDK os include directory... linux
gcc flags added
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking sys/capability.h usability... no
checking sys/capability.h presence... no
checking for sys/capability.h... no
configure: WARNING: cannot find headers for libcap
Writing output files
configure: creating ./config.status
config.status: creating Makefile
config.status: creating Makedefs
config.status: creating native/Makefile
All done
Now you can issue "make"
[root@localhost unix]# make
(cd native; make all)
make[1]: Entering directory /usr/local/tomcat/apache-tomcat-8.0.52/bin/commons-daemon-1.1.0-native-src/unix/native'<br/>gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/jdk-10.0.1/include -I/usr/java/jdk-10.0.1/include/linux -c jsvc-unix.c -o jsvc-unix.o<br/>jsvc-unix.c: In function ‘run_controller’:<br/>jsvc-unix.c:1304: warning: assignment from incompatible pointer type<br/>gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/jdk-10.0.1/include -I/usr/java/jdk-10.0.1/include/linux -c arguments.c -o arguments.o<br/>gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/jdk-10.0.1/include -I/usr/java/jdk-10.0.1/include/linux -c debug.c -o debug.o<br/>gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/jdk-10.0.1/include -I/usr/java/jdk-10.0.1/include/linux -c dso-dlfcn.c -o dso-dlfcn.o<br/>gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/jdk-10.0.1/include -I/usr/java/jdk-10.0.1/include/linux -c dso-dyld.c -o dso-dyld.o<br/>gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/jdk-10.0.1/include -I/usr/java/jdk-10.0.1/include/linux -c help.c -o help.o<br/>gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/jdk-10.0.1/include -I/usr/java/jdk-10.0.1/include/linux -c home.c -o home.o<br/>gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/jdk-10.0.1/include -I/usr/java/jdk-10.0.1/include/linux -c java.c -o java.o<br/>gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/jdk-10.0.1/include -I/usr/java/jdk-10.0.1/include/linux -c location.c -o location.o<br/>gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/jdk-10.0.1/include -I/usr/java/jdk-10.0.1/include/linux -c replace.c -o replace.o<br/>gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/jdk-10.0.1/include -I/usr/java/jdk-10.0.1/include/linux -c locks.c -o locks.o<br/>gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/jdk-10.0.1/include -I/usr/java/jdk-10.0.1/include/linux -c signals.c -o signals.o<br/>ar cr libservice.a arguments.o debug.o dso-dlfcn.o dso-dyld.o help.o home.o java.o location.o replace.o locks.o signals.o<br/>ranlib libservice.a<br/>gcc jsvc-unix.o libservice.a -ldl -lpthread -o ../jsvc<br/>make[1]: Leaving directory/usr/local/tomcat/apache-tomcat-8.0.52/bin/commons-daemon-1.1.0-native-src/unix/native'
[root@localhost unix]# pwd (路徑不對,移動文件)
/usr/local/tomcat/apache-tomcat-8.0.52/bin/commons-daemon-1.1.0-native-src/unix

[root@localhost unix]# cp jsvc /usr/local/tomcat/apache-tomcat-8.0.52/bin (cp到指定目錄)
[root@localhost unix]# cd /usr/local/tomcat/apache-tomcat-8.0.52/bin
[root@localhost bin]# ls
bootstrap.jar commons-daemon.jar digest.bat shutdown.bat tomcat-native.tar.gz
catalina.bat commons-daemon-native.tar.gz digest.sh shutdown.sh tool-wrapper.bat
catalina.sh configtest.bat jsvc startup.bat tool-wrapper.sh
catalina-tasks.xml configtest.sh setclasspath.bat startup.sh version.bat
commons-daemon-1.1.0-native-src daemon.sh setclasspath.sh tomcat-juli.jar version.sh
[root@localhost bin]# ps -ef|grep tomcat
root 4610 2665 0 14:13 pts/0 00:00:00 grep tomcat
[root@localhost bin]# ./daemon.sh start (啓動時需要用戶)
Invalid user name 'tomcat' specified
[root@localhost bin]# groupadd -g 299 tomcat
[root@localhost bin]# useradd -u 299 -g 299 tomcat (忘記指定不讓他登陸了)
[root@localhost bin]# useradd -u 299 -g 299 tomcat -s /sbin/nologin
useradd: user 'tomcat' already exists
[root@localhost bin]# userdel -r tomcat (刪除重新添加)
[root@localhost bin]# !g
groupadd -g 299 tomcat
[root@localhost bin]# useradd -u 299 -g 299 tomcat -s /sbin/nologin
[root@localhost bin]# ./daemon.sh start

[root@localhost bin]# !ps

TOMCAT

[root@localhost bin]# chown tomcat. -R /usr/local/tomcat/apache-tomcat-8.0.52/  (添加用戶的權限)
[root@localhost bin]# ./daemon.sh stop (重啓)
[root@localhost bin]# ps -ef|grep tomcat
root      4717  2665  0 14:30 pts/0    00:00:00 grep tomcat
[root@localhost bin]# ./daemon.sh start
測試
./daemon.sh stop(這種啓動不舒服)
如何改成service或者systemctl 啓動方式?

[root@localhost init.d]# cp /usr/local/tomcat/apache-tomcat-8.0.52/bin/daemon.sh tomcat  (先將腳本文件放到/etc/init.d/)
[root@localhost init.d]# vim tomcat  (添加以下的環境變量)
export CATALINA_BASE=/usr/local/tomcat/apache-tomcat-8.0.52
export CATALINA_HOME=/usr/local/tomcat/apache-tomcat-8.0.52
export JAVA_HOME=/usr/java/jdk-10.0.1

[root@localhost init.d]# service tomcat start (啓動前,先關閉tomcat)

*(基於安全考慮,最好將tomcat放置其家目錄下)
tomcat虛擬主機
[root@localhost conf]# vim server.xml 
[root@localhost conf]# pwd
/usr/local/tomcat/apache-tomcat-8.0.52/conf

                                 <Host name="www.efg.com"  appBase="aefg.com"
                                                     unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="efg_access_log" suffix=".txt"
                                             pattern="%h %l %u %t &quot;%r&quot; %s %b" />

      </Host>

[root@localhost conf]# service tomcat stop
[root@localhost conf]# service tomcat start
[root@localhost apache-tomcat-8.0.52]# ls
abc.com  aefg.com  bin  conf  lib  LICENSE  logs  NOTICE  RELEASE-NOTES  RUNNING.txt  temp  webapps  work
[root@localhost apache-tomcat-8.0.52]# cd aefg.com/
[root@localhost aefg.com]# ls
ROOT
[root@localhost aefg.com]# tree .
.
└── ROOT
    └── index.jsp

1 directory, 1 file

怎麼讓訪問時不加8080呢?方法很多,nat,iptables,配置文件,但是這些方式都會降低性能

怎麼改合適?----nginx

使用nginx的反向代理功能,能很好地解決此問題
 server {
        listen       80;
        server_name  www.abc.com;

        location / {
                proxy_pass http://192.168.1.3:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header X-Forwarded-For $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

tomcat + DB
這裏說明幾點即可
1.連接數據庫要有 mysql-connector-java.
2.配置文件定義連接數據庫(一種爲全局,一種爲局部。)
3.[root@localhost conf]# vim context.xml ^C(全局,會應用到所有虛擬主機數據目錄)
[root@localhost conf]# pwd
/usr/local/tomcat/apache-tomcat-8.0.52/conf

4.WEB-INF(局部,一般存放在數據目錄裏面)
5.數據庫授權
6.修改權限
7.測試
tomcat遷移和反向(參考上一章php的遷移,原理是一樣的)
tomcat程序複製(和上一章php的複製一樣,唯一一點是nginx做了輪詢是,section值)
section會出現什麼問題呢?
當你第一次輸入用戶密碼時輪詢到1機器,1機器數據庫記錄下你的section和狀態
當你點擊登陸時輪詢到2機器,2機器發現你沒有登陸,要求你重新登陸
但你再次輸入用戶密碼時2機器記錄下你的section和狀態,登陸輪訓到1機器,1機器發現你沒登陸(惡性循環)
解決方法:(nginx-proxy+iphash)
tomcat多實例
應爲當你維護一個實例時,關閉tomcat會影響所有的實例(這樣並不好,解決方法)

[root@localhost tomcat1]# ls   (這是1)
bin  conf  logs  temp  tomcat1.com  webapps  work

[root@localhost tomcat2]# ls(這是2,端口改成和1不同的就行,server.xml裏改)
bin  conf  logs  temp  tomcat2.com  webapps  work

[root@localhost init.d]# vim tomcat1 (1啓動1的實例)
[root@localhost init.d]# pwd
/etc/init.d
export CATALINA_BASE=/usr/local/tomcat/apache-tomcat-8.0.52/tomcat1
export CATALINA_HOME=/usr/local/tomcat/apache-tomcat-8.0.52
export JAVA_HOME=/usr/java/jdk-10.0.1

[root@localhost init.d]# vim tomcat2 (2啓動2的實例)
[root@localhost init.d]# pwd
/etc/init.d
export CATALINA_BASE=/usr/local/tomcat/apache-tomcat-8.0.52/tomcat2
export CATALINA_HOME=/usr/local/tomcat/apache-tomcat-8.0.52
export JAVA_HOME=/usr/java/jdk-10.0.1

TOMCAT
TOMCAT
OK。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章