「Linux」カテゴリーアーカイブ

Linux関連情報

Log4cppでログファイルをローテーションする

プログラム開発でログの出力を行いたいと思います。
今回はC++のプログラムで実装してみます。

まず、なんで今更Log4cppについて記述しようと思ったか説明します。
log4cppのサンプルや記述はネット検索ですぐに見つかります。
でも、上位で検索されたサンプルには間違いがそのまま残されていて、実際に動かしてみるとローテーションは行われませんでした。
また、注意深く見てみると、設定のパラメタすら間違ったままになっているのです。
私は、そのWebサイトの間違いに過去引っかかり、無駄な時間を費やしました。なので、そんな無駄な時間を今後費やすことのないように、ここに記述します。
そちらのサイトを批判するつもりはありませんので、当該サイトのURL等については記述しません。
なお、ここの記載内容に間違いがあった場合には、お手数ですがご指摘して頂けますようお願いします。
こちらのサイトを参考にされる方には、コメント欄に指摘されている内容も含め参考にされることを期待します。
なるべく、修正は行っていくつもりですが・・・将来のことなので、ご注意ください。また、Web上の情報は参考情報です。ご利用に際しては、ご自身の責任でご利用ください。

環境

今回実装を試したのは以下の環境です。

OS:CentOS 7.4
gcc バージョン 4.8.5

 

パッケージインストール

 

プログラム

 

設定

ファイルサイズを102400バイトまでとする。
ログは最大8世代まで残す。

ざっとこんな感じ。

コンパイルは以下のコマンドで行う。

 

CentOS 7 NTP設定・・・ちょっと待て!?

こんな感じではじまった

CentOS 7で時刻同期を行おうとNTPの設定を行った。
デフォルトでインストールされているだろうと思い込んで進んだのだが、ntpdが無いではないか!?

そんじゃ・・・ということでyumにお願いしてインストールしてsystemctlをstartとenableやって、ntpqコマンドで動作確認。。。。おっ!動いた!OK(^^♪

と思ったよ!!俺でもこれくらいは出来るぞ!と、思ったよ!

しばらくして、マシンの再起動なんかもして、翌日ntpqで時刻同期はどうなってるかなぁ~なんて、楽しみに見てみたら・・・・

あれ?動いてない?systemctl enable ntpdを忘れてたの?
と再度実行して、再起動してみたものの同じ現象やん!?

やばい!いつも簡単な設定だから適当決め込んでいたのだが、不味い!!((((;゚Д゚))))ガクガクブルブル

ググったら出てきた。CentOS 7からntpdは標準ではなく、代わりにChronydが標準になったのが原因だった。
当然、デフォルトで設定されてたよw

と言うことで本題!

でもって、/etc/chrony.confを開いて以下の部分を適当に変更。

不要なサーバ設定を削除して、必要なサーバを指定(IPは適当なものに置き換えてください)して、再起動したらOKでした。

こんな感じで再起動

ちなみに、

確認はやらなくちゃ!

更に確認方法は・・・

こんな感じで表示されたらOKらしい。(表示されているのはデフォルトの状態で試した時です。)

ほんま焦りますわ(^^♪

ついでにちょっとだけコメント

ちなみに、サーバとして動作させるには、/etc/chrony.confの以下の部分を設定してあげる必要があります。

allowする相手のネットワークを必要に応じて記載することが必要です。

サーバとして動作させる必要が無ければ、この状態でOKです。

ちにみに設定変更を行ったら、サービスの再起動を行うこと!

自動機能もデフォルトで設定されている様ですが、どうしてもやりたい人は、systemctl enableで実施してください。

chronydは嫌だぁ~!って人は、chronydをdisableしてntpdを設定してあげれば良いそうです。

 

独自コマンドのサービス登録(CentOS 7)

今回は、CentOS 7上で自分で作ったプログラムをサービスとして登録する方法について説明します。

CentOS 6までとは管理の方法が異なっているため、ご注意ください。

環境はCentOS 7です。

今回のお題は

独自に作成した常駐プログラムをサービスとして登録します。
仮に、dummyというプログラムをサービスとして登録します。
dummyプログラムは単体で動作する時、常に動作状態を維持し障害や何らかの人為的操作以外で停止することが無いプログラムであると仮定します。
なんか難しく書きましたが、要は異常がない限り動き続けるプログラムを準備します。
それをサービスとして登録します。

サービス登録内容の記述

サービス登録を行うためには、設定内容をファイルに記述する必要があります。
そのファイルは以下のフォルダーへ保存します。

試しにdummyプログラムをサービスとして登録する場合の記述内容を以下に記します。

[Unit]ではこのサービスに関する説明を記しています。
Descriptionで簡単な名前を登録します。

[Service]では、以下の内容を登録しています。
Restart:always・・・サービスが停止していた場合に自動的に再起動を行います。
StartLimitInterval=60・・・①
StartLimitBurst=5・・・・・②

StartLimitInterval中にStartLimitBurst回の再起動を試みますが、それが失敗した場合には、次のStartLimitInterva時間は再起動を試みません。という設定になります。

PIDFileはPIDを出力する先を示しています。
ExecStartはコマンドの起動方法です。
ExecStopはコマンドの終了方法です。

[Install]
WanterByでは、OSの起動のセッションを指定しています。
multi-user.targetはinit 3の起動時に相当します。
他にgraphical-user.targetなどを指定することが可能です。
multi-user.targetを指定した場合、graphical-user.target時にも起動されます。これは、graphical-user.targetがmulti-user.targeをベースにしているためです

上記の設定では、プロセスが起動できない状態が発生した場合、永遠に再起動が繰り返されることになります。

また、プロセスがゴースト(defunct)になってしまった場合に、プロセス自体が残るため再起動が行われない可能性が残ります。
そういう意味では、少し問題を抱えていると思っても良いでしょう。

この解決方法については、別途説明したいと思います。

サービスの起動と終了

サービスを起動するには、通常通り以下のコマンドでサービスを起動します。

終了させるには、以下のコマンドです。

startもstopも基本的に何もエコーバックされてこないのでstatusで確認を取るのが賢明でしょう。

startさせた後に、OS起動時の登録を行う場合には以下のコマンドを実行してください。

disableすれば起動時の登録は解除されます。

課題

Systemdで登録したサービスの再起動には、先に述べた通り、プロセスがゴースト化してしまったり、何らかの異常が発生して実際の動作を行っていない場合の対処法がありません。
そんな時には、サービスとしての登録だけは行い、monitなどのプロセス監視を併用すると良いかと思います。

次回は、このDummyサービスをmonitを併用したプロセスの自動再起動をやってみようと思います。

 

QTiles/QMetaTiles Pluginで作成したタイル画像の要らない部分を削除する

QGISでタイル作成したタイル画像で不要なタイル画像を削除する方法をまとめました。
透過のみのタイル画像というよりも、1カラーだけのタイル画像を削除する方法になっています。
厳密に透過画像のみを削除したい場合には、identifyの出力内容を調整する必要があります。

QGISで簡単にタイル画像を作成しようと思って、QTilesやQMetaTilesプラグインでタイルを作成したまでは良かった。

おぉ~!タイル画像が出来てるではないか!!

と、意気揚々で「次はこれ作ってぇ~!」とかお願いしていたら・・・・
やたら時間は掛かるんだけどねw

で、しばらくお願いして放置していたら・・・

「なんかエラーが出て、出来ません。」との連絡が。

なんで?

見てみると、ディスクがパンパン(爆)

よく見ると、タイル画像が重すぎて一杯やないですか!

でも部分的に削除すると言っても・・・・と悩みながらも、透過しているだけのタイル画像は必要ないわなw

どうやって判定しようかなぁ?

ちょうど、そのWindowsマシンには下記のツールが入っていた。

  • ImageMagick
    Linuxで画像弄るなら必須アイテム。Windows版も当然ある。
  • Gow
    Linux風のコマンドを使えるようにするツール。

で、使ったのがこんなコマンド

identify

今回扱った画像には以下の条件がある。

①PNG画像
②1つのタイル画像に含まれる色は、対象物があった場合は2色以上になる。
③対象物が無い場合は透過のみとなるため、1色のみになる。

上記を整理すると、「単色のpng画像は不要」ということになる。

で、どうやってそのリストを作って削除するか・・・・

まずはWindowsでやってみた。
以下のバッチファイルを準備する。

Gowを入れると、xargsやsedなどLinux標準のコマンド類が使える様になります。sedのみを使いました。
xargsを使って渡せば簡単じゃないか!と思われますが、これがWindows側の「|(パイプ)」とxargsの相性が悪く、受け渡す標準出力を溜めこんでします様です。
その為、大量のファイルを扱う場合には、ファイルのパスがバッファに積まてしまいエラーが発生するという問題を解決出来ませんでした。

使い方はこんな感じです。

タイル画像のあるフォルダーの根元に移動してから、この以下のコマンドを実行します。

①で削除対象ファイルの削除用コマンドをrun_del.batファイルへ書き出します。
それを②で実行する。

それだけですw

せっかくここまで読んで頂いたのに済みませんが、時間にメッチャ余裕のある方や、タイルファイル数がそれ程多くない方はこれでも全然OKです。
でも、タイル数が数十万とか数百万とかになってくると、Windowsのコマンドプロンプトは使い物になりません。
Power Shellを使え?とか言わないでください。信用してませんからw

で、仕方が無いのでLinuxにファイルをコピーしてから同じことをLinux上で実施して、結果をダウンロードしてくることにしました。

下手すりゃ、ファイル共有掛けて実行してもそこそこLinuxの方が速いかも知れないのですが・・・・

確実に速かったのでこれにした。

まずは、全てのファイルを圧縮しようと思うのですが、7zを使いました。

とは言え、数百万ファイルのファイルを圧縮するには相当な時間が掛かりますし、纏まったファイルの容量もデカくて取り扱いが不便です。
こまめに分けました。

それぞれのフォルダー毎に圧縮ファイルを作成します。

これでフォルダー単位の圧縮ファイルが作成されます。

圧縮ファイルをLinuxに転送します。

転送したファイルを今度はLinux上で解凍します。

次に、以下のコマンドで透過(1つのカラーだけ)のファイルを削除します。

Windows環境でやる何倍も速く実行できます。

 

 

 

OpenSceneGraph コンパイルエラー jas_math.h

OpenSceneGraphのコンパイル中にエラーが発生した。

エラー内容は以下の通り

調べてみると、どうも/usr/include/jasper/jas_math.hに問題があるらしい。

jas_math.hファイルを一部修正することで解決するらしい。

修正内容は以下の通り。

89行目あたりの以下の部分を修正する。

こちらが修正前

こちらが修正後

 

これでコンパイルが通るようになった。

焦った〜(^^;

OpenSceneGraph インストールのyumまとめ!

OpenSceneGraphのインストールで各種パッケージをインストールするのは大変です。
対象OSはCentOS 7です。

一つ一つパッケージを確認しながらインストールしていると、何時間掛かることでしょう?

ということで、私がインストールしたyumコマンドを以下に記録しておきます。

まとめてインストールする手順を以下に記します。
前提として、gccやqtが入っていることとしますが、入っていない人のためにこんな感じです。

epel リポジトリをインストールします。

つづいてnux-dextopをインストールします。
ffmpeg関連のインストールを行うための下準備です。

そして最後に以下のコマンドで一気にパッケージをインストールします。
個人個人の好みに合わせてインストール対象を調整してください。

概ね必要そうなライブラリは全てインストールしたつもりです。

これで大分楽になるはず!

あとは、OpenSeceneGraphのソースをダウンロードして、通常どおりにコンパイルとかやれば概ね大丈夫でしょう!

では、ソースをダウンロードします。
今回は、Stable Releaseを利用します。
下記URLでダウンロードします。

http://www.openscenegraph.org/index.php/download-section/stable-releases

gitでインストールするなら、適当なディレクトリへ移動してから以下のコマンドを実行します。今回は、/homeで作業を行うことを前提にします。(cd /home で移動してください)

これで/home/OpenSceneGraphが出来上がっています。
ccmake-guiを起動します。

ccmake-gui画面で、「Configure」やって「Generate」を行います。
※エラー内容には注意すること。
※EXSAMPLEを必要とする場合には「BUILD_OSG_EXAMPLES」をチェックすることを忘れずに。

これで準備は完了!山は越えました!!
構築に入ります。

これで構築は完了しました。
データなどを揃えてお試しください。

足りないライブラリとかパッケージがあれば、どなたかコメントしてください。

このコマンドを書き換えて楽になりたいです(^^;

インストールの詳細は以前に書いた下記の内容をご確認下さい。

OpenSceneGraphをLinuxへインストールする。

OpenSceneGraphをLinuxへインストールする。(2回目)

 

 

CentOS 7におけるrsyslogの設定

CentOS 7をサーバとして、rsyslogでルータのログを残したいと思います。

/etc/sysconfig/rsyslogの設定は必要ありませんでした。
/etc/sysconfig/rsyslogの設定は、syslogd(「r」がない古い)の設定でありrsyslogdの設定ではありませんので、不要ということに気が付きました。
/etc/sysconfig/rsyslogを以下の様に編集しました。

続いて、/etc/rsyslog.confを以下の様に編集しました。

15-16行目:UDPでの受信を有効にするために、コメントを外します。
54-55行目:/evar/log/messagesへそのままログが書き込まれない様に設定する。
*.info;mail.none;authpriv.none;cron.none;local1.none /var/log/messages
この行の「local1.none」が影響するのだが、ファシリティの値が何になっているのか確認する必要がある。
ファシリティが解っていないと、情報を指定できない。
今回使用したルータはBuffaloのBHR-4GRVだったので、この値になっている。(http://buffalo.jp/php/lqa.php?id=BUF6516)
76-77行目:ログの出力先を設定する。

取りあえず、rsyslogの設定は完了したので、設定を有効にするためにrsyslogを再起動する。

※なぜか、「rsyslogd」ではなく「rsyslog」(最後に「d」が付かない)であることに注意!
ホンマに再起動しているんか?という感じで返ってくるので、心配な方はrebootしちゃってくださいw

ここまでで、rsyslogの設定は完了なのですが、届かない・・・・(TT)

なんでだろう?

ということで、ファイアウォールで止められていました(^^ゞ
/etc/sysconfig/iptablesに以下の1行を追加してください。

その後、iptablesを再起動します。

これで、ログが残る様になったはずです。

でも。。。。このままだと、ログが延々と同じファイルに書き込まれるのですわ( ;∀;)

ログのローテーションを行うには、、、、多分これで行けるはず!
/etc/logrotate.d/syslogに以下の1行を適当に追加!

どうや!?

しばらくしたら結果が解るだろう?

ということで、後は皆さん信じて待つのみです!

Raspberry Pi 3にCentOS 7を入れてみた時にやったこと

Raspberry Pi 3 Model Bをamazonで購入しました。
https://www.amazon.co.jp/gp/product/B01CSFZ4JG/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1

使える様になるまでの手順をまとめておきたいと思います。

準備

 

製品はケースに搭載された状態で送られてきます。
プライム会員だったので、夕方ぐらいに注文して翌日午前中には届きました(^^♪

必要な物を確認してみました。
①USBキーボード
②USBマウス
③HDMIケーブル
④HDMI対応ディスプレイ
⑤電源ケーブル(Micro USB Bコネクタ)
⑥電源 DC 5V 2A以上で良さそう。
2.5Aと書かれている日本語サイトもあったのですが、下記に記した公式ホームページを見る限り2Aになっていました。
ご家庭で余ったACアダプタを探せば一つぐらいは見つかるのではないかと思いますw
⑦Micro SDカード(8GB以上)
古いガラケーのMicro SDメモリを・・・と思ったのですが、容量が少なすぎました(^^ゞ

詳しくは公式ホームページを参照してみてください。
https://www.raspberrypi.org/learning/hardware-guide/

私は結局のところ⑦のMicro SDカードを購入しました。
8GBだと心許無いので16GBの製品にしました。

ディスプレイは取りあえずテレビでも大丈夫!一時的に使用するなら、パソコンのディスプレイでも良いと思います。

ハードウェアの準備はこれで終わりです。

次に準備したSDカードへOSをインストールしてあげる必要があります。
OSをインストールするには、Windows/Linux/Macなどが入ったパソコンが必要となります。
また、Micro SDカードを扱える環境が必要です。

OSとしてNOOBSやRASPBIANを用いるのが一般的なのだそうです。
でも、色々と理由がありまして、CentOSを入れることにしました。

CentOS 7をインストールしましたが、一応は正常に起動しています。
すこぶる速く起動してくれます。
小規模なWebサーバレベルであれば、十分なスペックではないかと思います。
一度評価してみようと思います。

インストール方法

CentOS 7をインストールします。

Raspberry PiにOSをインストールするには、まずパソコンなどでMicro SDメモリ(以下「SDメモリ」と称す)へOSを書き込んであげる必要があります。
SDメモリへOSを書き込むためには、「DD for Windows」というツールを使用します。
それと当然ですが、書き込むOS本体もダウンロードします。

こちらのサイトからDD for Windowsをダウンロードします。
http://www.si-linux.co.jp/techinfo/index.php?DD%20for%20Windows#s74c46f6

DD for Windows自体はインストールする必要はなく、適当なフォルダーで解凍したらそのまま使えます。ただし、管理者モードで起動する必要があります。(後でも書きますので、今はダウンロードしたファイルを適当なフォルダーへ解凍するまでにしてください。)

次に、CentOS 7の本体をダウンロードします。
こちらのサイトからダウンロードします。
https://buildlogs.centos.org/centos/7/isos/armhfp/

以下のファイルをダウンロードしました。
CentOS-Userland-7-armv7hl-Minimal-1611-test-RaspberryPi3.img.xz
(ここから直接ダウンロードすることも可能ですが、最新版が出ているかも知れませんので、サイトで確認してください。)

ダウンロードした.xzファイルは7zipを使えば簡単に解凍することが出来ます。
他の解凍ツールは試していません。

ここまで準備が出来たら、パソコンにSDメモリを差し込みます!

ここからが本番です。

DD for Windowsを右クリック→「管理者として実行」を選択し起動します。

対象ディスクとしてSDメモリを指定します。
「ファイル選択」をクリックして、先程ダウンロードしたCentOSの.imgファイルを指定します。
「ファイル選択」で表示される画面では、「*.ddi」ファイルしかデフォルトでは表示してくれない状態になっています。
「All files(*.*)」にして対象ファイルを指定してください。

後は、「書込」をクリックすればSDメモリへOSが書き込まれます。

私は、16GBと32GBのSDメモリへ実装してみたのですが、書き込むファイルサイズに対してSDメモリの容量が多いとメッセージが表示されますが構わず続行します。

書き込みが完了すると、SDメモリの空き部分をドライブと認識しようとするメッセージがWindows側で表示されますが、ドライブとは認識させずに全て「いいえ」で逃げてください。
これを「はい」で対応すると、せっかく書き込んだOSがまともに起動しない状態が発生する場合がある様です。

SDメモリをWindowsからUSBメモリを抜く手順と同じく安全に取り出して下さい。

取り出したSDメモリをraspberry Pi 3に差し込みます。

キーボードやマウス(最初は要らない)とHDMIケーブルでディスプレイを接続します。

最後にマイクロUSBで電源供給を行えば起動します。

起動した瞬間は、なんとなくごちゃごちゃしていて、ログインプロンプトが解り難いかも知れません。
「Enter」キーを押して出し直しても構いませんので、以下のIDとパスワードでログインします。

ID:root
パスワード:centos

以上でインストールが出来ました。

・・・・・・でもこれだけではまだインストールしただけです。
ネットワークもDHCPで自動割当てされる状態です。
SDメモリの空き部分が使える状態にありません。
yum updateも出来ません。
Webサーバにするなら、Apacheもインストールされていません。
Apacheインストールすると、ファイアウォールが影響して使えません。
だらだら・・・・

ということで、これらの問題解決をこれから行います。
やることがそれなりに多いので、基本的な設定方法は以下に記し、それ以外の項目は別記事で記載します。

基本設定をゴニョゴニョ

キーボード設定

キーボードの初期設定を行います。
CentOS 7を入れた状態はミニマムインストールと同じような状態にあると思われます。
キーボードの設定も十分に行われていません。
そのままでも違和感なく使えているのですが、念のため設定を行います。

こんな感じです。

ネットワーク設定

デフォルト状態では、DHCPで動的にIPアドレスが振られる設定になっています。
クライアント端末みたいな感じで使う場合には問題は無いのですが、固定IPしたいと思います。

固定IPにするには、設定ファイルを変更して・・・・というのは面倒です。
かといって、今の段階ではデスクトップ環境も入っておらず、GUIで設定することも出来ないのでは?という状況。

でも大丈夫!

nmtuiというツールを使います。
既に機能は備わっていますので、コマンドラインからnmtuiを実行します。

コマンドを実行するとこんな画面が起動します。

「接続の編集」を選択します。

既にeth0が存在します。「eth0」を選択してTABキーを使って「編集」まで移動したら、Enterを押して編集モードへ移行します。

IPv4が「自動」になっているので、「手動」に変更して編集を続けます。

「アドレス」には、xxx.xxx.xxx.xxx/24の様な形式で、IPアドレスとサブネットマスクを同時に設定します。
例えば、192.168.0.123/24と設定した場合、IPアドレス=192.168.0.123でサブネットマスクは255.255.255.0ということになります。

ゲートウェイとDNSにもアドレスを設定します。

「OK」を選択して、後は画面を見ながら終了します。

最後に設定を更新するためネットワークマネージャを以下のコマンドを実行して再起動します。

ifconfig -aコマンドなどを使用して、eth0に指定したアドレスが正しく設定されているか確認してください。

ダメだったら、一度再起動してみると良いと思います。

ここまで完了しましたら、一度外部のパソコンなどからTeraTermなどでSSHを使用した接続を行ってみると良いでしょう。
接続出来ない場合には何らかの設定に間違いがあると思います。
ネットワーク管理者などと相談して、確認を行ってみてください。
また、詳しい状況などコメント欄に記載して頂ければ、フォローできるかも知れませんので、お気軽にお声掛けください。
ただ、リアルタイムでの回答には対応しておりませんのでご了承ください。

SDメモリの拡張

ここまでの状態では、SDメモリの空き容量が使えない状態にあります。
パーティションを拡張して空いている領域も使える様にします。

実際の方法については、以下の記事に記載しましたのでそちらを参照してください。

Raspberry Pi 3SDメモリの空きを認識させる。

 

 

MantisをCentOS 7へインストールする。

Mantisのインストールは比較的に楽だということで、インストールしてみた。

最初は順調にインストール出来たのだが、データベース絡みのセキュリティに引っ掛かったために大幅に時間をロスすることとなった。

CentOS 6までならばその問題に遭遇することなくインストール出来るようです。

CentOS 6でも下記のインストール方法でインストール出来るはずですが、CentOS 7では少しだけ設定が追加になりますので、その点も記載しながらインストール方法をまとめます。

インストール準備

まずは動作環境について整理します。

対象OS:7.3.1611
Web:Apache 2.4.6
mariadb:15.1
php:5.4.16

今回は、OSのみインストール済みでした。各種パッケージは順次インストールします。

今回インストールを行ったマシンのH/W環境は以下の様な感じです。
4コア程度の安価なマシン。
メモリは16GB入れていますが、4GBとかでも十分に動くでしょう。
HDDは。。。たまたま無かったので、空いていたSSD500GBを使いましたが、基本的にそんなスペックは必要ありませんw
実際に必要な環境は調べていませんが、各々で必要に応じて調べてください。

インストール作業

これからインストール作業を開始します。

nkfを入れたりしないのであれば多分必要ないのですが、何かとデフォルトのリポジトリだけだと足りなくって、結局入れることになるのがEPELリポジトリなんですよねw

そこで、面倒なことは先に済ませておこうということで、EPELリポジトリを登録しておきます。

EPELリポジトリ

デフォルトで使うとか使わないとか・・・あるけど、取りあえず無視します。必要な人は、一通りインストールが終わった後で設定してください。

Apache

yumを使って簡単にインストールします。

いろいろと設定を行うところはありますが、Mantisを入れることが目的ですから、簡単なインストール方法だけです。
セキュリティ面など詳細な設定を行いたい方は、別途調べてください。

Apacheを起動します。

CentOS 6では、

自動起動の設定を行います。

CentOS 6では、

なんとなく、CentOS 6と7の違いがわかると思います。
これ以降はsystemctrl/service/chkconfig関連のCentOS 6および7による違いに関しては省略し、CentOS 7の設定方法のみ記載します。

nkf

文字コード変換ツールのnkfをインストールします。
どこのサイトにもMantisインストールに際し必要という記載は無かったのですが、readme.txtなどの日本語が入っているファイルでSJISが使われているところがあったのでインストールしました。
普通は使いませんが、必要になった時の為と思ってください。
要らない人は無視してください。

こちらも簡単に。。。

PHP

こちらも簡単にyumでインストールします。

ntpとwget

時間を管理するためにNTPをインストールします。
またついでになりますが、wgetをインストールします。
wgetはファイルをダウンロードする際に使用しますが、今回は直接使用しません。
Mantisが使うために必要になるみたいです。

ここで少しタイムゾーンの設定だけしておきます。

多分、Mantisをこのまま入れてしまうと、時間の設定がゴチャゴチャするのかも知れません。意外と問題ないのかも知れませんが、取り敢えず。

内容は以下です。
タイムゾーンを指定しています。

該当箇所を修正してください。

mariadb

さて、CentOS 7からMySQLがmariadbに変更となっていることは既にご承知のことと思います。

ということで、以下のコマンドを実行してみてください。

OSのインストール手順によってこの辺りの環境はことなりますが、私の環境ではmariadb-serverが不足していました。

ということで、mariadb-serverをインストールします。

続いて、mariadbを起動します。

 

データベースの作成

mantisで使用するデータベースを作成します。

※MySQLのバージョンは大丈夫ですか?バージョンが古い場合、この後の作業を進めてしまうと後で面倒なことになります。十分注意してください。

mysqlへアクセスします。

DBを作成します。

※db_userについては、適当な名称を指定してください。
※その他mantisuserやbugtrackerdbについても適当に名称変更してください。

CentOS 6では、この設定だけで基本的にDBへのアクセスが許可されるのですが、CentOS 7ではもう少し作業を行います。

 

Mantisインストール

下準備が上記までの手順で完了しました。
ここからがMantisインストールの本丸です。

下記URLへブラウザでアクセスします。

https://sourceforge.net/projects/mantisbt/

「Download」のボタンをクリックすることでダウンロードされます。

ダウンロードを適当なディレクトリへ保存します。

ダウンロードしたファイル:mantisbt-2.5.0.zip

ファイルを解凍します。

解凍して得られたディレクトリを移動します。

所有権の変更を行います。

ブラウザで以下のアドレスにアクセスします。

http://127.0.0.1/mantisbt/admin/install.php
※必ずローカルでアクセスしてください。外部からIPアドレスを指定しても上手く出来ない気がします。

 

CentOS 6であれば、これで上手く行くはずなのですが、CentOS 7ではエラーが発生します。

ブラウザ画面ではこれ以上何をやっても駄目でした。
パスワードを変更してみたりいろいろと手をつくしましたが、結局はlocalhostでアクセスを行える様にする際にパスワードをきちんと登録してあげる必要があるみたいです。
他の解決方法もあると思いますが、私はそれで解決しました。

では具体的に解決します。

ブラウザの「戻る」ボタンで戻ります。
駄目なら再読込みするなど元の画面に戻ります。

MySQLへ再度アクセスして、以下のコマンドを実行すると登録されているユーザ一覧が表示されます。

ここで注目するのは、mantisuserが2つあります。

localhostと%になっている行が2つあります。

片方は何かパスワードが設定されているようですが、もう片方の%になっている方はパスワードが設定されていません。

そこにパスワードを設定します。

****には適当なパスワードを指定してください。

同じようにlocalhost側のmantisuserにもパスワードを再設定します。

 

先程と同じようにブラウザの画面で登録を行います。

そうするとエラーが取れました。

少し画面を省略しますが、最後のところに以下の記載が確認できます。

「Continue」をクリックすると、ログイン画面が表示されます。

初期のIDとパスワードは

ID:administrator
パスワード:root

になっています。

ログインすると以下の画面が表示されます。

 

新しいIDとパスワードを設定します。

まだ、メールの設定が出来ていませんが、一応の設定を済ませます。

「更新」しますと、再度ログイン画面が表示され新しいパスワードでログインを求められます。

再度ログインを行うと以下の画面が表示されます。

 

日本語化されていない場合は、以下の設定をconfig/config_inc.phpへ追加します。

以上でMantisのインストールは完了です。

メールの設定はまた別の機会に記載します。

 

 

CentOS 7へNVIDIAドライバをインストールする。

CentOS 7へNVIDIAドライバをインストールする手順について記録する。

まず、NVIDIAのホームページから対象となるドライバをダウンロードする。

保存先は、パスに日本語が入らないように注意しておきましょう。FireFoxでダウンロードすると、日本語環境の場合は「ダウンロード」ディレクトリに保存されるので、適当に移動しておきます。

カーネルを再構築するので、kernel-develなどもインストールしておきます。

gccなども

必要になりますので事前のインストールが必要です。

さて、準備が整ったら順次開始します。

まず、CUIの環境へ移行します。

ここでリブートしても良いのですが、Ctrl+Alt+F2でCUIに移行して、設定を続けます。

下記のコマンドでまずはnouveauが読み込まれていることを確認しておきます。

次にカーネルの作成を行います。

既存のカーネルを別名保管します。

 

次にnouveauドライバの読み込みが行われないようにブラックリストを作成します。

内容は以下の通り。

もう一つファイルを作成します。

内容は以下の通り。

ここで再起動します。

再起動後はまだCUIの状態です。

ログインして以下のコマンドを投げます。

これでnouveau関連のドライバが表示されなければ、nouveauが入っていない状態でOSは起動されています。

このタイミングでNVIDIAのドライバをインストールします。

 

ランレベルを元に戻します。

以下のコマンドで設定を確認します。

graphical.targetとなっていればOKです。

再起動してGUI画面でログインが要求されれば完了です。

幾度繰り返したことか分りませんが、毎回毎回面倒です。

yumでインストールする方法もあるので、最新版のドライバじゃなくても良いという方はそちらの方法も試してみると良いかも知れません。
でも、折角入れるんだったら最新版が良いですよねw
バグも取れているはずだし。。。というところですが、昔は違ったんです。
最新版だからと言って安定しているとは言えず、安定版をメーカーなどに確認して入れたり、それさえも分からないときは取っ替え引っ替え入れ替えて評価を繰り返しました。

その頃からすると、NVIDIAのドライバも更新すると障害が減っている傾向にあるんじゃないかと昨今は思っています。

でも、入れやすくしてくれないかねぇ〜NVIDIAさん♪