ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Ubuntu下Jira与Confluence安装指南:MySQL 5.7.27版本兼容与配置实战

Ubuntu下Jira与Confluence安装指南:MySQL 5.7.27版本兼容与配置实战 1. 为什么锁定这个版本组合兼容性评估与选型逻辑先说结论这套组合不是我随手拼出来的是在两台生产服务器上反复验证过的稳定搭配。很多人装Jira和Confluence失败八成问题不是出在安装动作本身而是版本之间互相不买账——数据库驱动不支持、JDK版本过渡、插件依赖冲突每一个都能让你在深夜崩溃。我锁定的是MySQL 5.7.27、Jira 8.3.1、Confluence 6.15.7这组固定版本号不是因为它最新而是因为它经过了最长周期的真实验证。Jira 8.3.1和Confluence 6.15.7都基于Java开发整个Atlassian系列对JDK版本极为挑剔。Jira 8.3.1官方支持Java 8和Java 11但实际部署中OpenJDK 8比Java 11更稳因为Confluence 6.15.7那个年代还没有完全适配Java 11的模块化限制尤其是反射和类加载方面偶发问题。MySQL 5.7.27是一个特殊的节点InnoDB引擎稳定、内存管理成熟而且官方在5.7.27之后对密码认证插件默认策略做过调整用旧的应用版本连接时容易碰到认证协议不兼容的坑。所以5.7.27可以说是能装、能用、不折腾的版本。选型逻辑里还有一条经常被忽略——数据库驱动的版本匹配。Jira 8.3.1自带的MySQL驱动是mysql-connector-java-5.1.x系列Confluence 6.15.7同样需要驱动文件手动放入lib目录。如果你系统的MySQL恰好是8.0版本驱动组件的认证方式和连接协议完全不同虽然Jira后来支持8.0驱动但那是另一个坑的入口。5.7.27配合老驱动开箱即用几乎不踩驱动雷区。这套组合最适合的目标用户是准备自建研发团队协作平台的运维工程师、刚接手团队工具链的全栈开发者以及想要把Jira和Confluence这对黄金搭档跑在Linux服务器上的技术负责人。还有一个硬件层面的隐藏要求如果Jira和Confluence装在同一台Ubuntu上内存建议至少4GB最好8GB。否则两个Java进程加上MySQL会频繁触发Swap交换磁盘I/O狂飙表面症状是网页打开缓慢、偶尔白屏实际是内存不足导致的GC停顿。后面我会专门讲怎么调整JVM内存参数但前提是物理资源不能太吝啬。2. Ubuntu系统准备与MySQL 5.7.27安装动手之前先避开这三个坑2.1 系统依赖与基础环境我使用的Ubuntu版本是18.04 LTS和20.04 LTS这两代系统对MySQL 5.7.27的兼容性最好。如果你用的是22.04需要额外注意22.04默认的MySQL版本是8.0直接apt install mysql-server装出来的一定是8.0不是5.7。标题里明确锁定了5.7.27那就不要走APT仓库老老实实用官方发布的二进制tar.gz包安装。在开始之前先用apt update更新软件源然后安装必须的依赖库apt-get update apt-get install -y libaio1 libaio-dev libncurses5 libncurses5-dev libmecab2libaio是MySQL InnoDB引擎的异步I/O依赖libncurses5是mysql命令行工具的历史依赖。这两个不装全初始化数据目录时大概率会遇到奇怪的报错。很多人第一步就跪在这里。2.2 二进制包安装MySQL 5.7.27的标准流程从MySQL官方归档页下载5.7.27的Linux通用二进制包文件名类似mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz。下载后解压到/usr/local/创建软链接方便路径管理cd /usr/local tar -zxvf mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz ln -s mysql-5.7.27-linux-glibc2.12-x86_64 mysql接着创建mysql用户和用户组数据目录我习惯放在/data/mysql而不是默认的/usr/local/mysql/data。这样做的好处是系统盘和数据盘分离后续迁移备份不用拷贝整个程序目录而且系统重装时数据保留。groupadd mysql useradd -r -g mysql -s /bin/false mysql mkdir -p /data/mysql chown -R mysql:mysql /data/mysqlMySQL 5.7.27初始化数据目录的命令和5.6完全不同5.6用mysql_install_db脚本5.7改成了mysqld --initialize。第一次执行前需要先编辑/etc/my.cnf这是最关键的配置环节[mysqld] basedir/usr/local/mysql datadir/data/mysql socket/tmp/mysql.sock pid-file/data/mysql/mysql.pid port3306 character-set-serverutf8 collation-serverutf8_general_ci default-storage-engineINNODB transaction-isolationREAD-COMMITTED innodb_buffer_pool_size1G max_connections500 skip-name-resolve sql_modeNO_ENGINE_SUBSTITUTION有几个参数必须提前说清楚。character-set-serverutf8是硬性要求不要用utf8mb4虽然utf8mb4支持的字符范围更广但Jira和Confluence默认建表时索引长度是依据utf8设计的用utf8mb4会导致索引超长报错后期改很麻烦。transaction-isolationREAD-COMMITTED是Jira官方文档明确要求的MySQL默认的REPEATABLE-READ隔离级别下Jira可能碰到某些死锁异常。skip-name-resolve是为了避免每来一个连接都反向解析域名加了之后连接串里必须用IP而不是主机名对安全性也有帮助。然后执行初始化/usr/local/mysql/bin/mysqld --defaults-file/etc/my.cnf --initialize --usermysql初始化完成后日志里会输出一个临时root密码通常保存在/data/mysql/下的error log中。如果没有找到密码可以查看/data/mysql/mysql-error.log搜索temporary password字段。首次登录必须立即修改密码/usr/local/mysql/bin/mysql -uroot -p ALTER USER rootlocalhost IDENTIFIED BY 你的新密码; FLUSH PRIVILEGES;2.3 MySQL开机自启与老生常谈的auth_socket坑启动MySQL使用mysqld_safe或/etc/init.d/mysql脚本我习惯用mysqld_safe方式/usr/local/mysql/bin/mysqld_safe --defaults-file/etc/my.cnf --usermysql 配置开机自启可以写一个systemd服务文件也可以在rc.local里加一行启动命令。我的方案是写系统服务单元文件管理起来更方便[Unit] DescriptionMySQL 5.7.27 Server Afternetwork.target [Service] Typeforking ExecStart/usr/local/mysql/bin/mysqld_safe --defaults-file/etc/my.cnf --usermysql ExecStop/usr/local/mysql/bin/mysqladmin -uroot -p shutdown PrivateDevicesfalse [Install] WantedBymulti-user.target然后systemctl daemon-reload systemctl enable mysql systemctl start mysql。这里有一个必须提前避开的坑Ubuntu系统如果之前安装过mysql-server系统里可能残留Debian维护脚本和auth_socket认证插件导致root用户只能用sudo mysql本地登录密码认证失效。解决方式是登录MySQL后检查mysql.user表里root的plugin字段确保是mysql_native_password而不是auth_socket。如果是后者执行UPDATE mysql.user SET pluginmysql_native_password WHERE Userroot; FLUSH PRIVILEGES;这一步不做后面Jira用JDBC连数据库时大概率报Access denied for user root因为JDBC根本不走socket认证。3. Jira 8.3.1安装实录从授权文件到中文化的关键路径3.1 Java环境准备与安装包部署Jira 8.3.1依赖Java运行环境我用的是OpenJDK 8。这里有一个容易忽略的点Ubuntu仓库里的openjdk-8-jre在18.04之后不再默认提供需要添加源或直接下载Oracle JDK 8。为省事我直接装了OpenJDK 8apt-get install -y openjdk-8-jre-headless java -versionAtlassian的安装包有两种形式.bin图形向导安装和.tar.gz手动部署。生产环境我强烈推荐tar.gz方式虽然配置步骤多一些但你能明确知道每个文件的位置和作用后续升级迁移不抓瞎。下载atlassian-jira-software-8.3.1.tar.gz后mkdir -p /opt/atlassian tar -zxvf atlassian-jira-software-8.3.1.tar.gz -C /opt/atlassian/这里要特别注意安装目录和Jira主目录JIRA_HOME的分离。安装目录放程序文件JIRA_HOME放配置、索引、附件。我的规划是程序目录/opt/atlassian/jira JIRA_HOME/data/jira-home编辑/opt/atlassian/jira/bin/setenv.sh找到JVM参数段把它改成适合机器配置的数值JVM_MINIMUM_MEMORY1024m JVM_MAXIMUM_MEMORY2048m CATALINA_OPTS-XX:UseG1GC -Xloggc:/data/jira-home/logs/gc.log -Duser.timezoneGMT08JVM参数不是拍脑袋写的。Jira默认最小内存是256m在待办事项多、插件多的情况下GC非常频繁页面会卡成PPT。我有一次没有调这个参数装完插件市场再打开项目直接把Tomcat内存耗尽触发了OOM Killer。另外注意时区参数如果不显式指定Jira默认使用UTC你在数据库里看到的创建时间全是凌晨排错时极容易混淆。3.2 Jira数据库连接编码、隔离级别和驱动一致性启动Jira前先把数据库准备好。用root登录MySQL创建Jira的库和专用账号不建议使用root账号跑业务连接CREATE DATABASE jiradb CHARACTER SET utf8 COLLATE utf8_bin; CREATE USER jirauser% IDENTIFIED BY 强密码; GRANT ALL PRIVILEGES ON jiradb.* TO jirauser%; FLUSH PRIVILEGES;Jira的web安装向导里会要求填写数据库连接信息JDBC URL填jdbc:mysql://localhost:3306/jiradb?useUnicodetruecharacterEncodingutf8useSSLfalsesessionVariablestx_isolationREAD-COMMITTEDuseSSLfalse必须加否则MySQL 5.7默认启用SSL握手Jira连接时会提示安全连接配置不匹配虽然不是致命错误但会随机出现连接断开的告警。sessionVariablestx_isolationREAD-COMMITTED的优先级高于my.cnf中的配置确保应用的每个连接都在预期的隔离级别下运行。驱动问题也在这里一起说Jira的/opt/atlassian/jira/lib目录下自带一个MySQL驱动版本但我仍然建议下载mysql-connector-java-5.1.48.jar并替换。5.1.48是5.1系列的最终版修复了大量旧版驱动的连接池泄漏问题。替换驱动后重启Jira观察日志确认驱动类是否正确加载。驱动不一致的典型报错是ClassNotFoundException: com.mysql.jdbc.Driver实际原因是驱动JAR根本没有被Tomcat公共类加载器读取。3.3 授权文件与UUID备份迁移时的救命稻草安装向导进行到注册步骤时需要填入Atlassian授权码License Key。登录Atlassian账号申请试用授权时注意**主机服务器IDServer ID**和授权是绑定的换机器必须重新生成授权。这是正常的授权校验机制不算坑。最隐蔽的坑在授权文件本身。Jira的授权信息写入/data/jira-home/下的配置文件中伴随的还有一串UUID标识符。很多人不知道这个UUID文件必须和授权一起备份。如果你迁移Jira到新机器只拷贝了授权码而没有拷贝UUID文件启动后授权会显示为Invalid License Key因为授权校验会比对UUID和授权绑定的服务器指纹。我上次迁移就是因为这个差点全网搜解决方案最后发现是旧home目录里那个隐藏的.jira-home圆点备份目录没拷全。解决办法很惨痛但也很简单备份时把整个/data/jira-home目录完整打包不要只挑文件。3.4 中文化和基础验证Jira 8.3.1默认是英文界面切中文有两种方式。第一种是在管理后台的插件市场搜索Chinese Language Pack安装后到用户设置里切换语言。第二种更直接修改/opt/atlassian/jira/atlassian-jira/WEB-INF/classes/jira-i18n.properties文件把默认语言改成zh_CN但更推荐前者因为插件更新更可控。安装完成后第一次登录建项目之前建议先去后台确认几个关键配置项系统管理-系统信息确认数据库版本和驱动版本系统管理-邮件超时时间和SMTP端口确认无误下一节详述应用-应用链接确认后续Confluence的关联基础是否已创建Jira这一层跑通了整个链路就完成了30%。真正让人头大的其实是邮箱集成和Confluence下面分开讲。4. 邮箱服务器配置SMTP授权码、TLS端口与测试邮件那点事4.1 为什么邮箱配置决定Jira和Confluence的可用性Jira如果不配置邮箱很多核心功能是残废的通知用户任务被指派、密码找回、评论回复提醒全部走邮件通道。Confluence更极端安装向导里的管理员邮箱验证码就是通过邮件发送的邮箱服务器不准备好连配置向导都过不去。所以我把邮箱配置放在Jira和Confluence的章节之间因为它是两个系统的公共依赖。我使用的是网易企业邮箱和QQ邮箱做SMTP测试这两个是最常见的个人/小团队选择。关键前提是必须先在邮箱网页端开启SMTP服务获取一个授权码而不是直接使用邮箱登录密码。以163邮箱为例设置-POP3/SMTP/IMAP-开启SMTP服务会生成一串授权码。这串授权码就是后续填到Jira或Confluence里的密码。4.2 Jira SMTP配置参数详解Jira后台路径系统管理-邮件-邮件服务器-配置SMTP邮件服务器。我实测可用的核心参数如下参数推荐值说明邮件协议SMTP不要选Secure SMTP服务器名称smtp.163.com根据你的邮箱服务商填服务器端口465465是SSL加密端口TLS/SSLSSL必须和端口匹配用户名完整邮箱地址例如 adminexample.com密码授权码不是邮箱登录密码配置完成后点击页面的发送测试邮件按钮。如果报错先确认几个点端口465是否被服务器防火墙屏蔽telnet smtp.163.com 465测试连通性Java进程是否有访问外部网络的权限有些系统安全策略会限制JVM出网授权码是否复制了空格这里我踩过一个低级但常见的坑Jira所在服务器上如果用telnet测试465端口是通的但测试邮件仍然发送失败日志里报Could not connect to SMTP host。最后排查发现是JDK的java.security文件里默认禁用了TLSv1而邮箱服务商要求TLSv1.2。解决方法是给Jira的JVM启动参数加上-Dhttps.protocolsTLSv1.2 -Dmail.smtp.ssl.protocolsTLSv1.2加到setenv.sh的CATALINA_OPTS里重启Jira即可。4.3 Confluence邮箱配置的特殊之处Confluence 6.15.7的邮箱配置路径是管理-常规配置-邮件服务器-添加SMTP服务器。参数和Jira几乎一样但有一个容易忽略的操作如果你在Jira中已经配置过SMTP服务器并且创建了应用链接Application LinkConfluence可以直接借用Jira的邮件服务器设置不需要重复配置。不过实际测试中发现Confluence对SMTP服务器返回状态码的解析更严格。如果邮箱服务商返回的是非标准成功码比如某些企业邮箱在测试时返回250但正文为空Confluence会误判失败。这种情况下的绕行方案是先配置Jira的SMTP并验证成功然后在Confluence后台选择使用Jira的邮件服务器配置让Confluence通过应用链接转发邮件请求。还有一个必须强调的细节SMTP服务器的发件地址要和认证账号一致。如果你用adminexample.com做认证但设置里的From地址写成no-replyexample.com绝大多数邮箱服务商尤其是网易和QQ会直接拒绝投递报错信息往往是554 Mail from is not allowed。我在部署时把From地址设为和登录用户名完全一致一次通过。5. Confluence 6.15.7安装与备份恢复验证码不显示与isshowsignup报错复盘5.1 安装前必须做好的两件事Confluence 6.15.7安装包使用的是atlassian-confluence-6.15.7.tar.gz解压后程序目录在/opt/atlassian/confluence主目录规划为/data/confluence-home。安装前有两件事必须先完成否则安装向导必然卡住。第一数据库连接驱动。Confluence不像Jira默认就带MySQL驱动需要手动下载mysql-connector-java-5.1.48.jar放到/opt/atlassian/confluence/lib/下。这一步漏掉的结果是数据库连接表单永远校验失败后台日志报找不到驱动类。第二用户管理模式的预先规划。如果我们已经部署了JiraConfluence可以配置用户管理委托给Jira这样两个系统的账号是统一的如果暂时只想独立使用可以先选独立用户管理后期再通过应用链接同步。这一步的选择直接影响到备份恢复时的报错问题下文会细讲。5.2 配置向导中的验证码不显示问题Confluence 6.15.7的安装向导在配置管理员账号时会要求输入邮箱验证码用于确认管理员邮箱的有效性。这个验证码按设计是通过邮件发送的但很多人在这一步卡了很久页面提示验证码已发送实际上收不到邮件或者页面上根本没有验证码输入框。我复盘排查过程发现验证码能不能显示取决于邮件服务器能不能成功发送验证邮件。如果邮件发送过程抛异常Confluence会在页面上静默吞掉错误只显示一个空白区域。所以解决思路不是在前端找验证码输入框而是先解决邮件发送本身。在浏览器里打开Confluence的/setup/setupmailsever.action页面或者跳过设置向导模式手动到/data/confluence-home/confluence.cfg.xml里面确认邮件配置是否写入。如果在配置向导阶段邮件服务器根本没配好系统是不会有验证码弹出来的。手动绕过的方法是先不配置管理员邮箱验证直接以System Administrator的身份进入后台先把邮件服务器配置成功再到用户管理里触发重置密码的验证邮件确认系统能正常发信之后再返回向导完成验证码步骤。还有一个容易忽视的细节Confluence 6.15.7的免费主题Classic模板在配置向导里有一项站点标题的必填内容没有填完整系统会认为站点详情不完整从而拒绝进入发验证码的环节。我当时就是卡在这里检查后发现站点描述字段留空了。所以遇到验证码不显示先检查站点标题和站点描述的完整度再排查邮件发送链路。5.3 恢复备份数据报错isshowsignup application cannot be null这是Confluence整个部署流程中最难排查的错误之一。报错出现在恢复备份数据时完整日志是com.atlassian.confluence.setup.bootstrap.SynchronyConfigurationBuilder相关的Bean创建失败或者是isshowsignup application cannot be null的NullPointerException。热词里也有人精确描述了这句话confluence恢复备份数据报错: isshowsignup application cannot be null。先说根因这个报错的本质是Confluence的用户管理委托应用User Management Delegation加载失败。在多环境部署时备份文件里记录的用户管理配置指向Jira的应用在恢复目标环境里还没有建立对应的应用链接导致Confluence在启动阶段找不到需要委托的用户管理Application于是抛空指针异常。我的完整排查过程分成三步第一步定位日志位置。Confluence的运行日志在/data/confluence-home/logs/atlassian-confluence.log错误堆栈中能看到NullPointerException发生在UserManagementApplication相关类上。第二步查看confluence.cfg.xml里的confluence.license配置项。如果恢复的备份里包含的授权信息与当前环境不匹配例如旧备份授权是Test Server的恢复到了Production环境授权状态无效时Confluence的很多应用上下文都不会正常加载isshowsignup application cannot be null就会冒出来。我们的解决方式是先不立刻从备份恢复而是让Confluence初始启动一遍激活新环境的授权并建立临时数据库再在停止状态下用备份文件覆盖数据目录。第三步如果已经启动失败最稳妥的绕行方案是编辑confluence.cfg.xml注释掉confluence.setup.server和数据的初始配置行让Confluence认为自己是全新安装再次访问/setup向导选择从已有备份恢复。这个操作必须在停止Confluence进程的状态下进行否则配置会被进程覆写。修正后恢复成功的验证方式是恢复完成重启Confluence访问/login.action能看到登录页面而不是/setup向导页面并且管理员能正常登录。对于全新环境恢复备份我给出一个安全顺序先正常启动一次全新的Confluence实例完成初始化配置向导能登录进后台停掉Confluence服务用旧环境备份的/data/confluence-home目录覆盖新环境的home目录重新启动Confluence选择继续使用现有数据登录后台检查应用链接是否正常指向Jira的链接需要重新认证一次这套流程耗时多几分钟但能避免绝大多数恢复崩溃问题。我测试过直接覆盖home目录再启动的方式十次里有七次会遇到各种Bean加载异常剩下的三次也需要调整一下依赖顺序才能正常。5.4 Jira与Confluence的应用链接一次配置长期受益Confluence恢复成功后需要在Confluence后台的应用链接里把Jira关联进来。反过来在Jira后台也需要创建对应的链接。链接建立后可以在Jira中看到Confluence的页面预览Confluence的项目可以关联Jira的项目而且用户的登录状态是共享的。配置应用链接时URL填的是Jira的完整访问地址比如http://你的IP:8080。如果你用了反向代理和HTTPSURL填对外域名。双向链接配置完成后建议立即在Confluence的•Personnel权限里设置一下同步策略——否则Jira中删除的用户不会自动在Confluence中失效安全隐患不小。6. 安装顺序、日常运维与二次排错清单6.1 为什么安装顺序一定要固定系统→数据库→Jira→邮箱→Confluence回顾整个流程推荐的安装顺序是系统基础环境→MySQL 5.7.27→Jira 8.3.1→邮箱服务器配置→Confluence 6.15.7。这个顺序不是随便定的每一步都为下一步提供依赖。MySQL必须最先装好因为Jira和Confluence安装向导都需要数据库连接信息。Jira在Confluence之前装是为了后面应用链接中Confluence能借用Jira的用户管理能力。邮箱服务器配置放在Jira之后、Confluence之前因为Confluence的安装向导就依赖邮件验证码机制而Jira的配置相对更宽容可以先跑通邮件服务再进入Confluence的高要求环节。如果反过来装先装Confluence再装Jira那么Confluence安装向导里就会因为没有可用的用户管理委托而陷入更复杂的配置入门新手极容易崩溃。先Jira后Confluence等于把最困难的部分放在Jira阶段解决。6.2 systemd服务管理三个服务一把抓生产环境不可能每次开机后手动启动三个Java进程。除了MySQL的systemd服务Jira和Confluence也建议各自写一个systemd服务单元。Jira的启动脚本在/opt/atlassian/jira/bin/start-jira.sh可以创建一个最小化的服务单元[Unit] DescriptionAtlassian Jira 8.3.1 Afternetwork.target mysql.service [Service] Typeforking ExecStart/opt/atlassian/jira/bin/start-jira.sh ExecStop/opt/atlassian/jira/bin/stop-jira.sh Userroot [Install] WantedBymulti-user.target启动顺序上用Aftermysql.service确保数据库先于Jira启动。Confluence的service单元同理Afterjira.service的先后顺序没有强制要求但建议加上防止应用链接尚未注册时Confluence过早启动。6.3 常规备份与恢复mysqldump home目录双轨制Jira和Confluence的数据分两层数据库中的数据用户、内容、配置和home目录中的文件附件、索引、模板、配置文件。只备份数据库不备份home目录恢复后丢附件只备份home目录不备份数据库恢复后连登录都不行。这里给出我实际在用的备份策略# 备份数据库 mysqldump -uroot -p --single-transaction --routines --triggers jiradb /backup/jiradb_$(date %Y%m%d).sql mysqldump -uroot -p --single-transaction --routines --triggers confluencedb /backup/confluencedb_$(date %Y%m%d).sql # 备份home目录 tar -czf /backup/jira_home_$(date %Y%m%d).tar.gz /data/jira-home tar -czf /backup/confluence_home_$(date %Y%m%d).tar.gz /data/confluence-home恢复时需要注意版本必须一致。如果你备份时是Jira 8.3.1恢复目标也必须是8.3.1跨大版本恢复Atlassian数据几乎必然失败即使成功也很容易出现插件不兼容问题。6.4 二次排错清单安装好后也可能随时发作的常见问题系统运行一段时间后最容易出现的问题我整理成一张排错表症状根因快速处理Jira页面时快时慢JVM堆内存不足频繁GC调整setenv.sh中JVM_MAXIMUM_MEMORY增大到2G以上Confluence首页白屏索引目录损坏停服后删除/data/confluence-home/index下内容重启自动重建索引发送邮件失败但端口通JDK TLS协议被禁用JVM参数加-Dhttps.protocolsTLSv1.2数据库连接拒绝MySQL未启动或socket路径不对检查/tmp/mysql.sock是否存在mysqladmin ping确认应用链接失效两端服务器的Server ID变化删除原有应用链接重新创建重新认证有一个值得反复强调的日常操作细节不要把MySQL的3306端口暴露到公网。Jira和Confluence在同一台服务器上时JDBC连接串中的IP建议使用127.0.0.1或内网IP。如果必须分开部署也要用防火墙限制3306端口只允许应用服务器的IP访问。这是最容易被忽略的安全问题MySQL裸奔到公网扫描器随便爆破。还有端口规划默认Jira是8080Confluence是8090。如果和Nginx或其他Web服务冲突可以修改各自server.xml里的port标签改完记得同步修改应用链接中的URL。我习惯在Nginx里配置转发把jira.example.com指向8080wiki.example.com指向8090这样对外只开放80和443。写到这里整套UbuntuMySQL 5.7.27Jira 8.3.1邮箱服务器Confluence 6.15.7的部署链路就算完整了。这套环境我现在还在用于团队的项目管理和文档平台稳定性没有让人失望。最难的部分不是哪一步的具体命令而是每一步之间互相牵连的逻辑——你得先想清楚为什么它需要前一步的什么结果再动手安装才能不被各种玄学报错牵着鼻子走。
返回列表