今回の記事では、手動デプロイに挑戦している。
だいぶ昔にGoogleデスクトップ検索ってのがあって、それのおかげでローカルにファイルを置いているだけで凄くファイルが探しやすくてラッキーだったんだけど、あれがなくなっちゃってからファイルを探すのが面倒でしょうがなかった。
ある日、無料で使える高機能な文書管理サーバーがあるという記事を見かけてAlfrescoをインストールしてみたら、とにかく検索性能が優れているのでなくてはならない存在になった。ウチのサーバーは貧弱なので反応速度はいまいちなんだけど、それが気にならない程の検索性能と使い勝手。
現行サーバー(Ubuntu16.04)のリミットも近いし、新サーバーに移行しなくては。
お知らせ
Alfresco5.2から6.1へのアップグレードやバックアップに役立ちそうな記事を投稿しました。2019/06/08
Alfresco社は2020年10月22日にHyland社に買収され、現在も開発が続いています。
確認してみたところ、ダウンロードリンクなど色々とURLが変更になっていることが分かりました。
本投稿の正しく機能しなくなったリンクは削除しました。2024/02/18
ダウンロード
Alfresco Communityエディション からダウンロードしてくる。バージョン表記は
バージョン201901 GA(6.1)- リリース日: 2019年2月4日
となっていてた。特に [201901 GA] はこのバージョンを表す1つの表記だが、起動後どこにも表示されないように思われる。モジュールを検索するときにバージョン特定で使うことがあるからメモっておく。この日のモジュールでAlfrescoにログインした時に表示されるバージョンは [6.1.2] であった。
英語ページだとダウンロードページで maybe later...だったか、そんな表記から何も登録せずにダウンロードができそう。日本語だと自分の情報を残さないとダウンロードページにたどり着けない。
ダウンロードページを見たところ、自動インストーラーは5.2までだった。6.1は手動によるデプロイ、もしくは、コンテナ(Docker)を活用したデプロイらしい。Dockerでサービスを起動させるまではとても簡単だが、現在構築中のサーバーは複数サービスを同居させる予定なので手動でデプロイする。
手動デプロイのために3つのzipがあって全てダウンロード、530MBくらい。
結構なサイズなので、ダウンロードしながら手順書を読んで作戦を立てる。
インストール手順はこちらに書かれている。英語ですな。
Alfresco Documentation / Install with zip
概要をGoogle先生に翻訳してもらうと、ざっくりこんな感じ(意訳)。
- Alfresco Content Service の zip ファイルをダウンロードする。
- Tomcatのインストールと設定。
- Alfresco Content Service のインストールと設定。
- AMP(Alfresco Module Package)群をインストール。
Alfresco Share、Google Docs Integration、Alfresco Office Serviceとか。 - ActiveMQを設定する。
- 関連サードパーティ製アプリのインストール。
LibreOffice、ImageMagick、Alfresco PDF Rendererとか。
インストール方針
過去記事は自動インストーラーを利用したインストールのため、まっさらから方針決定。
ウチはプアーなサーバー1つに色々なサービスを同居させているから、Ubuntuが用意してくれるパッケージと組み合わせる茨の道を進むことに決定。
- Solr(全文検索システム)
→ Ubuntuが用意してくれている模様…しかし、AlfrescoはSolrを内包したパッケージを提供してくれている。現状、他にSolrを使うシステムはないからAlfrescoのパッケージを利用。 - データベース
→ 既にMariaDBを利用して構築を始めているのでこれを利用。 - 関連パッケージ
Java、Tomcat、ActiveMQ、Libreoffice、ImageMagick等の基本パッケージはUbuntuが用意してくれているパッケージを利用。
やること
対象OSは Ubuntu18.04、サーバーのFQDNは temp.hogeserver.hogeddns.jp とする。
※FQDNはインストール環境に合わせて読み替える。
こんな感じで作業を進める。
- 基本部分のインストール
- サードパーティのアプリケーションをインストール
- LibreOfficeのインストール
- ImageMagickのインストール
- alfresco-pdf-rendererのインストール
- TinyMCE language packsのインストール(実行せず)
- Share向けサービスをインストール
- Alfresco Office Services
- Alfresco Share Services(既に実行済み)
- Alfresco Googledocs Repo
- AMPのインストール
- 動作確認
- SSL(ポート443でのサービス公開)
- 起きたこと・やったこと
関連するリンクはこのページの下の方にまとめてある。
基本部分のインストール
ここからは、インストール手順を参考にしつつ、Ubuntu18.04を使っているのだから、これに沿ったオリジナリティを出してみる。
Alfrescoのパッケージはどこにあるのか色々探していたのだけれど…以下が便利。作業中はこのページを開きっぱなしでいいと思う。
Alfresco / Nexus Repository Manager (以降 ANRMと表記)
Tomcatのインストール
本家の手順書にはファイルを落としてきてコンパイルするやり方が書かれているが、Ubuntu18.04に用意されている Tomcat9 を利用する。
$ sudo apt install tomcat9 tomcat9-admin
$ /usr/share/tomcat9/bin/version.sh
Using CATALINA_BASE: /usr/share/tomcat9
Using CATALINA_HOME: /usr/share/tomcat9
Using CATALINA_TMPDIR: /usr/share/tomcat9/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/share/tomcat9/bin/bootstrap.jar:/usr/share/tomcat9/bin/tomcat-juli.jar
NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
Server version: Apache Tomcat/9.0.16 (Ubuntu)
Server built: Apr 4 2019 11:49:17 UTC
Server number: 9.0.16.0
OS Name: Linux
OS Version: 4.15.0-50-generic
Architecture: amd64
JVM Version: 11.0.3+7-Ubuntu-1ubuntu218.04.1
JVM Vendor: Oracle Corporation
tomcat9がどんなディレクトリ構成で動いているのか、というと…
/lib/systemd/system/tomcat9.service
# Configuration
Environment="CATALINA_HOME=/usr/share/tomcat9"
Environment="CATALINA_BASE=/var/lib/tomcat9"
Environment="CATALINA_TMPDIR=/tmp"
Environment="JAVA_OPTS=-Djava.awt.headless=true"
EnvironmentFile=-/etc/default/tomcat9
CATALINA_HOMEとCATALINA_BASEのディレクトリ構成は以下。
/usr/share/tomcat9 <CATALINA_HOME>
├ bin
├ etc
└ lib
/var/lib/tomcat9 <CATALINA_BASE インスタンスにあたる>
├ conf -> /etc/tomcat9/
├ lib
├ logs -> ../../log/tomcat9/
├ policy
├ shared
├ webapps
└ work -> ../../cache/tomcat9/
これは、複数のTomcatを動かすマルチインスタンス環境とのこと。
ここで、簡単なアクセステストを実施。
/etc/tomcat9/tomcat-users.xml に赤文字部分を追記。
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<role rolename="tomcat"/>
<role rolename="manager-gui"/>
<user username="alfadmin" password="パスワード" roles="tomcat,manager-gui,manager-script"/>
</tomcat-users>
ポート8080を解放し、http://temp.hogeserver.hogeddns.jp:8080 にアクセスしてみる。
$ sudo ufw allow to any port 8080 proto tcp from any comment TOMCAT
It works ! と表示され、その中にある… manager webappのリックをクリックすれば、Tomcat Webアプリケーションマネージャが起動するはずだ。
http://temp.hogeserver.hogeddns.jp:8080/manager/html を直接URLとして入力してもOK!
Tomcatにアクセスできないことについてはここにメモ。
うまく動かないときには configtest.sh を実行したくなるだろう。マルチインスタンスのときにbinの中のコマンドを実行するには、事前に環境変数を設定しておけば良い。全てのコマンドを調べたわけではないが、例えばconfigtestはこれで実行できる。
$ export CATALINA_BASE="/var/lib/tomcat9"
$ export CATALINA_TMPDIR="/tmp"
$ sudo -E /usr/share/tomcat9/bin/configtest.sh
Using CATALINA_BASE: /var/lib/tomcat9
Using CATALINA_HOME: /usr/share/tomcat9
Using CATALINA_TMPDIR: /tmp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/share/tomcat9/bin/bootstrap.jar:/usr/share/tomcat9/bin/tomcat-juli.jar
…
May 26, 2019 3:59:05 AM org.apache.catalina.startup.Catalina load
INFO: Server initialization in [1,154] milliseconds
※tomcat9が動いていると、ポートが使えないというエラーが出る。
アクセステストを終えたらサービスを停止。
$ sudo systemctl stop tomcat9
Alfrescoのインストール
本家の手順書には、zipファイルをダウンロードして展開し、適切な場所に配置しつつちょいちょい設定していく記載がある。
パッケージの配置イメージ…
AlfrescoはTomcatの上で動くアプリケーションだけど、元々のディレクトリの配置から考えるとTomcatを下のディレクトリに置いて管理する考え方になっていると思う。パッケージをインストールしたら擬似的にその形を作っていく。
ファイルを展開。
$ unzip alfresco-content-services-community-distribution-6.1.2-ga.zip
展開したフォルダをalfrescoに変更し、持ち主を変えて/usr/shareに移動。
$ mv alfresco-content-services-community-distribution-6.1.2-ga alfresco
$ sudo chown -R tomcat:tomcat alfresco
$ sudo mv alfresco /usr/share/
ここで、alfresco配下にtomcatを配置するような形を作る。
$ sudo ln -s /var/lib/tomcat9 /usr/share/alfresco/tomcat
Alfrescoパッケージをインストールする際に必要なディレクトリが1つないので作る。
$ sudo -u tomcat mkdir /usr/share/alfresco/amps_share
Simple Module を追加する際に利用するディレクトリを追加。2019/06/08追記
$ sudo -u tomcat mkdir -p /usr/share/alfresco/modules/platform
$ sudo -u tomcat mkdir /usr/share/alfresco/modules/share
そうすると、こんなディレクトリ構成に。
/usr/share/alfresco パッケージの基本位置
├ alf_data Alfrescoデータのルートディレクトリ
├ alfresco-pdf-renderer 確認中
├ amps インストールするパッケージの保管場所
├ amps_share 自作。インストールするパッケージの保管場所(share用)
├ modules 自作。Simple Module を追加する用 2019/06/08追記
│ ├ platform 自作。Alfresco用 2019/06/08追記
│ └ share 自作。Share用 2019/06/08追記
├ bin Alfrescoのコマンドを格納
├ licenses 各種ライセンス条項が入っている
├ web-server Tomcatの構成に沿ってファイルが入っている
├ tomcat 自作。手順書の<TOMCAT_HOME>はきっとこれ
└ conf 自作。これから作成。設定ファイルを集めようと考えている
web-serverの中身を丁寧にtomcatの中に放り込んでいく。
$ cd /usr/share/alfresco
# warファイルの移動
$ sudo mv web-server/webapps/* tomcat/webapps/
# confディレクトリの中身を移動 2019/06/08移動先修正 2020/01/05再修正
$ sudo mv web-server/conf/Catalina/localhost/alfresco.xml /etc/tomcat9/Catalina/localhost/
$ sudo mv web-server/conf/Catalina/localhost/share.xml /etc/tomcat9/Catalina/localhost/
# libディレクトリの中身は移動しない(MySQLには関係がない)
# PostgreSQL用のモジュールだから、PostgreSQLな人は移動させる。
# sharedディレクトリ構成を作って中身を移動
$ sudo mkdir -p tomcat/shared/classes
$ sudo mkdir tomcat/shared/lib
$ sudo mv web-server/shared/classes/* tomcat/shared/classes/
# 元々<TOMCAT_HOME>/webappsにあったディレクトリを削除と
# 書かれているのだが、念のために移動してくる。
# 既にTomcatを使っている人は ROOT.war の移動を含めて要注意なのかも
$ sudo mv tomcat/webapps/ROOT web-server/webapps/
これは、マニュアルを見ても書いてない気がするんだけど…
# alf_dataディレクトリの権限を変えておく。
$ sudo chmod 700 -R /usr/share/alfresco/alf_data
# 実行用のコマンドの権限を変えておく。
$ sudo chmod 755 /usr/share/alfresco/bin/*.sh
JDBCドライバーをコピーして!と書いてあるけど、どうやら入ってそうなので、存在確認だけしておく。
$ ll /usr/share/tomcat9/lib/tomcat-jdbc.jar
lrwxrwxrwx 1 root root 27 Apr 4 20:49 /usr/share/tomcat9/lib/tomcat-jdbc.jar -> ../../java/tomcat9-jdbc.jar
ちょくちょく触りそうなファイルをconfディレクトリに集める。
ディレクトリが分散しすぎていてどこにあるのか忘れちゃうので…
$ sudo -u tomcat mkdir /usr/share/alfresco/conf
$ sudo ln -s /etc/tomcat9/catalina.properties /usr/share/alfresco/conf/catalina.properties
$ sudo ln -s /etc/tomcat9/server.xml /usr/share/alfresco/conf/server.xml
設定ファイルを編集、shared.loaderに赤文字部分を追記。
/etc/tomcat9/catalina.properties ※2020/01/05修正
shared.loader=\
${catalina.base}/shared/classes,\
${catalina.base}/shared/lib/*.jar,\
${catalina.home}/lib/*.jar
Connectorのところに赤太字を追記。
/usr/share/alfresco/conf/server.xml
<!-- Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" /-->
<!--
<Connector port="8080"
protocol="HTTP/1.1"
URIEncoding="UTF-8"
connectionTimeout="20000"
scheme="https"
secure="true"
redirectPort="8443"
maxHttpHeaderSize="32768" />
-->
<Connector port="8080" protocol="HTTP/1.1"
Server=" "
connectionTimeout="20000"
redirectPort="8443" />
※kopano-icalはデフォルトでポート8080を利用している。ポートがバッティングしているなら8088等の別のポートにするか、kopano-ical側を別のポートにする(kopano-ical.cfg ical_port参照)等してポートを分ける。
※マニュアルに書かれているConnector設定をそのまま使うと、Share→Alfresco APIへのアクセスでhttpsを利用する設定になり、結果として「Shareでログインすると何も起きない」という不具合が発生する。dockerの設定をコピーしてみたら動き出した。
さて…
alfrescoはデータベースだけでなくファイルも作る。このalfrescoがデータを書き込む先をシステムに知らせておく必要がある。
/lib/systemd/system/tomcat9.service
…
ReadWritePaths=/etc/tomcat9/Catalina/
ReadWritePaths=/var/lib/tomcat9/webapps/
ReadWritePaths=/usr/share/alfresco/alf_data/
[Install] WantedBy=multi-user.target
反映。
$ sudo systemctl daemon-reload
さらに、Simple Module を追加する際の設定を入れておく。 2019/06/08 追記
/etc/tomcat9/Catalina/localhost/alfresco.xml
<?xml version='1.0' encoding='utf-8'?>
<Context crossContext="true">
<Resources>
<PostResources base="/usr/share/alfresco/modules/platform"
className="org.apache.catalina.webresources.DirResourceSet"
webAppMount="/WEB-INF/lib"/>
</Resources>
</Context>
/etc/tomcat9/Catalina/localhost/share.xml
<?xml version='1.0' encoding='utf-8'?>
<Context crossContext="true">
<Resources>
<PostResources base="/usr/share/alfresco/modules/share"
className="org.apache.catalina.webresources.DirResourceSet"
webAppMount="/WEB-INF/lib"/>
</Resources>
</Context>
Alfrescoのデプロイ
それっぽい環境ができたので、デプロイする。Tomcatは特定位置にあるファイルを自動でデプロイしてくれる。
この環境だと/var/lib/tomcat9/webappsがそこになる。
$ sudo systemctl start tomcat9
# http://temp.hogeserver.hogeddns.jp:8080/manager/html にアクセスしてみると
# alfresco と share が登録される。まだ起動できない。
デプロイするとwarファイルが展開・配備される。CPUの使用量をみて、デプロイが終わったであろうことを待ってからtomcatを止めること。
$ sudo systemctl stop tomcat9
Alfrescoはログが出力できないと全くうまく動かない。そのため、以下の通りログを修正したい(赤文字部分の追記)のだが…
/usr/share/alfresco/tomcat/webapps/alfresco/WEB-INF/classes/log4j.properties
log4j.appender.File.File=/${catalina.base}/logs/alfresco.log
/usr/share/alfresco/tomcat/webapps/share/WEB-INF/classes/log4j.properties
log4j.appender.File.File=/${catalina.base}/logs/share.log
この変更は、warを展開し直しても元に戻ってしまうだけでなく、AMPをインストールするたびに書き換わってしまう。alfresco側は救済できる方法(log4j.porpertiesを丸ごとコピーして変更点を書いておく…バージョンアップで変更された時はどうするんだろう?)があるが、share側には用意されていない。よって、この変更を掛けるスクリプトを作って「何かの拍子に元に戻ったらすぐに修正できる」ようにする。
/usr/share/alfresco/bin/edit_log_location.sh ※新規作成
#!/bin/bash
sed -i s@=alfresco\.log@=/$\{catalina.base\}/logs/alfresco\.log@ \
/usr/share/alfresco/tomcat/webapps/alfresco/WEB-INF/classes/log4j.properties
if [ $? -ne 0 ]; then
echo "An error occurred while editing alfresco's log4j.properties."
echo "Correct the cause of the error and try again."
exit
fi
sed -i s@=share\.log@=/$\{catalina.base\}/logs/share\.log@ \
/usr/share/alfresco/tomcat/webapps/share/WEB-INF/classes/log4j.properties
if [ $? -ne 0 ]; then
echo "An error occurred while editing share's log4j.properties."
echo "Correct the cause of the error and try again."
exit
fi
echo "Log location edited."
作ったら権限とか設定。
$ sudo chown tomcat:tomcat /usr/share/alfresco/bin/edit_log_location.sh
$ sudo chmod 755 /usr/share/alfresco/bin/edit_log_location.sh
まずは、ampsに入っているalfresco-share-services.ampとかをAlfrescoに認識させるつもりでapply_amps.shを実行してみた。
$ export CATALINA_BASE="/var/lib/tomcat9"
$ export CATALINA_TMPDIR="/tmp"
$ sudo -E -u tomcat /usr/share/alfresco/bin/apply_amps.sh
/usr/bin/java
Found installed java executable on the system
This script will apply all the AMPs in amps and amps_share to the alfresco.war and share.war files in /usr/share/alfresco/tomcat/webapps
Press control-c to stop this script . . .
Press any other key to continue . . .[Enter]
Module 'alfresco-share-services' installed in '/usr/share/alfresco/tomcat/webapps/alfresco.war'
- Title: Alfresco Share Services AMP
- Version: 6.1.0
- Install Date: Sun May 26 06:56:49 JST 2019
- Description: Module to be applied to alfresco.war, containing APIs for Alfresco Share
No modules are installed in this WAR file
About to clean out /usr/share/alfresco/tomcat/webapps/alfresco and share directories and temporary files...
Press control-c to stop this script . . .
Press any other key to continue . . .[Enter]
Cleaning temporary Alfresco files from Tomcat...
ログ出力先はデフォルトのままで修正できていないけど、次の手順の間にスクリプトを走らせて修正する。
Alfresco REST API Explorerのインストール
パッケージに含まれていないようだから、ANRMで rest-api-explorer をキーに検索する。この日に見たところの各モジュールの日付から、どうやら2.7.bが最新の模様。ダウンロードしてきて配備する。
$ mv alfresco-rm-community-rest-api-explorer-2.7.b.war api-explorer.war
$ sudo chown tomcat:tomcat api-explorer.war
$ sudo mv api-explorer.war /usr/share/alfresco/tomcat/webapps/
tomcatを起動して配備されたことを確認し、tomcatを停止する。
$ sudo systemctl start tomcat9
# 先ほど実行したapply_amps.shでログ出力先が書き換わってしまうので修正。
$ sudo /usr/share/alfresco/bin/edit_log_location.sh
Log location edited.
# http://temp.hogeserver.hogeddns.jp:8080/manager/html にアクセスしてみると
# api-explorer が登録されていることが確認できる。確認したらサービスを止める。
$ sudo systemctl stop tomcat9
ActiveMQのインストール
本家の手順書にはアドバンストな設定もあるみたいだけど、基本設定まで。
Java Message Service (JMS)の実装とのこと。ソフトウェア間のメッセージ交換を担当するってことなんだが、やたらでっかいパッケージ。
$ sudo apt install activemq
/usr/share/doc/activemq/README.Debian を読んでみると、
Apacheのような感じで、instances-available にあるフォルダのシンボリックリンクを instances-enabled に作成すると、サービスが有効になるらしい。
変更後、reload はないので restart をする必要がある。
$ sudo ln -s /etc/activemq/instances-available/main /etc/activemq/instances-enabled/main
$sudo systemctl restart activemqここでは再起動しない
ウチの場合、サーバーはプアーなのでメモリ消費を抑えたい…ActiveMQを入れるほどの規模で運用していないって話もあるが…オプションのテンプレートをコピーして編集。
$ sudo cp /usr/share/activemq/activemq-options /etc/activemq/instances-available/main/options
※ファイル名を変えているので注意!
/etc/activemq/instances-available/main/options
# Time to wait for the server to start, in seconds
STARTTIME=5
# Use the default Java runtime
JAVA_HOME="/usr/lib/jvm/default-java/"
# Set some JVM memory options
#ACTIVEMQ_OPTS="-Xms512M -Xmx512M -Dorg.apache.activemq.UseDedicatedTaskRunner=true"
ACTIVEMQ_OPTS="-Xms160M -Xmx160M -Dorg.apache.activemq.UseDedicatedTaskRunner=true"
# Arguments to launch /usr/bin/activemq
ACTIVEMQ_ARGS="start xbean:activemq.xml"
# Additional option to pipe stdout to a file for debug sessions. Default is /dev/null
ACTIVEMQ_OUT="/dev/null"
再起動してサービスが開始できることを確認する。
$ sudo systemctl restart activemq
Webの管理画面に他のコンピュータから接続できるようにするためのハードルがちょっと高かった。アクセスして確認することは諦めた。
サービスを止める。
$ sudo systemctl stop activemq
Alfresco Search Servicesのインストール
本家の手順書に沿って設定。SolrはUbuntuのパッケージを使えばいい?とか思っていたけれども、Search Servicesの中に入っていたので利用することに。
今回は、AlfrescoをインストールしたマシンにSearch Serviceをインストールするので、SSLは利用せずにインストールする手順を採用。
パッケージはダウンロードリンクで取得する。
このサービスを動かす alfsrch ユーザーを作る。名前は適当。
$ sudo useradd --system --user-group alfsrch
ファイルを展開して所有者を変更、まるごと/usr/shareに移動。
$ unzip alfresco-search-services-1.3.0.1.zip
$ sudo chown -R alfsrch:alfsrch alfresco-search-services
$ sudo mv alfresco-search-services /usr/share/
んー、どこに何を置いたらいいのかが分からない。探してみると、本家にディレクトリ構造の説明があった。それでもよく分からなかったんだけど、要するに、この alfresco-search-service ってフォルダで起動スクリプトを動かすと処理が走り出すみたい。
/usr/share/alfresco-search-services/solrhome/conf/shared.properties
# Suggestable Propeties
alfresco.suggestable.property.0={http://www.alfresco.org/model/content/1.0}name
alfresco.suggestable.property.1={http://www.alfresco.org/model/content/1.0}title
alfresco.suggestable.property.2={http://www.alfresco.org/model/content/1.0}description
alfresco.suggestable.property.3={http://www.alfresco.org/model/content/1.0}content
# Data types that support cross locale/word splitting/token patterns if tokenised
alfresco.cross.locale.datatype.0={http://www.alfresco.org/model/dictionary/1.0}text
alfresco.cross.locale.datatype.1={http://www.alfresco.org/model/dictionary/1.0}content
alfresco.cross.locale.datatype.2={http://www.alfresco.org/model/dictionary/1.0}mltext
※コメントを外して有効化。
Solrをalfsrchユーザーで起動してみる。
$ cd /usr/share/alfresco-search-services
$ sudo -u alfsrch ./solr/bin/solr start -a "-Dcreate.alfresco.defaults=alfresco,archive"
Waiting up to 180 seconds to see Solr running on port 8983 [\]Started Solr server on port 8983 (pid=6677). Happy searching!
$ echo $?
0 ← 成功したときには0が戻るらしい…
http://temp.hogeserver.hogeddns.jp:8983/にアクセスしてみる。
※ポート8983を解放してテストし、終わったら必ず閉じる。
$ sudo ufw allow to any port 8983 proto tcp from any comment AlfrescoSearch
問題なくアクセスができたら、ここでは一旦サービスを止める。
$ cd /usr/share/alfresco-search-services
$ sudo -u alfsrch ./solr/bin/solr stop
自動起動するように設定する。以下を参考にした。
めもめも / Systemd入門(4) - serviceタイプUnitの設定ファイル
シュンツのつまづき日記 / SystemdのCapabilityBoundingSet/AmbientCapabilitiesの挙動
Phoronix / Systemd Adds New "ProtectSystem Strict" Option, Other New Tunables
まずはスクリプト?ファイルの作成。完全にtomcat9.serviceのパクリ。
/lib/systemd/system/alfresco-search.service ※新規作成
#
# Systemd unit file for Alfresco Search Service
#
[Unit] Description=Alfresco Search Service
Documentation=http://docs.alfresco.com/search-community/concepts/solr6-install-config.html
After=tomcat9.service
[Service]
# Configuration
#Environment="ASSHOME=/usr/share/alfresco-search-service"
# Lifecycle
Type=forking
WorkingDirectory=/usr/share/alfresco-search-services
ExecStart=/usr/share/alfresco-search-services/solr/bin/solr start -a "-Dcreate.alfresco.defaults=alfresco,archive"
ExecReload=/usr/share/alfresco-search-services/solr/bin/solr restart -a "-Dcreate.alfresco.defaults=alfresco,archive"
ExecStop=/usr/share/alfresco-search-services/solr/bin/solr stop
SuccessExitStatus=0
Restart=on-abort
# Logging
SyslogIdentifier=alfsrch
# Security
User=alfsrch
Group=alfsrch
PrivateTmp=yes
AmbientCapabilities=CAP_NET_BIND_SERVICE
NoNewPrivileges=true
LogsDirectory=alfsrch
LogsDirectoryMode=750
CacheDirectory=alfsrch
CacheDirectoryMode=750
ProtectSystem=strict
ReadWritePaths=/usr/share/alfresco-search-services
[Install] WantedBy=multi-user.target
サービスを登録。
$ sudo systemctl daemon-reload
$ sudo systemctl enable alfresco-search.service
Created symlink /etc/systemd/system/multi-user.target.wants/alfresco-search.service → /lib/systemd/system/alfresco-search.service.
$ sudo systemctl start alfresco-search.service
もう一度、Solrにアクセスしてみる。
テストが終わったらサービスを止めて、ufwでポートを閉じる。
$ sudo systemctl stop alfresco-search.service
$ sudo ufw delete allow to any port 8983 proto tcp from any
※システムを使い込んでいくうちに、Alfrescoの起動に時間が掛かるようになり、検索サービスが起動しなくなる問題が発生したので、サービス起動を遅らせる記事を投稿した。2021/03/27
File Transfer Receiverのインストール(実行せず)
本家の手順書を見ても、正直なところ働きがよく分からない。
またdockerの中を探しても見つからない。
パッケージはダウンロードリンクで取得することができたが、手順書の言うところの「適切なディレクトリ」がどこなのか分からないため、インストールできなかった。
MariaDBの設定
先に入れたシステムでMariaDBを利用したので、Alfrescoを同居させたい。
MySQL Connector/J を利用させていただくので、ダウンロードする。
Select Operating System で Platform Independent を選択し、zipファイルのダウンロードボタンをクリック。No thanks, just start my download.リンクでダウンロードができる。
展開とコピー。
$ unzip mysql-connector-java-8.0.16.zip -d mysql-connector
$ sudo cp -a mysql-connector/mysql-connector-java-8.0.16/mysql-connector-java-8.0.16.jar /var/lib/tomcat9/lib/
$ sudo chown root:root /var/lib/tomcat9/lib/mysql-connector-java-8.0.16.jar
データベースとユーザーの作成。
$ sudo mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 51
Server version: 10.1.38-MariaDB-0ubuntu0.18.04.2 Ubuntu 18.04
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create database alfresco default character set utf8;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on alfresco.* to 'alfresco'@'localhost' identified by 'alfresco-password' with grant option;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> quit
Bye
最大接続数を増やす。
/etc/mysql/mariadb.conf.d/50-server.cnf
#max_connections = 100
max_connections = 275
設定を変更したので、MariaDBを再起動する。
$ sudo systemctl restart mysql
データベースのスキーマ(テーブル構成)は、初回起動時にAlfrescoが作ってくれる。
alfresco-global.propertiesの設定
MariaDBを使うことからまっすぐ手順書通りに…という訳にはいかなくなった。1つ1つ見ながら設定していく感じになりそう。
テンプレートから本番ファイルを作成。
$ sudo cp /var/lib/tomcat9/shared/classes/alfresco-global.properties.sample /var/lib/tomcat9/shared/classes/alfresco-global.properties
$ sudo chown tomcat:tomcat /var/lib/tomcat9/shared/classes/alfresco-global.properties
$ sudo chmod 640 /var/lib/tomcat9/shared/classes/alfresco-global.properties
設定ファイルのありかをきっと忘れてしまう。
なので、/usr/share/alfrescoにconfディレクトリにシンボリックリンクを作っておく。
$ sudo ln -s /var/lib/tomcat9/shared/classes/alfresco-global.properties /usr/share/alfresco/conf/alfresco-global.properties
準備ができたところで、編集。
/usr/share/alfresco/conf/alfresco-global.properties
###############################
## Common Alfresco Properties #
## /var/lib/tomcat9/shared/classes/alfresco-global.properties
###############################
dir.root=/usr/share/alfresco/alf_data
dir.keystore=${dir.root}/keystore
#
# MySQL connection
#
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/alfresco?useUnicode=yes&characterEncoding=UTF-8
db.username=alfresco
db.password=alfresco-password
#
# URL Generation Parameters (The ${localname} token is replaced by the local server name)
#-------------
alfresco.context=alfresco
alfresco.host=temp.hogeserver.hogeddns.jp ※読み替え注意
alfresco.port=8080
alfresco.protocol=http
share.context=share
share.host=temp.hogeserver.hogeddns.jp ※読み替え注意
share.port=8080
share.protocol=http
# Default value of alfresco.rmi.services.host is 0.0.0.0 which means 'listen on all adapters'.
# This allows connections to JMX both remotely and locally.
#
alfresco.rmi.services.host=0.0.0.0
#Smart Folders Config Properties
smart.folders.enabled=true
smart.folders.model=alfresco/model/smartfolder-model.xml
smart.folders.model.labels=alfresco/messages/smartfolder-model
# Solr indexing
index.subsystem.name=solr6
solr.secureComms=none
solr.port=8983
solr.host=localhost
solr.base.url=/solr
# ActiveMQ
messaging.broker.url=failover:(tcp://127.0.0.1:61616)?timeout=3000
ここまでの作業で、ようやく最低限の起動ができる状態になった。
アクセステスト
起動できそうな状態になったので、関係するサービスの状態を確認(起動していなければ起動)してからtomcat9を起動し、接続してみる。
# 状態確認
$ sudo systemctl status activemq
$ sudo systemctl status alfresco-search
# 起動していないはずなので、ここで起動
$ sudo systemctl start activemq
$ sudo systemctl start alfresco-search.service
# 再度、状態確認
$ sudo systemctl status activemq
$ sudo systemctl status alfresco-search
$ sudo systemctl start tomcat9
※ポート8080を解放しておくこと。
起動には結構時間がかかる。AlfrescoやShareが読み込まれ、データベースのスキーマが作られたりする。Tomcat Managerにアクセスし、待つ。
http://temp.hogeserver.hogeddns.jp:8080/manager/html
画面が表示されたらスタンバイOK。Alfrescoのリンクを触ってみる。
http://temp.hogeserver.hogeddns.jp:8080/alfresco
user admin
pass admin
Shareはオレンジの画面までを見て我慢。
ここまでで7割くらい?かな。もう少し頑張る。例によってサービスは落としておく。
$ sudo systemctl stop tomcat9
$ sudo systemctl stop activemq
$ sudo systemctl stop alfresco-search
サードパーティのアプリケーションをインストール
Alfrescoが利用しているサードパーティのアプリケーションをインストールする。
LibreOfficeのインストール
Alfrescoでは文書の変換に利用されており、例えばWordやExcelのドキュメントはこれを利用して変換されている。Ubuntuがパッケージを用意してくれているので、これをインストールしてみる。
$ sudo apt install libreoffice
※でかい…コーヒーブレイク…。
LibreOfficeをインストールすることでデスクトップがインストールされるのでは?と思ったのだが、こうした変換装置としての利用が想定されているのか、はたまたデスクトップの選択はユーザーに委ねられているからなのか、理由までは調べなかったけれどデスクトップはインストールされなかった。
例によって、Ubuntuパッケージは色々な場所に分散してインストールされるけれど、多分、/usr/lib/libreofficeを持ってくれば大丈夫だろうと考えた。
$ sudo ln -s /usr/lib/libreoffice /usr/share/alfresco/libreoffice
その上でインストールした先の情報を知らせる。コメントを有効化して赤文字部分を変更。
/usr/share/alfresco/conf/alfresco-global.properties
# JodConverter
jodconverter.officeHome=/usr/share/alfresco/libreoffice
jodconverter.portNumbers=8101
jodconverter.enabled=true
起動時に「libreofficeがない」というログが出なくなる。
ImageMagickのインストール
Alfrescoで画像操作を担当。こちらもUbuntuにパッケージが用意されている。
$ sudo apt install imagemagick
インストールした先の情報を知らせる。赤文字部分を変更・追加。
/usr/share/alfresco/conf/alfresco-global.properties
# ImageMagick
img.root=/usr/share/doc/imagemagick
img.dyn=/usr/lib/x86_64-linux-gnu
img.exe=/usr/bin/convert
起動時に「ImageMagickがない」というログが出なくなる。
alfresco-pdf-rendererのインストール
ドキュメントのサムネイルとプレビュー作成を担当。Alfrescoのパッケージの中に入っているtgzを展開する。コマンド1つなので、binの中に入れちゃえばいいかなと。
$ cd /usr/share/alfresco/alfresco-pdf-renderer
$ sudo -u tomcat tar -zxvf alfresco-pdf-renderer-1.1-linux.tgz
$ sudo mv alfresco-pdf-renderer ../bin
インストールした先の情報を知らせる。全部追加。
/usr/share/alfresco/conf/alfresco-global.properties
# Alfresco-PDF-Renderer
alfresco-pdf-renderer.root=/usr/share/alfresco/bin
alfresco-pdf-renderer.exe=${alfresco-pdf-renderer.root}/alfresco-pdf-renderer
alfresco-pdf-renderer.url=http://localhost:8090/
起動時に「alfresco-pdf-rendererがない」というログが出なくなる。
TinyMCE language packsのインストール(実行せず)
Alfrescoには以下の言語が含まれている。
ドイツ語(de)、英語(en)、スペイン語(es)、フランス語(fr)、イタリア語(it)、日本語(ja)、オランダ語(nl)、ノルウェー語 - ボクモール語(nb)、ロシア語(nb)(ru)、ブラジルポルトガル語(pt_BR)、および簡体字中国語(zh_CN)
これ以外の言語を使いたい場合にはこのパッケージをインストールする必要がありそう。私は日本語を使うので、インストールしなくても大丈夫っぽい。
Share向けサービスをインストール
基本的なパッケージは ANRM に入っているので、ここでインストールするものは全てANRMからダウンロードする。このドキュメントの最終テストの段階では、サーバーにアクセスできなくなったが、この場合にはdockerのコンテナから持ってきてもいいと思う。
各 amp ファイルは、/usr/share/alfresco/ampsにダウンロードする。
Alfresco Office Services
Share Pointのようにファイルを扱えるようになる。
ANRMの検索キーは alfresco-aos-module で、この日の最新は1.2.2、dockerの中身と一緒だった。
Alfresco Share Services(既に実行済み)
結論、不要。というのも、Alfrescoのデプロイ直後にampsに入っていたファイルをインストール済みだったから。
NRの検索キーは alfresco-share-services で、この日の最新は6.1.0.2となっている。だが、dockerの中身は6.1.0 RC3だった。
RC: Release Candidate → ほとんど製品版。
GA: General Availability → 製品版。
ということで、6.1.0 RC3が正解の模様。ダウンロードしてみたら、最初からampsに入っていたファイルと全く同じだった。
Alfresco Googledocs Repo
NRの検索キーは googledocs-repo で、RC2も出てきている。日付をよく見ると、3.1.0が最新だった。Alfresco Share ServicesはRC3が最新だったのと対照的。
alfresco-googledocs-repo-community-3.1.0.amp
日付をよく見て最新版を確認する必要があるみたい。
AMPのインストール
集めてきたampをインストールする。
$ sudo -u tomcat /usr/share/alfresco/bin/apply_amps.sh
# apply_amps.shを実行するとログ出力先が書き換わってしまうので修正。
# しかしインストール直後にはディレクトリがない…再起動後に実行。
$ sudo /usr/share/alfresco/bin/edit_log_location.sh
Log location edited.
インストールされているampは以下で確認できる。
$ java -jar bin/alfresco-mmt.jar list tomcat/webapps/alfresco.war
$ java -jar bin/alfresco-mmt.jar list tomcat/webapps/share.war
再起動してみる。これで、必要サービスが全て立ち上がることが前提になる。
かなり色々なモジュールをインストールしているから、サービスが全て立ち上がるまでには時間がかかる…
$ sudo reboot
http://temp.hogeserver.hogeddns.jp:8080/manager/htmlにアクセスできたくらいからサービスは起動していると思う。
しかし、ampをインストールした後のログ出力先修正が必要になるため、以下を実行。
$ sudo /usr/share/alfresco/bin/edit_log_location.sh
$ sudo systemctl restart tomcat9
ここまで来れば9割方の設定ができている。あともう一息。
動作確認
手順書にテスト項目が書かれている。
- ログインしてみよう。この段階だと admin / admin でログイン。
http://temp.hogeserver.hogeddns.jp:8080/alfresco
→ ここから Administration Console に進む時にログインが必要。
http://temp.hogeserver.hogeddns.jp:8080/share
→ いつものオレンジ色の画面でログイン。 - サイトを作ってみよう。
Shareにログインし、サイト→サイトの作成 と進んで作成。 - ユーザーを作ってみよう。
管理ツール → ユーザーとグループ → ユーザー と進んで作成。 - サイトにページを追加してみよう。
作成したサイトに行って、右上の方にある歯車 → サイトのカスタマイズ と進む。利用可能なサイトページにあるカレンダーとWikiを現在のサイトページにドロップしてOKボタンを押す。サイトにカレンダーとWikiが追加されたことを確認する。 - 文書ライブラリにファイルを追加してみよう。
文書ライブラリでフォルダを作りファイルを追加してみる。ついでに、追加したファイルがプレビューできることも確認する。 - 文書をコピーor移動してみよう。
宛先は違うフォルダーor違うサイト。orって書いてるのでロジックから見たら片方やっておきゃいいのかな。ま、どちらもやってみればいいと思う。 - 文書のアップデートと編集をしてみよう。
Officeで編集はSSLでアクセスしていないとだめなので後回し。
新バージョンをアップロードし、プロパティを変更してみたりして…。 - 権限周りをいじってみよう。
とりあえずの設定を変えてみたのだけれど、adminさんともう1人でテストしているのであんまり当てにならない感じ。ちゃんとテストするなら2~3人のユーザーを作って試すべきだろうと思う。 - フォルダにルールを追加してみよう。
フォルダにファイルをいれたら、どこかにコピーするルールを作ってその場で実行してみたら、ちゃんとコピーされた。 - ルールを編集してみよう。
コピーを無効化してみた。フォルダにファイルをアップロードして無効化されていることを確認した。 - カレンダーでスケジュールイベントを追加してみよう。
追加してみて、他のメンバーからも見えることを確認した。
ここまで動作すれば…
SSL(ポート443でのサービス公開)
最後。SSLの接続ができるようにして、AOS(Alfresco Office Service)が動くように設定する。まぁ外部に公開する訳だし、色々考えればSSLですよねこれは。
サービスはApacheで公開してProxy動作させ、Tomcatに要求を渡すイメージ。
Tomcat側の設定
まずは、TomcatでApacheからの通信を受け入れる設定。
/usr/share/alfresco/conf/server.xml
<!-- Define an AJP 1.3 Connector on port 8009 -->
<!-- ← この行を消す
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
--> ← この行を消す
さらに、実際にファイルをやりとりするのはAlfresco側で、そのときに、元々8080で非SSLな設定をしているから http://temp.hogeserver.hogeddns.jp/alfresco/aos というアドレスをMicrosoft Officeに渡してしまう。これを強制的に書き換えるため、alfresco-global.propertiesに以下を追記する。
/usr/share/alfresco/conf/alfresco-global.properties
# Alfresco Office Service 用のURL書き換え
aos.baseUrlOverwrite=https://temp.hogeserver.hogeddns.jp/alfresco/aos
Alfresco側だけ再起動し、問題なく起動するかどうかログで確認する。
実際にはTomcatにhttpプロトコルでreloadコマンドを送り込んでいる模様。
$ curl -u alfadmin:パスワード http://localhost:8080/manager/text/reload?path=/alfresco
※アプリケーションの再起動は定型文っぽくて、最後のアプリ名だけを変えればOK。
Apache側の設定
Proxy動作を追記する。いま、有効にしているのは default-ssl.conf だったのでここに書き入れるが、違うところで定義しているならそこに書けばいい。赤文字部分を追加。
/etc/apache2/sites-available/default-ssl.conf
<VirtualHost _default_:443>
ServerName temp.hogeserver.hogeddns.jp
…
<LocationMatch ^/(alfresco|share)>
# アップロード最大サイズ問題の回避(1GB)
SSLRenegBufferSize 1073741824
</LocationMatch>
# Alfresco
ProxyPass /alfresco ajp://localhost:8009/alfresco
ProxyPassReverse /alfresco ajp://localhost:8009/alfresco
ProxyPass /share ajp://localhost:8009/share
ProxyPassReverse /share ajp://localhost:8009/share
ProxyPass /api-explorer ajp://localhost:8009/api-explorer
ProxyPassReverse /api-explorer ajp://localhost:8009/api-explorer
…
</VirtualHost>
$ sudo a2enmod proxy proxy_ajp
$ sudo systemctl restart apache2
動作確認(最終)
これで本当に最後。なので、一度、再起動しておこう。
$ sudo reboot
https://temp.hogeserver.hogeddns.jp/alfresco にアクセスしてみる。shareを除く各リンクが動作することを確認。shareのリンクは http://~~:8080/shareのままだったが、まぁ、shareのショートカット作りましょ。
続いて、 https://temp.hogeserver.hogeddns.jp/share にアクセスしてみる。ログインしてドキュメントを見ていく…で、AOSですよAOS、これが便利さを最高レベルに引き上げてくれる。
適当なドキュメント(docxとかxlsxとか)を選んで「Microsoft Officeで編集」を押してみる。
→ よしよし、ちゃんと動いた!
これにて設定完了!
起きたこと・やったこと
起きたこと・やったことをまとめる。
- Tomcatがうまく起動しない(1)
- Tomcatがうまく起動しない(2)
- manager/html が404
- Alfrescoのログが出ない
- Alfrescoが起動しない
- Shareにログインできない(1)
- Shareにログインできない(2)
- Shareにログインできない(3)
- Solrがエラーを吐き出し続ける
- ActiveMQが起動しない
- CSRF
Tomcatがうまく起動しない(1)
tomcatがうまく起動しないな… 8080ポートを誰か使ってるんだっけ?
$ sudo lsof -i:8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
kopano-ic 1891 kopano 4u IPv6 32372 0t0 TCP *:http-alt (LISTEN)
あ…余計なサービスをインストールしないとかいって、早速ウチの場合は使わないサービスが動いてる。kopano-gatewayとkopano-icalを削除。
Tomcatがうまく起動しない(2)
そりゃ server.xml が壊れていれば起動しないわ。じゃあ、なんで壊れたの?というと… sudo vi server.xml って起動すると、先頭が書き換わるのだ。
<?xml version="1.0" encoding="UTF-8"?>
↓
1<?xml version="1.0" encoding="UTF-8"?1
何かの編集履歴とかが再現されるのかな?
sudo vi server.xmlだと変換がされるけど、sudo を付けないと問題が発生しないとかどういうことかと思ったら、.viminfoがrootで作られていた。
何故編集されるのか、なぜ、.viminfoがrootで作られていたのかは全く分からない。だけど、このおかしな編集を元に戻したら tomcat は起動した。
今は.viminfoの中身を解析している余裕なし。
manager/html が404
tomcatが起動したからmanager/htmlにアクセスしたら「ない」って言われる。最初はtomcat9だけをインストールしたのだが、これだとadminはインストールされなかった。
$ sudo apt install tomcat9-admin
インストール後に改めてアクセスしたら、ちゃんと動作した。
Alfrescoのログが出ない
現行システムではalfresco.logとshare.logが大量に出ている。何か設定を間違えたのか、出力先が/usr/share/alfrescoでローテートもしていない…。
stackoverflow / Where do I find the Alfresco log files?
ログ出力に関連するログが超詳しく書かれている。
今回ログが出なかったのは、ログ出力先ディレクトリが明確に指定されていなかったため、書き込み権限のないディレクトリに書き出そうとしていたように思われる。
Alfrescoが起動しない
とにかく起動しない。これが超重たい困った話になっていた。
理由1) /usr/share/alfresco/alf_data に権限が足らない。
alfresco.log
Failed to create store root: /usr/share/alfresco/alf_data/contentstore.deleted
→ sudo chmod 700 -R /usr/share/alfresco/alf_data
理由2) それでも /usr/share/alfresco/alf_data に書き込めない。
/lib/systemd/system/tomcat9.service
ReadWritePaths=/usr/share/alfresco/alf_data/ を追記。
※サービスは書き込みができるディレクトリに制限がかかっている模様。
→ 書き込み先を明示してシステムに反映させた。
理由3) 中途半端にテーブルができている。
alfresco.log
The current Alfresco cluster node is waiting for another chance to bootstrap the DB schema. Attempt: 24 of 24
※症状としてはbootstrapでエラーを検出している。インストール直後のデータベース作成なのに、今時のハードでそんなに時間がかかるわけもない。これがでたら疑ってみても良いと思う。
$ sudo mysql
MariaDB [(none)]> use alfresco;
MariaDB [alfresco]> show tables from alfresco;
+--------------------+
| Tables_in_alfresco |
+--------------------+
| alf_applied_patch |
| alf_bootstrap_lock |
| alf_locale |
| alf_namespace |
+--------------------+
4 rows in set (0.00 sec)
※テーブルが4つしかないとか完全におかしい感じ。
→ データベースをドロップして作り直す。
Shareにログインできない(1)
ログインすると問題を指摘され、管理者に連絡してくださいって言われる。管理者オレ…。
2019-05-26 13:41:06,387 ERROR [org.alfresco.web.site] [http-nio-8080-exec-3] javax.servlet.ServletException: Possible CSRF attack noted when asserting referer header 'http://temp.hogeserver.hogeddns.jp:8080/share/page/'. Request: POST /share/page/dologin, FAILED TEST: Assert referer POST /share/page/dologin :: referer: 'http://temp.hogeserver.hogeddns.jp:8080/share/page/' vs server & context: https://temp.hogeserver.hogeddns.jp:8080/ (string) or (regexp)
どれどれ…
Possible CSRF attack noted when asserting referer header~
referer: 'http://temp.hogeserver.hogeddns.jp:8080/share/page/' vs
server & context: https://temp.hogeserver.hogeddns.jp:8080/ (string) or (regexp)
ん?なんだsって。ということで確認したところ、
LIVEJOURNAL / Alfresco - javax.servlet.ServletException: Possible CSRF attack
にコネクタの作り方が問題!って書かれてた。server.xml の Connector に確かに scheme="https" って書いてた。これを"http"に修正。
Shareにログインできない(2)
(1)を修正したところ、ログインしたあとのエラー表示はされなくなったのだが、すぐにログインページに戻される。というか画面遷移しない。何も起きない。
間違ったパスワードを入力するとエラーが表示されるので、認証そのものは機能しているみたい。
じゃあ、Alfrescoでなんか適当に機能を実行してみよう…Tomcatがエラーを出力した。うーんCSRF対策をきっちりしないと行けないみたい。何と何を比較して怒られているのかが分からないけど…
あまりにも分からないので docker でAlfrescoを起動してみて、その設定を確認してみたところ、Connectorの設定が手順書と違う!
<Connector port="8080" protocol="HTTP/1.1"
Server=" "
connectionTimeout="20000"
redirectPort="8443" />
ってなってる。マニュアルと全然違っていた!これをそのまま適用して解決。
Shareにログインできない(3)
この記事をテストするために環境をインストール前に戻して手順通りに追いかけてみた。コマンドのミスや記述の不足(ようは間違えやすい記述)を見つけて修正しながら最後のところまで来たら…ログインできない。
データベースを落として再度作らせる、warファイルをインストールし直す、等をやってみても全然回復し内の何でだろ?
試しに…ブラウザを落として、再度立ち上げてアクセスしてみたら…動いた!
理由は分からない、ログにも何にも出ないから。ブラウザ側に何か情報が残っていたためだろう。
Solrがエラーを吐き出し続ける
数秒ごとにエラーを吐いていた。ログの記録はとっていないのだが、とにかくバンバン出続けていたが、どうやらデータベースとの整合性がとれていないのではないかという疑い…確かに、Alfrescoのデータベースを消しては作り、消しては作り…をやってカットアンドトライしていたのだ。
たいした手間じゃないので、Alfresco-search-serviceを一旦消してインストールし直したら回復した。
一応、以下を参考にインデックス復旧のフラグも立ててみた。効果があったのかどうかは分からない。
Alfresco Community / solr tracking failed(リンク切れ)
index.recovery.mode=FULL
復旧したらこのフラグは落としておく方が良いと思う。
ActiveMQが起動しない
プロトコルを増やして動いていることを確認したくても、ログも出てこないので何が起きているのか分からない。だが、この場合、デバッグみたいな起動の仕方があるみたい。
$ sudo service activemq console main
でも、これなら動いちゃったりして。うーむ。
/usr/share/doc/activemq/README.Debian
ActiveMQ Server for Debian ========================== 無効になっている機能 -----------------
Debianには依存関係がないため、このパッケージには(まだ)pstreamによって
提供されるすべての機能が含まれているわけではありません。
無効になっているモジュールの一覧については、こちらを参照してください。 /usr/share/doc/libactivemq-java/README.Debian Main ActiveMQ instance ----------------------
現在のパッケージはActiveMQのデフォルト("main")インスタンスを提供します。
現在、このインスタンスはOpenWireプロトコルを有効にした状態で、
ポート61616のループバックインタフェース(127.0.0.1)でのみ待機します。
メッセージストレージは/var/lib/activemq/main/data/kahadbにある
kahadbによって処理されます。
この環境はここで書き換えることができます :
cp /usr/share/activemq/activemq-options \
/etc/activemq/instances-available/main/options /etc/activemq/instances-available/main/options を編集し、再起動します。
そして、XML設定はここで編集できます : /etc/activemq/instances-available/main/activemq.xml 有効にするには :
ln -s /etc/activemq/instances-available/main \ /etc/activemq/instances-enabled/main 開始するには : invoke-rc.d activemq start
ActiveMQインスタンスをデバッグする --------------------------
デバッグのために任意のActiveMQインスタンスをフォアグラウンドで起動できます。
`foo` インスタンスをフォアグラウンドでスタートするには : # /etc/init.d/activemq console foo
[続く]
ログを吐かないのはこれが原因だった模様。
java.io.FileNotFoundException: /var/lib/activemq/data/audit.log (Permission denied)
だけど、よく分からない…動いているようなので諦め。
CSRF
記事を書いている過程で、CSRFに遭遇。
最終的にはCSRF対策は特にやらなくても大丈夫と分かったが、試行錯誤の中でCSRFチェックを外して試したりもしている。
最終テストではブラウザの再起動で問題解消したりして…
次に行うデータ移行で問題発生するようならしっかりと調べる。
メモ
各種ダウンロードページ
正規のダウンロードページ
thank-you-downloading-alfresco-community-edition(リンク解除)
正規のアドオンページ
Alfresco Addons / Alfresco Community(リンク解除)
GitHubのページ
GitHub / Alfresco Software
Mavenのページ
MvnRepository / Group: Alfresco (リンク切れのためアーカイブへ)
どうやら公式なNexus Repository Manager
Alfresco / Nexus Repository Manager (ANRMと表記している)
Alfresco / Nexus Repository Manager - Index 一覧風。全部ではない。併用。
MySQL Community のConnector/Jダウンロードページ
MySQL Connector/J
各種情報
システムパス / System path conventions(リンク解除)
ポート番号とサービス / Default port numbers and services(リンク解除) ※ちょっと古めの5.0ドキュメント
さいごに
無料で提供してくれているんだから仕方がない…って割り切る?とにかく手順書が中途半端だったなぁ、調べに調べてたどり着いたのは、Tomcatのコネクタ設定の問題。
加えて、モジュールがどこにあるのか本当に分からなかった。ANRMにたどり着くまで探して探して、これ本物?って確認していた。時間がかかって仕方がない。
ということで、自分で選んだ茨の道とはいえ、途方もない時間をかけ、全力を注ぎ込んでどうにかまともに動きそうなところまでたどり着いた。
だが、しかし、おかげで、色々なことに少しずつ知識の枠が広がったよー。
できあがったシステムは、なんか以前よりサクサクと動いている気もする。長い目で見れば、やって良かったといえそうだ。
コメントはこちらから お気軽にどうぞ ~ 投稿に関するご意見・感想・他