本文介绍如何在Linux服务器上搭建JIRA,以及JIRA中数据的备份和恢复。

顺带一提,我在安装过程中也遇到大大小小不少问题,我也会把我遇到的这些问题进行汇总,希望对你有所帮助。

系统配置

本地环境

服务器环境

  • CentOS 7.6 64位
  • Java 8
  • Mysql & MariaDB
  • Nginx

搭建环境

安装java 8

使用Linux安装java一直以来都很方便,只需要yum安装即可。

1
2
3
4
5
#下载java
yum -y install java

#查看下载的java版本
java -version

如果输入java -version之后显示为1.8.0_xxx就说明java8已经安装成功。

安装Mysql&MariaDB

安装jira之前我们还需要数据库,这里我们安装MariaDB,这是一个Mysql的分支,主要由开源社区在维护,采用 GPL 授权许可。开发这个分支的原因之一是:甲骨文公司收购了 MySQL 后,有将 MySQL 闭源的潜在风险,因此社区采用分支的方式来避开这个风险。

MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品 –转自菜鸟教程点击这里

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#这里我们下载MariaDB
yum -y install mariadb-server

#运行
systemctl enable mariadb.service
systemctl start mariadb.service

#设置数据库的管理员信息
##将'your_password'替换为自己的密码
mysqladmin -u root -password your_password

#用刚才创建的用户登陆数据库
mysql -u root -p

问题处理


  1. 无法登录数据库
1
2
#报错试例
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

猜测为之前安装过数据库存在对应的账号和密码,所以导致登录不成功。或者是你输入的密码有误。

参考了一篇解决方法:https://blog.csdn.net/weixin_34185512/article/details/92056178

这一篇博客也很详细的讲明了如何在忘记了root的账号密码后,如何重置MysqlMariaDB数据库的方法。

补充:

在上面的解决方法中,最后博主需要你停止掉你手动开启的“启动数据库而不加载授权表或启动网络”进程。我在当时并没有关闭掉进程导致遇到了后续第二个问题。如果这里你输入和上面博客说的那样无法起效果的话,请移步到我下面的第二个问题。


  1. 无法启动MariaDB数据库
1
2
3
#报错试例
mysqld_safe A mysqld process already exists
mariadb.service: Main process exited, code=exited, status=1/FAILURE

根据上面提示来看,是还有关于mysql的进程还在运行导致启动MariaDB失败。这也是我在上文提到的进程没有清理干净造成的。下面我们只需要手动清理掉进程就可以了

1
2
#查看mysql的进程
ps aux |grep mysqld
1
2
3
4
#出现的进程试例
mysql 1166 0.0 0.0 113260 1592 ? Ss 09:43 0:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
mysql 1416 0.1 1.3 2370216 214756 ? Sl 09:43 0:37 /usr/libexec/mysqld --basedir=/usr
root 4166 0.0 0.0 112664 972 pts/1 S+ 15:31 0:00 grep --color=auto mysqld

接下来使用kill指令来清除掉残留的进程

1
2
#后面替换成自己的进程id
kill -9 1166 #替换id

当我们的进程被清理到无法在被清理之后,我们再次尝试开启MariaDB。

1
2
3
4
5
#重启MariaDB
systemctl restart mariadb.service

#查看数据库的状态
systemctl status mariadb.service

出现下面的返回就证明成功了

成功运行MariaDB


数据库配置

然后我们使用mysql -u root -p进入到mariadb中,我们需要创建储存我们jira数据的数据库和jira用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#创建数据库
CREATE DATABASE jira CHARACTER SET utf8 COLLATE utf8_bin;

#创建jira用户
grant all on jira.* to 'jira'@'%' identified by 'yourPassword';

#刷新MySQL的系统权限相关表
flush privileges;

#查看数据库
show databases;

#退出数据库
quit;

我们可以看到成功创建了一个存储jira信息的数据库:

show_databases

手动测试一下jira链接数据库的效果:

1
2
3
4
5
6
7
8
9
10
11
12
13
#这里的-h 替换为你的服务器主机地址
mysql -u jira -h 81.71.76.7 -p

#链接成功提示
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 7
Server version: 5.5.64-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

安装JIRA

接下来就是这一次的主角JIRA了,这里我用的是官网上的jira的7.3.8 版本atlassian-jira-software-7.3.8-x64.bin,首先我们现在我们的根目录下创建一个名为opt的目录。

创建目录:cd /opt/cd/

接下来我们就要把我们在官网上下载好的jira安装包给放到该/opt目录下。同时我也推荐使用工具FileZilla来处理。

fileZilla链接服务器

在远程站点找到为/opt目录下,直接把安装包拖动到该目录下就好。

filezilla上传jira安装包

输入命令:ll 查看安装包

这里我们需要修改一下jira安装包的文件权限:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#修改权限
chmod +x atlassian-jira-software-7.10.0-x64.bin

#直接运行该安装包
./atlassian-jira-software-7.10.0-x64.bin

#安装过程推荐使用默认设置
Unpacking JRE ...
Starting Installer ...
Apr 17, 2020 10:50:23 PM java.util.prefs.FileSystemPreferences$1 run
INFO: Created user preferences directory.
Apr 17, 2020 10:50:23 PM java.util.prefs.FileSystemPreferences$2 run
INFO: Created system preferences directory in java.home.

This will install JIRA Software 7.10.0 on your computer.
OK [o, Enter], Cancel [c]
o
Choose the appropriate installation or upgrade option.
Please choose one of the following:
Express Install (use default settings) [1], Custom Install (recommended for advanced users) [2, Enter], Upgrade an existing JIRA installation [3]
1
Details on where JIRA Software will be installed and the settings that will be used.
Installation Directory: /opt/atlassian/jira
Home Directory: /var/atlassian/application-data/jira
HTTP Port: 8080
RMI Port: 8005
Install as service: Yes
Install [i, Enter], Exit [e]
i

Extracting files ...


Please wait a few moments while JIRA Software is configured.
Installation of JIRA Software 7.10.0 is complete
Start JIRA Software 7.10.0 now?
Yes [y, Enter], No [n]
y

Please wait a few moments while JIRA Software starts up.
Launching JIRA Software ...
Installation of JIRA Software 7.10.0 is complete
Your installation of JIRA Software 7.10.0 is now ready and can be accessed
via your browser.
JIRA Software 7.10.0 can be accessed at http://localhost:8080
Finishing installation ...

备注:

  1. jira的安装目录为:/opt/atlassian/jira

  2. 数据目录为:/var/atlassian/application-data/jira

  3. 默认端口为:8080

查看jira端口:ss -lntup|grep 8080

更新JIRA

我们先停止jira进程:/etc/init.d/jira stop

接下来就可以使用FileZilla将我们在系统配置中提到的jira安装包中的两个文件atlassian-extras-3.2.jar & mysql-connector-java-5.1.39-bin.jar上传到/opt/atlassian/jira/atlassian-jira/WEB-INF/lib/目录下,覆盖掉原来的即可。

检查2个文件是否上传成功:

1
2
3
4
5
6
#进入到该目录下
cd /opt/atlassian/jira/atlassian-jira/WEB-INF/lib

#检查文件
ll atlassian-extras-3.2.jar
ll mysql-connector-java-5.1.39-bin.jar

然后我们再重新启动jira:/etc/init.d/jira start

查看jira的端口:netstat -lntup|grep 8080

然后我们需要关闭服务器的防火墙来开放jira所使用的端口,不然浏览器无法访问。阿里云服务器使用安全组配置来管理端口开发的,所以不需要担心服务器的安全问题。(腾讯服务器上也可以设置安全组)

1
2
3
4
5
#关闭服务器防火墙
systemctl disable firewalld.service
systemctl stop firewalld.service
#查看服务器的防火墙状态
systemctl status firewalld.service

看见防火墙状态变灰色的就好

firewalld的状态

设置JIRA

接下来就可以去网页里设置jira了

在浏览器中输入网址:http://你的服务器主机地址:8080

具体教程请看:https://blog.csdn.net/weixin_43822878/article/details/105875443

该教程很详细讲述了配置流程,但是还是有一些需要注意的地方:

配置数据库时,主机为你的服务器ip地址,用户可以用你登陆数据库时候用的root账户。

jira数据库设置

建议:最好将你在jira上注册的许可证粘贴下来保存在本地,以便于后续使用。

如此可见,我们的jira网站已经是可以成功部署了。

成功访问jira

下载并配置Nginx

我们虽然配置好了jira网站,但是目前我们的网站还是只能通过ip地址来访问,如果我们想用我们自己的域名来访问jira就需要nginx来代理。

首先我们需要下载nginx

1
2
3
4
5
6
#下载Nginx
yum install -y nginx

#启动服务器
##如果没有报错就证明配置成功
systemctl start nginx.service

然后我们cd到目录cd /opt/atlassian/jira/conf

然后我们进入到server.xml中去修改一下配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#可以参考以下配置
<Service name="Catalina">

<Connector port="8080"

maxThreads="150"
minSpareThreads="25"
connectionTimeout="20000"

enableLookups="false"
maxHttpHeaderSize="8192"
protocol="HTTP/1.1"
useBodyEncodingForURI="true"
redirectPort="8443"
acceptCount="100"
disableUploadTimeout="true"
bindOnInit="false"/>

配置nginx

然后我们找到nginx配置文件的目录

cd /etc/nginx/

我们找到nginx.conf文件,然后进入该文件进行配置:

vim nginx.conf

随后我们对该文件的配置如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
user  nginx;
worker_processes auto;

error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

events {
worker_connections 1024;
}


http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;
#tcp_nopush on;

keepalive_timeout 65;

add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers X-Requested-With;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;

gzip on;
gzip_static on;
gzip_proxied any;
gzip_min_length 4000;
gzip_buffers 8 16k;
gzip_comp_level 3;
gzip_types text/plain text/css text/javascript application/javascript application/x-javascript application/json application/xml;
gzip_vary on;


ssi on;
ssi_types text/shtml;
underscores_in_headers on;


upstream jira {
server localhost:8080;
keepalive 20;
}

include /etc/nginx/conf.d/*.conf;

}

操作步骤为:

  1. 首先先切换成英文输入法
  2. INSTERT键来写入数据
  3. 同时按住shift键和:键(shift + :)来进入命令输入行
  4. 输入wq!来保存修改

然后我们cd 到/etc/nginx/conf.d/目录下,增加一个新文件。这里不会新增文件的小伙伴用FileZilla来创建文件。我们只需找到该目录下,然后右键鼠标来创建文件jira.conf

然后在进入该文件进行修改

vim jira.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
server {
listen 80;
#your.domain.name替换为自己的域名
server_name your.domain.name;

#your.domain.name替换为自己的域名
if ($host != 'your.domain.name'){
return 403;
}

location ~ ^/{
proxy_pass http://jira;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 30s;
proxy_read_timeout 300s;
proxy_buffers 32 64k;
proxy_buffer_size 64k;
client_max_body_size 100m;
}

location / {
root /server/nginx/html;
index index.html index.htm;
}
}

配置完成之后,再次重启一下nginx就好。

systemctl restart nginx.service

最后,我们用域名登陆确认一下!

用域名访问jira

大功告成,恭喜!


JIRA的数据备份及恢复

JIRA的数据备份

如果你在之前有jira的项目,并缺需要你去迁移数据,那么接下来我将介绍有关jira数据备份、数据迁移的一些操作流程。

参考教程:https://www.cnblogs.com/wei9593/p/10772611.html

首先我们可以在我们已经搭建好的jira网站上用管理员账号找到系统页面。

然后找到备份系统

备份系统在页面上的位置

jira备份数据页面

随后我们就输入文件名就可以开始备份了。该数据备份的地址也可以在页面的系统信息/文件路径处找到。

系统默认的备份路径为:/var/atlassian/application-data/jira/export

我们在备份完成之后,还是使用FileZilla工具来把备份数据保存在本地。

注意:这里的备份数据不包括附件。

jira的附件位置在/var/atlassian/application-data/jira/data/attachments

同时,在/var/atlassian/application-data/jira/data/路径下是有2个文件夹的,一个是attachments,还有一个是avatars

  • attachments:存放附件
  • avatars:存放jira用户头像

建议:由于jira的数据不仅仅是有哪些sprint流程,同时还有很多附带的截图附件以及jira用户头像。所以,我们最好在本地建立一个文件夹来统一存放。

我们将这attachmentsavatars两个文件都拷贝下来。

这样,我们jira的数据备份就已经全部完成了。

JIRA的数据恢复

参考教程:https://www.cnblogs.com/wei9593/p/10772611.html

在我们已经搭建好了jira网站之后,可以恢复之前的jira数据。

还是使用管理员登陆jira,找到导入与导出/恢复系统

jira恢复数据页面

我们可以看到jira的恢复数据的导入文件默认路径为:/var/atlassian/application-data/jira/caches/indexes,还是使用FileZilla工具将之前我们备份的数据导入到该目录下。然后在文件名处输入对应的文件名即可开始恢复信息。

如果有报错如下:

jira恢复文件报错

出现这个情况,直接修改 /var/atlassian/application-data/jira 以及子目录的所有者即可

执行:chown -R jira3 jira

意思是将 jira 目录以及子目录的所有者改为 jira3

因为每次安装JIRA 服务就会生成一个jira用户,由于我没有清除这个用户,导致现在排到了jira3

jira的data目录下的文件信息

如果在使用中发现jira的附件无法上传,也是和上面的处理一样的。这一次我们cd到jira的附件目录下:cd /var/atlassian/application-data/jira/data

再次ll来检查文件,发现也是有文件所有者不是jira3。

1
2
3
4
5
#修改文件拥有者
chgrp -R jira3 avatars/
chown -R jira3 avatars/
chgrp -R jira3 attachments/
chown -R jira3 attachments/

jira的data目录下的文件信息

然后问题就解决了!

jira修复无法上传附件的问题

后记

这就是文章的全部内容了,如果对你有帮助就再好不过了!

参考教程

jira的安装使用

Centos下jira、confluence利用nginx 代理配置为统一入口

JIRA备份,数据迁移以及小问题

JIRA恢复备份后无法上传附件

封面图来源:https://www.pixiv.net/artworks/97756295