Gollum 是一个开源的基于 git和 markdown语法的 wiki系统,相比较于wiki 原生的标记语法,git管理和 markdown语法对于程序员来说更为简洁和熟悉,协作也更加灵活。
Gollum源代码(Ruby):https://github.com/gollum/gollum
本文介绍怎么在Ubuntu上安装Gollum,并安装配置Nginx做反向代理。
Ubuntu 16.04安装Gollum
1、安装一些依赖包
$ sudo apt-get update
$ sudo apt-get install git nano curl libicu-dev
2、为Gollum创建一个新用户
$ 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(http://www.linuxdiyf.com/linux/22023.html)
登录gollum用户:
$ sudo su - gollum
安装rvm:
$ cd
$ curl -sSL https://rvm.io/mpapis.asc | gpg --import -
$ curl -sSL https://get.rvm.io | bash -s stable --ruby
设置环境变量:
$ source ~/.rvm/scripts/rvm
安装RVM依赖:
$ rvm requirements
列出可用的Ruby版本:
$ rvm list known
安装Ruby 2.3.1:
$ rvm install ruby-2.3.1
设置Ruby默认使用的版本:
$ rvm use 2.3.1 --default
查看ruby版本:
4、安装Gollum
安装Gollum和Puma:
$ gem install --no-ri --no-rdoc gollum puma
创建一个本地git仓库:
$ git init ~/gitrepo
把Gollum注册为systemd后台服务,方便管理:
$ sudo vim /etc/systemd/system/gollum.service
写入如下内容:
[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服务:
$ sudo systemctl enable gollum.service
$ sudo systemctl start gollum.service
使用浏览器访问:your_server_ip:4567,测试Gollum。
5、安装配置Nginx做为Gollum的反向代理
$ sudo apt-get install nginx
创建自签名证书(如果你没有其它证书的话):
$ 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
创建配置文件:
$ sudo vim /etc/nginx/sites-available/GollumWiki.conf
写入如下内容:
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;
}
注意替换域名。
创建配置文件链接,使生效:
$ sudo ln -s /etc/nginx/sites-available/GollumWiki.conf /etc/nginx/sites-enabled/GollumWiki.conf
检查Nginx配置文件是否包含语法错误:
$ sudo nginx -t
重启Nginx:
$ sudo systemctl restart nginx
6、测试
使用浏览器访问:https://your_domain_or_IP
文章保存到了~/gitrepo仓库: