CentOS 7 上使用 Xshell 和 Xftp 搭建 JDK、Tomcat 与 MySQL 环境
发布时间:2026/10/16 15:33:10 锦皓数字建站

1. 环境准备与整体思路拆解1.1 为什么选择这套组合方案把本地开发环境里的文件搬到远程服务器上再在服务器上把 Java 运行环境、Web 容器和数据库一次性搭好这是后端开发和运维入门阶段绕不开的一道坎。我见过太多新手卡在这一步本地写好的代码传不上去传上去了又跑不起来跑起来了数据库又连不上。问题往往不在于技术本身有多难而在于整个流程涉及的环节太多任何一个细节没注意到就会卡住。这套方案的核心工具组合是Xshell 负责远程终端操作Xftp 负责文件传输目标机器是一台运行 CentOS 7 的虚拟机最终要装好JDK、Tomcat和MySQL三件套。为什么是这三个因为这是最经典的 Java Web 运行环境组合——JDK 提供 Java 运行时Tomcat 作为 Servlet 容器承载 Web 应用MySQL 负责数据持久化。三者缺一不可构成了一个最小可用的后端服务闭环。选择 Xshell 和 Xftp 而不是其他工具理由很实际这两个工具同属一个厂商界面风格统一Xftp 可以直接从 Xshell 会话中一键唤起省去了重复输入主机地址和密码的麻烦。对于刚接触远程操作的人来说这种联动设计能显著降低操作门槛。而且它们对中文编码的支持比较友好传输包含中文文件名的文件时不容易出现乱码。1.2 虚拟机网络模式的选型逻辑在动手之前有一个前置问题必须想清楚虚拟机的网络模式怎么选。这直接决定了你的本地机器能不能连上虚拟机。常见的三种模式对比如下网络模式虚拟机 IP 特点本地能否直连适用场景NAT 模式由虚拟网络分配通常是 192.168.x.x 段可以但需确认网段个人开发不需要外部访问桥接模式与物理机同网段像一台独立设备可以IP 更稳定需要局域网内其他设备访问仅主机模式只能与物理机通信可以但无法上外网纯隔离测试环境我个人的建议是如果你只是自己练习用 NAT 模式就够了如果你希望虚拟机的 IP 相对固定、方便反复连接桥接模式会更省心。不管选哪种装完系统后第一件事就是用ip addr或ifconfig确认虚拟机的 IP 地址记下来后面 Xshell 连接时要用。注意CentOS 7 最小化安装默认可能没有ifconfig命令用ip addr更稳妥。如果连ip命令都没有说明系统装得过于精简建议重装时勾选基础网络工具。1.3 整体操作流程鸟瞰把整个任务拆开来看逻辑链条是这样的打通连接确认虚拟机 IP用 Xshell 建立 SSH 连接传输文件用 Xftp 把本地准备好的安装包上传到虚拟机装 JDK解压配置环境变量验证java -version装 Tomcat解压启动验证 8080 端口可访问装 MySQL安装服务、初始化、设置密码、授权远程连接联调验证确认三者能协同工作这个顺序不能乱。JDK 必须最先装因为 Tomcat 依赖它MySQL 可以独立安装但放在最后能避免端口和权限的干扰。下面我按这个流程逐步展开把每个环节的细节和坑都讲透。2. 远程连接与文件传输的实操要点2.1 Xshell 建立连接的完整步骤打开 Xshell点击左上角的新建会话弹出配置窗口。这里有几个关键填写项名称随便起建议用“CentOS7-测试机”这种一看就懂的名字协议保持默认的 SSH主机填虚拟机的 IP 地址比如 192.168.1.100端口号默认 22除非你改过 SSH 配置填完之后先别急着点确定左侧有个“用户身份验证”选项卡点进去填用户名和密码。用户名通常是root密码是你装系统时设的。如果你用的是普通用户后面执行安装命令时需要加sudo或者用su -切换到 root。连接建立后第一次会弹出一个主机密钥确认的提示点“接受并保存”即可。这个提示的意思是这是你第一次连这台机器客户端记住了它的指纹以后如果指纹变了会警告你——这其实是一个安全机制防止连到冒充的服务器上。实操心得如果连接时报“Connection refused”九成是虚拟机的 SSH 服务没启动或者防火墙拦了 22 端口。在虚拟机里执行systemctl status sshd看服务状态执行systemctl stop firewalld临时关掉防火墙再试。生产环境不要直接关防火墙应该用firewall-cmd放行端口。2.2 Xftp 传输文件的正确姿势Xftp 最方便的用法是从 Xshell 里直接唤起。在 Xshell 的菜单栏找到“窗口”或者工具栏上的 Xftp 图标点一下就会打开一个已经连好同一台机器的 Xftp 窗口省去了重新输入连接信息的步骤。Xftp 的界面分左右两栏左边是本地文件系统右边是远程文件系统。传输文件就是拖拽或者选中文件后点中间的箭头按钮。这里有几个细节值得注意传输模式的选择。Xftp 支持 ASCII、二进制和自动三种模式。传压缩包、安装包这类文件一定要用二进制模式否则文件可能损坏。自动模式大多数情况下没问题但遇到.tar.gz、.rpm这种手动切成二进制更保险。文件存放位置。建议在远程机器上建一个专门的目录放安装包比如/usr/local/software或者/opt/software。不要随手丢在/root或者/tmp下/tmp目录可能会被系统清理/root下文件多了以后不好管理。# 在 Xshell 里提前建好目录 mkdir -p /usr/local/software cd /usr/local/software中文文件名乱码问题。如果本地文件名带中文传输后可能显示成乱码。解决办法是在 Xftp 的会话属性里把编码设置为 UTF-8。如果已经传完了才发现乱码用convmv工具转换文件名编码或者干脆重命名成英文。2.3 上传前的文件准备清单在传文件之前最好在本地把要用的安装包都准备好。需要哪些软件推荐版本文件格式说明JDK1.8即 Java 8.tar.gz兼容性最好Tomcat 7/8/9 都支持Tomcat8.5 或 9.0.tar.gz8.5 更稳定9.0 支持新特性MySQL5.7.tar.gz 或 .rpm5.7 是经典版本资料多为什么 JDK 选 1.8 而不是更高版本因为 Tomcat 8.5 和很多老项目对 JDK 8 的支持最成熟用 JDK 11 或 17 可能会遇到模块化相关的报错。如果你是全新项目可以考虑 JDK 11但练习环境用 8 最省心。提示下载安装包时注意区分系统架构。CentOS 7 通常是 x86_64 架构下载对应的 64 位版本。用uname -m命令可以确认。3. JDK 安装与环境变量配置3.1 解压与目录规划假设你已经把jdk-8uXXX-linux-x64.tar.gz传到了/usr/local/software目录。接下来解压cd /usr/local/software tar -zxvf jdk-8uXXX-linux-x64.tar.gz -C /usr/local/这里-C /usr/local/的意思是解压到/usr/local/目录下。解压完会得到一个类似jdk1.8.0_XXX的文件夹。为了后续配置方便我习惯把它重命名成一个简短的名字cd /usr/local mv jdk1.8.0_XXX jdk1.8这样 JDK 的根目录就是/usr/local/jdk1.8后面写环境变量时路径更清爽。3.2 环境变量配置的两种方式配置环境变量有两种常见做法各有适用场景方式一修改/etc/profile。这是全局配置对所有用户生效。适合服务器上多个用户都需要用 Java 的场景。vi /etc/profile在文件末尾追加export JAVA_HOME/usr/local/jdk1.8 export JRE_HOME${JAVA_HOME}/jre export CLASSPATH.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH${JAVA_HOME}/bin:${PATH}方式二修改~/.bash_profile。这是当前用户的私有配置只对这个用户生效。如果你只是自己用改这个文件更干净不会影响其他用户。两种方式改完后都需要让配置生效source /etc/profile # 或者 source ~/.bash_profile3.3 验证安装与常见报错验证很简单执行java -version如果输出类似java version 1.8.0_XXX的信息说明装好了。如果提示command not found说明 PATH 没配好检查一下JAVA_HOME路径是否写对以及有没有执行source。还有一个容易忽略的点CLASSPATH里的那个点号。它代表当前目录意思是 Java 运行时也会在当前目录下找类文件。这个点号不能省否则运行某些程序时会报NoClassDefFoundError。踩过的坑有一次我配完环境变量java -version正常但javac命令找不到。排查发现是 PATH 里只加了${JAVA_HOME}/bin但JAVA_HOME变量本身没导出成功。原因是export写成了exprot一个字母之差排查了半小时。所以配完一定要用echo $JAVA_HOME确认变量真的有值。4. Tomcat 部署与启动验证4.1 解压与目录结构说明Tomcat 的安装更简单解压即用cd /usr/local/software tar -zxvf apache-tomcat-8.5.XX.tar.gz -C /usr/local/ cd /usr/local mv apache-tomcat-8.5.XX tomcat8解压后的目录结构值得了解一下因为后面排查问题会用到bin/启动和关闭脚本startup.sh和shutdown.sh在这里conf/配置文件server.xml改端口tomcat-users.xml配管理用户webapps/默认的应用部署目录把 war 包丢进去会自动解压logs/日志目录启动失败先看catalina.out4.2 启动 Tomcat 与端口配置启动命令cd /usr/local/tomcat8/bin ./startup.sh看到Tomcat started就说明启动成功了。但这里有个新手常犯的错误以为启动成功就能访问。实际上还要过防火墙这一关。CentOS 7 默认的防火墙是 firewalld8080 端口默认是关闭的。临时放行重启后失效firewall-cmd --zonepublic --add-port8080/tcp --permanent firewall-cmd --reload--permanent表示永久生效--reload让配置立即生效。这两条命令要一起用只加--permanent不 reload 是不生效的。如果 8080 端口被占用了怎么办改conf/server.xml找到Connector port8080那一行把 8080 改成别的比如 8081然后重启 Tomcat。4.3 验证访问与日志排查在本地浏览器输入http://虚拟机IP:8080如果看到 Tomcat 的默认欢迎页说明部署成功。如果访问不了按这个顺序排查Tomcat 进程在不在ps -ef | grep tomcat端口在不在监听netstat -tlnp | grep 8080防火墙放行了没firewall-cmd --list-ports日志有没有报错tail -f /usr/local/tomcat8/logs/catalina.out日志是最直接的线索。我遇到过启动时报Address already in use一看就是端口冲突还遇到过JAVA_HOME not found说明 Tomcat 找不到 JDK需要在bin/setclasspath.sh里显式指定JAVA_HOME。实操心得Tomcat 的启动脚本其实会去读环境变量里的JAVA_HOME。如果你在/etc/profile里配了但 Tomcat 还是报找不到很可能是因为启动脚本执行时没有加载 profile。解决办法是在bin/setclasspath.sh开头加上export JAVA_HOME/usr/local/jdk1.8这样最稳妥。5. MySQL 安装与远程访问配置5.1 安装方式的选择MySQL 在 CentOS 7 上有几种装法我推荐用tar.gz 解压安装原因有三一是版本可控不会被系统源里的版本绑架二是卸载干净删目录就行三是不依赖 yum 源离线环境也能装。如果你图省事用yum install mysql-server也行但 CentOS 7 默认源里没有 MySQL只有 MariaDB。要装 MySQL 得先加官方源步骤反而更多。解压安装的流程cd /usr/local/software tar -zxvf mysql-5.7.XX-linux-glibc2.12-x86_64.tar.gz -C /usr/local/ cd /usr/local mv mysql-5.7.XX-linux-glibc2.12-x86_64 mysql5.2 初始化与用户权限设置MySQL 5.7 安装后需要初始化数据目录。先建一个 mysql 用户组和用户因为 MySQL 不建议用 root 运行groupadd mysql useradd -r -g mysql mysql chown -R mysql:mysql /usr/local/mysql然后初始化cd /usr/local/mysql bin/mysqld --initialize --usermysql --basedir/usr/local/mysql --datadir/usr/local/mysql/data初始化完成后临时密码会打印在输出里一定要记下来第一次登录要用。如果没注意看可以删掉 data 目录重新初始化。启动 MySQLbin/mysqld_safe --usermysql 登录并改密码bin/mysql -u root -p # 输入临时密码 ALTER USER rootlocalhost IDENTIFIED BY 你的新密码;5.3 开启远程访问的关键配置默认情况下MySQL 只允许本机连接。要让其他机器连上需要两步第一步授权远程用户。GRANT ALL PRIVILEGES ON *.* TO root% IDENTIFIED BY 你的密码 WITH GRANT OPTION; FLUSH PRIVILEGES;这里的%表示允许任意 IP 连接。生产环境不建议这么开放应该指定具体 IP。第二步修改绑定地址。编辑my.cnf找到bind-address这一行改成0.0.0.0或者直接注释掉。默认是127.0.0.1只监听本机。vi /etc/my.cnf # 找到 bind-address 127.0.0.1 # 改成 bind-address 0.0.0.0改完重启 MySQL 生效。然后别忘了防火墙放行 3306 端口firewall-cmd --zonepublic --add-port3306/tcp --permanent firewall-cmd --reload5.4 服务化与开机自启手动用mysqld_safe启动的方式重启机器后就没了。正规做法是把它注册成系统服务cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld chkconfig --add mysqld chkconfig mysqld on这样就能用service mysqld start/stop/restart来管理而且开机自动启动。Tomcat 也可以类似处理在/etc/rc.d/rc.local里加上启动脚本并给rc.local加执行权限。6. 常见问题速查与避坑经验6.1 连接与传输类问题问题现象可能原因解决办法Xshell 连接超时虚拟机 IP 变了或网络模式不对重新确认 IP检查虚拟机网络设置连接被拒绝SSH 服务未启动或端口被拦启动 sshd放行 22 端口Xftp 传文件失败权限不足或磁盘满换有写权限的目录df -h查磁盘传输后文件损坏用了 ASCII 模式改用二进制模式重传6.2 服务启动类问题Tomcat 启动慢。CentOS 7 上 Tomcat 启动可能卡在Creation of SecureRandom instance这一步原因是熵池不够。解决办法是安装rng-tools或者改 JVM 参数-Djava.security.egdfile:/dev/./urandom。MySQL 启动报 socket 错误。通常是/tmp/mysql.sock文件残留或者权限不对。删掉旧 socket 文件确认 data 目录属主是 mysql 用户。端口冲突。8080 被占、3306 被占用netstat -tlnp | grep 端口号找到占用进程要么杀掉要么改配置换端口。6.3 我踩过的几个典型坑坑一环境变量配了但新开终端不生效。原因是只改了~/.bash_profile而 Xshell 新开的会话可能加载的是~/.bashrc。解决办法是把配置写到~/.bashrc里或者在~/.bash_profile里 source 一下~/.bashrc。坑二MySQL 密码策略太严。MySQL 5.7 默认的密码策略要求密码包含大小写字母、数字和特殊字符长度至少 8 位。如果你设了个简单密码会报Your password does not satisfy the current policy requirements。临时降低策略SET GLOBAL validate_password_policyLOW; SET GLOBAL validate_password_length6;坑三Tomcat 部署 war 包后访问 404。检查 war 包名和访问路径是否一致。比如myapp.war部署后访问路径是/myapp不是/。如果想直接访问根路径把 war 包改名为ROOT.war。坑四虚拟机重启后 IP 变了。NAT 模式下 DHCP 分配的 IP 可能会变。解决办法是在虚拟机网络配置里设静态 IP或者改用桥接模式并在路由器里绑定 MAC 和 IP。6.4 安全加固的几点建议练习环境怎么折腾都行但如果这套环境要对外提供服务有几件事必须做改 SSH 默认端口从 22 改成不常见的端口减少扫描禁用 root 远程登录用普通用户登录后再suMySQL 不要用 root 远程连接建专用账号并限制来源 IPTomcat 管理界面加密码tomcat-users.xml里配置强密码定期看日志catalina.out和 MySQL 的 error log 是发现异常的第一现场这套流程我从第一次接触到现在前前后后在不同机器上重复了不下几十遍。每次遇到的新问题归根结底都是某个环节的细节没注意到——要么是权限要么是端口要么是路径。把上面这些点都过一遍基本上能覆盖九成以上的场景。剩下的那一成靠看日志和搜索引擎也能解决。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。