Trevorfg8@gmail 发表于 2023-1-30 18:29:00

HomeNas应用01

本文介绍基本的Confluence安装与使用, 基于开源的(非官方)Docker镜像进行安装. 笔者是Docker初学者,因此不会介绍太多Docker相关的基础知识. 最后对Confluence的一些运行环境作一些简单的介绍. 安装Docker版本的confluence会需要到的如Nginx,Ubuntu Msyql等需要您提前安装准备好. 不过本该也会提供相应的教程供参考.本文参考

本文的基础知识来自于: 使用Docker来部署 Confluence , 可以直接参考原文安装. 本文只是对于原文的一个补充和息实际过程的记录.
软件信息

操作系统版本: Ubuntu 20.04 , 具体可以参考我的文章:红色的红:家用小主机服务器捡垃圾攒机之路 - 基于跨链奔腾N3540工控机
Mysql: 使用5.7的Ubuntu版本. 具体安装可以见别人整理的教程,我就直接用了.
Nginx: 直接使用的系统源进行安装的在此不表.
HTTPS: 证书由 FreeSSL首页 - FreeSSL.cn一个提供免费HTTPS证书申请的网站 提供. 需要的可以在此申请域名证书(如果您有域名的话).Confluence开源Docker镜像

地址: https://github.com/cptactionhank/docker-atlassian-confluence这个是国外的非官方维护的Confluence的原生镜像. 并且对基本的运行环境进行了合理的封装,因此其运行环境是不包含破解以及第三方插件运行环境的(如果有特殊要求的话).
这个Docker引用的官方Confluence版本的最新版本为7.9.3; 这个是其Docker仓库的的主页:



Confluence Docker仓库主页

下面是最新版本的Docker镜像的截图:



最新版本为 7.9.3

注: 实际上Github上的仓库源代码一直在维护. 其拉了不同的分支在进行迭代. 但是没有把相应的镜像推送到Docker的中心仓库.不知道是因为有哪些方面的考虑. 所以如果想用新版本.也是可以直接从仓库源代码进行自己构建的. 比如这个是 8.0版本的分支的Dockerfile.你可以直接在这个源文件的基础上进行打包本地镜像自己使用.安装准备

Docker环境

如果你的操作系统不具备Docker环境的话. 可以参考如下文章进行环境准备. 我的Docker环境是使用的是另外一个教程安装. 后面我对比了一下基本是完全一致的步骤.只是在下面这个教程中解释得更为细致.

[*]Ubuntu - Docker - 从入门到实践
数据库安装

数据库安装直接参考上文提到的教程直接安装即可. 这里没有使用docker版本进行数据库安装.一则是数据库我要共享使用. 二来直接安装会性能相对好一些. 因此直接安装了本地版本.创建数据库及账号:
# 创建confluence数据库及用户
CREATE DATABASE confdb CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
grant all on confdb.* to 'confuser'@'%' identified by 'yourpasswd';数据库的编码使用的是utf8mb4. 但是JDBC链接中暂时只使用了UTF-8. 由于Mysql的UTF-8并不是真正的完整的UTF-8. 所以暂时不能支持如emoj表情类的输入.

以上的代码中的密码需要自己替换为自己的密码.一些必要的Mysql配置优化,供参考:
cat /etc/mysql/mysql.conf.d/mysqld.cnf
# Copyright (c) 2014, 2022, Oracle and/or its affiliates.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License, version 2.0,
# as published by the Free Software Foundation.
#
# This program is also distributed with certain software (including
# but not limited to OpenSSL) that is licensed under separate terms,
# as designated in a particular file or component or in included license
# documentation.The authors of MySQL hereby grant you an additional
# permission to link the program and your derivative works with the
# separately licensed software that they have included with MySQL.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
# GNU General Public License, version 2.0, for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA02110-1301 USA

#
# The MySQLServer configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html


pid-file        = /var/run/mysqld/mysqld.pid
socket                = /var/run/mysqld/mysqld.sock
datadir                = /var/lib/mysql
log-error        = /var/log/mysql/error.log
max_allowed_packet   = 256M
innodb_log_file_size = 256M
transaction-isolation = READ-COMMITTED


# By default we only accept connections from localhost
bind-address        = 0.0.0.0
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[*]数据库的隔离级别需要调整. 默认是RR. 需要调整为RC
[*]InnoDB的logfile的大小需要调整大一些.
[*]最大允许的包大小: max_allowed_packet 这样在大量的数据查询时才会不报错.
[*]bind-address 需要调整. 因为Docker的网络与宿主机是分开的,这样docker中访问db算是远程访问.
Confluence 安装

dockerfile准备

Confluence的安装其实使用Docker安装后变得特别简单. 因此 没有什么好说的. 只是需要在上面开源的Docker镜像的基础上再次二次的封装Docker镜像. 把一些必须的包(比如 Crack,你懂的). 添加到Docker镜像中这样方便我们的定制.上面的破解用的文件可以在参考文中查找.这里直接给出我的Dockerfile. 相关的依赖文件放到与Dockerfile同级目录.
FROM cptactionhank/atlassian-confluence:latest
USER root
# 将代理破解包加入容器
COPY "atlassian-agent.jar" /opt/atlassian/confluence/
# 设置启动加载代理包
RUN echo 'export CATALINA_OPTS="-javaagent:/opt/atlassian/confluence/atlassian-agent.jar ${CATALINA_OPTS}"' >> /opt/atlassian/confluence/bin/setenv.shDockerFile 基础知识:
- From指定 基础镜像,这里我们使用的就是上面提到的7.9.3的docker中心仓库的镜像.
- User root 使用root账号运行.
- COPY 把当前工作空间的文件拷贝到目标文件.
- RUN 指令运行相关的Dockerfile命令对镜像文件进行处理. 以准备环境.

Docker 知识入门,如果对于Docker不甚了解的朋友可以先自行学习. 这个文档相当基础大概一天的时间可以看个七七八八.
使用 Dockerfile 定制镜像 上面是基础版本的DockerFile,这里给出最新的DockerFile,里面多了一些命令.还有一个中文字体.这个插件会用到. 如果你能在一开始准备好这些文件. 那可以直接使用这个版本. 如果现在还不太明白.直接使用上面的基础版本的Dockerfile即可.
FROM cptactionhank/atlassian-confluence:latest
USER root

# 添加中文字体
# RUN apk update&& apk --no-cache add font-adobe-100dpi
# RUN mkdir /usr/share/fonts/win
# ADD yahei.ttf/usr/share/fonts/win/yahei.ttf
# RUN chmod 777 /usr/share/fonts/win/yahei.ttf\
#    && fc-cache -fv&& fc-list

# 将代理破解包加入容器
COPY "atlassian-agent.jar" /opt/atlassian/confluence/
# 拷贝中文字体.为了减少RUN调用,这里直接放置到已经存在的目录中
COPY "SimSun.ttf" /usr/share/fonts/
# 设置启动加载代理包
RUN apk update&& apk --no-cache add font-adobe-100dpi && chmod 777 /usr/share/fonts/SimSun.ttf && fc-cache -fv && fc-list&& apk add --updategraphviz && echo 'export CATALINA_OPTS="-javaagent:/opt/atlassian/confluence/atlassian-agent.jar ${CATALINA_OPTS}"' >> /opt/atlassian/confluence/bin/setenv.sh
crack文件下载

下载编译好的即可,放置在Dockerfile同目录下
home/q/docker$ ll
total 9844
drwxr-xr-x 2 root root    4096 Jan 22 18:41 ./
drwxr-xr-x 5 root root    4096 Dec 24 21:00 ../
-rw-r--r-- 1 root root975517 Dec 24 21:02 atlassian-agent.jar
-rw-r--r-- 1 root root   849 Jan 22 18:41 Dockerfile
-rw-r--r-- 1 root root 9087416 Jan 22 17:46 SimSun.ttf构建镜像:

这里直接构建的版本号为 latest. 后面如果有更新可以使用新版本号docker build -t confluence:latest .启动容器:

Nginx配置:

这里的nginx不是必须的.如果你想直接使用ip和端口进行访问的话.那也可以直接使用原文中的安装与配置方式. nginx的配置主要要点是要配置一个websocket协议.
upstream nas_wiki_001 {
    server 127.0.0.1:18010;
}

server {
    listen      80;
    server_name wiki.firfor.cn;
    rewrite ^(.*)$ https://${server_name}$1 permanent;
}

server {
    listen      443 ssl;
    server_name wiki.firfor.cn;

    include ssl-conf/wiki.firfor.cn.conf;

    gzip on;
    gzip_http_version 1.1;
    gzip_min_length 0;
    gzip_buffers 256 64k;
    gzip_comp_level 9;
    gzip_types text/plain application/x-javascript application/javascript text/javascript text/css application/xml application/json text/xml;

    client_header_buffer_size 16k;
    client_max_body_size      100m; # 这个需要有,否则上传大文件会报错.
    proxy_ignore_client_aborton;
    proxy_buffers 64 4k;

    location / {
      proxy_pass http://nas_wiki_001;
      proxy_set_header   Host             $host;
      proxy_set_header   X-Real-IP      $remote_addr;
      proxy_set_header   X-Forwarded-For$proxy_add_x_forwarded_for;
      # 主要websocket代理配置, $http_upgrade是指http协议头部Upgrade的值.
      proxy_http_version 1.1;
      proxy_set_header   Upgrade          $http_upgrade;
      proxy_set_header   Connection       "upgrade";
    }
}启动脚本:

启动容器前你需要创建一个工作目录映射到docker使用.这样可以在后面升级和替换docker的时候可以数据不丢失.
我这里使用的工作目录为: /home/cityminsu/confluence
为了不必要的权限 问题. 可以把此目录权限 修改为777# 脚本名称 wiki.sh
# 提前创建/home/cityminsu/confluence 目录
docker run -d --name confluence \
--restart always \
-p 18010:8090 \
-e TZ="Asia/Shanghai" \
-e X_PROXY_NAME="wiki.firfor.cn" \
-e X_PROXY_PORT="443" \
-e X_PROXY_SCHEME="https" \
-v /home/cityminsu/confluence:/var/atlassian/confluence \
confluence:latest我这里给出的脚本有一些不同,主要是:

[*]我使用了域名映射. 且使用了HTTPS协议.所以需要额外配置X_PROXY_NAME,X_PROXY_PORT以及 X_PROXY_SCHEME
查看我们生成的镜像:
这里我已经有三个 confluence镜像了. 后面两个分别是我解决 graphz的安装问题和字体安装问题更新的.:/home/q/docker$ docker images
REPOSITORY                           TAG       IMAGE ID       CREATED         SIZE
confluence                           v2      ebadc1b16ccd   17 hours ago    891MB
confluence                           v1      6c8b798d85c4   3 weeks ago   866MB
b3log/siyuan                         latest    4ebdff0585f6   3 weeks ago   178MB
confluence                           latest    7b8c89f8b9a1   4 weeks ago   848MB
ubuntu                               18.04   251b86c83674   6 weeks ago   63.1MB
b3log/siyuan                         <none>    756ba372afd7   7 weeks ago   177MB
hello-world                        latest    feb5d9fea6a5   16 months ago   13.3kB
cptactionhank/atlassian-confluence   latest    9b303bed0bca   2 years ago   847MB启动Confluence

sh ./wiki.sh查看已经启动的confluence 容器.
# docker ps

CONTAINER ID   IMAGE         COMMAND                  CREATED      STATUS      PORTS                                                   NAMES
6ceaa2f527b5   confluence:v2   "/docker-entrypoint.…"   17 hours ago   Up 17 hours   8091/tcp, 0.0.0.0:18010->8090/tcp, :::18010->8090/tcp   confluence访问 Confluence & 配置

这里我的是直接访问: wiki.firofr.cn 就可以了. (当然你不可能访问到我的wiki,因为我只开了内网访问~~).



引导 安装配置过程

其它内容直参考原文档. 在此就不贴过来了. 大概要注意的点已经基本说到了.

[*]如果要配置域名. 在启动时需要传入一些环境变量.
[*]MySQL初始使用有很多参数需要优化. 这个基本只要照着前台的提示操作即可.
[*]Nginx的配置需要优化,一个是上传文件的大小,否则大附件是上传不进的. 另外一个是要开websockt,否则如多人协作编辑这个功能无法使用.
其它调优:

内存JVM大小.

默认的Confluence的JVM的堆大小是内存大小的1/4. 比如你的电脑的内存是4G.那它的基本堆大小就是1G.
也有可能是默认是1G,没有深究.另外, Confluence总共有两个JVM进程,一个是这里看到的Confluence,另外还有一个是协作用的:synchrony



我的内存为8G.这里Confluence默认占1/4用2G.

上面图中的confluence占用是2G内存.实际之前是占用的1G内存.因为我的机器最开始只有4G的内存. 后面在安装了Nexus后,内存实在是不够用了. 所以才升级了一下内存条. (海鲜市场8G内存条 53RMB). 最近我处理了下PlantUML插件的中文问题, 所以重做了docker镜像.之前的镜像是4G时使用的,因此占用内存会小一些.
confluenceroot      2913932913726 Jan22 ?      01:11:36 /usr/lib/jvm/java-1.8-openjdk/bin/java \
-Djava.util.logging.config.file=/opt/atlassian/confluence/conf/logging.properties \
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
-Djdk.tls.ephemeralDHKeySize=2048 \
-Djava.protocol.handler.pkgs=org.apache.catalina.webresources \
-Dorg.apache.catalina.security.SecurityListener.UMASK=0027 \
-javaagent:/opt/atlassian/confluence/atlassian-agent.jar \
-XX:ReservedCodeCacheSize=256m -XX:+UseCodeCacheFlushing \
-Djdk.tls.server.protocols=TLSv1.1,TLSv1.2 \
-Djdk.tls.client.protocols=TLSv1.1,TLSv1.2 \
-Dconfluence.context.path= \
-Datlassian.plugins.startup.options=-fg \
-Djava.locale.providers=JRE,SPI,CLDR \
-Dorg.apache.tomcat.websocket.DEFAULT_BUFFER_SIZE=32768 \
-Dsynchrony.enable.xhr.fallback=true \
-Xms1024m -Xmx1024m \
-XX:+UseG1GC -Datlassian.plugins.enable.wait=300 \
-Djava.awt.headless=true -XX:G1ReservePercent=20 \
-Xloggc:/opt/atlassian/confluence/logs/gc-2023-01-22_11-39-02.log \
-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 \
-XX:GCLogFileSize=2M \
-Xlog:gc+age=debug:file=/opt/atlassian/confluence/logs/gc-2023-01-22_11-39-02.log::filecount=5,filesize=2M \
-XX:-PrintGCDetails -XX:+PrintGCDateStamps -XX:-PrintTenuringDistribution -XX:+IgnoreUnrecognizedVMOptions \
-Dignore.endorsed.dirs= \
-classpath /opt/atlassian/confluence/bin/bootstrap.jar:/opt/atlassian/confluence/bin/tomcat-juli.jar \
-Dcatalina.base=/opt/atlassian/confluence -Dcatalina.home=/opt/atlassian/confluence \
-Djava.io.tmpdir=/opt/atlassian/confluence/temp \
org.apache.catalina.startup.Bootstrap start同步协作:237 root   17:18 /usr/lib/jvm/java-1.8-openjdk/jre/bin/java \
-classpath /opt/atlassian/confluence/temp/4.0.0-master-85ceb9cf.jar:/opt/atlassian/confluence/confluence/WEB-INF/lib/mysql-connector-java-5.1.44-bin.jar \
-Xss2048k -Xmx1g synchrony.core sql数据中心版本的额外的进程: 参考:
内存要求
你需要确保 Confluence 有足够的内存用于外部进程池。在集群数据中心安装中,您需要为每个集群节点执行此操作。默认情况下,池包含两个进程(沙箱),因此我们建议在 Confluence 已经需要的基础上允许额外的 2 GB(每个沙箱 1 GB)。
如果增加外部进程池的大小,请确保每个节点都有足够的空闲内存来满足额外进程的需求497 root      2:29 /usr/lib/jvm/java-1.8-openjdk/jre/bin/java -Xmx512m -Xss2m -classpath . com.atlassian.confluence.impl.util.sandbox.SandboxServer INFO
512 root      1:57 /usr/lib/jvm/java-1.8-openjdk/jre/bin/java -Xmx512m -Xss2m -classpath . com.atlassian.confluence.impl.util.sandbox.SandboxServer INFO 整体Confluence的进程和内存占用还是挺大的. 如果只有4G的内存是真的玩不转.
插件

后面会再对插件环境相关的再出一些文章进行说明. 有了完整的插件环境,我们才可能愉快的写文档.我们需要的插件,包括但是不限于:

[*]PlantUML , 程序员画图必备.
[*]easyMind, 嵌入源文件的脑图.让你的文档更可读. 更可维护.
[*]drawio: 画图必备. 让你在写文档时需要一些简单图表展示的时候,能够不打断思路.直接表达.
[*]markdown. 简明文档必备.
[*]git插件. 让wiki与代码直接打通. 让代码直接变成文档.
[*]gliffy: 另外一个好用的画图插件.

这篇文章就先到这. 有什么问题在下面留言交流. 如果对您还有一点点帮助的话就请点个赞吧.
参考


[*]^亲测-ubuntu20.04 安装 MySQL5.7https://www.cnblogs.com/immaxfang/p/16804455.html
[*]^cptactionhank/atlassian-confluencehttps://hub.docker.com/r/cptactionhank/atlassian-confluence
[*]^Dockerfile - Confluence 8.0https://github.com/cptactionhank/docker-atlassian-confluence/blob/8.0.0/Dockerfile
[*]^how-to-install-and-use-docker-on-ubuntu-20-04https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04
[*]^Mysql安装 - 基于Ubuntu20.04 - 安装Mysql5.7https://www.cnblogs.com/immaxfang/p/16804455.html
[*]^Docker镜像入门文档https://yeasy.gitbook.io/docker_practice/image/build
[*]^Confluence 数据中心的外部进程池https://confluence.atlassian.com/doc/external-process-pool-for-confluence-data-center-958779098.html
页: [1]
查看完整版本: HomeNas应用01