一、安装wikijs
1.首先安装Docker (已经安装过得可以跳过)
1.先卸载旧版,如果没有的话,就不用执行了,直接第二步。
apt-get remove docker docker-engine docker.io containerd runc
2.在终端输入
apt update
apt-get install ca-certificates curl gnupg lsb-release
3.安装证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
4.写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
##############出错时候看下面#####################
执行命令添加apt仓库时:
sudo add-apt-repository ppa:ondrej/php && sudo apt-get update
报错:
sudo: add-apt-repository: command not found
解决办法:
先执行:apt-get -y install software-properties-common
然后执行再执行:sudo add-apt-repository ppa:ondrej/php && sudo apt-get update
提示输入enter时需要按enter才能继续,按ctrl+则c终止继续
####################################
5.安装
sudo apt-get install docker-ce docker-ce-cli containerd.io
中途出现问题的话,使用 sudo apt-get update 试试
6 启动Docker
systemctl start docker
7.安装工具
apt-get -y install apt-transport-https ca-certificates curl software-properties-common
8.重启docker
service docker restart
9.测试输入sudo docker run hello-world 显示以下信息则成功,第一次比较慢。
sudo docker run hello-world
10.查看版本
sudo docker version
11.查看镜像,可以看到刚才创建的镜像
sudo docker images
12.启动 Docker
sudo systemctl start docker
13添加开机启动
sudo systemctl enable docker
14.查看 Docker启动状态
sudo systemctl status docker
#############以下操作为可选##############
为了以后管理docker方便 安装一个portainer 用于管理docker容器
1.下载portainer 镜像
docker pull portainer/portainer
2.运行portainer 下载镜像并启动容器 开机自启动
docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name prtainer-test portainer/portainer
3.验证安装
浏览器访问服务器9000端口
http://10.10.201.161:9000/
并设置admin密-码
(portainer的local的Container里 可以看到容器的启动情况)
2.安装MongoDB
#1. 拉取Mongo最新的镜像
docker pull mongo
#2. 根据mongo镜像启动一个Mongo容器
docker run -p 27017:27017 -v $PWD/db:/data/db -d mongo
# -p 27017:27017表示映射宿主机的27017端口到容器的27017端口
# -v $PWD/db:/data/db表示映射当前目录晓得/db到容器的/dada/db目录
# -d 表示后台静默启动
需要创建一个数据库来为wiki使用,这里可以使用MongoDB官方的工具mongodb-compass在GUI页面进行创建
3.使用Docker安装wiki.js
可以参考wiki.js官网给出的步骤进行安装
wiki.js 官网安装步骤
https://docs.requarks.io/wiki/install/docker
3.1使用docker拉去镜像
sudo docker pull requarks/wiki
如果是arm的机器,也可以加相应的tag,官网提供了arm架构的镜像。
3.2安装postgresql
有了wiki的镜像之后,我们还需要数据库,首推的是postgresql,那我们就用这个就行了,数据库也可以单独再创建一个容器,只需要拉取postgres等就可以了。
以下是数据库的两种安装方式:
第一种方式:手动安装postgresql
1、手动安装postgresql
sudo apt install postgresql
安装好数据库之后,先进行配置,使其能够在docker容器中进行使用:
sudo vim /etc/postgresql/<version>/main/postgresql.conf
找到以下内容并进行修改:
#listen_addresses = 'localhost'
修改为所有IP可登录:
listen_addresses = '*'
再打开以下文件:
sudo vim /etc/postgresql/<version>/main/pg_hba.conf
在文件末添加一行:
host all all 0.0.0.0/0 md5
修改完以上两个文件之后,就支持远程IP登录数据库了,别忘了重启下服务
sudo service postgresql restart
然后我们创建一个用户和表用于wiki使用,postgres 是安装之后默认创建的管理用户:
sudo -u postgres psql
进入之后就可以创建用户和数据库表了,一般创建用户、表和授予权限就行了:
创建新用户:CREATE USER username WITH PASSWORD 'password';
创建新数据库:CREATE DATABASE database_name;
授予用户对数据库的访问权限:GRANT ALL PRIVILEGES ON DATABASE database_name TO username;
修改用户密码:ALTER USER username WITH PASSWORD 'new_password';
第二种方式:docker安装postgresql
使用数据库容器
docker pull postgres
docker network create --subnet=192.168.5.0/24 --gateway=192.168.5.1 wiki-network
docker run -d --name postgresql -e TZ=Asia/Shanghai --net wiki-network --ip 192.168.5.10 -v /home/feng/test/docker/postgresql:/var/lib/postgresql/data -e POSTGRES_PASSWORD=fc123123 postgres:latest
查看docker容器的IP:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' postgresql
我这里将容器的数据挂载到/home/feng/test/docker/postgresql下了,到时候可以启动新容器映射这个文件,相当于恢复数据。同时固定了容器的IP,以便于重启后wiki容器也可以访问,不然docker会每次启动时动态分配IP,docker网络可以在主机通过sudo docker network ls查看。
进入容器修改配置使其能支持外部IP登录,然后创建用户,按照上面的方法改就行,不过路径不在/etc下面,在/var/lib/postgresql/data/下。容器中大概率没有安装vim,可以先自行安装:
#进入容器
docker exec -it postgresql bash
#进入数据库
psql -U postgres
我在配置好之后,wiki容器一直在退出,查看log是无法创建表,怎么添加都没用,我就直接把wiki用户升级为超级管理员用户了,由于我对数据库不太熟,这种做法不太推荐:
ALTER USER wiki WITH SUPERUSER;
一切准备就绪之后,就可以启动wiki容器了,如果自定义了网络记得也要--net设置:
未设置IP和映射:
docker run -d -p 8888:3000 --name wiki --restart unless-stopped -e TZ=Asia/Shanghai -e "DB_TYPE=postgres" -e "DB_HOST=192.168.5.10" -e "DB_PORT=5432" -e "DB_USER=wiki" -e "DB_PASS=fc123123" -e "DB_NAME=wiki" ghcr.io/requarks/wiki:2
设置IP以及映射:
docker run -d -p 8888:3000 --name wiki --restart unless-stopped --net wiki-network --ip 192.168.5.20 -e TZ=Asia/Shanghai -v /home/mobileos/data/docker_containers/wiki:/data -e "DB_TYPE=postgres" -e "DB_HOST=192.168.5.10" -e "DB_PORT=5432" -e "DB_USER=wiki" -e "DB_PASS=lz123123" -e "DB_NAME=wiki" ghcr.io/requarks/wiki
其中映射端口8888可以自定义,
--name wiki也可以自定义,
DB_HOST就是数据库所在的服务器IP,可以是宿主机,也可以是别的机器,
DB_PORT是数据库端口,一般不用改,
DB_USER是之前创建的用户,
DB_PASS是用户密码,
DB_NAME是创建的数据库表名。
启动容器之后,如果出现异常,可以使用docker logs <docker-name> 查看日志,
根据具体错误信息进行处理。
启动容器之后就可以进行访问了,在宿主机输入127.0.0.1:8888: