SlideShare a Scribd company logo
1 of 19
Download to read offline
Wiki設置するな
Wiki設置するな
   らgitit!
   らgitit!
 とっても簡単だよ!こわくないよ!

  Kiwamu Okabe
1/18

   ぼくのスペック
twitter: @master_q
ふだんはDebian
前の仕事でNetBSD使ってた
今プロニート
2/18

    Wiki何使ってます?
pukiwiki?
hiki?
github?
google code?
redmine?
3/18

   gititはいかが?

    http://gitit.net

がデモサイト。

 https://github.com/jgm/gitit

がソースコード置き場。
4/18

  gititのうれしいコト
wikiデータがgit管理
git cloneして文書更新できる
専用プロセスだからfcgi不要
文法がmarkdown(変更可能)
プラグイン拡張できる!
5/18

        設置手順
Debian squeezeの場合、、、
 $   sudo apt-get install haskell-platform
 $   cabal update
 $   cabal install --reinstall -fhighlighting pandoc
 $   cabal install gitit



これだけ!(たぶん。。。)
6/18

   え、、、Haskell?
流行の関数型ですよ!奥さん!!!
7/18

    使い方

 $ mkdir mywiki
 $ cd mywiki
 $ ~/.cabal/bin/gitit
 ...別のコンソールで...
 $ chromium http://localhost:5001/

うわー簡単!
8/18

こんな初期ページ
9/18

      ディレクトリ構成

 - mywiki/static:
    静的データ置き場(cssとか画像ファイルとか)
 - mywiki/templates:
     ~/.cabal/share/gitit-X.X/data/templates
    にある*.stテンプレートファイルの変更
 - mywiki/wikidata:
     Wikiページ内容(git管理)


staticとかtemplatesとか編集すれ
ばオシャレくなるハズ
10/18

   プラグイン作る#1
ふつーはPageTransformで。
11/18

    プラグイン作る#2

 $ cd mywiki/
 $ mkdir plugins
 $ vi plugins/TwitterUrl.hs
 module TwitterUrl (plugin) where
 import Network.Gitit.Interface

 plugin :: Plugin
 plugin = mkPageTransform twitterurlize

 twitterurlize :: Inline -> Inline
 twitterurlize (Str ('@':x)) =
   Link [Str ('@':x)] ("http://twitter.com/" ++ x, '@':x)
 twitterurlize x = x




テキトーにプラグイン作って
12/18

      プラグイン作る#3

$ cp ~/.cabal/share/gitit-0.8/data/default.conf ./
$ vi default.conf
--snip--
plugins: plugins/TwitterUrl.hs
--snip--
$ ~/.cabal/bin/gitit -f default.conf



コンパイルしないで置いただけな
のに。。。
13/18

   プラグイン作る#4
"@master_q"とか書くと、、、
14/18

   プラグイン作る#5
やった!twitterっぽいリンクになっ
てる!
15/18

        実地:daemon化
$ cat gitit_daemon.sh
#!/bin/sh
--snip--
start() {
       echo -n "Starting $NAME: "
       $SSD --start --pidfile $PIDFILE --make-pidfile --background 
         --user hoge --chdir $TOPDIR --exec $PROG -- $OPTION
       RETVAL=$?
       echo
       return $RETVAL
}
--snip--
16/18

      実地:VirtualHost

$ pwd
/etc/apache2/sites-enabled
$ cat wiki
<VirtualHost *:80>
       ServerName wiki.masterq.net
--snip--
       ProxyPassReverse / http://127.0.0.1:5001
       RewriteRule ^(.*) http://127.0.0.1:5001$1 [P]
--snip--
</VirtualHost>
17/18

        最後に宣伝
初心者Haskell勉強会やってま
す。僕が参加者に教えてもらう会!
 前回議事録: http://bit.ly/jnonaP
 次回: http://partake.in/events/8ccdc151-b758-47af-9ff2-91216bd5d3c4




次回は第四回です。いつも横浜近
辺開催。是非!
18/18

参考

- daemon化スクリプト:
    http://bit.ly/mFfv6f
- gititプラグインのしくみ:
    http://bit.ly/khbwwJ
- 実戦配備詳細:
    http://bit.ly/jXDY8Z

More Related Content

What's hot

Pd Kai#3 Startup Process
Pd Kai#3 Startup ProcessPd Kai#3 Startup Process
Pd Kai#3 Startup Processnagachika t
 
HaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングHaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングKiwamu Okabe
 
Isaax Public API IoTデバイスを管理する
Isaax Public API IoTデバイスを管理するIsaax Public API IoTデバイスを管理する
Isaax Public API IoTデバイスを管理するTomoyuki Sugita
 
8F Emacs seminar 1st
8F Emacs seminar 1st8F Emacs seminar 1st
8F Emacs seminar 1sttoshi_pp
 
長いの
長いの長いの
長いのemasaka
 
いい感じにグラフ描きたい
いい感じにグラフ描きたいいい感じにグラフ描きたい
いい感じにグラフ描きたいkatsuyoshiozaki
 
Hakyllで遊んでみた。
Hakyllで遊んでみた。Hakyllで遊んでみた。
Hakyllで遊んでみた。Tomohiko Himura
 
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作るKenichiro MATOHARA
 
Gitコマンド勉強会 第2回 stash
Gitコマンド勉強会 第2回 stashGitコマンド勉強会 第2回 stash
Gitコマンド勉強会 第2回 stashKazuki Sakai
 
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみるオープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみるKenichiro MATOHARA
 
MacPort_&_FTP_ver1.0
MacPort_&_FTP_ver1.0MacPort_&_FTP_ver1.0
MacPort_&_FTP_ver1.0Satoshi Kume
 
スタート低レイヤー #0
スタート低レイヤー #0スタート低レイヤー #0
スタート低レイヤー #0Kiwamu Okabe
 
Raspberry Pi + Go で IoT した話
Raspberry Pi + Go で IoT した話Raspberry Pi + Go で IoT した話
Raspberry Pi + Go で IoT した話yaegashi
 
「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...
「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...
「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...Kenichiro MATOHARA
 
Raspberry Piにdiskless modeのalpine linuxを導入してみる
Raspberry Piにdiskless modeのalpine linuxを導入してみるRaspberry Piにdiskless modeのalpine linuxを導入してみる
Raspberry Piにdiskless modeのalpine linuxを導入してみるKenichiro MATOHARA
 
OCamlでWebアプリケーションを作るn個の方法
OCamlでWebアプリケーションを作るn個の方法OCamlでWebアプリケーションを作るn個の方法
OCamlでWebアプリケーションを作るn個の方法Hiroki Mizuno
 

What's hot (20)

Pd Kai#3 Startup Process
Pd Kai#3 Startup ProcessPd Kai#3 Startup Process
Pd Kai#3 Startup Process
 
HaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングHaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミング
 
Isaax Public API IoTデバイスを管理する
Isaax Public API IoTデバイスを管理するIsaax Public API IoTデバイスを管理する
Isaax Public API IoTデバイスを管理する
 
8F Emacs seminar 1st
8F Emacs seminar 1st8F Emacs seminar 1st
8F Emacs seminar 1st
 
長いの
長いの長いの
長いの
 
いい感じにグラフ描きたい
いい感じにグラフ描きたいいい感じにグラフ描きたい
いい感じにグラフ描きたい
 
Hakyllで遊んでみた。
Hakyllで遊んでみた。Hakyllで遊んでみた。
Hakyllで遊んでみた。
 
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
 
Hakyll
HakyllHakyll
Hakyll
 
Gitコマンド勉強会 第2回 stash
Gitコマンド勉強会 第2回 stashGitコマンド勉強会 第2回 stash
Gitコマンド勉強会 第2回 stash
 
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみるオープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
 
MacPort_&_FTP_ver1.0
MacPort_&_FTP_ver1.0MacPort_&_FTP_ver1.0
MacPort_&_FTP_ver1.0
 
スタート低レイヤー #0
スタート低レイヤー #0スタート低レイヤー #0
スタート低レイヤー #0
 
Raspberry Pi + Go で IoT した話
Raspberry Pi + Go で IoT した話Raspberry Pi + Go で IoT した話
Raspberry Pi + Go で IoT した話
 
「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...
「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...
「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...
 
Intel graphics
Intel graphicsIntel graphics
Intel graphics
 
Raspberry Piにdiskless modeのalpine linuxを導入してみる
Raspberry Piにdiskless modeのalpine linuxを導入してみるRaspberry Piにdiskless modeのalpine linuxを導入してみる
Raspberry Piにdiskless modeのalpine linuxを導入してみる
 
RgGen ご紹介
RgGen ご紹介RgGen ご紹介
RgGen ご紹介
 
JTF 2013
JTF 2013JTF 2013
JTF 2013
 
OCamlでWebアプリケーションを作るn個の方法
OCamlでWebアプリケーションを作るn個の方法OCamlでWebアプリケーションを作るn個の方法
OCamlでWebアプリケーションを作るn個の方法
 

Similar to Wiki設置するならgitit!

ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!Yohei Fushii
 
Git pyfes201207-presen
Git pyfes201207-presenGit pyfes201207-presen
Git pyfes201207-presenKouhei Maeda
 
とある受託ベンダの開発環境
とある受託ベンダの開発環境とある受託ベンダの開発環境
とある受託ベンダの開発環境Tomoki Hasegawa
 
GitLab + Dokku で作る CI/CD 環境
GitLab + Dokku で作る CI/CD 環境GitLab + Dokku で作る CI/CD 環境
GitLab + Dokku で作る CI/CD 環境Kazuhiro Nishiyama
 
Vagrant を Web開発環境に使う
Vagrant を Web開発環境に使うVagrant を Web開発環境に使う
Vagrant を Web開発環境に使うMasashi Shinbara
 
Google container builderと友だちになるまで
Google container builderと友だちになるまでGoogle container builderと友だちになるまで
Google container builderと友だちになるまでlestrrat
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む2bo 2bo
 
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Preferred Networks
 
Starting qt5beta at_raspberry_pi Qtnagoya#6
Starting qt5beta at_raspberry_pi Qtnagoya#6Starting qt5beta at_raspberry_pi Qtnagoya#6
Starting qt5beta at_raspberry_pi Qtnagoya#6Kazuo Asano (@kazuo_asa)
 
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC WebアプリケーションPlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC WebアプリケーションKazuhiro Hara
 
Retina対応 CSSスプライトを自動化しよう sprity版(東区フロントエンド勉強会 2015年 第2回) 補足資料
Retina対応 CSSスプライトを自動化しよう sprity版(東区フロントエンド勉強会 2015年 第2回) 補足資料Retina対応 CSSスプライトを自動化しよう sprity版(東区フロントエンド勉強会 2015年 第2回) 補足資料
Retina対応 CSSスプライトを自動化しよう sprity版(東区フロントエンド勉強会 2015年 第2回) 補足資料Toshimichi Suekane
 
Gitを使ってみませんか
Gitを使ってみませんかGitを使ってみませんか
Gitを使ってみませんかAtsuhiro Takiguchi
 
mbedではじめる組み込みHaskellプログラミング
mbedではじめる組み込みHaskellプログラミングmbedではじめる組み込みHaskellプログラミング
mbedではじめる組み込みHaskellプログラミングKiwamu Okabe
 
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜Sotaro Omura
 
Dockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニックDockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニックEmma Haruka Iwao
 

Similar to Wiki設置するならgitit! (20)

ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!
 
Git pyfes201207-presen
Git pyfes201207-presenGit pyfes201207-presen
Git pyfes201207-presen
 
Git (実践入門編)
Git (実践入門編)Git (実践入門編)
Git (実践入門編)
 
Vyatta 改造入門
Vyatta 改造入門Vyatta 改造入門
Vyatta 改造入門
 
とある受託ベンダの開発環境
とある受託ベンダの開発環境とある受託ベンダの開発環境
とある受託ベンダの開発環境
 
GitLab + Dokku で作る CI/CD 環境
GitLab + Dokku で作る CI/CD 環境GitLab + Dokku で作る CI/CD 環境
GitLab + Dokku で作る CI/CD 環境
 
Yesod on Heroku
Yesod on HerokuYesod on Heroku
Yesod on Heroku
 
Capistrano
CapistranoCapistrano
Capistrano
 
Vagrant を Web開発環境に使う
Vagrant を Web開発環境に使うVagrant を Web開発環境に使う
Vagrant を Web開発環境に使う
 
Google container builderと友だちになるまで
Google container builderと友だちになるまでGoogle container builderと友だちになるまで
Google container builderと友だちになるまで
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
 
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
 
Starting qt5beta at_raspberry_pi Qtnagoya#6
Starting qt5beta at_raspberry_pi Qtnagoya#6Starting qt5beta at_raspberry_pi Qtnagoya#6
Starting qt5beta at_raspberry_pi Qtnagoya#6
 
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC WebアプリケーションPlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
 
Retina対応 CSSスプライトを自動化しよう sprity版(東区フロントエンド勉強会 2015年 第2回) 補足資料
Retina対応 CSSスプライトを自動化しよう sprity版(東区フロントエンド勉強会 2015年 第2回) 補足資料Retina対応 CSSスプライトを自動化しよう sprity版(東区フロントエンド勉強会 2015年 第2回) 補足資料
Retina対応 CSSスプライトを自動化しよう sprity版(東区フロントエンド勉強会 2015年 第2回) 補足資料
 
Gitを使ってみませんか
Gitを使ってみませんかGitを使ってみませんか
Gitを使ってみませんか
 
mbedではじめる組み込みHaskellプログラミング
mbedではじめる組み込みHaskellプログラミングmbedではじめる組み込みHaskellプログラミング
mbedではじめる組み込みHaskellプログラミング
 
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜
 
Dockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニックDockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニック
 
Ansible2.0と実用例
Ansible2.0と実用例Ansible2.0と実用例
Ansible2.0と実用例
 

Wiki設置するならgitit!

  • 1. Wiki設置するな Wiki設置するな らgitit! らgitit! とっても簡単だよ!こわくないよ! Kiwamu Okabe
  • 2. 1/18 ぼくのスペック twitter: @master_q ふだんはDebian 前の仕事でNetBSD使ってた 今プロニート
  • 3. 2/18 Wiki何使ってます? pukiwiki? hiki? github? google code? redmine?
  • 4. 3/18 gititはいかが? http://gitit.net がデモサイト。 https://github.com/jgm/gitit がソースコード置き場。
  • 5. 4/18 gititのうれしいコト wikiデータがgit管理 git cloneして文書更新できる 専用プロセスだからfcgi不要 文法がmarkdown(変更可能) プラグイン拡張できる!
  • 6. 5/18 設置手順 Debian squeezeの場合、、、 $ sudo apt-get install haskell-platform $ cabal update $ cabal install --reinstall -fhighlighting pandoc $ cabal install gitit これだけ!(たぶん。。。)
  • 7. 6/18 え、、、Haskell? 流行の関数型ですよ!奥さん!!!
  • 8. 7/18 使い方 $ mkdir mywiki $ cd mywiki $ ~/.cabal/bin/gitit ...別のコンソールで... $ chromium http://localhost:5001/ うわー簡単!
  • 10. 9/18 ディレクトリ構成 - mywiki/static: 静的データ置き場(cssとか画像ファイルとか) - mywiki/templates: ~/.cabal/share/gitit-X.X/data/templates にある*.stテンプレートファイルの変更 - mywiki/wikidata: Wikiページ内容(git管理) staticとかtemplatesとか編集すれ ばオシャレくなるハズ
  • 11. 10/18 プラグイン作る#1 ふつーはPageTransformで。
  • 12. 11/18 プラグイン作る#2 $ cd mywiki/ $ mkdir plugins $ vi plugins/TwitterUrl.hs module TwitterUrl (plugin) where import Network.Gitit.Interface plugin :: Plugin plugin = mkPageTransform twitterurlize twitterurlize :: Inline -> Inline twitterurlize (Str ('@':x)) = Link [Str ('@':x)] ("http://twitter.com/" ++ x, '@':x) twitterurlize x = x テキトーにプラグイン作って
  • 13. 12/18 プラグイン作る#3 $ cp ~/.cabal/share/gitit-0.8/data/default.conf ./ $ vi default.conf --snip-- plugins: plugins/TwitterUrl.hs --snip-- $ ~/.cabal/bin/gitit -f default.conf コンパイルしないで置いただけな のに。。。
  • 14. 13/18 プラグイン作る#4 "@master_q"とか書くと、、、
  • 15. 14/18 プラグイン作る#5 やった!twitterっぽいリンクになっ てる!
  • 16. 15/18 実地:daemon化 $ cat gitit_daemon.sh #!/bin/sh --snip-- start() { echo -n "Starting $NAME: " $SSD --start --pidfile $PIDFILE --make-pidfile --background --user hoge --chdir $TOPDIR --exec $PROG -- $OPTION RETVAL=$? echo return $RETVAL } --snip--
  • 17. 16/18 実地:VirtualHost $ pwd /etc/apache2/sites-enabled $ cat wiki <VirtualHost *:80> ServerName wiki.masterq.net --snip-- ProxyPassReverse / http://127.0.0.1:5001 RewriteRule ^(.*) http://127.0.0.1:5001$1 [P] --snip-- </VirtualHost>
  • 18. 17/18 最後に宣伝 初心者Haskell勉強会やってま す。僕が参加者に教えてもらう会! 前回議事録: http://bit.ly/jnonaP 次回: http://partake.in/events/8ccdc151-b758-47af-9ff2-91216bd5d3c4 次回は第四回です。いつも横浜近 辺開催。是非!
  • 19. 18/18 参考 - daemon化スクリプト: http://bit.ly/mFfv6f - gititプラグインのしくみ: http://bit.ly/khbwwJ - 実戦配備詳細: http://bit.ly/jXDY8Z