VAIO Type-P上のUbuntu16.04で自宅にサーバを構築 その3

VAIO Type-P上のUbuntu16.04にCrowiサーバを構築する

当サイトの管理しているサーバの状態を確認するため、wikiサーバのCrowiをインストールします。

CrowiはMarkdownで記述できるWikiです。

crowiのインストール

前回までの構築で apt update apt upgrade は実施済みなので、ここでは実施しませんが、もしupdateを実施していなければ実施します。

node.jsとnpmをインストール

-plusをインストールする前にNode.jsとnpmをインストールします。

spdsk@vaio-1604-100:~$ sudo apt-get install -y nodejs npm
[sudo] spdsk のパスワード: 
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  binutils build-essential cpp cpp-5 dpkg-dev fakeroot g++ g++-5 gcc gcc-5 gyp javascript-common
  libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan2 libatomic1
  libc-dev-bin libc6-dev libcc1-0 libcilkrts5 libdpkg-perl libfakeroot libfile-fcntllock-perl
  libgcc-5-dev libgomp1 libisl15 libitm1 libjs-inherits libjs-jquery libjs-node-uuid
  libjs-underscore libmpc3 libmpx0 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib
  libquadmath0 libssl-dev libssl-doc libstdc++-5-dev libubsan0 libuv1 libuv1-dev linux-libc-dev
  make manpages-dev node-abbrev node-ansi node-ansi-color-table node-archy node-async
  node-block-stream node-combined-stream node-cookie-jar node-delayed-stream node-forever-agent
  node-form-data node-fstream node-fstream-ignore node-github-url-from-git node-glob
  node-graceful-fs node-gyp node-inherits node-ini node-json-stringify-safe node-lockfile
  node-lru-cache node-mime node-minimatch node-mkdirp node-mute-stream node-node-uuid node-nopt
  node-normalize-package-data node-npmlog node-once node-osenv node-qs node-read
  node-read-package-json node-request node-retry node-rimraf node-semver node-sha node-sigmund
  node-slide node-tar node-tunnel-agent node-underscore node-which nodejs-dev python
  python-minimal python-pkg-resources python2.7 python2.7-minimal zlib1g-dev
  
***長いので略***

node-sha (1.2.3-1) を設定しています ...
node-slide (1.1.4-1) を設定しています ...
npm (3.5.2-04) を設定しています ...
libc-bin (2.23-010) のトリガを処理しています ...
spdsk@vaio-1604-100:~$ 

npmでn packageをインストール

spdsk@vaio-ubuntu1604-100:~$ sudo npm cache clean
spdsk@vaio-ubuntu1604-100:~$ sudo npm install n -g
/usr/local/bin/n -> /usr/local/lib/node_modules/n/bin/n
/usr/local/lib
└── n@2.1.8 

spdsk@vaio-ubuntu1604-100:~$ 

nodeをインストール

spdsk@vaio-ubuntu1604-100:~$ sudo n stable

     install : node-v9.4.0
       mkdir : /usr/local/n/versions/node/9.4.0
       fetch : https://nodejs.org/dist/v9.4.0/node-v9.4.0-linux-x86.tar.gz
######################################################################## 100.0%
   installed : v9.4.0

spdsk@vaio-ubuntu1604-100:~$ sudo ln -sf /usr/local/bin/node /usr/bin/node
spdsk@vaio-ubuntu1604-100:~$ node -v
v9.4.0
spdsk@vaio-ubuntu1604-100:~$ npm -v
5.6.0

バージョンを6.11に変更します。
https://nodejs.org/ja/download/

spdsk@vaio-ubuntu1604-100:/opt/crowi-plus$ sudo n 6.11.0

     install : node-v6.11.0
       mkdir : /usr/local/n/versions/node/6.11.0
       fetch : https://nodejs.org/dist/v6.11.0/node-v6.11.0-linux-x86.tar.gz
######################################################################## 100.0%
   installed : v6.11.0

spdsk@vaio-ubuntu1604-100:/opt/crowi-plus$ node -v
v6.11.0
spdsk@vaio-ubuntu1604-100:/opt/crowi-plus$ npm -v
3.10.10

yarnをインストール

npmでyarnをインストールします。

spdsk@vaio-ubuntu1604-100:~$ sudo npm install -g yarn
npm WARN deprecated yarn@1.3.2: It is recommended to install Yarn using the native installation method for your environment. See https://yarnpkg.com/en/docs/install
/usr/local/bin/yarn -> /usr/local/lib/node_modules/yarn/bin/yarn.js
/usr/local/bin/yarnpkg -> /usr/local/lib/node_modules/yarn/bin/yarn.js
+ yarn@1.3.2
added 1 package in 2.466s
spdsk@vaio-ubuntu1604-100:~$ 

MongoDBをインストール

Crowiで使用するMongoDBをインストールします。ここではMongoDB Community Edition on Linuxをインストールします。Ubuntuが32bit版なため、Mongodbも32bitで使用できるバージョン2.6を使用します。
以下を参考にしてインストールしています。
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/

キーを入手します。

spdsk@vaio-ubuntu1604-100:~$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
Executing: /tmp/tmp.BF37C57Hk9/gpg.1.sh --keyserver
hkp://keyserver.ubuntu.com:80
--recv
7F0CEB10
gpg: 鍵7F0CEB10をhkpからサーバkeyserver.ubuntu.comに要求
gpg: 鍵7F0CEB10: 公開鍵"Richard Kreuter "をインポートしました
gpg: 処理数の合計: 1
gpg:               インポート: 1  (RSA: 1)

リストファイルを作成します。

spdsk@vaio-ubuntu1604-100:~$ echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list

パッケージデータベースをアップデートします。

spdsk@vaio-ubuntu1604-100:~$ sudo apt update
ヒット:1 http://jp.archive.ubuntu.com/ubuntu xenial InRelease
取得:2 http://jp.archive.ubuntu.com/ubuntu xenial-updates InRelease [102 kB]                       
取得:3 http://jp.archive.ubuntu.com/ubuntu xenial-backports InRelease [102 kB]                     
無視:4 http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 InRelease                         
ヒット:5 http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 Release                         
ヒット:6 http://repo.zabbix.com/zabbix/3.4/ubuntu xenial InRelease                                 
取得:7 http://security.ubuntu.com/ubuntu xenial-security InRelease [102 kB]                        
無視:8 http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist InRelease                      
取得:9 http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist Release [2,040 B]              
取得:11 http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist Release.gpg [490 B]           
取得:12 http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist/10gen i386 Packages [29.6 kB]
339 kB を 2秒 で取得しました (120 kB/s)
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています       
状態情報を読み取っています... 完了
パッケージはすべて最新です。
W: http://downloads-distro.mongodb.org/repo/ubuntu-upstart/dists/dist/Release.gpg: 鍵 492EAFE8CD016A07919F1D2B9ECBEC467F0CEB10 による署名は弱い digest アルゴリズム (SHA1) を使用しています

mongodbをインストールします。

spdsk@vaio-ubuntu1604-100:~$ sudo apt-get install mongodb-org
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  mongodb-org-mongos mongodb-org- mongodb-org-shell mongodb-org-tools
以下のパッケージが新たにインストールされます:
  mongodb-org mongodb-org-mongos mongodb-org- mongodb-org-shell mongodb-org-tools
アップグレード: 0 個、新規インストール: 5 個、削除: 0 個、保留: 0 個。
115 MB のアーカイブを取得する必要があります。
この操作後に追加で 289 MB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist/10gen i386 mongodb-org-shell i386 2.6.12 [4,412 kB]
取得:2 http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist/10gen i386 mongodb-org- i386 2.6.12 [9,482 kB]
取得:3 http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist/10gen i386 mongodb-org-mongos i386 2.6.12 [7,143 kB]
取得:4 http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist/10gen i386 mongodb-org-tools i386 2.6.12 [93.9 MB]
取得:5 http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist/10gen i386 mongodb-org i386 2.6.12 [3,648 B]
115 MB を 34秒 で取得しました (3,328 kB/s)                                                         
以前に未選択のパッケージ mongodb-org-shell を選択しています。
(データベースを読み込んでいます ... 現在 107283 個のファイルとディレクトリがインストールされています。)
.../mongodb-org-shell_2.6.12_i386.deb を展開する準備をしています ...
mongodb-org-shell (2.6.12) を展開しています...
以前に未選択のパッケージ mongodb-org- を選択しています。
.../mongodb-org-_2.6.12_i386.deb を展開する準備をしています ...
mongodb-org- (2.6.12) を展開しています...
以前に未選択のパッケージ mongodb-org-mongos を選択しています。
.../mongodb-org-mongos_2.6.12_i386.deb を展開する準備をしています ...
mongodb-org-mongos (2.6.12) を展開しています...
以前に未選択のパッケージ mongodb-org-tools を選択しています。
.../mongodb-org-tools_2.6.12_i386.deb を展開する準備をしています ...
mongodb-org-tools (2.6.12) を展開しています...
以前に未選択のパッケージ mongodb-org を選択しています。
.../mongodb-org_2.6.12_i386.deb を展開する準備をしています ...
mongodb-org (2.6.12) を展開しています...
man-db (2.7.5-1) のトリガを処理しています ...
ureadahead (0.100.0-19) のトリガを処理しています ...
ureadahead will be reprofiled on next reboot
systemd (229-4ubuntu21) のトリガを処理しています ...
mongodb-org-shell (2.6.12) を設定しています ...
mongodb-org- (2.6.12) を設定しています ...
システムユーザー `mongodb' (UID 114) を追加しています...
新しいユーザー `mongodb' (UID 114) をグループ `nogroup' に追加しています...
ホームディレクトリ `/home/mongodb' を作成しません。
グループ `mongodb' (GID 121) を追加しています...
完了。
ユーザー `mongodb' をグループ `mongodb' に追加しています...
Adding user mongodb to group mongodb
完了。
mongodb-org-mongos (2.6.12) を設定しています ...
mongodb-org-tools (2.6.12) を設定しています ...
mongodb-org (2.6.12) を設定しています ...
ureadahead (0.100.0-19) のトリガを処理しています ...

MongoDBをデーモン化

Ubuntu16.04ではsystemctlで起動させるためデーモン化します。

spdsk@vaio-ubuntu1604-100:~$ sudo vi /etc/systemd/system/mongodb.service

下記のような内容を記述します。

[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target

[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf

[Install]
WantedBy=multi-user.target

確認と実行

spdsk@vaio-ubuntu1604-100:~$ sudo systemctl status mongodb
● mongodb.service - High-performance, schema-free document-oriented database
   Loaded: loaded (/etc/systemd/system/mongodb.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
   
spdsk@vaio-ubuntu1604-100:~$ sudo systemctl start mongodb

spdsk@vaio-ubuntu1604-100:~$ sudo systemctl enable mongodb
Created symlink from /etc/systemd/system/multi-user.target.wants/mongodb.service to /etc/systemd/system/mongodb.service.

spdsk@vaio-ubuntu1604-100:~$ sudo systemctl status mongodb
● mongodb.service - High-performance, schema-free document-oriented database
   Loaded: loaded (/etc/systemd/system/mongodb.service; enabled; vendor preset: enabled)
   Active: active (running) since 月 2018-02-05 14:16:54 JST; 10s ago
 Main PID: 13469 (mongod)
   CGroup: /system.slice/mongodb.service
           └─13469 /usr/bin/mongod --quiet --config /etc/mongod.conf

 2月 05 14:16:54 vaio-ubuntu1604-100 systemd[1]: Started High-performance, schema-free document-orie
 2月 05 14:16:54 vaio-ubuntu1604-100 mongod[13469]: 2018-02-05T14:16:54.187+0900
 2月 05 14:16:54 vaio-ubuntu1604-100 mongod[13469]: 2018-02-05T14:16:54.187+0900 warning: 32-bit ser
 2月 05 14:16:54 vaio-ubuntu1604-100 mongod[13469]: 2018-02-05T14:16:54.187+0900

Crowiをインストール

Crowiを/optにインストールします。

spdsk@vaio-ubuntu1604-100:/opt$ sudo git clone https://github.com/weseek/crowi-plus.git
Cloning into 'crowi-plus'...
remote: Counting objects: 14887, done.
remote: Compressing objects: 100% (29/29), done.
remote: Total 14887 (delta 16), reused 29 (delta 14), pack-reused 14844
Receiving objects: 100% (14887/14887), 5.51 MiB | 1.42 MiB/s, done.
Resolving deltas: 100% (10634/10634), done.
Checking connectivity... done.

プラグインを追加します。

spdsk@vaio-ubuntu1604-100:/opt$ cd crowi-plus
spdsk@vaio-ubuntu1604-100:/opt/crowi-plus$ sudo npm install --save crowi-plugin-lsx
npm notice created a lockfile as package-lock.json. You should commit this file.
+ crowi-plugin-lsx@1.3.8
added 23 packages in 9.022s
spdsk@vaio-ubuntu1604-100:/opt/crowi-plus$ sudo npm install --save crowi-plugin-pukiwiki-like-linker+ crowi-plugin-pukiwiki-like-linker@1.0.1
added 1 package in 4.605s
spdsk@vaio-ubuntu1604-100:/opt/crowi-plus$ 

追加のパッケージを取得

spdsk@vaio-ubuntu1604-100:/opt/crowi-plus$ sudo yarn
yarn install v1.3.2
[1/5] Validating package.json...
[2/5] Resolving packages...
[3/5] Fetching packages...
warning Pattern ["options@latest"] is trying to unpack in the same destination "/usr/local/share/.cache/yarn/v1/npm-options-0.0.6-ec22d312806bb53e731773e7cdaefcf1c643128f" as pattern ["options@>=0.0.5"]. This could result in a non deterministic behavior, skipping.
info fsevents@1.1.3: The platform "linux" is incompatible with this module.
info "fsevents@1.1.3" is an optional dependency and failed compatibility check. Excluding it from installation.
[4/5] Linking dependencies...
warning " > react-bootstrap@0.32.0" has unmet peer dependency "react@^0.14.9 || >=15.3.0".
warning " > react-bootstrap@0.32.0" has unmet peer dependency "react-dom@^0.14.9 || >=15.3.0".
warning "react-bootstrap > prop-types-extra@1.0.1" has unmet peer dependency "react@>=0.14.0".
warning "react-bootstrap > react-overlays@0.8.3" has unmet peer dependency "react@^0.14.9 || >=15.3.0".
warning "react-bootstrap > react-overlays@0.8.3" has unmet peer dependency "react-dom@^0.14.9 || >=15.3.0".
warning "react-bootstrap > react-prop-types@0.4.0" has unmet peer dependency "react@>=0.14.0".
warning "react-bootstrap > react-transition-group@2.2.1" has unmet peer dependency "react@>=15.0.0".
warning "react-bootstrap > react-transition-group@2.2.1" has unmet peer dependency "react-dom@>=15.0.0".
warning "react-bootstrap > uncontrollable@4.1.0" has unmet peer dependency "react@>=0.11.0".
warning " > react-bootstrap-typeahead@2.0.2" has unmet peer dependency "react@^0.14.0 || ^15.2.0 || ^16.0.0".
warning " > react-bootstrap-typeahead@2.0.2" has unmet peer dependency "react-dom@^0.14.0 || ^15.2.0 || ^16.0.0".
warning "react-bootstrap-typeahead > react-input-autosize@2.2.1" has unmet peer dependency "react@^0.14.9 || ^15.3.0 || ^16.0.0-rc || ^16.0".
warning "react-bootstrap-typeahead > react-onclickoutside@6.7.0" has unmet peer dependency "react@^15.5.x || ^16.x".
warning "react-bootstrap-typeahead > react-onclickoutside@6.7.0" has unmet peer dependency "react-dom@^15.5.x || ^16.x".
warning " > react-clipboard.js@1.1.3" has unmet peer dependency "react@>=15.5.0".
warning " > react-codemirror2@4.0.0" has unmet peer dependency "react@>=15.5 <=16.x".
warning " > react-dropzone@4.2.7" has unmet peer dependency "react@>=0.14.0".
[5/5] Building fresh packages...
success Saved lockfile.
Done in 296.24s.
spdsk@vaio-ubuntu1604-100:/opt/crowi-plus$ 

Crowiを起動

Crowiを起動してみます。けっこう時間が掛かります。

spdsk@vaio-ubuntu1604-100:/opt/crowi-plus$ sudo npm start
> crowi-plus@2.4.0-RC prestart /opt/crowi-plus
> npm run build:prod

> crowi-plus@2.4.0-RC prebuild:prod /opt/crowi-plus
> npm run plugin:def

> crowi-plus@2.4.0-RC plugin:def /opt/crowi-plus
> node bin/generate-plugin-definitions-source.js

> crowi-plus@2.4.0-RC build:prod /opt/crowi-plus
> npm run clean && webpack --config config/webpack.prod.js  --progress --profile --bail

> crowi-plus@2.4.0-RC clean /opt/crowi-plus
> npm run clean:js && npm run clean:dll && npm run clean:report

> crowi-plus@2.4.0-RC clean:js /opt/crowi-plus
> rimraf -- public/js

> crowi-plus@2.4.0-RC clean:dll /opt/crowi-plus
> rimraf -- public/dll

> crowi-plus@2.4.0-RC clean:report /opt/crowi-plus
> rimraf -- report

77004ms building modules                                                                

***長いので略***

> crowi-plus@2.4.0-RC start /opt/crowi-plus
> npm run server:prod

> crowi-plus@2.4.0-RC server:prod /opt/crowi-plus
> env-cmd config/env.prod.js node app.js --production | pino-clf common

  crowi:crowi Passport is enabled +0ms
Warning: connect.session() MemoryStore is not
designed for a production environment, as it will leak
memory, and will not scale past a single process.
  crowi:crowi Plugins are enabled +2s
  crowi:crowi [production] Express server listening on port 3000 +3s
::ffff:192.168.0.11 - - [05/Feb/2018:05:59:41 -0540] "GET / HTTP/1.1" 302 -
::ffff:192.168.0.11 - - [05/Feb/2018:05:59:42 -0540] "GET /installer HTTP/1.1" 200 -

終了するには[Ctrl]+[c]で終了します。

自動起動の設定

Crowiを自動で起動するように設定します。

spdsk@vaio-ubuntu1604-100:/opt/crowi-plus$ sudo vi crowi-plus
[sudo] spdsk のパスワード: 

次の内容を記述します。

FILE_UPLOAD=local

起動用のcrowi-plus.shを作成します。

spdsk@vaio-ubuntu1604-100:/opt/crowi-plus$ sudo vi crowi-plus
[sudo] spdsk のパスワード: 

次の内容を記述します。

#! /usr/bin/sh

cd /opt/crowi-plus/
npm run server:prod

サービスファイルを作成します。

spdsk@vaio-ubuntu1604-100:/opt/crowi-plus$ sudo vi /etc/systemd/system/crowi-plus.service

次の内容を記述します。

[Unit]
Description=Crowi - The Simple & Powerful Communication Tool Based on Wiki
After=network.target mongod.service

[Service]
WorkingDirectory=/opt/crowi-plus
EnvironmentFile=/opt/crowi-plus/crowi-plus
ExecStart=/bin/bash /opt/crowi-plus/crowi-plus.sh

[Install]
WantedBy=multi-user.target

起動設定します。

spdsk@vaio-ubuntu1604-100:/opt/crowi-plus$ sudo systemctl enable crowi-plus
Created symlink from /etc/systemd/system/multi-user.target.wants/crowi-plus.service to /etc/systemd/system/crowi-plus.service.

サーバを再起動します。

WebブラウザからCrowiにアクセス

  1. Webブラウザーからhttp://IPアドレス:3000/にアクセスします
  2. セットアップ画面が表示したら、項目を入力して[作成]をクリックします。
  3. crowi install

  4. インストール完了です。登録したアカウントでログインしてみます。
  5. crowi install

  6. 必要な設定を行います
  7. crowi install

    crowi install

今回はCrowiのインストールを実施しました。