| SU | MO | TU | WE | TH | FR | SA |
|---|---|---|---|---|---|---|
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 | 1 | 2 | 3 | 4 | 5 | 6 |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
GrowiをWindowsサーバで動かすのにバッドノウハウが生まれたのでメモ。
Growiとは、オープンソースのWikiサーバ。
Crowiをフォークしたもので、マークダウンでWikiが書きやすいようにしてくれてる。
公式には、Docker-Composeを使うのをおすすめしてる。
つまり、Dockerが使えれば楽々環境構築できる。
しかし、WindowsでDocker動かすのはハードルがある。
なぜなら、仮想化支援機能が必要であり、AWSのWindowsサーバではそれが使えない。
先駆者様がおり、ありがたいことに記事を上げてくれてる。
GrowiをWindowsサーバーに導入する
必要なことをまとめると、以下となる。
先駆者様の導入バージョンはv4.2.5。
しかし、このバージョンが対応してるNode 14はサポート期限を迎えている。
Growiもメジャーバージョンが上がり、2024年2月現在の最新バージョンはv6.3.1。
v4からv6に至るまでに、いろいろあったみたいで、ビルド方法も変わっている。
以下は、v6.1.15での動作結果です。
v6では、開発者スタートアップ v5の手順でビルドできた。
しかし、turbo run buildすると、
Error: You must supply options.input to rollup
でいくつかのパッケージがビルドエラーとなる。
エラーの内容はViteという開発ツールで、Rollupというバンドラの設定がおかしいという内容。
しかし、対象のパッケージはライブラリタイプなので、options.inputの指定は不要なはず。
色々調べて、ここにたどり着いた。vite.config.tsで使ってるglob.sync()が上手く動かないことがあるらしく、
entry: glob.sync(path.resolve(__dirname, 'src/**/*.ts'), {
ignore: '**/*.spec.ts',
}),
これを
entry: glob.sync('src/**/*.ts', {
ignore: '**/*.spec.ts',
}).map(file => path.resolve(__dirname, file)),
こうしたら、ビルドが通るようになった。
変更が必要なパッケージは4つほどあるので、全部通るまで根気よく変更してください。
ビルドが通って、yarn startでサーバ起動しようとしたら、またしてもエラー。
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
^^^^^^^
SyntaxError: missing ) after argument list
これも、先駆者様がいて、解決方法が見つかった。
node_modules/.binを使ってるとだめらしい。
中にシンボリックリンクが入っていて、Windowsでは実行できないものと思われる。
growi/apps/app/package.jsonのnode_modules/.binを使ってるところを書き変え。growi/node_modulesにリンクしてるみたいなので、2つ上の階層を見に行くようにする。
PRを送れたら良いのだけど、Windows環境限定の困りごとのようだし、どうPRすれば良いかわからないので、ここに書き留めておく。