Apache Roller5.0.0 インストール (その1)2012/07/09 17:44

オープンソースでJavaベースのブログソフト、Apache Rollerのインストールメモです。
rootユーザで作業する前提になってますので、必要に応じてsudoなど使ってください。

その1では、Rollerのソフトウェアそのもののインストールについて説明します。

インストールを行ったのは少し前の5.0.0ですが、現時点(2012/7/9)での最新版は5.0.1です。 詳しくはみていませんが、機能的な変更ではなくセキュリティアップデートのようです。 なので、インストール方法は変わらないじゃないかと思っています(未確認)。


インストールした環境)
だいぶ古いですが、以下がセットアップ済みの環境に対してインストールを行いました。
  CentOS 5.8 (Xenの上で動作)
  JDK 1.6.0_19
  Tomcat 6.0.26  (RollerにはTomcat6 か 7 が必要です)
  Apache 2.2.3    (なくても問題ありません)
  PostgreSQL 9.1.3


参考にしたサイト等など)

  Apache Roller 4.0.1 ユーザーガイド 日本語訳
  そろそろブログ+RSSアプリでも作ってみませんか?
 

手順1) zipファイルのダウンロード
今回はTomcat上で動かすことになるため、Rollerのダウンロードサイトからroller-weblogger-5.0.0-for-tomcat.zipをダウンロードします。(今ならroller-weblogger-5.0.1-for-tomcat.zipですね)
ダウンロードしたzipファイルを解凍すると、docディレクトリの中にroller-install-guide.pdfというPDFファイルがあるので、その内容に従っていけば簡単にインストールできました。


手順2) warファイルをTomcatのwebappディレクトリに展開
手順1のzipファイルを解凍すると、webappディレクトリの中にroller-5.0.0-tomcat.warというファイルがあるので、これをTomcatのwebappディレクトリにコピーします。 Tomcat自身に展開させるため、Tomcatが起動している状態でコピーします。
─────────────────────────────────────
  # cp roller-5.0.0-tomcat.war /usr/local/tomcat/webapp/
─────────────────────────────────────
※Tomcatのインストールディレクトリが /usr/local/tomcat/ の場合

ファイルの展開を確認後、Tomcatを停止します。
─────────────────────────────────────
  # service tomcat stop
─────────────────────────────────────


手順3) JDBCドライバの取得
PostgreSQLのサイトなどから、postgresql-9.1-902.jdbc4.jarを取得して、Tomcatのlibディレクトリに配置し、所有者をtomcatに変更します。
─────────────────────────────────────
  # pwd
  /usr/local/tomcat/lib
  # chown tomcat:tomcat postgresql-9.1-902.jdbc4.jar
─────────────────────────────────────


手順4) Java Mailライブラリの取得
OracleのサイトなどからJavaMailAPIを取得・解凍して、Tomcatのlibディレクトリに配置し、所有者をtomcatに変更します。
─────────────────────────────────────
# pwd
/usr/local/tomcat/lib
# chown tomcat:tomcat mail.jar
─────────────────────────────────────


手順5) Tomcatのserver.xmlのエンコーディング設定
/usr/local/tomcat/conf/servver.xml を開き、Connectorに「URIEncoding="UTF-8"」が未設定であれば、設定します。
─────────────────────────────────────
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               URIEncoding="UTF-8" />
    ・・・
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8" />
─────────────────────────────────────


手順6) Roller用ディレクトリの作成
イメージファイルのアップロード先などとなるディレクトリを用意します。
今回は /usr/local/rollerdata/ とします。
─────────────────────────────────────
  # cd  /usr/local/
  # mkdir rollerdata
  # chown tomcat:tomcat rollerdata/
  # cd rollerdata/
  # mkdir mediafiles
  # mkdir searchindex
  # chown tomcat:tomcat *
─────────────────────────────────────


手順7) PostgreSQLへの追加設定
9.1以降のPostgreSQLを使うため、バックスラッシュのエスケープ方法を以前と同じ方法に変更します。
/usr/local/pgsql/data/postgresql.conf を以下のように修正します。
─────────────────────────────────────
#------------------------------------------------------------------------------
# VERSION/PLATFORM COMPATIBILITY
#------------------------------------------------------------------------------
# - Previous PostgreSQL Versions -
#array_nulls = on
#backslash_quote = safe_encoding        # on, off, or safe_encoding
#default_with_oids = off
escape_string_warning = off               #エスケープに関する警告を非表示にする。
#lo_compat_privileges = off
#quote_all_identifiers = off
#sql_inheritance = on
standard_conforming_strings = off      #標準でバックスラッシュをエスケープする。
#synchronize_seqscans = on
# - Other Platforms and Clients -
#transform_null_equals = off

・・・
─────────────────────────────────────


手順8) Roller用データベースの作成

以下のようにデータベースを作成します。
    データベース名       = rollerdb
    データベースユーザ = rollerdb
    ユーザパスワード    = rollerdb123
─────────────────────────────────────
 # su - postgres
 $ psql -U postgres
 psql (9.1.3)
 Type "help" for help.
 postgres=# CREATE DATABASE rollerdb WITH OWNER=postgres ENCODING='utf-8' TABLESPACE=pg_default;
 CREATE DATABASE

 postgres=# \l
                              List of databases
        Name    |  Owner       | Encoding   | Collate     | Ctype   |   Access privileges
 -----------+----------+----------+---------+-------+-----------------------
  postgres      | postgres     | UTF8         | C            | C        |
  rollerdb       | postgres      | UTF8         | C           | C         |
  template0    | postgres     | UTF8         | C            | C         | =c/postgres          +
                   |                  |                  |               |            | postgres=CTc/postgres
  template1    | postgres     | UTF8          | C            | C         | =c/postgres          +
                   |                  |                  |               |             | postgres=CTc/postgres
 (4 rows)

 postgres=# \connect rollerdb
 You are now connected to database "rollerdb" as user "postgres".

 rollerdb=# CREATE USER rollerdb PASSWORD 'rollerdb123' VALID UNTIL 'infinity';
 CREATE ROLE

 rollerdb=# \du
                              List of roles
  Role name   |                   Attributes                                               | Member of
 -----------+------------------------------------------------+-----------
  postgres      | Superuser, Create role, Create DB, Replication              | {}
  rollerdb       |                                                                                | {}
 
 rollerdb=# GRANT ALL ON SCHEMA public TO rollerdb;
 GRANT
 rollerdb=# \q
 $
─────────────────────────────────────


手順9) Roller用設定ファイルの作成

/usr/local/tomcat/webapps/roller/WEB-INF/classes/roller-custom.properties を作成し、以下の内容を設定します。 JDBCの設定内容は、実際のサーバの設定に合わせてください。
※installation.type には、この段階では auto を設定します。
─────────────────────────────────────
installation.type=auto
mediafiles.storage.dir=/usr/local/rollerdata/mediafiles
search.index.dir=/usr/local/rollerdata/searchindex
log4j.appender.roller.File=/usr/local/rollerdata/roller.log
database.configurationType=jdbc
database.jdbc.driverClass=org.postgresql.Driver
database.jdbc.connectionURL=
jdbc:postgresql://192.168.1.10:5432/rollerdb
database.jdbc.username=rollerdb
database.jdbc.password=rollerdb123
#mail.configurationType=properties
#mail.hostname=
#mail.username=
#mail.password=

─────────────────────────────────────


手順10) ApacheとTomcatの連携(httpサーバとしてApacheを使いたい場合)
今回はmod_jkを使って連携します。

/etc/httpd/conf.d/ssl.conf を修正します。
─────────────────────────────────────
・・・
##
## SSL Virtual Host Context
##
<VirtualHost _default_:443>

JkMount /roller/* rollerWorker     # 追記する
・・・
─────────────────────────────────────

/etc/httpd/conf/httpd.conf を修正します。
─────────────────────────────────────
・・・
#<IfModule mod_disk_cache.c>
#   CacheEnable disk /
#   CacheRoot "/var/cache/mod_proxy"
#</IfModule>
#
#</IfModule>
# End of proxy directives.
Include conf/mod_jk.conf      # 追記する
### Section 3: Virtual Hosts
#
・・・
─────────────────────────────────────

/etc/httpd/conf/mod_jk.conf を作成します。
─────────────────────────────────────
LoadModule jk_module modules/mod_jk.so
<IfModule mod_jk.c>
  JkWorkersFile "/etc/httpd/conf/workers.properties"
  JkLogFile "/etc/httpd/logs/mod_jk.log"
  JkLogLevel emerg
  JkMount /roller rollerWorker
  JkMount /roller/* rollerWorker
</IfModule>

─────────────────────────────────────

/etc/httpd/conf/workers.properties を作成します。
設定内容は、実際のサーバの設定に合わせてください。
─────────────────────────────────────
worker.list=rollerWorker
worker.rollerWorker.port=8009
worker.rollerWorker.host=192.168.1.10
worker.rollerWorker.type=ajp13

─────────────────────────────────────



ファイルの修正、作成が終わったら、Apacheを再起動します。
─────────────────────────────────────
  # service httpd stop
  # service httpd start
─────────────────────────────────────


手順11) Tomcatの起動
─────────────────────────────────────
  # service tomcat start
─────────────────────────────────────


手順12) Rollerのトップページにアクセスし、データベースを作成
「http://192.168.1.10/roller/」のようにRoolerのトップページにアクセスすると、以下のようにデータベースが見つからない旨が表示されますので、「Yes - create tables now」ボタンを押します。
テーブルが見つからない

テーブルが作成されます。
テーブル作成


手順13) Roller用設定ファイルの変更
以上でテーブルの作成が完了しましたので、手順9で作成したRoller設定ファイルを変更します。
installation.type が auto となっていますので、manual に変更します。
─────────────────────────────────────
  # service tomcat stop

  # vi /usr/local/tomcat/webapps/roller/WEB-INF/classes/roller-custom.properties
      installation.type=manual
      ・・・

  # service tomcat start
─────────────────────────────────────



Rollerのソフトウェアのインストールは以上で完了です。
その2では、Rollerの画面を使ったブログの作成方法について説明する予定です。

MS Excel (Word)を読取専用で開く設定 for Windows72010/07/03 12:18

Excel2003、2007を読み取り専用で開きたい。
ネットワーク共有ドライブ上にファイルがあって、ちょっと中身をのぞきたいだけの時に、書き込みロックしてしまうのは面倒くさいですよね。

エクスプローラでExcelファイルに対して、Shift+右クリック で表示されるメニューの中に「読み取り専用で開く」はあるんですが、実際に開いても読み取り専用になってくれません。

XPの時はエクスプローラのファイル関連付け設定から簡単に出来たんですが、Windows7では該当する機能が無くなってしまったようですね。

無いものはしょうがない。 レジストリエディタの出番のようです。 WinNT4とか2000に戻った気分ですw


Excel2003ファイルの場合
以下のキーに読み取り専用で開く時の(規定)値が入っていますので、書き換えます。

キー: 「HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\OpenAsReadOnly\ddeexec

変更前の値: open("%1",,,,,,,,,,,,,,1,,1)
変更後の値: open("%1",,True,,,,,,,,,,,,1,,1)

※Shiftを押さなくても、右クリックメニューに「読み取り専用で開く」を表示したい場合は、「HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\OpenAsReadOnly」 にある Extended という値を消せばよいです。


Excel2007ファイルの場合
キー名の途中を「Excel.Sheet.8」 → 「Excel.Sheet.12」 に変えてやればいけます。
HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\OpenAsReadOnly\ddeexec


Word2003ファイルの場合
以下のキーに読み取り専用で開く時の(規定)値が入っていますので、書き換えます。

キー: 「HKEY_CLASSES_ROOT\Word.Document.8\shell\OpenAsReadOnly\ddeexec」

変更前の値: [AppShow][REM _DDE_ReadWriteOnSave][FileOpen .Name="%1",.Revert=0]
変更後の値: [AppShow][REM _DDE_ReadWriteOnSave][FileOpen .Name="%1",.ReadOnly=1]

※Shiftを押さなくても、右クリックメニューに「読み取り専用で開く」を表示したい場合は、「HKEY_CLASSES_ROOT\Word.Document.8\shell\OpenAsReadOnly」 にある Extended という値を消せばよいです。


Word2007の場合
キー名の途中を「Word.Document.8」 → 「Word.Document.12」 に変えてやればいけます。
「HKEY_CLASSES_ROOT\Word.Document.12\shell\OpenAsReadOnly\ddeexec」

Excelで正規表現(wsfテキトー版)2010/05/16 10:31

Excelの検索機能だと、オートシェイプは検索対象外。 Windowsの検索機能だと、ヒットするかどうかは分かるけど、どのシートにあるのかとか分からない。 ネットで見つけた記事を組み合わせて作ってみて、一応動くけどテキトー感たっぷりな仕上がり(そもそも仕上がってない)。 Windows スクリプト ファイル (.wsf) で保存して使います。
<JOB ID="excel正規表現検索(オートシェイプ対応)">
	<!-- excel -->
	<REFERENCE GUID="{00020813-0000-0000-C000-000000000046}" />
	<SCRIPT LANGUAGE="VBScript">
	Option Explicit

    '変数定義
	Dim fname		'ファイル名
	Dim args		'引数
	Dim hitRes
	Dim excel, fso

	fname = ""
	Set args = WScript.Arguments
	hitRes = ""

	'Excelとか開く
	Set excel = WScript.CreateObject("Excel.Application")
	Set fso = WScript.CreateObject("Scripting.FileSystemObject")

	'引数チェック
	If args.length = 0 Then
		'For Double Clicked: File Open Dialog
		fname = excel.GetOpenFileName()
		If fname = False Then
			excel.WindowState = xlMinimized
			WScript.Echo("ファイルを選択してください。")
			WScript.Quit
		End If

	ElseIf args.length = 1 Then
		'For Drug&Drop
		fname = args(0)
		If fso.FolderExists(fname) Then
			WScript.Echo("フォルダは面倒なので、ファイルを指定してください。")
			WScript.Quit
		End If

	Else
		WScript.Echo("ファイルは1つだけにしてくれるとうれしいな。")
		WScript.Quit
	End If


	'検索条件人力
	Dim searchExp, rE
	searchExp = InputBox("検索条件を入力してください。")
	If searchExp = "" Then
		WScript.Echo("何か入れてね")
		WScript.Quit
	End If
	Set rE = CreateObject("VBScript.RegExp")
	rE.Pattern = searchExp	'検索パターン
	rE.IgnoreCase = True	'とりあえず大文字・小文字は区別なし
	rE.Global = True		'文字列全体を検索


	'Workbookを開く
	Dim book1
	Set book1 = excel.Workbooks.Open(fname, true, true)


	'検索実行
	Dim bookName, sheet, rg, rgCur, sp, i
	bookName = book1.Name
	For Each sheet In book1.Worksheets
		hitRes = hitRes + vbCrLf + "--- シート:" + sheet.Name + " ---"

'↓ WinXP SP3 + Excel2003だと、エラーになるかも
		sheet.Activate

		'値セルの検索
		Set rg = sheet.UsedRange.SpecialCells(xlCellTypeConstants)
		For Each rgCur In rg
			If Not IsNull(rgCur.Value) And "" <> rgCur.Value Then
				If rE.Test(rgCur.Value) Then
					hitRes = hitRes + vbCrLf + "  " + rgCur.Address + ":" + vbTab + rgCur.Value
				End If
			End If
		Next

		'数式セルの検索
		rg = Null
		On Error Resume Next
			Set rg = sheet.UsedRange.SpecialCells(xlCellTypeFormulas)
		On Error GoTo 0
		If Not IsNull(rg) Then
			For Each rgCur In rg
				If Not IsNull(rgCur.Formula) And "" <> rgCur.Formula Then
					If rE.Test(rgCur.Formula) Then
						hitRes = hitRes + vbCrLf + "  " + rgCur.Address + ":" + vbTab + rgCur.Formula
					End If
				End If
			Next
		End If

		'オートシェイプの検索
		If 0 < sheet.Shapes.Count Then
			Dim spTxt, idx

			For Each sp In Sheet.Shapes

'オートシェイプ内の文字列取得は、OS、Officeのバージョンによって方法が変わるのかな?
'これだ! という方法がよく分からなくて、詳しく調べる気もないので、環境毎に都度対応する。

'タイプA(Win7 x64 + Excel2007 では動作した)
				sp.Select
				spTxt = excel.Selection.Characters.Text

'タイプB(胡散臭いやり方。 WinXP SP3 + Excel2003 ではこちらでないと取得できなかった)
'				spTxt = ""
'				On Error Resume Next
'					spTxt = sp.Text
'				On Error GoTo 0
'				If spTxt = "" Then
'					spTxt = sp.AlternativeText
'					idx = InStr(1, spTxt, ": ", 1)
'					If idx > 0 Then
'						spTxt = Right(spTxt, Len(spTxt) - idx)
'					End If
'				End If

				If spTxt <> "" Then
					If rE.Test(spTxt) Then
						hitRes = hitRes + vbCrLf + "  図[" + sp.Name + "]:" + vbTab + Replace(spTxt, vbLf, " ")
					End If
				End If
			Next
		End If
	Next


	'Workbook閉じる
	book1.Close
	Set book1 = Nothing


	'クリップボードへコピーしてダイアログにも表示
	Dim objIE
	Set objIE = WScript.CreateObject("InternetExplorer.Application")
	objIE.Navigate("about:blank")
	objIE.Visible = True 'アクセス許可ダイアログがどこに出るのか分からなくなってしまったので、しょうがなく
	While objIE.Busy
		WScript.Sleep 100
	WEnd
	objIE.Document.parentWindow.clipboardData.setData "text", hitRes
	objIE.Quit
	Set objIE = Nothing

	WScript.Echo("検索結果(クリップボードにもコピーしました):" + vbCrLf + vbCrLf + hitRes)

	</SCRIPT>
</JOB>

Let's note + VMWare ESXi ...2009/10/03 23:05

起動はした
【試した事】
我が家で現役引退中の Panasonic Let's note CF-Y5 で VMWare ESXi を動かす。


【結論・原因】
ダメでした。
NICが対応していないようです。 「ALT+F1 & unsupported入力」のターミナルで確認したところ、/devの下にはNICらしきものが見当たりませんでした。
lspciでは、有線LAN、無線LANとも機器情報は表示されました。
 ・03:00.00 Network controller: Intel Corporation
 ・04:01.00 Network controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/3139C+
有線NICはRealtekですか。 そうですすか...orz


【手順】
詳しくは下記の参考HPにて。
VMWareのサイトからISOイメージをダウンロード。
・isoファイルの中から、VMware-VMvisor-big-3.5.0_Update_2-110271.i386.dd のような*.ddファイルを取りだす。 (install.tgzのさらに奥にある)
・ddファイルをUSBメモリへ書き込む。 DD for Windowsを使用。
・USBをノートPCに差して起動。 BIOS設定(起動時にF2)で、USB HDDから起動できるようにする必要あり。(手元にあったBuffaloの4GBの奴は、USB KeyではなくUSB HDDとして認識されました)
・ESXiが立ち上がるので、rootパスワードとネットワークの設定を...出来ませんでした。


【VMWare ESXi 3.5 Update2 の場合】
起動はするが、NICが未対応。


【VMWare ESXi 3.5 Update4 の場合】
起動はするが、NICが未対応。


【VMWare ESXi 4 の場合】
起動直後のロード画面から進まない。 右下で処理中を示すテキストがクルクル回り続けて1時間...


【参考HP】
VMware ESXi3 wiki
USB メモリブートする VMware ESXi 3.5 を作成する
PC徒然草 VMWare ESXi 3.5 update 3 その2
VMware/ESXi
ノートPC に VMware ESXi インストール