Gollum 是一个开源的基于 git和 markdown语法的 wiki系统,相比较于wiki 原生的标记语法,git管理和 markdown语法对于程序员来说更为简洁和熟悉,协作也更加灵活。
Gollum源代码(Ruby):https://github.com/gollum/gollum
本文介绍怎么在Ubuntu上安装Gollum,并安装配置Nginx做反向代理。
Ubuntu 16.04安装Gollum
#1 安装一些依赖包
1 2 |
$ sudo apt-get update $ sudo apt-get install git nano curl libicu-dev |
#2 为Gollum创建一个新用户
1 2 3 |
$ sudo adduser --home /opt/gollum --shell /bin/bash --gecos 'Gollum Wiki software' gollum $ sudo install -d -m 755 -o gollum -g gollum /opt/gollum $ sudo usermod -a -G sudo gollum |
#3 使用rvm安装Ruby
参看:Ubuntu 16.04 安装 Ruby on Rails
登录gollum用户:
1 |
$ sudo su - gollum |
安装rvm:
1 2 3 |
$ cd $ curl -sSL https://rvm.io/mpapis.asc | gpg --import - $ curl -sSL https://get.rvm.io | bash -s stable --ruby |
设置环境变量:
1 |
$ source ~/.rvm/scripts/rvm |
安装RVM依赖:
1 |
$ rvm requirements |
列出可用的Ruby版本:
1 |
$ rvm list known |
安装Ruby 2.3.1:
1 |
$ rvm install ruby-2.3.1 |
设置Ruby默认使用的版本:
1 |
$ rvm use 2.3.1 --default |
查看ruby版本:
#4 安装Gollum
安装Gollum和Puma:
1 |
$ gem install --no-ri --no-rdoc gollum puma |
创建一个本地git仓库:
1 |
$ git init ~/gitrepo |
把Gollum注册为systemd后台服务,方便管理:
1 |
$ sudo vim /etc/systemd/system/gollum.service |
写入如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 |
[Unit] Description=gollum service After=syslog.target After=network.target [Service] User=gollum ExecStart=/opt/gollum/.rvm/wrappers/ruby-2.3.1/gollum --live-preview /opt/gollum/gitrepo Restart=on-abort [Install] WantedBy=multi-user.target |
启动创建的Gollum服务:
1 2 |
$ sudo systemctl enable gollum.service $ sudo systemctl start gollum.service |
使用浏览器访问:your_server_ip:4567,测试Gollum。
#5 安装配置Nginx做为Gollum的反向代理
1 |
$ sudo apt-get install nginx |
创建自签名证书(如果你没有其它证书的话):
1 2 3 4 5 6 7 8 |
$ sudo mkdir -p /etc/nginx/ssl $ cd /etc/nginx/ssl $ sudo openssl genrsa -des3 -passout pass:x -out gollum.pass.key 2048 $ sudo openssl rsa -passin pass:x -in gollum.pass.key -out gollum.key $ sudo rm gollum.pass.key $ sudo openssl req -new -key gollum.key -out gollum.csr $ sudo openssl x509 -req -days 365 -in gollum.csr -signkey gollum.key -out gollum.crt $ sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048 |
创建配置文件:
1 |
$ sudo vim /etc/nginx/sites-available/GollumWiki.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 |
server { listen 443 ssl http2; server_name your_domain.com; location / { proxy_pass http://127.0.0.1:4567; 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 150; proxy_send_timeout 100; proxy_read_timeout 100; proxy_buffers 4 32k; client_max_body_size 500m; client_body_buffer_size 128k; } ssl on; ssl_certificate /etc/nginx/ssl/gollum.crt; ssl_certificate_key /etc/nginx/ssl/gollum.key; ssl_dhparam /etc/nginx/ssl/dhparam.pem; ssl_session_timeout 5m; ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_protocols TLSv1.2; ssl_prefer_server_ciphers on; access_log /var/log/nginx/Gollum.access.log; error_log /var/log/nginx/Gollum.error.log; } server { listen 80; server_name your_domain.com; add_header Strict-Transport-Security max-age=2592000; rewrite ^ https://$server_name$request_uri? permanent; } |
注意替换域名。
创建配置文件链接,使生效:
1 |
$ sudo ln -s /etc/nginx/sites-available/GollumWiki.conf /etc/nginx/sites-enabled/GollumWiki.conf |
检查Nginx配置文件是否包含语法错误:
1 |
$ sudo nginx -t |
重启Nginx:
1 |
$ sudo systemctl restart nginx |
#6 测试
使用浏览器访问:https://your_domain_or_IP
文章保存到了~/gitrepo仓库: