user icon

LibreOffice Online デモサーバを構築してみた。

LibreOffice Online デモサーバを構築してみた。

loolサーバ構築編

前回、デモサーバをご案内した続き、構築方法編です。
環境は以下の通り

今回の構築環境

  • scaleway上の最小インスタンス
  • OSはCentOS Linux release 7.5.1804 (Core)
  • グループパッケージ、Base,DevelopmentToolsをインストール済み
  • 追加リポジトリにepel,webtatic(デフォルト無効化)
  • PHP7.2,MariaDB5.5.56インストール済み
  • DNSにDNSにnexcloud.lancardcom.xyz,libre.lancardcom.xyz,lool.lancardcom.xyzを設定、FQDNでのアクセスが可能。
  • SSL証明書はLet’s Encryptを利用

インストール作業・サービス稼働用ユーザ”lool”の作成

[root@scw-6b31f8 ~]# useradd -d /opt/lool lool
[root@scw-6b31f8 ~]# visudo     #ユーザloolをsudo使用可能にする。
[root@scw-6b31f8 ~]# su - lool
[lool@scw-6b31f8 ~]$ pwd
/opt/lool

LibreOffice のコンパイル

ほぼ下記の参照URL通りです。
参照URL:https://librepc.jp/blog_20.html

LibreOfficeの依存関係の解消

yum-builddepはBaseグループパッケージにてインストールされています。
ない場合は、yum-utilsをインストールしてください。

[lool@scw-6b31f8 ~]$ sudo yum-builddep libreoffice

日本語フォントをインストール

[lool@scw-6b31f8 ~]$ sudo yum install ipa-gothic-fonts ipa-mincho-fonts ipa-pgothic-fonts ipa-pmincho-fonts

gitからのインストール

LibreOfficeのソースコードをダウンロードします。

[lool@scw-6b31f8 ~]$ git clone git://anongit.freedesktop.org/libreoffice/core
[lool@scw-6b31f8 ~]$ cd core/
[lool@scw-6b31f8 core]$ ./autogen.sh --with-lang="ja"

autogen.sh 実行時に以下のWARNINGが出ますが、影響ないそうなので無視していいそうです。

* WARNING : no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo

コンパイルします。SSH端末上なので、長時間のmakeでは切断等の恐れがありますので、
nohupコマンドを使います。前後にdateを実行してるのは、単にmakeにかかった時間を知りたかったからです。

[lool@scw-6b31f8 core]$ nohup sh -c 'date ; make ; date' &

あとは一旦放置です。11時間半かかってました…

Thu May 31 00:17:48 JST 2018
mkdir -p /opt/lool/core/instdir
/opt/lool/core/solenv/bin/install-gdb-printers -a /opt/lool/core/instdir -c
make -j 2  -rs -f /opt/lool/core/Makefile.gbuild    all
[build C  ] solenv/bin/concat-deps.c

…………

[build BIN] top level modules: libreoffice
[build ALL] top level modules: build-non-l10n-only build-l10n-only
Thu May 31 11:45:03 JST 2018

loolwsd のインストール

pocoライブラリのインストール

loolをインストールする前にコンパイルに必要なpocoライブラリをインストールします。
最新版は、poco-1.9.0です。poco-1.9.0-all のソースをダウンロードしてください。

[lool@scw-6b31f8 Archives]$ wget https://pocoproject.org/releases/poco-1.9.0/poco-1.9.0-all.tar.gz
[lool@scw-6b31f8 Archives]$ tar zxvf poco-1.9.0-all.tar.gz
[lool@scw-6b31f8 Archives]$ cd poco-1.9.0-all/
[lool@scw-6b31f8 poco-1.9.0-all]$ ./configure --prefix=/opt/lool/poco
[lool@scw-6b31f8 poco-1.9.0-all]$ make
[lool@scw-6b31f8 poco-1.9.0-all]$ sudo make install

必要ライブラリなどのインストール

[lool@scw-6b31f8 ~]$ sudo yum install libcap-devel

polibのインストール

[lool@scw-6b31f8 ~]$ sudo yum install --enablerepo=epel python-pip
[lool@scw-6b31f8 ~]$ sudo pip install --upgrade pip
[lool@scw-6b31f8 ~]$ sudo pip install polib

jakeのインストール

yum でnpmをインストールした場合、jakeの古いバージョンが入る為、npmをアップデートします。
ただし、普通にアップデートした際、エラーが出る為、ユーザ環境にnpmを再インストールして、
jakeをインストールするようにします。。

[lool@scw-6b31f8 ~]$ sudo yum install --enablerepo=epel npm
[lool@scw-6b31f8 ~]$ mkdir ~/.npm-global
[lool@scw-6b31f8 ~]$ npm config set prefix '~/.npm-global'
[lool@scw-6b31f8 ~]$ vim .bash_profile
[lool@scw-6b31f8 ~]$ cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$HOME/.local/bin:$HOME/bin:$HOME/.npm-globl/bin:$PATH   #<-PATHに追加、$PATHが頭にある場合は後ろに持ってくる事

export PATH

[lool@scw-6b31f8 ~]$ source .bash_profile
[lool@scw-6b31f8 ~]$ npm install -g npm
[lool@scw-6b31f8 ~]$ npm install -g n
[lool@scw-6b31f8 ~]$ n latest
[lool@scw-6b31f8 ~]$ npm update -g npm
[lool@scw-6b31f8 ~]$ npm install -g jake

loolのソースダウンロード

[lool@scw-6b31f8 ~]$ git clone git://anongit.freedesktop.org/libreoffice/online

loolのビルド

[lool@scw-6b31f8 ~]$ cd online/
[lool@scw-6b31f8 online]$ ./autogen.sh
[lool@scw-6b31f8 online]$ ./configure --enable-silent-rules \
> --with-lokit-path=/opt/lool/core/include \
> --with-lo-path=/opt/lool/core/instdir \
> --with-poco-includes=/opt/lool/poco/include \
> --with-poco-libs=/opt/lool/poco/lib \
> --enable-debug
[lool@scw-6b31f8 online]$ make

lool証明書用ディレクトリ作成

[lool@scw-6b31f8 online]$ sudo mkdir /etc/loolwsd
[lool@scw-6b31f8 online]$ sudo cp etc/* /etc/loolwsd/

loolキャッシュ用ディレクトリ作成

[lool@scw-6b31f8 online]$ sudo mkdir -p /usr/local/var/cache/loolwsd
[lool@scw-6b31f8 online]$ sudo chown lool. /usr/local/var/cache/loolwsd

loolのサービス化

[lool@scw-6b31f8 online]$ sudo vim /usr/lib/systemd/system/loolwsd.service
[lool@scw-6b31f8 online]$ cat /usr/lib/systemd/system/loolwsd.service
[Unit]
Description=LibreOffice Online WebSocket Daemon
After=network.target

[Service]
ExecStart = /opt/lool/online/loolwsd --o:sys_template_path=/opt/lool/online/systemplate --o:lo_template_path=/opt/lool/core/instdir --o:child_root_path=/opt/lool/online/jails --o:storage.filesystem[@allow]=true --o:admin_console.username=ka管理者ID --o:admin_console.password=管理者パスワード
Restart = always
Type = simple
User=lool

[Install]
WantedBy=multi-user.target

[lool@scw-6b31f8 online]$ sudo systemctl daemon-reload
[lool@scw-6b31f8 online]$ sudo systemctl enable loolwsd
[lool@scw-6b31f8 online]$ sudo systemctl start loolwsd
[lool@scw-6b31f8 online]$ sudo systemctl status loolwsd
●loolwsd.service - LibreOffice Online WebSocket Daemon
   Loaded: loaded (/usr/lib/systemd/system/loolwsd.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2018-06-04 11:13:43 JST; 16s ago
 Main PID: 24320 (loolwsd)
   CGroup: /system.slice/loolwsd.service
           ├─24320 /opt/lool/online/loolwsd --o:sys_template_path=/opt/lool/online/systemplate --o:lo_template_path=/...
           ├─24324 /opt/lool/online/loolforkit --losubpath=lo --systemplate=/opt/lool/online/systemplate --lotemplate...
           └─24328 /opt/lool/online/loolforkit --losubpath=lo --systemplate=/opt/lool/online/systemplate --lotemplate...

Jun 04 11:13:43 scw-6b31f8 loolwsd[24320]: Or for the Admin Console:
Jun 04 11:13:43 scw-6b31f8 loolwsd[24320]: https://admin:admin@localhost:9980/loleaflet/dist/admin/admin.html
Jun 04 11:13:44 scw-6b31f8 loolwsd[24320]: Init vcl
Jun 04 11:13:45 scw-6b31f8 loolwsd[24320]: preload: comphelper unordf ucpchelp1 sfx msforms vbaobj xo pcr vbaswo...handl
Jun 04 11:13:46 scw-6b31f8 loolwsd[24320]: Whitelisted languages: de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru
Jun 04 11:13:46 scw-6b31f8 loolwsd[24320]: Preloading dictionaries: en_US en_GB
Jun 04 11:13:46 scw-6b31f8 loolwsd[24320]: Preloading thesauri: en_US en_GB
Jun 04 11:13:46 scw-6b31f8 loolwsd[24320]: Preload icons
Jun 04 11:13:46 scw-6b31f8 loolwsd[24320]: Preload languages
Jun 04 11:13:47 scw-6b31f8 loolwsd[24320]: Ready to accept connections on port 9980.
Hint: Some lines were ellipsized, use -l to show in full.

今回はloolwsdの起動までを一通り上げてみました。
ただし、loolwsd単体では、ドキュメントの作成・保存などは、できない事はないですが、ほぼ無理筋なため、次回はより直感的にloolwsdを利用可能にするGUI環境のフロントエンドとしてNextcloudとの連携の記事を上げます。

Facebooktwitterlinkedintumblrmail
名前
E-mail
URL
コメント

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)