Author Archive
LibreOffice Online デモサーバを構築してみた。
- 2018/06/13
- fumikura
Nextcloud との連携編
前回の記事で、loolwsdのインストール・起動までを取り上げましたが、loolwsd単体では、実用性がほぼありません。
そこで、今回は、loolwsdのUIとなるべきフロントエンドとなるNextcloudのインストールと連携を取り上げます。
Nextcloud のインストール
http、PHPの必要モジュール等のインストール
まずはhttpdと必要なモジュールなどをインストールします。
[lool@scw-6b31f8 ~]$ sudo yum install httpd mod_ssl
[lool@scw-6b31f8 ~]$ sudo yum install --enablerepo=epel,webtatic mod_php72w php72w-mbstring php72w-common php72w-mysqlnd php72w-gd php72w-xml php72w-pdo
/etc/httpd/conf/httpd.confの設定
/etc/httpd/conf/httpd.confを編集し、初期設定を行います。
今回は差分を掲載しておきます。
[lool@scw-6b31f8 ~]$ diff -urw /etc/httpd/conf/httpd.conf.orig /etc/httpd/conf/httpd.conf
--- /etc/httpd/conf/httpd.conf.orig 2018-04-11 05:27:26.000000000 +0900
+++ /etc/httpd/conf/httpd.conf 2018-05-28 17:49:27.559577372 +0900
@@ -94,6 +94,15 @@
#
#ServerName www.example.com:80
+ServerTokens Prod
+Header unset X-Powered-By
+Header append X-Frame-Options SAMEORIGIN
+Header set X-XSS-Protetion "1; mode=block"
+Header set X-Content-Type-Options nosniff
+RequestHeader unset Proxy
+TraceEnable Off
+ServerSignature Off
+
#
# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other
@@ -141,14 +150,16 @@
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
- Options Indexes FollowSymLinks
+ #Options Indexes FollowSymLinks
+ Options FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
- AllowOverride None
+ #AllowOverride None
+ AllowOverride All
#
# Controls who can get stuff from this server.
バーチャルホストの設定
nextcloud,libre,loolの3ホストを利用します。libre,loolに関しては、同一サーバ内で構築する場合は不要かもしれません。(未検証)
今回のデモサーバを構築する前に検証用として構築していたサーバの構成が、Nextcloudサーバとloolwsdサーバが別サーバである
環境であった為、3ホストでの構成となってます。
Nextcloud <->libre(Proxy)<->lool
libreサーバはProxyとして入っています。
Nextcloud内のLibreOfficeとの連携アプリ「Collabora Online」がhttps接続のみしか受け付けない仕様となっていたので、
https(ポート443番)で受けて、loolサーバのポート番号9980番へ中継するという形です。
libreサーバを設けず、loolサーバのポート443番で受けて、loolサーバか、もしくはlocalhostの9980へ中継するという構成の方が妥当かもしれません。さらに言うならば…loolに関しては…loolwsdサーバそのものが通信相手なので、certbotでSSL証明書を更新し続けるためのダミーだったりします。
が、今回は…3ホスト構成という事で…(LB構成を意識したのはナイショです。)
Nextcloudのバーチャルホスト設定
<VirtualHost *:443>
Servername nextcloud.lancardcom.xyz
DirectoryIndex index.html index.php
DocumentRoot /var/www/nextcloud/
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/letsencrypt/live/nextcloud.lancardcom.xyz/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/nextcloud.lancardcom.xyz/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/nextcloud.lancardcom.xyz/chain.pem
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/nextcloud/ssl_access_log_%Y%m%d 86400 540" combined
ErrorLog /var/log/httpd/nextcloud/ssl_error_log
<Directory "/var/www/nextcloud/">
AllowOverride All
Options FollowSymLinks
</Directory>
</VirtualHost>
<VirtualHost *:80>
Servername nextcloud.lancardcom.xyz
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
DirectoryIndex index.html index.php
DocumentRoot /var/www/nextcloud/
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/nextcloud/access_log_%Y%m%d 86400 540" combined
ErrorLog /var/log/httpd/nextcloud/error_log
<Directory "/var/www/nextcloud/">
AllowOverride All
Options FollowSymLinks
</Directory>
</VirtualHost>
libreのバーチャルホスト設定
<VirtualHost *:443>
Servername libre.lancardcom.xyz
DirectoryIndex index.html index.php
DocumentRoot /var/www/libre/
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/letsencrypt/live/libre.lancardcom.xyz/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/libre.lancardcom.xyz/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/libre.lancardcom.xyz/chain.pem
SSLHonorCipherOrder on
# Encoded slashes need to be allowed
AllowEncodedSlashes NoDecode
# Container uses a unique non-signed certificate
SSLProxyEngine On
SSLProxyVerify None
SSLProxyCheckPeerCN Off
SSLProxyCheckPeerName Off
# keep the host
ProxyPreserveHost On
# static html, js, images, etc. served from loolwsd
# loleaflet is the client part of LibreOffice Online
ProxyPass /loleaflet https://lool.lancardcom.xyz:9980/loleaflet retry=0
ProxyPassReverse /loleaflet https://lool.lancardcom.xyz:9980/loleaflet
# WOPI discovery URL
ProxyPass /hosting/discovery https://lool.lancardcom.xyz:9980/hosting/discovery retry=0
ProxyPassReverse /hosting/discovery https://lool.lancardcom.xyz:9980/hosting/discovery
# Main websocket
ProxyPassMatch "lool/(.*)/ws$" wss://lool.lancardcom.xyz:9980/lool/$1/ws nocanon
# Admin Console websocket
ProxyPass /lool/adminws wss://lool.lancardcom.xyz:9980/lool/adminws
# Download as, Fullscreen prezentation and Image upload operations
ProxyPass /lool https://lool.lancardcom.xyz:9980/lool
ProxyPassReverse /lool https://lool.lancardcom.xyz:9980/lool
Loglevel debug
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/libre/ssl_access_log_%Y%m%d 86400 540" combined
ErrorLog /var/log/httpd/libre/ssl_error_log
#Header always set Content-Security-Policy "default-src 'none'"
<Directory "/var/www/libre/">
AllowOverride All
Options FollowSymLinks
</Directory>
</VirtualHost>
<VirtualHost *:80>
Servername libre.lancardcom.xyz
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
DirectoryIndex index.html index.php
DocumentRoot /var/www/libre/
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/libre/access_log_%Y%m%d 86400 540" combined
<Directory "/var/www/libre/">
AllowOverride All
Options FollowSymLinks
</Directory>
</VirtualHost>
loolのバーチャルホスト設定
このバーチャルホストはLet’s EncryptでSSL証明書を取るためのダミーだったりします。
オレオレ証明書で起動した際、Nextcloudとの連携時に不具合が出た為、正規のSSL証明書で運用する事になりました。
<VirtualHost *:80>
Servername lool.lancardcom.xyz
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
DirectoryIndex index.html index.php
DocumentRoot /var/www/lool/
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/lool/access_log_%Y%m%d 86400 540" combined
ErrorLog /var/log/httpd/lool/error_log
<Directory "/var/www/lool/">
AllowOverride All
Options FollowSymLinks
</Directory>
</VirtualHost>
loolwsd 側の設定
連携時に必要なloolwsd側の設定です。
online/loolwsd.xmlにて設定します。
今回は差分を掲載しておきます。
設定の要はSSL証明書の格納場所と通信許可ホストとWOPIホストの設定です。
--- loolwsd.xml.orig 2018-06-04 09:59:41.709736164 +0900
+++ loolwsd.xml 2018-06-07 10:49:16.111249275 +0900
@@ -3,7 +3,7 @@
<!-- Note: 'default' attributes are used to document a setting's default value as well as to use as fallback. -->
<!-- Note: When adding a new entry, a default must be set in WSD in case the entry is missing upon deployment. -->
- <allowed_languages desc="List of supported languages on this instance." default="de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru">de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru</allowed_languages>
+ <allowed_languages desc="List of supported languages on this instance." default="de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru">ja de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru</allowed_languages>
<tile_cache_path desc="Path to a directory where to keep the tile cache." type="path" relative="false" default="/usr/local/var/cache/loolwsd"></tile_cache_path>
<sys_template_path desc="Path to a template tree with shared libraries etc to be used as source for chroot jails for child processes." type="path" relative="true" default="systemplate"></sys_template_path>
@@ -39,7 +39,7 @@
<color type="bool">true</color>
<level type="string" desc="Can be 0-8, or none (turns off logging), fatal, critical, error, warning, notice, information, debug, trace" default="trace">trace</level>
<file enable="true">
- <property name="path" desc="Log file path.">/tmp/loolwsd.log</property>
+ <property name="path" desc="Log file path.">/opt/lool/loolwsd.log</property>
<property name="rotation" desc="Log file rotation strategy. See Poco FileChannel.">never</property>
<property name="archive" desc="Append either timestamp or number to the archived log filename.">timestamp</property>
<property name="compress" desc="Enable/disable log file compression.">true</property>
@@ -65,16 +65,19 @@
<net desc="Network settings">
<proto type="string" default="all" desc="Protocol to use IPv4, IPv6 or all for both">all</proto>
<post_allow desc="Allow/deny client IP address for POST(REST)." allow="true">
- <host desc="Regex pattern of ip address to allow.">192\.168\.[0-9]{1,3}\.[0-9]{1,3}</host>
+ <host desc="Regex pattern of ip address to allow.">localhost</host>
+ <host desc="Regex pattern of ip address to allow.">nextcloud.lancardcom.xyz</host>
+ <host desc="Regex pattern of ip address to allow.">libre.lancardcom.xyz</host>
+ <host desc="Regex pattern of ip address to allow.">lool.lancardcom.xyz</host>
</post_allow>
</net>
<ssl desc="SSL settings">
<enable type="bool" default="true">true</enable>
<termination desc="Connection via proxy where loolwsd acts as working via https, but actually uses http." type="bool" default="true">false</termination>
- <cert_file_path desc="Path to the cert file" relative="false">/etc/loolwsd/cert.pem</cert_file_path>
- <key_file_path desc="Path to the key file" relative="false">/etc/loolwsd/key.pem</key_file_path>
- <ca_file_path desc="Path to the ca file" relative="false">/etc/loolwsd/ca-chain.cert.pem</ca_file_path>
+ <cert_file_path desc="Path to the cert file" relative="false">/etc/letsencrypt/live/lool.lancardcom.xyz/cert.pem</cert_file_path>
+ <key_file_path desc="Path to the key file" relative="false">/etc/letsencrypt/live/lool.lancardcom.xyz/privkey.pem</key_file_path>
+ <ca_file_path desc="Path to the ca file" relative="false">/etc/letsencrypt/live/lool.lancardcom.xyz/chain.pem</ca_file_path>
<cipher_list desc="List of OpenSSL ciphers to accept" default="ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH"></cipher_list>
<hpkp desc="Enable HTTP Public key pinning" enable="false" report_only="false">
<max_age desc="HPKP's max-age directive - time in seconds browser should remember the pins" enable="true">1000</max_age>
@@ -94,6 +97,9 @@
<filesystem allow="false" />
<wopi desc="Allow/deny wopi storage. Mutually exclusive with webdav." allow="true">
<host desc="Regex pattern of hostname to allow or deny." allow="true">localhost</host>
+ <host desc="Regex pattern of hostname to allow or deny." allow="true">nextcloud.lancardcom.xyz</host>
+ <host desc="Regex pattern of hostname to allow or deny." allow="true">libre.lancardcom.xyz</host>
+ <host desc="Regex pattern of hostname to allow or deny." allow="true">lool.lancardcom.xyz</host>
<host desc="Regex pattern of hostname to allow or deny." allow="true">10\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}</host>
<host desc="Regex pattern of hostname to allow or deny." allow="true">172\.1[6789]\.[0-9]{1,3}\.[0-9]{1,3}</host>
<host desc="Regex pattern of hostname to allow or deny." allow="true">172\.2[0-9]\.[0-9]{1,3}\.[0-9]{1,3}</host>
httpd、loolwsdサービスの再起動
httpdとloolwsdを再起動して、これまでの設定を有効化します。
エラーが出る場合は、設定の見直しや必要なディレクトリやパーミッションの設定など調整してください。
例)構築中に実際にあったエラー原因
* ログ用のディレクトリを未作成、もしくはオーナー、パーミッションの設定間違い
* SSL証明書のディレクトリのパーミッション設定(700でroot以外読めなかった)
* ドキュメントルートのディレクトリを未作成
* 単純なconfファイルのタイポ
Nextcloudのインストール
ここまで長かったですが…やっとNextcloud本体のインストールです。
まぁ、ソースダウンロードして、ドキュメントルートにおいて、あとは、WebUIの指示に従ってインストールするだけなので、ほぼこれまでの準備が肝だったり。あ…Nextcloud用のDBの準備忘れてました。
Nextcloud用DBの作成
[root@scw-6b31f8 ~]# mysql -u root -p
Enter password:
elcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 5.5.56-MariaDB MariaDB Server
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE データベース名;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON データベース名.* TO ユーザ名@localhost IDENTIFIED BY 'パスワード' ;
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> FLUSH PRIVILEGES ;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> QUIT
Bye
Nextcloudのソースのダウンロードと配置
[lool@scw-6b31f8 Archives]$ wget https://download.nextcloud.com/server/releases/nextcloud-13.0.2.zip
[lool@scw-6b31f8 Archives]$ unzip nextcloud-13.0.2.zip
[lool@scw-6b31f8 Archives]$ sudo cp -rp nextcloud/* /var/www/nextcloud/
[lool@scw-6b31f8 Archives]$ sudo chown -R apache. /var/www/nextcloud
[lool@scw-6b31f8 Archives]$ sudo systemctl restart httpd
後は、ブラウザで、Nextcloud用に設定したURLを開いて、画面の指示に従ってインストールを完了させます。
もしWebUIでのインストールがわからない…という方は…ドキュメントを読み直してください。
(すみません。画像貼るのが面倒なので手抜きさせてください。)
こちらのサイトなどを参照していただけると丁寧に解説されてます。
CentOS7にNextcloudインストール | server-memo.net
CentOS 7 : NextCloud インストール : Server World
Nexcloud側の連携設定
最後に、NexcloudのWebUI上の「アプリ」から「Collabora Online」を有効にします。
すると、「設定」の左サイドメニューに「Collabora Online」の項目が表示されますので、そこで、loolwsdサーバを指定します。
今回の場合は…Proxyであるlibreを指定するので、「https://」から始まるアドレスを入力して「適用」をクリックして完了です。
おそらくここまでの記事で設定を進めてこれた方であれば、見ればわかるので、スクリーンショットなど付けた説明は割愛させていただきます。
(さらにリンクを貼るのも手抜きさせてください。)
最後に構築後、操作してみた感じ
実際に、操作してみた感じですが、やはり…入力、変換等は通信ラグ等により、もっさり感がぬぐえません。まだ完全にLibreOfficeの全機能に対応してはいない為、メニューにはあるのに機能しない部分もちらほらありました。loolwsdのログを見て気が付いたのですが、なぜかUTC表示からローカル時刻への変更ができません。
上記の現象と同一の原因だと思われますがCalc(表計算)のNOW()関数などの結果もUTCで表示される為、その辺が難点になるかと思われます。
やはり…Microsoft Office365やGoogleAppsなどの大手商用サービスと比較すると、ユーザビリティに一歩劣る感は否めませんでした。
ただし…
– どうしてもデータをクラウド上に置けない。オンプレミスである必要がある。
->(社内規定などによるセキュリティ上の制限がある。)
– 内部での共有のみで、外部とのドキュメント等のやり取りをほぼ行わない。
->(MicrosoftのWard、Excelファイル等と互換はありますが、それほど互換性は高くないです。)
– ライセンスにコストをかけたくない
->(オープンソースなので構築コスト・保守コスト以外はかかりません。)
と言った場合には最適のソリューションではないでしょうか。
LibreOffice Online デモサーバを構築してみた。
- 2018/06/12
- fumikura
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との連携の記事を上げます。
LibreOffice Online のご紹介
- 2018/06/06
- fumikura
“自社オリジナルの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環境の構築方法について書こうと思います。
DRBD9のclient機能を試す
- 2017/09/11
- fumikura
DRBD9の新機能 client機能を試してみました。
client機能は、DRBDストレージを持たないノードに、DRBDリソースをマウントできる機能の様です。
前提
- クライアントノード用にホストmysql01、mysql02を用意する。<\li>
- ホストdrbd01~03が持つdrbd領域用のHDDは搭載しない
- OS等の構成はホストdrbd01~03と同じ。
- DRBDカーネルモジュール、drbd-util、drbdmanageをインストールしてある状態です。
- 前述の方法にてDRBDリソースmysql-slv(容量10GB)を作成してある。
- mysql01、02にはMariaDBをインストールしてあります。
- mysql01のIPアドレス: 192.168.24.226
- mysql02のIPアドレス: 192.168.24.227
クライアントモードでノードを追加する。
drbd01にて
[root@drbd01 ~]# drbdmanage n
+----------------------------------------------------------------------------------------+
| Name | Pool Size | Pool Free | | State |
|----------------------------------------------------------------------------------------|
| drbd01 | 51196 | 32092 | | ok |
| drbd02 | 51196 | 32092 | | ok |
| drbd03 | 51196 | 32092 | | ok |
+----------------------------------------------------------------------------------------+
[root@drbd01 ~]# drbdmanage add-node --satellite --no-storage mysql01 192.168.24.226
Operation completed successfully
Operation completed successfully
Host key verification failed.
Give leader time to contact the new node
Operation completed successfully
Operation completed successfully
Join command for node mysql01:
drbdmanage restart
mysql01でdrbdmanage で再起動コマンドを実行します。
[root@mysql01 ~]# drbdmanage restart
You are going to shut down the drbdmanaged server process on this node.
Please confirm:
yes/no: yes
Attempting to startup the server through D-Bus activation...
D-Bus connection successful, server is running and reachable
drbd01にて、確認してみると、mysql01がclientとして追加されていることがわかります。サテライトノードとは、DRBDのコントロール用のリソース.drbdctrlを持たないノードの事です。
以前のリリースでは、add-nodeサブコマンド実施時に–contorole-nodeオプションにて属するコントロールノードを指定する必要があったようですが、今のリリースでは–contorole-nodeオプションは無くなり、指定する必要がなくなったようです。
ちなみに、–satelliteオプションを利用せずにクライアントノードを追加しようとすると、各ノードでの追加用コマンドを実施した際、.drbdctrlリソース用の領域を作成しようとするので、今回のようにDRBD用の領域を持たないクライアントでは、追加に失敗します。
[root@drbd01 ~]# drbdmanage n
+----------------------------------------------------------------------------------------+
| Name | Pool Size | Pool Free | | State |
|----------------------------------------------------------------------------------------|
| drbd01 | 51196 | 32092 | | ok |
| drbd02 | 51196 | 32092 | | ok |
| drbd03 | 51196 | 32092 | | ok |
| mysql01 | 0 | 0 | | satellite node, no storage |
+----------------------------------------------------------------------------------------+
クライアントノードへリソースを割り当てる
mysql01へDRBDリソースmysql-priを割当ます。
assignサブコマンドに–clientオプションを付けて実行します。
[root@drbd01 ~]# drbdmanage assign mysql-pri mysql01 --client
Operation completed successfully
[root@drbd01 ~]# drbdmanage list-assignments
+----------------------------------------------------------------------------------------+
| Node | Resource | Vol ID | | State |
|----------------------------------------------------------------------------------------|
| drbd01 | mysql-pri | * | | ok |
| drbd01 | mysql-slv | * | | ok |
| drbd02 | mysql-pri | * | | ok |
| drbd02 | mysql-slv | * | | ok |
| drbd03 | mysql-pri | * | | ok |
| drbd03 | mysql-slv | * | | ok |
| mysql01 | mysql-pri | * | | client |
+----------------------------------------------------------------------------------------+
クライアントノードでリソースへファイルシステムを作成する
mysql01上で、リソースmysql-priにファイルシステムを作成します。
リソースの割当まで行うと、mysql01上から、mysql-priのブロックデバイスが参照できます。
list-volumesサブコマンドでブロックデバイスのマイナー番号を確認し、ファイルシステムを作成します。
[root@mysql01 ~]# drbdmanage list-volumes
+----------------------------------------------------------------------------------------+
| Name | Vol ID | Size | Minor | | State |
|----------------------------------------------------------------------------------------|
| mysql-pri | 0 | 9.31 GiB | 100 | | ok |
| mysql-slv | 0 | 9.31 GiB | 101 | | ok |
+----------------------------------------------------------------------------------------+
[root@mysql01 ~]# mkfs.xfs /dev/drbd100
meta-data=/dev/drbd100 isize=512 agcount=4, agsize=610352 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=2441406, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
マウントしてMariaDBを起動する。
後は、マウントしMariaDBを起動します。
が、/var/lib/mysqlにマウントした場合、ディレクトリのオーナーがmysqlからrootに変わってしまうので、注意してください。
[root@mysql01 ~]# ls -al /var/lib|grep mysql
drwxr-xr-x. 2 mysql mysql 6 9月 5 15:55 mysql
[root@mysql01 ~]# mount /dev/drbd100 /var/lib/mysql
[root@mysql01 ~]# ls -al /var/lib|grep mysql
drwxr-xr-x. 2 root root 6 9月 11 09:57 mysql
[root@mysql01 ~]# chown mysql:mysql /var/lib/mysql
[root@mysql01 ~]# systemctl start mariadb
[root@mysql01 ~]# systemctl status mariadb
● mariadb.service - MariaDB database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: active (running) since 月 2017-09-11 10:06:19 JST; 2min 56s ago
Process: 28092 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS)
Process: 28013 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
Main PID: 28091 (mysqld_safe)
CGroup: /system.slice/mariadb.service
tq28091 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
mq28249 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin...
9月 11 10:06:13 mysql01 mariadb-prepare-db-dir[28013]: The latest information about ....
9月 11 10:06:13 mysql01 mariadb-prepare-db-dir[28013]: You can find additional infor...:
9月 11 10:06:13 mysql01 mariadb-prepare-db-dir[28013]: http://dev.mysql.com
9月 11 10:06:13 mysql01 mariadb-prepare-db-dir[28013]: Support MariaDB development b...B
9月 11 10:06:13 mysql01 mariadb-prepare-db-dir[28013]: Corporation Ab. You can conta....
9月 11 10:06:13 mysql01 mariadb-prepare-db-dir[28013]: Alternatively consider joinin...:
9月 11 10:06:13 mysql01 mariadb-prepare-db-dir[28013]: http://mariadb.com/kb/en/cont.../
9月 11 10:06:13 mysql01 mysqld_safe[28091]: 170911 10:06:13 mysqld_safe Logging to ...'.
9月 11 10:06:13 mysql01 mysqld_safe[28091]: 170911 10:06:13 mysqld_safe Starting my...ql
9月 11 10:06:19 mysql01 systemd[1]: Started MariaDB database server.
Hint: Some lines were ellipsized, use -l to show in full.
[root@mysql01 ~]# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] Y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] Y
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] Y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] Y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
MariaDBの起動ができました。これでクライアントノードの追加は以上です。
後は、同様にmysql02のノード追加、mysql-slvのリソース追加を行います。
以上
【DRBD9】rpmパッケージをビルドしてインストールする
- 2017/08/30
- fumikura
今更ながらですが、DRBD9をインストールしてみました。他のサイトを参考にしていると、ソースからのmake、make installでしかインストールしていなかったので、rpmパッケージをビルドしてからインストールする方法を試してみました。
環境
- OS: CentOS 7(パッケージグループ Base、Development Tools をインストール)
- KVM上の仮想マシン(HDDは8GBと50GBの2台を搭載した状態)
- drbd01~drbd03の3台でクラスタを構成
- drbd01のIPアドレス: 192.168.24.223
- drbd02のIPアドレス: 192.168.24.224
- drbd03のIPアドレス: 192.168.24.225
rpmパッケージの作成
準備:rpmbuild環境構築
rpmbuildの環境を構築するツールがあるので、コマンド一つでrpmbuild環境が構築できます。
[root@drbd01 ~]# yum install -y rpmdevtools
ユーザに戻り、rpmdev-setuptreeコマンドを叩きます。
rpmbuildディレクトリから.rpmmacrosまで作成してくれます。
[fumikura@drbd01 ~]$ rpmdev-setuptree
[fumikura@drbd01 ~]$ tree -a
~~~
.
|-- .rpmmacros
`-- rpmbuild
|-- BUILD
|-- RPMS
|-- SOURCES
|-- SPECS
`-- SRPMS
~~~
7 directories, 7 files
必要パッケージのインストール
DRBD9のインストールに必要なパッケージをインストールします。
[fumikura@drbd01 ~]$ sudo yum install -y libxslt libxslt-devel pygobject2 help2man kernel-abi-whitelists
ソースのダウンロード
今回は、gitリポジトリがあるものはgitから入手しました。
ソース置場用のディレクトリを作って移動します。
[fumikura@drbd01 ~]$ mkdir Archives
[fumikura@drbd01 ~]$ cd Archives
– drbd kernel module
[fumikura@drbd01 Archive]$ git clone --recursive git://git.drbd.org/drbd-9.0.git
– drbd-utils
[fumikura@drbd01 Archives]$ git clone --recursive git://git.linbit.com/drbd-utils.git
– drbdmanage
[fumikura@drbd01 Archive]$ git clone --recursive git://git.drbd.org/drbdmanage.git
drbd kernel moduleのrpmパッケージ作成
今回は、公式サイトにてリリースされている最新リリースのdrbd-9.0.8に合わせてビルドしようと思います。
[fumikura@drbd01 Archive]$ cd drbd-9.0
[fumikura@drbd01 drbd-9.0]$ git checkout drbd-9.0.8
[fumikura@drbd01 drbd-9.0]$ make .filelist
[fumikura@drbd01 drbd-9.0]$ make kmp-rpm
drbd-utilsのrpmパッケージ作成
(2017.09.04,Mon 追記)
下記のまま、rpm作成を行うと、rpmのインストール時に競合が起こります。drbd.spec.inを以下のように修正してから実施してください。
--- ../drbd-utils.orig/drbd.spec.in 2017-09-01 15:01:35.721074085 +0900
+++ ./drbd.spec.in 2017-09-04 10:48:54.719119053 +0900
@@ -31,6 +31,7 @@
# conditionals may not contain "-" nor "_", hence "bashcompletion"
%bcond_without bashcompletion
%bcond_without sbinsymlinks
+%undefine with_sbinsymlinks
# --with xen is ignored on any non-x86 architecture
%bcond_without xen
%bcond_without 83support
[fumikura@drbd01 Archives]$ cd drbd-utils
[fumikura@drbd01 drbd-utils]$ git checkout v9.0.0
[fumikura@drbd01 drbd-utils]$ ./autogen.sh
[fumikura@drbd01 drbd-utils]$ ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc
[fumikura@drbd01 drbd-utils]$ make .filelist
[fumikura@drbd01 drbd-utils]$ make rpm
drbdmanageのrpmパッケージ作成
drbdmanageはソース直下のディレクトリ、distの中にrpmパッケージが生成されます。
[fumikura@drbd01 Archive]$ cd drbdmanage/
[fumikura@drbd01 drbdmanage]$ make rpm
[fumikura@drbd01 drbdmanage]$ cd dist/
[fumikura@drbd01 dist]$ ls -al
合計 1080
drwxrwxr-x. 2 fumikura fumikura 111 8月 8 17:08 .
drwxrwxr-x. 11 fumikura fumikura 4096 8月 8 17:08 ..
-rw-rw-r--. 1 fumikura fumikura 507844 8月 8 17:08 drbdmanage-0.99.5-1.noarch.rpm
-rw-rw-r--. 1 fumikura fumikura 298012 8月 8 17:08 drbdmanage-0.99.5-1.src.rpm
-rw-rw-r--. 1 fumikura fumikura 294884 8月 8 17:08 drbdmanage-0.99.5.tar.gz
rpmパッケージのインストール
先程作成されたパッケージは、~/rpmbuild/RPMS/x86_64の中に10個、~/hoge/drbdmanage/distの中に1個の計11個のrpmパッケージが生成されています。
このうち、debuginfoとついているパッケージはインストールしなくても大丈夫です。
/home/fumikura/rpmbuild/RPMS/x86_64/kmod-drbd-9.0.8_3.10.0_514.26.2-1.el7.centos.x86_64.rpm
/home/fumikura/rpmbuild/RPMS/x86_64/drbd-kernel-debuginfo-9.0.8-1.el7.centos.x86_64.rpm
/home/fumikura/rpmbuild/RPMS/x86_64/drbd-9.0.0-1.el7.centos.x86_64.rpm
/home/fumikura/rpmbuild/RPMS/x86_64/drbd-utils-9.0.0-1.el7.centos.x86_64.rpm
/home/fumikura/rpmbuild/RPMS/x86_64/drbd-xen-9.0.0-1.el7.centos.x86_64.rpm
/home/fumikura/rpmbuild/RPMS/x86_64/drbd-udev-9.0.0-1.el7.centos.x86_64.rpm
/home/fumikura/rpmbuild/RPMS/x86_64/drbd-pacemaker-9.0.0-1.el7.centos.x86_64.rpm
/home/fumikura/rpmbuild/RPMS/x86_64/drbd-heartbeat-9.0.0-1.el7.centos.x86_64.rpm
/home/fumikura/rpmbuild/RPMS/x86_64/drbd-bash-completion-9.0.0-1.el7.centos.x86_64.rpm
/home/fumikura/rpmbuild/RPMS/x86_64/drbd-debuginfo-9.0.0-1.el7.centos.x86_64.rpm
/home/fumikura/Archive/drbdmanage/dist/drbdmanage-0.99.5-1.noarch.rpm
drbd kernel moduleのインストール
[fumikura@drbd01 x86_64]$ sudo rpm -ivh kmod-drbd-9.0.8_3.10.0_514.26.2-1.el7.centos.x86_64.rpm
準備しています... ################################# [100%]
更新中 / インストール中...
1:kmod-drbd-9.0.8_3.10.0_514.26.2-1################################# [100%]
drbd-utilsのインストール
drbd-utils-9.0.0-1.el7.centos.x86_64.rpmはパッケージ自身と競合をおこして普通にインストールはできない為、–forceオプションでインストールします。(2017.09.04,Mon 修正)
[fumikura@drbd03 x86_64]$ sudo rpm -ivh drbd-utils-9.0.0-1.el7.centos.x86_64.rpm
準備しています... ################################# [100%]
更新中 / インストール中...
1:drbd-utils-9.0.0-1.el7.centos ################################# [100%]
その他のパッケージについては、drbd-9.0.0-1.el7.centos.x86_64.rpm が他のパッケージに依存しているので、先に、xen、udev、pacemaker、heartbeat、bash-completionをインストール後にインストールしてください。
[fumikura@drbd01 x86_64]$ sudo rpm -ivh drbd-xen-9.0.0-1.el7.centos.x86_64.rpm \
> drbd-udev-9.0.0-1.el7.centos.x86_64.rpm \
> drbd-pacemaker-9.0.0-1.el7.centos.x86_64.rpm \
> drbd-heartbeat-9.0.0-1.el7.centos.x86_64.rpm \
> drbd-bash-completion-9.0.0-1.el7.centos.x86_64.rpm \
> drbd-9.0.0-1.el7.centos.x86_64.rpm
準備しています... ################################# [100%]
更新中 / インストール中...
1:drbd-bash-completion-9.0.0-1.el7.################################# [ 17%]
2:drbd-pacemaker-9.0.0-1.el7.centos################################# [ 33%]
3:drbd-udev-9.0.0-1.el7.centos ################################# [ 50%]
4:drbd-xen-9.0.0-1.el7.centos ################################# [ 67%]
5:drbd-9.0.0-1.el7.centos ################################# [ 83%]
6:drbd-heartbeat-9.0.0-1.el7.centos################################# [100%]
drbdmanageのインストール
[fumikura@drbd01 dist]$ sudo rpm -ivh drbdmanage-0.99.9-1.noarch.rpm
準備しています... ################################# [100%]
更新中 / インストール中...
1:drbdmanage-0.99.9-1 ################################# [100%]
インストールは以上です。drbd01~drbd03すべてのノードでインストール作業を実施します。
次に、簡単にDRBDクラスタの構成を行ってみます。
DRBDクラスタの構成
DRBD用領域の作成
drbd01~drbd03のすべてのノードで実施します。
パーティションの作成
[root@drbd01 ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
コマンド (m でヘルプ): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
パーティション番号 (1-4, default 1): 1
最初 sector (2048-104857599, 初期値 2048):
初期値 2048 を使います
Last sector, +sectors or +size{K,M,G} (2048-104857599, 初期値 104857599):
初期値 104857599 を使います
Partition 1 of type Linux and of size 50 GiB is set
コマンド (m でヘルプ): w
パーティションテーブルは変更されました!
ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。
物理ボリューム(PV)の作成
[root@drbd01 ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
ボリュームグループ(VG)の作成
[root@drbd01 ~]# vgcreate drbdpool /dev/sdb1
Volume group "drbdpool" successfully created
ここで指定する”drbdpool”はdrbdmanageで使用されるデフォルト名ですので、変更せずに作成します。
drbdmanageでのノードの追加
準備: firewalldの設定
drbdmanageがノード間の通信に利用するポートを開けます。ノード間の制御には6996、6999を利用しています。
リソースの同期には、7000~7800を利用しています。まとめて、6996~7800を開けています。
[root@drbd01 ~]# firewall-cmd --add-port=6996-7800/tcp --zone=public --permanent
success
[root@drbd01 ~]# firewall-cmd --reload
success
[root@drbd01 ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client ssh
ports: 6996-7800/tcp
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
クラスタの初期化
drbd01のみで実行します。
[root@drbd01 ~]# drbdmanage init 192.168.24.223
You are going to initialize a new drbdmanage cluster.
CAUTION! Note that:
* Any previous drbdmanage cluster information may be removed
* Any remaining resources managed by a previous drbdmanage installation
that still exist on this system will no longer be managed by drbdmanage
Confirm:
yes/no: yes
Empty drbdmanage control volume initialized on '/dev/drbd0'.
Empty drbdmanage control volume initialized on '/dev/drbd1'.
Waiting for server: .
Operation completed successfully
ノードの追加
drbd02を追加する
※まずdrbd01でコマンドを実行。各ノードで実行するコマンドを発行します。
[root@drbd01 ~]# drbdmanage add-node drbd02 192.168.24.224
Operation completed successfully
Operation completed successfully
Host key verification failed.
Give leader time to contact the new node
Operation completed successfully
Operation completed successfully
Join command for node drbd02:
drbdmanage join -p 6999 192.168.24.224 1 drbd01 192.168.24.223 0 xxxxSecretKeyxxxx
上記の”drbdmanage join …..”をdrbd02で実行します。
[root@drbd02 ~]# drbdmanage join -p 6999 192.168.24.224 1 drbd01 192.168.24.223 0 xxxxSecretKeyxxxx
You are going to join an existing drbdmanage cluster.
CAUTION! Note that:
* Any previous drbdmanage cluster information may be removed
* Any remaining resources managed by a previous drbdmanage installation
that still exist on this system will no longer be managed by drbdmanage
Confirm:
yes/no: yes
Waiting for server to start up (can take up to 1 min)
Operation completed successfully
drbd03についても同様に実施します。
・drbd01側
[root@drbd01 ~]# drbdmanage add-node drbd03 192.168.24.225
Operation completed successfully
Operation completed successfully
Host key verification failed.
Give leader time to contact the new node
Operation completed successfully
Operation completed successfully
Join command for node drbd03:
drbdmanage join -p 6999 192.168.24.225 2 drbd01 192.168.24.223 0 xxxxSecretKeyxxxx
・drbd03側
[root@drbd03 ~]# drbdmanage join -p 6999 192.168.24.225 2 drbd01 192.168.24.223 0 xxxxSecretKeyxxxx
You are going to join an existing drbdmanage cluster.
CAUTION! Note that:
* Any previous drbdmanage cluster information may be removed
* Any remaining resources managed by a previous drbdmanage installation
that still exist on this system will no longer be managed by drbdmanage
Confirm:
yes/no: yes
Waiting for server to start up (can take up to 1 min)
Operation completed successfully
クラスタの状態確認
[root@drbd01 ~]# drbdmanage list-nodes
+----------------------------------------------------------------------------------------+
| Name | Pool Size | Pool Free | | State |
|----------------------------------------------------------------------------------------|
| drbd01 | 51196 | 51188 | | ok |
| drbd02 | 51196 | 51188 | | ok |
| drbd03 | 51196 | 51188 | | ok |
+----------------------------------------------------------------------------------------+
[root@drbd01 ~]# drbdadm status
.drbdctrl role:Primary
volume:0 disk:UpToDate
volume:1 disk:UpToDate
drbd02 role:Secondary
volume:0 peer-disk:UpToDate
volume:1 peer-disk:UpToDate
drbd03 role:Secondary
volume:0 peer-disk:UpToDate
volume:1 peer-disk:UpToDate
※”drbdmanage list-nodes”は”drbdmanage n”と省略できます。
リソースの追加
リソースを作成する
[root@drbd01 ~]# drbdmanage add-resource mysql-pri
リソース名を”mysql-pri”としたのは、後でMySQLのクラスタに利用するつもりです…
リソースのボリュームを設定する
[root@drbd01 ~]# drbdmanage add-volume mysql-pri 10GB
Operation completed successfully
リソースをデプロイするクラスタ数を設定する
[root@drbd01 ~]# drbdmanage deploy-resource mysql-pri 3
Operation completed successfully
※リソースの割り当てを個別にノードへデプロイするには、”drbdmanage assign-resource”コマンドを使用します。
[root@drbd01 ~]# drbdmanage assign-resource mysql-pri drbd03
Operation completed successfully
リソース追加直後の状態
[root@drbd01 ~]# drbdadm status
.drbdctrl role:Primary
volume:0 disk:UpToDate
volume:1 disk:UpToDate
drbd02 role:Secondary
volume:0 peer-disk:UpToDate
volume:1 peer-disk:UpToDate
drbd03 role:Secondary
volume:0 peer-disk:UpToDate
volume:1 peer-disk:UpToDate
mysql-pri role:Secondary
disk:UpToDate
drbd02 role:Secondary
replication:SyncSource peer-disk:Inconsistent done:57.30
drbd03 role:Secondary
replication:SyncSource peer-disk:Inconsistent done:50.46
“Inconsistent”は不整合の状態です。”done”の後の数字は同期状態の進行具合を表示してます。
同期が終わると、このような表示になります。
[root@drbd01 ~]# drbdadm status
.drbdctrl role:Primary
volume:0 disk:UpToDate
volume:1 disk:UpToDate
drbd02 role:Secondary
volume:0 peer-disk:UpToDate
volume:1 peer-disk:UpToDate
drbd03 role:Secondary
volume:0 peer-disk:UpToDate
volume:1 peer-disk:UpToDate
mysql-pri role:Secondary
disk:UpToDate
drbd02 role:Secondary
peer-disk:UpToDate
drbd03 role:Secondary
peer-disk:UpToDate
リソース”mysql-pri”のroleがどのノードでも”Secondary”になっているのは、DRBD9からは、リソースをマウントしたノードが自動的にPrimaryとなる仕様となっているからだとか。
今回は、ここまで。次回はDRBDの新機能、クライアント機能を利用して、MySQLサーバからリソースmysql-priをマウントしてみようと思います。
以上
CentOS 6.3 に Kolab Groupware をインストール。
さてさて、ども初めまして。弊社のKolab翻訳担当です。
2013.03.11 よりスイスはチューリヒの Kolab Systems AG 社とパートナー提携いたしました。
そこで、今の所、英語ソースしかない、Kolab Groupware のインストールについて、
少しばかりインストールのコツなどをば…。
まず、Kolab Groupware の現行バージョンですが、3.0です。CentOS等のレッドハット系では、
el6、kernel 2.6.32 以降に対応しています。(自宅のCentOS 5.4 に入れようとしましたが、パッケージの依存関係等で入りませんでした。)
無料で利用できるのは、コミュニティ版である、Kolab-3.0-release-community です。
準備としましては…
KVNにて、作成してあるx86_64のREHL6 型の仮想マシンにCentOS 6.3をインストールしてあるものを利用しました。パーティションなどはデフォルトです。(こんな感じ…)
[root@kolab ~]# df -h
Filesystem Size Used Avail Use% マウント位置
/dev/mapper/vg_kolab-lv_root
5.5G 2.1G 3.2G 40% /
tmpfs 499M 20K 499M 1% /dev/shm
/dev/sda1 485M 32M 429M 7% /boot
CentOSは、最小構成(minimal)でインストールして、後から、”Base” “Development Tools” をyumでグループインストールしてます。
[root@kolab ~]# yum -y groupinstall "Base" "Development Tools"
次の準備は…
selinux: 無効化
iptables: tcp 25番、80番、110番、143番、389番、443番、465番、587番、636番、993番、995番 を開けます。
/etc/hosts に FQDN、ホスト名を追加。あと、ローカルIPでの名前解決の行を追加。
(DNS持っていて、ローカルIPでFQDNが参照できる場合はいらないです。)
[root@kolab ~]# diff -urw /etc/hosts.orig /etc/hosts
--- /etc/hosts.orig 2010-01-12 22:28:22.000000000 +0900
+++ /etc/hosts 2013-04-01 16:03:29.663819681 +0900
@@ -1,2 +1,3 @@
-127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
+127.0.0.1 kolab.lancard.com kolab localhost localhost.localdomain localhost4 localhost4.localdomain4
+xxx.xxx.xxx.xxx kolab.lancard.com kolab localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
あと必要なものが、yum-plugin-priorities です。yumにてさくっとインストールしてください。
[root@kolab ~]# yum -y install yum-plugin-priorities
次に、yumリポジトリを追加します。
○EPEL リポジトリ
[root@kolab ~]# wget "http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm"
○Kolab-3.0-community-release リポジトリ
[root@kolab ~]# wget "http://mirror.kolabsys.com/pub/redhat/kolab-3.0/el6/development/i386/kolab-3.0-community-release-6-2.el6.kolab_3.0.noarch.rpm"
[root@kolab ~]# yum localinstall --nogpgcheck epel-release-6.8.noarch.rpm kolab-3.0-community-release-6-2.el6.kolab.3.0.noarck.rpm
リポジトリが追加されたら、リポジトリの設定を行います。リポジトリ設定の要点は、
CentOS-Base の[extras] を無効化、その他有効リポジトリの優先度を99に設定。
epel の有効リポジトリの優先度を99に設定。
その他Kolab関連(release、develop)のリポジトリの優先度を50に設定。(develop は後で追加し設定します。)
以上、3点です。
・CentOS-Base.repo
[root@kolab yum.repos.d]# diff -urw CentOS-Base.repo.orig CentOS-Base.repo
--- CentOS-Base.repo.orig 2013-02-25 17:57:43.000000000 +0900
+++ CentOS-Base.repo 2013-03-29 11:22:09.810968496 +0900
@@ -16,6 +16,7 @@
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
+priority=99
#released updates
[updates]
@@ -24,6 +25,7 @@
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
+priority=99
#additional packages that may be useful
[extras]
@@ -31,6 +33,7 @@
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
+enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#additional packages that extend functionality of existing packages
・epel.repo
[root@kolab yum.repos.d]# diff -urw epel.repo.orig epel.repo
--- epel.repo.orig 2012-11-05 12:52:17.000000000 +0900
+++ epel.repo 2013-03-29 11:23:46.412942219 +0900
@@ -6,6 +6,7 @@
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
+priority=99
[epel-debuginfo]
name=Extra Packages for Enterprise Linux 6 - $basearch - Debug
・kolab-3.0-release.repo
[root@kolab yum.repos.d]# diff -urw kolab-3.0-release.repo.orig kolab-3.0-release.repo
--- kolab-3.0-release.repo.orig 2012-08-04 21:58:22.000000000 +0900
+++ kolab-3.0-release.repo 2013-03-29 11:26:20.946866077 +0900
@@ -4,6 +4,7 @@
enabled = 1
gpgcheck = 0
gpgkey = https://ssl.kolabsys.com/santiago.asc
+priority=50
[kolab-3.0-debuginfo]
kolab-3.0-develop リポジトリの追加
[root@kolab ~]# yum -y install kolab-3.0-community-release-development
前述通り、上記リポジトリと同様に、優先度の設定。release と同じ50にします。
[root@kolab yum.repos.d]# diff -urw kolab-3.0-development.repo.orig kolab-3.0-development.repo
--- kolab-3.0-development.repo.orig 2012-08-04 21:58:22.000000000 +0900
+++ kolab-3.0-development.repo 2013-03-29 11:33:17.334674626 +0900
@@ -4,7 +4,7 @@
enabled = 1
gpgcheck = 0
gpgkey = https://ssl.kolabsys.com/santiago.asc
-
+priority=50
[kolab-3.0-development-debuginfo]
name = Enterprise Linux 6 Kolab 3.0 Packages - Debugging Symbols
リポジトリの追加が終わりましたら。Kolab Groupware のインストールを行います。
全コンポーネントを簡単にインストールするには、さくっと一行打つだけです。お手軽です。
[root@kolab ~]# yum -y install kolab
インストールが無事完了したら、Kolabの設定を行います。こちらも簡単。
[root@kolab ~]# setup-kolab
と、セットアップ用のコマンドを打ち、あとは表示されるメッセージに従って、パスワード等を設定していけばOKです。
※※※ setup-kolab に失敗した!! ※※※
さてさて…ここまではすんなり進んでも…このsetup-kolab で引っ掛かる人がおそらくいるのではないでしょうか。
ええ…私も実は、引っかかったクチです (・w・;
私の場合は…「間違ったパスワードを設定してしまい思い出せなくなった。」「ホスト名、ドメイン名が変更になった。」
という事で、再度 setup-kolab を実行したら、エラーが発生して再設定が出来なくなった事です。
そういう時の対処方法です。
・まず、389 Directory Server のサービスを停止します。
[root@kolab ~]# service dirsrv stop
・次に、389 Directory Server の設定ファイル(slapd-ホスト名)を退避or削除します。
[root@kolab ~]# mv /etc/dirsrv/slapd-kolab/ /etc/dirsrv/bk_slapd-kolab
・MySQLのデータベースの削除
(もし…MySQLのrootパスワードがわからなくなってた場合は…MySQLの解説サイトで調べてください(-w-; )
[root@kolab ~]# mysql -u root -p
Enter password:
データベースの一覧を見て、kolab、roundcube というデータベースがある事を確認してください。
この2つのデータベースを削除します。
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| kolab |
| mysql |
| roundcube |
| test |
+--------------------+
5 rows in set (0.00 sec)
mysql> use kolab;
mysql> drop database kolab;
mysql> use roundcube;
mysql> drop database roundcube;
これで、再度 setup-kolab が走るようになります。
ホスト名やドメイン名を変更して、setup-kolab を実行してみましょう。
※ちなみに…Kolab Groupware に登録していたユーザやグループ、各ユーザのメールやその他データなどは、
もちろん、吹っ飛んでしまいますので、あくまで、初期導入時にのみ使用できる方法です。
ではでは。
【PPTPが危ない?】MS-CHAPv2の脆弱性
- 2012/08/17
- fumikura
- MS-CHAPv2 VPN PPTP 脆弱性
VPN接続で良くお世話になるPPTP接続。
どうも、この骨格となるMS-CHAPv2の認証方式に
容易に突破される脆弱性があるとの事。
原文
http://www.cloudcracker.com/blog/2012/07/29/cracking-ms-chap-v2/
かなり重大なセキュリティ上の問題なので、翻訳してブログに乗せようと思ったのですが…難解な用語に引っかかり、心折れました…orz
この脆弱性に関する詳細な解説がなされています。
その代わりといってはなんですが、Mcfeeにこの脆弱性の勧告ページがありましたので、そちらの紹介をば…。原文を読んでいると、「あぁ、原文参考にして書かれてるな。」とわかる勧告内容ではあります。
「MS-CHAPv2の暗号化された資格情報のハッシュの回避」
http://www.mcafee.com/japan/security/virVul.asp?v=vul120116