tomcat下载地址:https://tomcat.apache.org/download-90.cgi
安装在opt目录下,并做软链接
wget https://mirrors.cloud.tencent.com/apache/tomcat/tomcat-9/v9.0.74/bin/apache-tomcat-9.0.74.tar.gz
tar -xzvf apache-tomcat-9.0.74.tar.gz
mkdir /opt/tomcat /opt/tomcat/tomcat9.0
mv apache-tomcat-9.0.74 /opt/tomcat/tomcat9.0/
ln -s /opt/tomcat/tomcat9.0/apache-tomcat-9.0.74 /opt/tomcat/tomcat9.0/default // 创建tomcat8.5默认软链接
ln -s /opt/tomcat/tomcat9.0/default /opt/tomcat/default // 创建系统默认tomcat软链接
rm -rf /opt/tomcat/tomcat9.0/apache-tomcat-9.0.74/webapps/{docs,examples,host-manager,manager,ROOT} // 删除webapps下文件
chown root:root -R /opt/tomcat // 所有者设置为root
chmod go+rX -R /opt/tomcat // 给组和其他用户加上读和执行权限,方便用户启动tomcat。
vim /opt/tomcat/tomcat9.0/apache-tomcat-9.0.74/conf/server.xml // 删除该文件中的注释,以后配置多实例时,更容易修改配置。(可选操作)
创建用户主目录
mkdir /data/tomcat
创建用户
useradd -d /data/tomcat/ujcms ujcms // -d 指定主目录
usermod -s /sbin/nologin ujcms // 用户不允许登录shell: -s /sbin/nologin
passwd ujcms // 修改密码
chmod u-w /data/tomcat/ujcms // 去除用户主目录的写权限,否则vsftp设置为chroot_local_user=YES时,会无法登录
chown ujcms:nginx /data/tomcat/ujcms // 修改主目录所属的用户组为nginx,使nginx可以访问用户主目录
chmod g+rX /data/tomcat/ujcms // 用户目录允许组成员进入,方便nginx访问
准备CATALINA_BASE需要的内容
cd /data/tomcat/ujcms
mkdir {logs,work,temp,webapps,webapps/ROOT,backup} // 创建必须文件夹。backup作为备份文件夹
cp -R /opt/tomcat/default/conf ./ // 拷贝配置文件
chown -R ujcms:ujcms * // 设置目录所有者
如果是tomcat8.5升级tomcat9.0
# \cp 强制覆盖不提示
\cp -Rf /opt/tomcat/tomcat9.0/default/conf/{catalina.policy,catalina.properties,context.xml,jaspic-providers.xml,jaspic-providers.xsd,tomcat-users.xml,tomcat-users.xsd,web.xml} ./
修改conf/server.xml文件
AJP Connector port="8009"
配置。org.apache.catalina.valves.AccessLogValve
配置。8080
端口为10001
Connector可优化的选项。基本不用优化,优化后也看不到明显的变化。
修改conf/loggin.properties
# 只保留一个handlers
handlers = java.util.logging.ConsoleHandler
一般不需要另外编译openssl
要安装openssl-1.1.0 源码下载: https://www.openssl.org/source/
yum安装的openssl-1.0.1e版本太低,无法编译tomcat native。
wget https://www.openssl.org/source/openssl-1.1.0e.tar.gz // 下载
tar -xzvf openssl-1.1.0e.tar.gz // 解压
mv openssl-1.1.0e /usr/local/src/ // 需要解压到`/usr/local/src`目录下,否则无法编译
cd /usr/local/src/openssl-1.1.0e
yum install zlib-devel gcc
./config shared zlib --prefix=/usr/local/openssl
make & make install
mv /usr/bin/openssl /usr/bin/openssl.old
mv /usr/include/openssl /usr/include/openssl.old // 如果不存在则忽略
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig -v
openssl version
一般不需要使用tomcat native
参考文档:http://tomcat.apache.org/native-doc/
yum install apr-devel //安装依赖
cd /opt/tomcat/tomcat9.0/apache-tomcat-9.0.74/bin/
tar -xzvf tomcat-native.tar.gz
cd tomcat-native-1.2.12-src/native
./configure --with-apr=/usr/bin/apr-1-config \
--with-java-home=/opt/java/default/ \
--with-ssl=/usr/local/openssl \
--prefix=/opt/tomcat/default/
make && make install //编译后文件在这个目录:$CATALINA_HOME/lib
创建native环境变量
cd /opt/tomcat/tomcat9.0/apache-tomcat-9.0.74/bin
cp setclasspath.sh setenv.sh
chown root:tomcat setenv.sh
vim setenv.sh
内容修改为
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CATALINA_HOME/lib
export LD_LIBRARY_PATH
创建启动脚本
vim /usr/lib/systemd/system/tomcat_ujcms.service
启动脚本内容
[Unit]
Description=Apache Tomcat
After=syslog.target network.target
[Service]
Type=forking
Environment="JAVA_HOME=/opt/java/default"
# 设置java内存。解决createSecureRandom耗时长的问题。
Environment="CATALINA_OPTS=-Xms200M -Xmx350M -Djava.security.egd=file:/dev/./urandom -Duser.dir=/data/tomcat/ujcms"
Environment="CATALINA_HOME=/opt/tomcat/default"
Environment="CATALINA_BASE=/data/tomcat/ujcms"
# 默认UMASK为0027,为了能够让nginx访问,设置为0022。
Environment="UMASK=0022"
ExecStart=/opt/tomcat/default/bin/startup.sh
ExecStop=/opt/tomcat/default/bin/shutdown.sh
User=ujcms
Group=ujcms
[Install]
WantedBy=multi-user.target
启动服务
systemctl daemon-reload
systemctl enable tomcat_ujcms
systemctl start tomcat_ujcms