Centos下Tomcat以指定的用户,非root权限开机自启

本文介绍了在Centos6.6环境下,如何以指定的非root用户启动Tomcat6。首先,通过yum安装Tomcat,然后配置开机自启,但默认以root权限启动。接着,手动安装JDK,创建普通用户,并手动安装Tomcat,通过编译jsvc并更改权限,确保以test用户启动。最后,解决开机自启时因环境变量问题导致的启动失败,通过在/etc/rc.local中加载环境变量实现。

环境:Centos6.6  Tomcat6.44  JDK1.7.072

在Cenots下使用yum install tomcat6 默认情况下开机自启是通过root高权限启动的,非常危险,如果要使用指定的低权限用户开机自启该怎么办?在tomcat6的官方资料中简单的提了一句,但是不详细,(http://tomcat.apache.org/tomcat-6.0-doc/setup.html)现在是我尝试一天后成功的过程。


如果用普通用户使用yum安装tomcat6的话

1)通过yum自动安装tomcat和dependences
root@Centos_AAA ~]$sudo yum install tomcat6
[root@Centos_AAA ~]$ sudo service tomcat6 start
[root@Centos_AAA ~]$sudo  chkconfig tomcat6 on
[root@Centos_AAA ~]#$ sudo yum install tomcat6-webapps
[root@Centos_AAA webapps]$sudo  yum install tomcat6-admin-webapps
 
如果访问http://192.168.0.120:8080/访问不了那大多是防火墙经用了8080端口,解决方法如下:
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 8080 -j ACCEPT
 
如果安装正确的话,可以在browser中看到tomcat的默认的page。
 
2) 配置tomcat
配置文件:/etc/tomcat6/tomcat6.conf + /etc/sysconfig/tomcat6
tomcat home目录: /usr/share/tomcat6
 
配置tomcat为admin和manager用户:
修改文件/usr/share/tomcat6/conf/tomcat-users.xml
<!-- The host manager webapp is restricted to users with role "admin" -->
<!--<user name="tomcat" password="password" roles="admin" />-->
<!-- The manager webapp is restricted to users with role "manager" -->
<user name="tomcat" password="password" roles="manager,admin" />
</tomcat-users>

安装成功后开机自启确实是以tomcat用户权限启动的,但是想要关闭重启tomcat服务还是需要用root或者sudo命令,无法用普通用户权限操作tomcat


下面是手动安装tomcat

一,手动安装自己的JDK环境

这个不多讲,可以看我的其他博客有详细的介绍:http://blog.youkuaiyun.com/dj1174232716/article/details/46609995

简单说就是下载JDK源码,然后设置环境变量,我实在/etc/profile中设置全局环境变量的。这里我安装在/usr/java/jdk1.7


二,新建普通权限用户

#useradd test

#passwd test

新建用户时会默认生成一个一样名称的用户组,后面我们以test用户启动tomcat,所以test用户时什么权限,tomcat就是什么权限


三,安装Tomcat6

尽量不要用yum install tomcat6安装tomcat6,缺少很多东西的,这里手动安装tomcat6,先下载apache-tomcat-6.0.44.tar.gz然后解压到安装目录,这里我解压到/usr/local/tomcat6,tomcat自带的jsvc源码需要自己编译安装的,

编译jsvc源码需要gcc,autoconf和JDK,首先进入tomcat的bin目录:

#cd /usr/local/tomcat6/bin

#tar zxvf  commons-daemon-native.tar.gz

#cd commons-daemon-native/unix

#autoconf

#./configure --with-java=/usr/java/jdk1.7    (注意,编译时一定要指定自己的java home)

#make

#cp jsvc ../..  (将jsvc复制到bin目录下,可能还会要将jsvc复制到/etc/bin目录下,自己新建一个/etc/bin目录)

#cd ../..

更改tomcat6的用户和用户组及其权限

#chown  -R  test:test  /usr/local/tomcat6

#chmod -R 711 /usr/local/tomcat6

然后就可以通过命令运行tomcat的守护进程

#/usr/local/bin/jsvc -usr test -classpath $CATALINA_HOME/bin/bootstrap.jar -outfile $CATALINA_BASE/logs/catalina.out -errfile $CATALINA_BASE/logs/catalina.err  -Dcatalina.home=$CATALINA_HOME  -Dcatalina.base=$CATALINA_BASE   -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager  -Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties  org.apache.catalina.startup.Bootstrap

前提是上面命令中的环境变量都存在,$CATALINA_HOME=$CATALINA_BASE=/usr/local/tomcat6,也可以将决定路径写进去,避免出错。-user就是指定以什么用户启动的,默认是那个用户执行这条命令就是以那个用户启动


四,开机自启

上面的命令开机后执行没问题,但是放在/etc/rc.local甚至是crontab中执行就起不来,很奇怪,后来发现是环境变量的问题,就是在crontab中是有自己的环境变量,不会加载/etc/profile中的环境变量,导致执行时找不到JAVA_HOMAE,放在/etc/rc.local中也不执行是因为/etc/rc.local执行是在加载环境变量之前的,/etc/profile是在登录时在加载的,所以可以在/etc/rc.local中添加source /etc/profile提前加载环境变量就可以了。但是需要注意的是,这种方式启动的tomcat是守护进程,普通用户无法关闭,还是要有root用户才能关闭。


至于jsvc不同的tomcat版本所在的位置不一样,具体看tomcat的官方文档。

<think>好的,用户想知道如何在CentOS 7上设置Tomcat开机动。根据之前的引用资料,我需要整理出一个清晰的步骤指南。首先,用户提到之前尝试用chkconfig配置失败,现在需要更有效的方法。根据引用2、3、4,正确的方法是使用systemd服务单元。 首先,我应该确认用户是否已经正确安装TomcatJDK,并且环境变量配置正确。然后,创建systemd服务文件是关键步骤。引用2和3提到了创建tomcat.service文件,路径可能根据实际安装位置有所不同,需要提醒用户替换自己的Tomcat路径。 接下来,服务文件的内容需要包括ExecStart和ExecStop,使用startup.sh和shutdown.sh脚本。引用4还提到了动、停止、状态检查以及用自动的命令,比如systemctl enable tomcat。此外,必须运行systemctl daemon-reload来刷新配置,这一步很重要,用户可能在之前的尝试中漏掉了,导致配置失败。 还需要注意权限问题,确保服务文件放在正确的目录下,比如/etc/systemd/system/。另外,检查Tomcat动脚本是否有执行权限,这一点可能在引用中没有提到,但作为常见问题应该包含进去,避免用户遇到权限错误。 用户可能遇到的另一个问题是环境变量未正确加载,尤其是在通过systemd动时。可以建议在服务文件中设置JAVA_HOME,或者在Tomcat的setenv.sh中配置,确保Java环境正确。 最后,验证配置是否成功,使用systemctl status tomcat查看状态,以及重系统后检查Tomcat是否自动动。这些步骤能帮助用户全面确认设置是否生效。同时,引用相关参考资料中的步骤,确保用户按照正确的方法操作,避免再次失败。</think>### CentOS 7 设置Tomcat开机的配置方法 #### **步骤1:创建Tomcat系统服务文件** 1. 使用以下命令创建并编辑服务文件: ```bash sudo vi /etc/systemd/system/tomcat.service ``` 2. 输入以下内容(注意根据实际路径修改`/usr/local/tomcat/apache-tomcat-8.5.47`): ```ini [Unit] Description=Apache Tomcat After=network.target [Service] Type=forking Environment=JAVA_HOME=/usr/java/jdk1.8.0_301 # 替换为实际JDK路径 ExecStart=/usr/local/tomcat/apache-tomcat-8.5.47/bin/startup.sh ExecStop=/usr/local/tomcat/apache-tomcat-8.5.47/bin/shutdown.sh User=root Group=root Restart=on-failure [Install] WantedBy=multi-user.target ``` #### **步骤2:刷新系统服务配置** ```bash sudo systemctl daemon-reload # 必须执行以加载新服务[^4] ``` #### **步骤3:设置开机动** ```bash sudo systemctl enable tomcat # 开动 ``` #### **步骤4:验证服务状态** ```bash sudo systemctl start tomcat # 动服务 sudo systemctl status tomcat # 查看运行状态 sudo reboot # 重系统后验证是否自 ``` #### **关键注意事项** 1. **路径一致性**:确保服务文件中`ExecStart`和`ExecStop`的路径与实际Tomcat安装路径完全一致[^2][^3]。 2. **权限问题**:若使用root用户运行Tomcat,需修改`User`和`Group`字段,并确保该用户Tomcat目录的操作权限。 3. **环境变量**:若未在全局配置`JAVA_HOME`,需在服务文件中显式声明(如示例中的`Environment=JAVA_HOME=...`)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值