Centos
Centos7にGitbucketをインストールする際、いろいろなページに描かれている内容をコピペするだけではイマイチうまくいかなかったのでメモ。

一言でいうとCentos7ではデフォルトでFirewalld(iptablesではない)が有効かされているため、
tomcatのポートに穴を開けてやらなくてはいけない。

というわけで行うことは以下

  • tomcat,apacheのインストール
  • gitbucketのインストール
  • 80,8009ポートの穴あけ(またはfirewalldの無効化)



関連キーワード(ユーザータグ):
サーバ
Centos

Centos
CentosにSSHログインすると、文字化けしてしまうことがある。
サーバ側のlocaleを修正しても改善しない場合は、OSXのターミナル設定を見直してみようというお話。

ついでに、自分の環境でよく使っているiTermでの設定も記載しておく。

根本的な原因は、端末側のターミナルクライアントが、端末側(つまりMac OSX側)の言語環境をサーバに送信。
サーバ側で読み込めないことにある。
ロケールを修正するために、サーバ側の設定をいじる対策もあるけれども、それだけでは治らないことがあります。

例えば、ログインごとに、

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): そのようなファイルやディレクトリはありません

であったり、

locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: LC_ALL?????????????????????: ??????????????????????
LANG=ja_JP.utf8
.
.
.
(以下略)


といった形でコンソール出力が文字化けする場合、以下の手順で設定を見直した方が良い。とおもう。

以下、OSX 標準コンソールの場合

「環境設定(コマンドキー + , )」> 「プロファイル」>「詳細設定」 から

以下の部分のチェックを外しておこう。

Profiles.jpg

関連キーワード(ユーザータグ):
サーバ
Centos
OSX
Mac

Centos

タイトルそのまま。
前回Centosのインストールを行った
こちらのページを参考に初期設定として、root宛のメールをGmailに転送しようとしたところ、かなり詰まったのでメモ。


Gmailへ転送しようとすると、以下のようなエラーとなり、まったくGmailに送信できなかった。
(より正確には、smtp.gmail.comへの認証がうまくいかなかった)


ちなみにGoogleアカウントは2段階認証しているため、
2段階認証がNGなのか、そもそもの設定がNGなのかの切り分けに苦労した。


エラーの一部を抜粋すると・・・



localhost sendmail[5062]: STARTTLS=client, relay=smtp.gmail.com, version=TLSv1/SSLv3, verify=FAIL, cipher=ECDHE-RSA-AES128-GCM-SHA256, bits=128/128

のあとに、

dsn=5.0.0, stat=Service unavailable
DSN: Service unavailable

や、

530-5.5.1 Authentication Required. Learn more at
530 5.5.1 https://support.google.com/mail/answer/14257
554 5.0.0 Service unavailable


といった内容。
ちなみに、上記のsupport.google.comの内容は、
パスワードあってる?といった内容のページだったりする。


最終的にうまくいった設定。


最終的にうまくいった設定から考えてみると、
参考にしたページで
設定していた、外部ファイル化した設定ファイルにstmp.gmail.com と、smtpサーバの設定を入れることが問題となった様子。
以下、順に設定を記載する。



CentOS_Project2.jpg

関連キーワード(ユーザータグ):
サーバ
Centos
gmail

Centos
Centos7は2014年6月のリリースから2年近くと、巷での情報や事例も増えてきたので
これまで利用してきたCentos6をアップデート(正確にはクリーンインストール)した。

ほぼ全てCUIで利用しているため、GUIを触るのは、セットアップ時のみ。
それでもCentos6で不便だったセットアップGUIがものすごくユーザフレンドリーになっていた。
とはいえ少しばかりセットアップで詰まったのでメモ。

CentOS_Project.jpg




関連キーワード(ユーザータグ):
仮想化
サーバ
Centos

Centos
VMWarePlayerをCentosにインストールして、WindowsXPを稼働させる

さらっと調べてみたら、逆のパターン
(Windows上で、Linuxを稼働させるために、VMWarePlayerをインストールする)はたくさんあったけれども、
逆のパターンがなかったので、自分メモを兼ねて。

VMWare Player はフリーの仮想化ソフト
一応ライセンス制限として、「自分でダウンロードすること」「自分で設定すること」といったことがあるようだけれども。

もともと、MacのVMWare Fusionを利用していたが、MacBookAirがメインマシンになってから、
Fusionを稼働させるためだけにMacMiniを立ち上げるのがめんどくさくなって、
常時稼動しているCentos Serverで立ち上げられないか、と考えてみた。

とりあえず、第一段階として、Linux用のVMWare Playerをダウンロード

※登録したメールアドレスにダウンロードリンクが送られてくる。

自分の環境にあったLinux用バイナリをダウンロードする。
自分の環境はAMDの64bitのため、x86_64Verをダウンロード。

ダウンロードしたファイルを実行する。
さすがにここからはCUI画面では実行不可のため、VNCサービスを立ち上げる。
こういう時、Macの画面共有は便利。
Finder から Command+K で vnc://サーバIP:ポート で接続。

ダウンロードしたバイナリファイルを実行すると、インストーラーが立ち上がる。
Centos 5.5 では特にいじる必要がなく、インストールできた。

PlayerInstall

つぎにWindowsの設定。
メディアさがして、新規インストールして、各種設定いれてで一日かかるなー。
(´・ω・`)
(´・ω・`)
(´・ω・`)
(´・ω・`)

・・・・VMWareの仮想環境は基本的に、vmx(コアデータ)と無数に分割されたデータファイル。
(「・ω・)「  >Fusionの仮想XPデータをCentosにインストールしたVMWarePlayerに取り込めばいけるんじゃない?


初期設定であれば、/Users/ユーザ名/Documents/仮想ディスク/仮想OS といったフォルダが仮想マシンのデータ。
これをフォルダ毎、サーバに転送。
VMWarePlayer側で、存在する仮想マシンを取り込む。







すんなり起動できた-。(*´∇`*)
WindowsXP


関連キーワード(ユーザータグ):
VMware
仮想化

Centos
Centosサーバ上にOSXLionで利用可能なTimeMachineサーバを組むには、以前に書いたが、困った問題がちょっとでてきたので備忘録。

1.複数のOSXで利用する場合。

マウントポイントを、AppleVolumes.defaultに箇条書きにした上で、
それぞれ他のMacからは自動マウントしない様に、パーティショングループを変更しておく。

2.パラレルズデスクトップのバックアップ。
「公式には、TimeMachineでバックアップしないで!
 復旧させても使えないよ!」
と書いてあったりするのだが、少なくとも、自分の環境では利用可能。

ただし、利用するたびに、パラレルズの仮想ディスク(?)をフルバックアップする為、
毎回60GB超のバックアップが開始される。

TimeMachineの除外フォルダに指定すれば、上記のような不必要なバックアップは取られないが、
別途外付けHDDなどにWIndowsの仮想ディスクを一定期間毎にバックアップする必要がある。

毎回、差分だけをTimeMachineに送るようなアップデートしてくれませんかねぇ・・・・。

Centos
以前にNASというか自宅サーバをSAMBA経由でTimeMachineにしたのに、
OSX Lionでは、SAMBA経由のTimeMachineがだめになってしまったので、設定しなおす。

ちょいと調べた結果、Nettalkが必要
以下、インストールした内容。
(環境はCentos 5.6サーバ、x64)

1.Berkeley DBのインストール
ダウンロードにはOracleへの登録が必要。
以前、OracleからSQLツールをダウンロードしたことがあったため、今回は不要であった。
登録するとSQLだとか、Javaだとかに関するメルマガが来るようになる(はず…ロクに目を通していないw)

ログイン認証が必要なため、Wgetではダウンロードできない。
(できるのかもしれないけれどやり方知らない)
なので、予めローカルでダウンロードしたファイルをサーバのtmpに上げておく。

コンパイル、インストール
#cd db-5.2.28
#./dist/configure
dist以下で.configure するとおもってたら、
distから出て、../dist/configureしろと怒られた。
#make
#make install

確認
# ls -l /usr/local/BerkeleyDB.5.2/
合計 16
drwxr-xr-x 2 root root 4096 7月 28 12:32 bin
drwxr-xr-x 16 root root 4096 7月 28 12:32 docs
drwxr-xr-x 2 root root 4096 7月 28 12:32 include
drwxr-xr-x 2 root root 4096 7月 28 12:32 lib

で、 libgcryptの確認。
LionからはOpenSSLの代わりに必要だとか。
聞いたことない名前なので、まずは調べる
# yum list | grep libgcrypt
libgcrypt.i386 1.4.4-5.el5 installed
libgcrypt.x86_64 1.4.4-5.el5 installed
libgcrypt-devel.x86_64 1.4.4-5.el5 installed
libgcrypt-devel.i386 1.4.4-5.el5 base
…はい、入ってるので無問題

無印libgcrypt-develも必要みたいなので、入れておく。
#yum install libgcrypt-devel

んで、Nettalkのインストール
・ソースのダウンロードと解凍
# cd /usr/local/src
# wget http://sourceforge.net/projects/netatalk/files/netatalk/2.2/netatalk-2.2.tar.gz
# tar zvxf netatalk-2.2

インストール
# ./configure --enable-redhat
#make
#make install

configure: error: Berkeley DB library required but not found!

と言われたので場所の指定

--with-bdb=/usr/local/BerkeleyDB.5.2

を付け足し。


…失敗
なぜだ?

8. Berkeley DB
Berkeley DB is a programmatic toolkit that provides fast, reliable,
scalable, and mission-critical database support to software
developers. BDB can downloaded from
http://www.oracle.com/database/berkeley-db/index.html
Netatalk’s CNID database uses the library and header files from BDB.
Currently, Netatalk supports BDB 4.6 and later.

とあるように、4.6以降なら問題はないようであるが。

と思ったら、BerkeleryDBをインストールするにはbuild_unix フォルダでないと行けなかったようだ
仕方ないので再度コンパイル、インストール

<割愛>

念のため、ライブラリを再読みこみさせておく。
#ldconfig

nettalkのディレクトリに戻って再度コンパイル
# ./configure --enable-redhat --with-bdb=/usr/local/BerkeleyDB.5.2
#make && make install

etc/netatalk のAppleVolumes.defaultを修正
179行目を
:DEFAULT: options:upriv,usedots cnidscheme:dbd dperm:0700 fperm:0600 ea:sys

189行目の

にマウントポジション ”Time Machine” option:™ を
例:/mnt/TM_HDD "Time Machine" options:tm

と変更。

コレ以外の設定は、Linuxをいじっている以上、あえて書かなくても良いと思うので割愛。
各種設定は個人の用途に合わせて設定すると思われるので、
また随時調べてください。

Centos
前回までのあらすじ。

朝起きたら、HDDからお別れのメッセージが届いていた。
あわてて帰った僕を待っていたのはいつもと変わらないHDDだった



で、smartctl --test=short
では何も出てこないので、
smartctl --test=long をしてみた。

※Short と Long の違いはわからない。
 簡易版と完全版って違いだとは思う。
 参考までに1TBのHDDでShort 120s Long 4h だった。

で、以下が結果。

# smartctl -l selftest /dev/sda
smartctl version 5.38 [x86_64-redhat-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Extended offline Completed without error 00% 3061 -
# 2 Extended offline Completed: read failure 80% 3053 486763296
# 3 Short offline Completed without error 00% 3052 -



1は、解消させたあとにやったLong の結果。
おそらく Extended offline がLong のテストを現しているんだとおもう。




# 2 Extended offline Completed: read failure 80% 3053 486763296

とでてきてしまった。

不良なセクタ LBA_of_first_error が  486763296
で、Unreadeなセクタが 1 
#fdisk -lu /dev/sda
( オプション l は領域テーブルリストを出力。
オプション u は、シリンダの代わりに、セクタユニットで出力)

この結果、 Startが 63 という結果になった。

ほんでもって公式。

b = (int)((L-S)*512/B)
where:
b = File System block number
B = File system block size in bytes
L = LBA of bad sector
S = Starting sector of partition as shown by fdisk -lu



Intなので、小数点以下は切り捨て。
この結果が、60845404

ちなみにパーティションのブロックサイズは、
#tune2fs -l /dev/sda | grep Block
で調べられる。
ここで、4096という数値がでたので、


dd if=/dev/zero of=/dev/sda1 bs=4096 count=1 seek=60845404
で埋めてやります。
( オプション bs が 入出力のブロックサイズを指定する。
 オプション count がコピーするブロック数を指定、
 オプション seek が出力の開始位置を指定されたブロックからにする。
/dev/zero は説明するまでもないけれどもNullを指定するために利用。)

で、最後にもう一度Longテストをしてみて、エラーが消えたことを確認。
…でもそのうちにHDD交換するかなぁ。

Centos
出勤中にやけに気になるメールに気がついた。

This email was generated by the smartd daemon running on:

host name: ********
DNS domain: ****
NIS domain: (none)

The following warning/error was logged by the smartd daemon:

Device: /dev/sda, 1 Currently unreadable (pending) sectors

For details see host's SYSLOG (default: /var/log/messages).

You can also use the smartctl utility for further investigation.
No additional email messages about this problem will be sent.




ひぃぃぃぃ。

とりあえず帰宅してから、

smartctl --test=short /dev/sda



を試す。

2分まてと言われたので、2分待って結果をみる。

$smartctl -l selftest /dev/sda
smartctl version 5.38 [x86_64-redhat-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Completed without error 00% 3052 -



…おや?

そしてさらにこっちではエラーがないとでてるにもかかわらず、
その後の時間でログに記録される 1 Currently unreadable (pending) sectors  。。。。

なんぞ?

Centos
4月の初め頃からやたらとSambaの共有フォルダに書き込みエラーが出る様になった。
しばらく時間がなかったし、たまに書き込めるファイルもあったりしたのででっきりHDDの寿命とかだと思って放置していた。

時間があったので色々調べてもHDDの以上ではないみたいだし、再起動してもなおらないし、
そういえばクライアント側でUpdateしてから異常がではじめたなとおもって調べたらいきなりヒットした。
元記事はこちら

正直長いので最後まで読んでいられない(笑
ページ大すぎ。一覧表示しても追いかけているのがめんどくさい。

なので、もう一度探したらあっさりとみつかった。
こちら
とりあえずはこれで様子見。
何とかなりそうな予感。

と、いうよりたまにエラーコード36がでてくるからたちが悪い。
ずっとこっちのせいだとおもっていたし。。。

Centos
時間ができたので前々から放置していたDBのUTF8(Unicode)化をしてみた。

それまで組み込んでいたperlスクリプト、webとの連動のphpもutf8化する必要があったので、
かなり億劫に感じていたのだが、少し調べた所nkfというコマンドがある事を知った。

例えば、今回行った EUC文字コード(postgresql)からUTF8化するとき、
#nkf -Ew 'inputfilename' > 'outputfilename'.txt
といった具合に "-Ew"オプション(E=eucと仮定して読み込み、w=utf8として変換)で良い。

当初、'inputfilename'と'outputfilename'を同じファイルにしてしまえば良いやー。
と思って直接書き換えようとしていたら、空のファイルが作成されるだけになった。

念のため、ディレクトリ毎バックアップとっといてよかったー。

そんなわけでいったん適当なテキストファイルにして、その後mvコマンドなり、cpで上書きなりすると良い。

DBの方はpg_dumpallのコマンドを使うと良い。

その後はうまくいったのだが、DBにデータを格納する段階で
なぜかsyntax errorが頻発

結論として見落としていたのは、
Jcodeの存在。
元々格納する為のxmlデータはutf8を前提にしていたので、
スクリプトで utf8->eucに変換していた。

その事を忘れていたため、
utf8のDBに、eucコーディングのデータを入れようとしていた。

その事に気がつくまでにしばらくかかった。

同様にphpでのweb出力画面も、一部meta以外に書き換えをする必要のある物が存在する。
その事に注意。

*番外
osx用のlocalizedファイルは、中に.localizedフォルダがあり、その中のja.stringsの中に書き込まれた文字をファイル名として表示する。

そのため、osxのデフォのフォルダ
'Documents'等は日本語を優先にすると'書類'として表示される。

これをうまく使うと、色々と素敵なことになる。