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

kaggleを試してみた

最近機械学習の勉強をはじめました。何冊か本を購入しザーッと目を通し(深くは理解できてません)、次に何か適当なサンプルで機械学習を試してみようと思いましたが、なかなか都合が良いデータというのはないです。
そんな時にKaggleを見つけました。Kaggleはデータ分析コンペを行うサイトですが、機械学習を勉強するのにも、すごく役立つサイトです。

「Titanic: Machine Learning from Disaster」という学習用のコンペをチュートリアルで最初にやるようになってますが、すでに日本語でたくさん紹介されてるので「House Prices: Advanced Regression Techniques」というのをやってみます。タイタニックが分類に対してこれは回帰の問題です。

やってみる、といっても初心者には何からやるのか検討がつきませんが、Kaggleには多くの方々が自分が行ったコード等(Kernels)を説明付きで公開してくれているので、それらを真似すればできます。
最初は人が作ったKernelsをひたすら見て自分のものにする、という感じかと思います。
以下も基本、人が作ったKernelsを参考に書いてます。

また、Kaggleには開発環境もあり、スクリプトまたはノートブック(Jupyter Notebook)の形式でブラウザから試すことできます。システムとしてよくできていると思います。

目的

アイオワ州のエイムズにある住宅価格を79の特徴量より予測します。Ames Housing dataset

この投稿の続きを読む »

Facebooktwitterlinkedintumblrmail

LibreOffice Online のご紹介

“自社オリジナルのGoogle Appsっぽい環境はいかがですか?”

LibreOffice とは?

LibreOffice公式サイト https://ja.libreoffice.org/

LibreOfficeとは…簡単に言いますと、MicrosoftのOfficeシリーズと類似した機能をもつオープンソースの無料のソフトウェアです。
公式サイトによりますと、以下のように説明されています。

「LibreOfficeは強力なオフィススイートです; クリーンなインターフェイスと強力なツールであなたの創造性を解き放ち、生産性を高めます。LibreOfficeはその市場において最も強力なフリーかつオープンなオフィススイートとなっています。これは次のようなさまざまなアプリケーションのためです: ワードプロセッサのWriter、表計算アプリケーションのCalc、プレゼンテーションエンジンのImpress、ドローイングおよびフローチャートのためのDraw、データベースおよびそのフロントエンドとなるBase、そして数式を編集するためのMathです。」

LibreOffice Online(lool) とは?

上記のLibreOfficeにOnline版です。略称で「lool」と呼ばれています。
Online版になると何が変わるのかといいますと…

各個のPCにソフトウェアをインストールしなくても使えるのが大きな特徴です。

サーバからプログラムを呼出して、各PCのブラウザ上で実行されるのです。
現在もなお開発中で、上記の機能の内でよく使われる、ワープロ、表計算、プレゼンが実装されています。

デモ用サーバのご案内

昨年(2017年)の10月頃にその存在を知らされて、一度、利用環境を構築してみたもののとても実用に耐えるレベルではなかった為、お蔵入りとなっていたネタだったのですが、それから約半年…開発が進み、かなりいい感じになってきました。

そこで今回デモ用に構築したサーバを公開します。実際に触ってみるのが手っ取り早いでしょう。

デモ用サーバURL: https://nextcloud.lancardcom.xyz
ユーザID: guestuser
パスワード: guest1234

次回の記事では、lool環境の構築方法について書こうと思います。

Facebooktwitterlinkedintumblrmail

pg_basebackupを試す

今回は、クラスタ化していないシングルなPostgreSQLでpg_basebackupを試してみました。
試した環境はCentOS7のPostgreSQL9.2です(pg_basebackupは9.1以降)。

まずはマニュアルを参考に。
https://www.postgresql.jp/document/9.2/html/continuous-archiving.html

この投稿の続きを読む »

Facebooktwitterlinkedintumblrmail

fail2banをRoundcubeに使ってみる

CentOS 6でfail2banを眺めていたらroundcube-authが有りました。
ログインに失敗した回数でBANするようですので実際に試してみました。
この投稿の続きを読む »

Facebooktwitterlinkedintumblrmail

雑用係、新品のTimeMachineさん過熱状態(?)で奮闘する

こんにちは。
一昨年夏に発売された某PS4ゲームに、いまだどっぷり7週目を楽しんでいる雑用係です。

年明けにAppleのAirMacTimeMachineを購入しました。
先代のTimeMachineが1〜2年ほど前に壊れ、繋ぎで使っていた先代TimeMachineより古いExtremeの調子が秋〜年末に掛けてついに悪くなり、満を持して購入。

 

開封してから設定〜利用開始までサクッとすませました。
実によろしい。
iPhone、iPad、MacもAppleTVもIEEE802.11acに対応してるのに、部屋の無線LANが11nしかなかったという悲しい状態から、ようやく脱したので快適です。

快適だったんです。

コトは、購入から10日ほど経った頃でした。

この投稿の続きを読む »

Facebooktwitterlinkedintumblrmail

pg_bigmで何かの全文検索を高速化してみたい

こちら で使ったpg_bigmですが、どこかで利用出来るものはないかと思っていたのですが、そういえばSphinxを使った検索で日本語対応しようとしてunigramとか色々と入れてみたけど結局失敗してしまったTiny Tiny RSSが有ったなぁと思い、試してみました。

この投稿の続きを読む »

Facebooktwitterlinkedintumblrmail

Laravelのテスト用便利トレイトの動作を変えてみる

Laravel 5.5 です。

Laravelにはunit test等の際にuseするとよろしくやってくれるトレイトがあります。
昨日の記事に出てきたRefreshDatabaseやDatabaseMigrations、他にはDatabaseTransactions、WithoutMiddleware、WithoutEventsがあります。

本当に便利なのですが、すこし動作を調整したいこともあります。

例えばDatabaseMigrationsでマスターの流し込みまでやりたいとか。
この投稿の続きを読む »

Facebooktwitterlinkedintumblrmail

Laravel Dusk メモ

Laravel 5.5 & Laradock(https://github.com/laradock/laradock)環境です。
Laradockについては少し古いかもしれません(活発に更新されているのですぐに古くなる)。

Laravel Dusk はブラウザテストをお手軽に!というパッケージです。

https://readouble.com/laravel/5.5/ja/dusk.html

Laradockでのセットアップと使い始めてすぐのログインテストで何回かつまづいたのでメモを残しておきます。
この投稿の続きを読む »

Facebooktwitterlinkedintumblrmail

QNAPのopkgを入れたらipkgが使えなくなった話

ipkgが、QNAPのバージョンアップのたびに動きが怪しくなっていくので、こちらを参考にopkgを導入。
https://qiita.com/nak1114/items/b534cd3bd79db3e3f256

するとipkgの/bin等へのパスが切れたりして、ipkgで動かしていたhttpd+mod_dav_svnが動かなくなり、まだsvn使っているのでどうしようという事に。

調べた感じではopkgにはhttpdがなく、lighttpdくらいで、mod_davは使えなさそうです。

opkg list|grep http

仕方ないので、他の方法は無いかと見て行ったところ、subversionは有ったのでsvnserveで代用をする事に。
幸いリポジトリは一つのフォルダ内に複数のリポジトリ、という構成で作っていたので、リポジトリの一つ上のパスで起動させれば全部含める事が出来ました。

ipkg install subversion-server
ipkg install subversion-client
svnserve -d --root /path/svn/

各リポジトリのconf/svnserve.confを設定(ここは省略)。

最後にクライアント側をsvn switchで置き換えで一応完了となりました。

# 確認
svn ls svn://qnap/myrepo/
# 置き換え
svn switch --relocate http://qnap:8000/svn/ svn://qnap/
Facebooktwitterlinkedintumblrmail