Author Archives: もんま

RHEL subscription-managerで登録できないの巻(解決)

RHEL7.3で新規にサーバをインストールすると困った事象が起きる話。OSをインストールした後にはsubscription-managerでregisterしてあげないといけないのですが、なぜか失敗してしまいます。下記のようなメッセージが出てしまいます。

# subscription-manager register
登録中: subscription.rhsm.redhat.com:443/subscription
ユーザー名: some-user-name
パスワード: *********
最初に Red Hat の諸条件に同意する必要があります。https://www.redhat.com/wapps/ugc へ進んで下さい。条件を確認するには、カスタマーポータルから一旦ログアウトして、 再度ログインする必要があります。

RedHatの諸条件にはとっくに同意している(はず)ですし、このメッセージで表示されるURLにアクセスしてみても何かに同意せよっていうアクションを求められることはないんです。「最初に Red Hat の諸条件に同意する必要があります」のメッセージで検索をしてみてもなにも出てきませんし。そこで、ロカールを英語に切り替えてみたところ、下記のメッセージとなりました。

# export LANG=C
# subscription-manager register –username some-user-name –password *********
Registering to: subscription.rhsm.redhat.com:443/subscription
You must first accept Red Hat’s Terms and conditions. Please visit https://www.redhat.com/wapps/ugc . You may have to log out of and back into the Customer Portal in order to see the terms.

↑で表示されるメッセージで検索したところ、ごく最近のErrataということのようです。(要RHELログイン)
https://access.redhat.com/solutions/2387831
回避策としては、現在のところ、このページに記載のURLに直接アクセスして、同意せよ!ということでした。
その後はマニュアル通りにregisterして、subscribeすることができます。

 

LimeSurvey日本語版をPHP7.1で動かすの巻。

LimeSurveyというアンケートツールがあるのですが、これを日本語化している素晴らしい会社さんがあります。ホント大感謝です。

さて、 https://www.d-ip.jp/limesurvey/download-ls/download1/ で公開されている「LimeSurvey2.64plus日本語対応版」(limesurvey2.64.6+170332_ja_dip.tar.gz)なのですが、PHP7.1.5+opcache環境では管理機能の「プラグインマネージャ」をクリックした瞬間にCPUが100%に張り付いてタイムアウトしてしまいます。これは本アプリケーションで使用されているHTMLPurifierというライブラリがopcacheのバグを踏んでしまっているようです。

そのままの状態ではopcache自体を無効にするか、
(limesurvey-install-dir)/framework/vendors/htmlpurifier/HTMLPurifier.standalone.php
をopcacheのblacklistに追加すると動作するのですが折角ですからソースを修正して対応しておきたいものです。

https://github.com/ezyang/htmlpurifier/issues/134
によると
https://github.com/Xiphin/htmlpurifier/commit/cb4871f4464659918e0c59b914d359a8874ea62a
https://github.com/Xiphin/htmlpurifier/commit/b9bc1039da7b5f49336580bf6d08499199b7309f
でパッチが提示されていますので、これを参考に修正してみます。Good job, Xiphin!

$ diff HTMLPurifier.standalone.php.20170608 HTMLPurifier.standalone.php
14332c14332,14334
< $current_li = false;
---
> // 20170608 to workaround PHP7 bug
> // $current_li = false;
> $current_li = new stdClass();
14353c14355,14358
< if ($current_li === false) {
---
>
> // 20170608 to workaround PHP7 bug
> // if ($current_li === false) {
> if (get_class($current_li) === "stdClass") {

修正済みファイルはここからどうぞ

ちなみにここで配布されているプラグインのうち、「お知らせ表示プラグインパッケージ」(Infomation_plugin_dip_20160714.tar.gz)についてはインストールするとcliで起動したときにFATAL Errorとなってしまいますので当方の環境では外しています。

念の為:今回の環境はAmazon Linux(4.9.27-14.31.amzn1.x86_64)上で、
php71-1.0-1.el6.remi.x86_64
php71-php-fpm-7.1.5-1.el6.remi.x86_64
php71-php-opcache-7.1.5-1.el6.remi.x86_64
httpd24-2.4.25-1.68.amzn1.x86_64
という感じです。

Amandaでさくらのオブジェクトストレージにバックアップを取得する(CentOS6)

amanda-backup_server-3.4.4-1.rhel6.x86_64.rpmではS3にバックアップを置くことができます。
本物のS3だと問題なく動作するのですが、さくらのオブジェクトストレージではBad Requestが
発生してまともに動きません。S3の互換実装だとこのようなことが起こるようでして、解決するには
curlのライブラリを入れ替えなくてはいけません。再ビルドするのは面倒なので、LD_PRELOADで解決します。

curlの最新版を/usr/local/にインストールする。
/etc/xinetd.d/amandaserver を以下のように修正する
 service amanda
 {
 disable = no
 flags = IPv4
 socket_type = stream
 protocol = tcp
 wait = no
 user = amandabackup
 group = disk
 groups = yes
 # server = /usr/libexec/amanda/amandad
 server = /usr/local/sbin/amandad-hooked
 server_args = -auth=bsdtcp amdump amindexd amidxtaped senddiscover
 }
/usr/local/sbin/amandad-hooked は以下の通りとする
 #!/bin/sh
 export LD_PRELOAD=/usr/local/lib/libcurl.so.4
 /usr/libexec/amanda/amandad $*
amandaのコマンドを実行する環境でも
 export LD_PRELOAD=/usr/local/lib/libcurl.so.4
 を設定しておく。

Amazon Linuxでphp5.2.17

AMAZON LinuxでPHP-5.2.17をビルドするときにエラーが出るときは、phpのソースにパッチを当てる必要があります。

https://code.google.com/archive/p/php52-backports/issues/16

から「libxml29_compat.patch」をもらってきて当ててください。
patch -p1 < libxml29_compat.patch
としてもパッチ当てるファイルはどれって聞いてきますので、それぞれ ext/dom/node.c ext/dom/documenttype.c ext/simplexml/simplexml.c を入力してください。

— ext/dom/node.c 2012-08-06 17:49:48.826716692 +0800
+++ ext/dom/node.c 2012-08-06 17:52:47.633484660 +0800
@@ -1895,9 +1895,17 @@ static void dom_canonicalization(INTERNA
RETVAL_FALSE;
} else {
if (mode == 0) {
+#ifdef LIBXML2_NEW_BUFFER
+ ret = xmlOutputBufferGetSize(buf);
+#else
ret = buf->buffer->use;
+#endif
if (ret > 0) {
+#ifdef LIBXML2_NEW_BUFFER
+ RETVAL_STRINGL((char *) xmlOutputBufferGetContent(buf), ret, 1);
+#else
RETVAL_STRINGL((char *) buf->buffer->content, ret, 1);
+#endif
} else {
RETVAL_EMPTY_STRING();
}
— ext/dom/documenttype.c 2012-08-06 18:02:16.019640870 +0800
+++ ext/dom/documenttype.c 2012-08-06 18:06:16.612228905 +0800
@@ -205,7 +205,13 @@ int dom_documenttype_internal_subset_rea
if (buff != NULL) {
xmlNodeDumpOutput (buff, NULL, (xmlNodePtr) intsubset, 0, 0, NULL);
xmlOutputBufferFlush(buff);
+
+#ifdef LIBXML2_NEW_BUFFER
+ ZVAL_STRINGL(*retval, xmlOutputBufferGetContent(buff),
+ xmlOutputBufferGetSize(buff), 1);
+#else
ZVAL_STRINGL(*retval, buff->buffer->content, buff->buffer->use, 1);
+#endif
(void)xmlOutputBufferClose(buff);
return SUCCESS;
}
— ext/simplexml/simplexml.c 2012-08-06 18:10:44.621017026 +0800
+++ ext/simplexml/simplexml.c 2012-08-06 18:12:48.016270419 +0800
@@ -1417,7 +1417,12 @@ SXE_METHOD(asXML)

xmlNodeDumpOutput(outbuf, (xmlDocPtr) sxe->document->ptr, node, 0, 0, ((xmlDocPtr) sxe->document->ptr)->encoding);
xmlOutputBufferFlush(outbuf);
+#ifdef LIBXML2_NEW_BUFFER
+ RETVAL_STRINGL((char *)xmlOutputBufferGetContent(outbuf),
+ xmlOutputBufferGetSize(outbuf), 1);
+#else
RETVAL_STRINGL((char *)outbuf->buffer->content, outbuf->buffer->use, 1);
+#endif
xmlOutputBufferClose(outbuf);
}
} else {

Vostro 1000でWindows10

DELLのVostro 1000でWindows10にアップグレードしようとすると、OS本体はうまくインストールできていいのですが、ATI Radeon Xpress 1150のドライバが無いためMicrosoftベーシックドライバになってしまいます。そうすると1024×768の解像度でしか表示できないため著しくイマイチです。

Windows10ではWDMのディスプレイドライバが必要なのですが、AMDのサイトからVista用のドライバをダウンロードしてきてもうまくインストールできませんでした。

いろいろと検索した所
http://www.tenforums.com/graphic-cards/14578-ati-radeon-xpress-1100-driver.html
にあるように、Microsoft Update Catalogにアクセスし、Radeon 2100用のドライバを入手したところ、きちんとした解像度(1280×800)で表示されたので問題解決。素晴らしい!

Microsoft Update Catalogはこちら
http://catalog.update.microsoft.com/v7/site/Home.aspx

virtualminのmailmanで日本語対応をする。

Virtualminにmailmanモジュールを導入すると、日本語が盛大に化けて表示されてしまいます。というのも、mailman自体はeucで表示するようになってますが、virtualminの世界はutf-8なのでうまくいかないというわけです。そこで、mailmanからの表示だけでもutf-8になるように細工をしました。

1)
/usr/libexec/webmin/virtualmin-mailman/unauthenticated 配下の
*.cgiファイルでそれぞれ
close(CGI);
となっているところの下に
$headers =~ s/euc-jp/utf-8/;
と1行追加する。
これは、mailmanのcgiが
Content-Type: text/html; charset=euc-jp
を出力するようになっている実装への対策です。VirtualminのラッパーCGIに細工をするよりかは元のmailmanを修正したほうがスジが良い話なのでしょうが….

2)
/usr/lib/mailman/templates/ja 配下の
各ファイルをEUC-JPからUTF-8に変換する。
※もしかしたら *.txtファイルはEUC-JPのままがいいかもしれない。

※Virtualmin自体の日本語化は
http://tokyocook.jugem.jp/?eid=1 で参照されている
http://daemon.plala.jp/~meke/files/virtualmin/
から取ったファイルをiconvを使い、utf-8に変換して導入しています。

Apache 2 / Digest認証で(多少)ハマるの巻

http://www.atmarkit.co.jp/flinux/rensai/linuxtips/699apachedigest.html

を参照しながらお客さんのサーバにDigest認証を設定するがうまくいかない。結局下記のような設定となりました。

<VirtualHost *:80>

DocumentRoot “/home/foo/sites/bar/htdocs”
ServerName www.example.com

<Directory “/home/foo/sites/bar/htdocs”>

Options -Indexes FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all

</Directory>

<Directory “/home/foo/sites/bar/htdocs/digest.test”>

AuthType Digest
AuthName “Secret_Zone”
AuthDigestDomain /digest.test/
AuthUserFile /etc/httpd/htdigest_pass
Require valid-user

</Directory>

</VirtualHost>

 

うまく行かなかったのはAuthDigestFileをAuthUserFileにすることと、Requireの後をvaliduserにすること(valid_userじゃないよ!)。

ちなみに環境はCentOS5です。

pfSenseでCDから起動できない場合

pfSense 2.2 をCD-ROMから起動した時、
http://blog.stefcho.eu/upgrade-from-pfsense-2-1-5-to-2-2-on-hyper-v/
のサイトにあるように
Mounting ufs:/dev/hogehoge  failed with error 19. って出ちゃう場合。
minirootのプロンプトから
minroot> cd9660:cd0

とするとブートできるかも。ブートデバイスがわからない時は “?” コマンドでデバイスの一覧が出ます。
CD-ROMからブートしているのであればファイルシステムはcd9660です。

また、ハードディスクにインストールするときはEasy InstallよりもCustom Installのほうがうまく導入できるみたいです。
一度Easy Installでインストールすることはできたのですが、bootに失敗して再起動を繰り返す状況となってしまいました。

E-Mail Outgoing Serverの設定

F-RevoCRMやVTigerCRMをインストールすると、当然にしてメールを送りたくなるわけですが、
https://wiki.vtiger.com/vtiger6/index.php/Outgoing_Server
ここの設定を見てもよくわからない。Googleで vtiger outgoing server not working などで検索しても「俺は動いたよ」「動かねえ。助けれ」みたいなのばっかりですよね。

具体的には下記の画面が出る状況です。

スクリーンショット 2015-03-24 13.02.24

サーバ名: localhost (127.0.0.1 とかlocalhost.localdomain)
ユーザ名: username
パスワード: password
メール送信者: (空欄)
認証を行う: (チェックなし/あり)

などとしても、エラーメッセージが出てしまいます。

メールサーバからメールの送信を行いたいときには、非常に紛らわしいのですが、認証を行う・行わないにかかわらず、そのメールサーバでsmtp-authができるようになっている必要があります。その上で、

サーバ名: localhost (127.0.0.1 とかlocalhost.localdomain)
ユーザ名: username@sub.domain (smtp-authで設定した認証ユーザ名)
パスワード: password (上記ユーザ名のパスワード)
メール送信者: (空欄)
認証を行う: (チェックなし/あり)

 

を入力してあげてください。

SMTP-AuthをPostfixに設定するには、
http://kajuhome.com/postfix.shtml
を参考にするとよいでしょう。
※設定ができなくてお困りの時は有償にて設定承ります