Linux服务器部署
这学期将要进行J2EE的学习,在正式上课之前想先在自己的VPS上部署环境,也顺便熟悉一下Linux系统,毕竟这学期还有《Linux程序设计》这门课
我的Linux系统选择的是CentOS 7 ,打算在上面部署JAVA开发环境、Mysql以及tomcat。
JAVA部署
首先用ssh远程登录服务器,由于我的服务器什么都没有装,首先更新一下包
yum update
更新完成之后,在centOS上面下载东西还需要wget 一开始系统也是没有的需要自己下载
yum -y install wget
准备工作做完,前往oracle的官网找到需要下载的JDK,在这里作为开发来讲,直接下载JDK即可,新的版本JAVA 9已经发布,在配置上跟之前也有一些小小的变化,下面会说明,我对应的版本是Linux系统的jdk-9.0.1_linux-x64_bin.rpm,后缀是rpm和tar.gz都可以,只是安装方式不同,选择同意许可后,复制下载链接,然后用wget进行下载,这里wget的使用是有格式要求的,否则会下载到错误的文件。
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/9.0.1+11/jdk-9.0.1_linux-x64_bin.rpm"
下载之后,我们将这个rpm包复制到自己创建的/usr/java/这个文件夹中
创建文件夹
mkdir /usr/java/
复制rpm包
cp rpm包名 /usr/java/
进入/usr/java/文件夹
cd /usr/java/
为rpm添加可执行权限
chmod +x rpm包名
使用rpm进行安装
rpm -ivh rpm包名
执行这行命令后应该会看到进度条,到达100%后代表安装成功啦这时可以用
java -version
来查看是否安装成功
安装成功之后,还要部署环境变量,通过编辑/etc/profile文件
vim /etc/profile
在文件的末尾添加
export JAVA_HOME=/usr/java/jdk-9
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib
这里PATH是java命令运行时要寻找的路径
CLASSPATH是java文件编译时需要的类文件所存放的相关路径,这里java 9跟之前的java 版本有一些不同
jdk文件夹中没有jre
jdk文件夹中的lib文件夹中也没有dt.jar和tools.jar这两个包
所以在写CLASSPATH时,我直接写lib文件夹了,这里只是我个人猜测,这里也记录一下如果后期出现了bug 方便排除
配置 Mysql
一开始看在网上搜索“centOS如何安装Mysql” 发现很多教程里的方法已经不适用,centOS7的 yum list中已经没有mysql了,好像是因为mysql被oracle(甲骨文)收购之后,有闭源的趋势,所以centOS使用mysql的一个活跃分支---mariaDB (my和maria分别是数据库作者的两个女儿hhhh)
据说mariaDB几乎和mysql没什么区别
我是一开始安装了mysql之后才发现安装不了mysql-server。然后就装了mariaDB-server和
mariaDB-devel
先安装mysql
yum -y install mysql
安装mariaDB-server和mariaDB-devel
yum install -y mariadb-server mariadb-devel
自动安装完成之后 使用命令
mysql -u root -p
就会进入数据库,不过是mariaDB
MariaDB [(none)]>
但其实使用的命令和mysql还是一样呢
查看数据库
MariaDB [(none)]> show database;
mysql提供了一套安全的初始化操作,使用mysql_secure_installation命令。
退出mariaDB后,在命令行输入
mysql_secure_installation
之后就是一系列配置,包括设置密码等,建议在每一个选项的时候停下来读一下,都是比较简单的英文,自己根据需要配置吧
配置tomcat
首先到tomcat官网寻找下载链接(core 版),这里选择的是tomcat最新版 9.0.2
这回可以直接用wget
wget 下载链接
tomcat的压缩包是tar.gz格式,进行解压
tar -zxvf 压缩包名称
解压成功后,将其移动到/usr/local 文件夹
mv apache-tomcat-9.0.2 /usr/local/
进入tomcat的bin文件夹
cd /usr/local/apache-tomcat-9.0.2/bin
编辑bin文件夹内的setenv.sh文件
vim setenv.sh
进入插入模式之后,将下列代码粘贴进去
#add tomcat pid
CATALINA_PID="$CATALINA_BASE/tomcat.pid"
#add java opts
JAVA_OPTS="-server -XX:PermSize=256M -XX:MaxPermSize=1024m -Xms512M -Xmx1024M -XX:MaxNewSize=256m"
为 setenv.sh文件赋予可执行权限
chmod +x setenv.sh
进行到这一步,tomcat还没有配置环境变量,接下来配置环境变量
首先拷贝catalina.sh
cp -p /usr/local/apache-tomcat-9.0.2/bin/catalina.sh /etc/init.d/tomcat
然后编辑 /etc/init.d/tomcat
vim /etc/init.d/tomcat
在文件中复制下列代码
JAVA_HOME=/usr/java/jdk-9.0.1
CATALINA_HOME=/usr/local/apache-tomcat-9.0.2
chmod 755 /etc/init.d/tomcat
chkconfig --add tomcat
chkconfig tomcat on
注意这里的JAVA_HOME和CATALINA_HOME要根据自己的实际情况填写
但是后来我发现还不行,启动有可能会报错“Service tomcat does not support chkconfig"
谷歌后找到答案,将开头改为
#!/bin/bash
#
# Tomcat 8 start/stop/status init.d script
# chkconfig: 234 20 80
# description: starts/stops/restarts Tomcat application container
...
至此,环境变量配置结束
接下来配置service,先退出到usr文件夹
进入/usr/lib/systemd/system
进入后执行命令
vim tomcat.service
然后将下列代码粘贴(注意涉及到tomcat版本名称的地方要替换成自己实际的)
[Unit]
Description=Tomcat
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/apache-tomcat-9.0.2/tomcat.pid
ExecStart=/usr/local/apache-tomcat-9.0.2/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
之后执行以下命令可以选择开机启动等
//配置开机启动
systemctl enable tomcat
//启动tomcat
systemctl start tomcat
//停止tomcat
systemctl stop tomcat
//重启tomcat
systemctl restart tomcat
配置完成,建议重启服务器,即输入命令 reboot(或者sudo reboot)即可在浏览器里输入你的服务器地址+8080端口(例如:192.168.1.161:8080),如果看到小猫咪表示成功,否则请检查以上所有步骤是否全都执行正确了。
由于我是在digitalOcean上布置的,重启之后忘记开ss了,一度登不上外网还以为是自己配置错了or2....
如果要查看tomcat的启动信息,可以通过
ps -ef|grep tomcat
但是前面刚刚弄的那些有关service的配置。。我自己的服务器上只有开机自动启动可以成功,不知道为什么。。。
我猜测可能是权限的原因?后来索性我就都在bin目录中通过startup.sh和shutdown.sh来开关tomcat,不过记得要sudo
在小猫咪界面,你可能会发现点击manager之后报了403 的错误,解决方法如下
配置gui-manager项目部署方式,切换至Tomcat conf目录,输入vi tomcat-users.xml打开文件,按“i”进入编辑模式,拷贝以下代码放置</tomcat-users>标签之间(注意将password和username换成你自己的)
<role rolename="manager"/>
<role rolename="admin"/>
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="your name" password="your password" roles="admin-gui,manager-gui"/>
然后进入apache-tomcat/webapps/manager/MEMETA-INF
输入
vim context.xml
将</Context> 标签下的<Valve> 标签注释掉,这段代码的作用是限制来访IP的,127.\d+.\d+.\d+|::1|0:0:0:0:0:0:0:1,是正则表达式,表示IPv4和IPv6的本机环回地址,所以这也解释了,为什么我们本机可以访问管理界面,但是其他机器确是403。注释掉即可
<Context antiResourceLocking="false" privileged="true" >
<!--注释掉此标签
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
...
</Context>
还有一点需要注意,每次tomcat启动速度都会很慢,将近十分钟吧,所以如果你重启之后发现在浏览器中输入地址后卡住不动,就耐心等待一下吧
关于我自己的这个问题,以后有时间,还要慢慢研究一下