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

ベクトルタイルの作り方~メモ~

今更ですが、ベクトルタイルの作成方法について整理しておきます。
以前とやり方が違っているので、自分用メモです。

環境

OS:Rocky Linux 9
準備として必要なパッケージをインストールします。

適当な作業用ディレクトリを作成しそこへ移動します。
その後、以下のコマンドを実行して、必要なパッケージ類をインストールします。
足りないものは適宜追加してください。

ここからは、githubにインストール手順が記載されていますので、合わせて確認してください。
https://github.com/mapbox/tippecanoe#installation

次に、mvtを作成するためのプログラムソースであるtippecanoe(「ティペカヌー」と読むらしい)をgithubからダウンロードします。

gitコマンドで展開された作成されたtippecanoeディレクトリへ移動して、コンパイルとインストールを行います。
公式では、下記のmakeを行う際、「-j」オプションを指定してmakeの並列実行を指定していますが、私の試した環境では敢えて「-j」無しでmakeを行いました。理由については後述します。

makeの際にオプションで-jを指定するとコンパイルが速くなりますが、プアなマシンでやると固まってしまう場合があります。
また、オブジェクト作成時の依存関係が原因と思われるエラーが発生し、これもまた正常にコンパイル/リンクが出来ない場合があります。

今回、私の環境では、マシンが固まる現象が発生したため「-j」を外してmakeを実行しました。
時間は掛かりますが、正規の方法ですので問題はありません。

mvtを作成するにはそこそこのリソースを必要とするケースが多いと思われ、出来ればCPUやメモリなどのリソースに余裕がある環境で「-j」を付けてコンパイルをすることが望ましいです。

これで必要なパッケージとかはインストールされているのですが、パスを切っておかないとだめです。

Rocky 9 のデフォルト環境設定なのか、/usr/local/binへのパスが設定されていませんでした。必要な方は設定しておいてください。
ちなみに、デフォルト設定を変更したい人はこちらを参考にしてください。

mbtilesとpbfの作り方

mbtilesの作り方

-rg デフォルトでも構いませんが、データによって値を設定すると良さそうです。

pbfの作り方

コマンドは以下の通りです。

実際に、この方法で作成することは出来ますが、Mapbox GL JSではこの方法で作成したpbfは扱えないという記載が見受けられました。
tippecanoeは、pbfを作成する際にデフォルトで圧縮を行っている(後で重要になる)そうです。
そこで、圧縮を行わない設定を追加します。

① –no-tile-compression : 圧縮を行わない。
② –no-tile-compression :タイルが大きすぎる場合は、フィーチャ間の最小間隔を広げて 500K 未満に縮小しようとします。 検出された間隔は、ズーム レベル全体に適用されます。
③ –no-tile-size-limit : 作成するタイルサイズの制限を解除します。
④ -j ‘{“*”:[“all”,[“<“,”対象属性”,1000]]}’ :フィルタリング条件
⑤ -e output_dir :出力先ディレクトリ

なんか②と③が打ち消しあっている様な感じにも思えなくもないのですが、③は確実に機能している様でした。

④で対象となるフィーチャーをフィルタリングしています。
これを行わないと、ランダムにフィーチャーがドロップ(間引き)されます。

属性による対象地物の指定方法

-jオプションについて、もう少し説明します。
こんな感じで指定しています。

「*」 :対象のファイルを指定している。ここでは全てを意味します。
    対象ファイルを分けて条件を変更することも可能なのでしょう。
「all」:フィルター演算子。allは全ての条件を満たすことを意味する。
    他に、「in」「none」などがある。
「>=」:演算子の指定。
「比較対象」:フィーチャーの属性を指定。
「比較条件」が1000以上のデータを対象とする。

オプションの設定はたくさんあって理解するのが大変です。
気が向いたら、追記してみようと思います。

参考:https://github.com/mapbox/tippecanoe#cookbook

Web配信におけるデータ圧縮

先程の方法で作成したpbfファイルは、オプションを指定することで非圧縮ファイルになっています。
mapbox GL JSで扱う場合には、非圧縮が条件になるため仕方ありません。

でも、それは mapbox GL JSが扱う際に圧縮されていると不味いということで、通信中に圧縮されていることは特に関係ありません。

ということで、配信するサーバでApacheを利用している場合は、以下の方法を検討してみると良いでしょう。

Apacheの配信データを圧縮する。

/etc/httpd/conf.dに以下のファイルを作成する。

他にも必要に応じて設定を行う。
httpdの再起動もしくはリロードを行えばOK

Rocky Linux 8.6 へ Redmine 5.0をインストールする。

はじめに

Rocky Linux 8.6(8.5で良いのですが。。。)へRedmine 5.0をインストールしている情報が見当たらなかったので、トライしてみることにしました。
入手のし易さからすると、Redmine 4.xをインストールする感じだったのですが、Rubyの2.7は通常メンテナンスフェーズを終了している様なので、Ruby 3.0以降を導入するのがベターと考えました。
更には、Ruby 3.0以降をサポートしているのは、Redmine 5.0以降という情報もあり、やっぱりこの選択肢を選ぶことになるな・・・という感じです。

まあ、色々と問題は出てくると思いますが、取り敢えず進めて行こうと思います。

彼是5年程前にRedmineをインストールした記録があります。
https://tech.godpress.net/?p=610
インターネット上で確認出来る資料と、過去を思い起こしながらインストールを進めたいと思います。

環境確認

今回インストールを行うサーバは、既に別の作業を進めていたこともあり、以下の構成が既に構成されています。

OS:Rocky Linux 8.6
DB:Mariadb 10.3

epel-releaseリポジトリはインストール済みでした。

一応、コマンドで確認しておきます。
# mysql –version
mysql Ver 15.1 Distrib 10.3.32-MariaDB, for Linux (x86_64) using readline 5.1

他に必要そうなものは入っていなかったみたいです。

インストール

基本的なパッケージのインストール

データベースのインストール方法については割愛します。

それでは必要なパッケージ類を問答無用でインストールしてしまいます。

ここまでは順調でしたが。。。。フォントのインストールが上手く行きません!?

色々探してみて、こんな感じでインストールします。

Rubyインストール(自己責任で!)
#あまりここの部分は信用しないように(^^;

さて、ここからは私の勘です!間違っていたらご容赦ください。
ちなみに、私はVM上に環境構築を行っています。
自信もないので、知れっとスナップショットを作成して、Rubyインストール前の環境を保存しておきます。

何故この様なことをするかと言いますと、他のサイトで記載されている方法はrpmを直接インストールする方法が取られています。
私は、パッケージのバージョン管理を極力省くためにdnfでのインストールを行う様にしています。(好みの問題ですね)
rpmでインストールした場合でもdnfでインストールの確認などを行えることは重々承知しているのですが、リポジトリとして管理されているかというと、そうではないでしょう(想像)。
ということは、更新があったことを知る術が無い。
後々の構成管理に矛盾が生じてしまうのではないか?

ということで、出来るだけdnfでインストールを行いたいと思っています。

今回、Rubyのサポート状況などを気にしていることもあり、出来れば3.0以降を導入したい訳ですが、果たして3.0以降を素直にインストールさせてくれるでしょうか?

結論としてRubyのバージョンは2.5.9と無残にもダメでした。
何かリポジトリを追加して・・・とか探していたのですが、これです!

インストール対象のモジュール一覧を確認出来ます。
2.5がデフォルトになっている様ですが、3.0の存在も確認出来ました!

では!

再度確認してみると。。。

ということで、3.0がenableになりましたね。
これで通常と同じようにインストールを行うと3.0をインストールすることが出来ます。

いや~知らんかった(^^ゞ
まだまだ修行が足りませんねw

実はここで悩みました。
他のサイトでインストールしている手順と異なるので、どこまで進んだのか解らなくなってしまいました(^^ゞ
取り敢えず、Rubyがインストールされたことを確認します。

おぉ~Ruby 3.0.2がインストールされています!
多分、この辺りから再開かな?ということで、bundlerをインストールしてみます。

なんだろう。。。もやもやする。。。

でも、取り敢えず進めます。

データベースの設定

データベース(Mariadb)にRedmine用のユーザとデータベースを作成します。

リアルタイムOS上でmsやμs単位でプログラムを組んできた人間にとって、データベースなんてプログラムの足を引っ張る近寄るべからずな存在であり、使えたら良いのにな~という夢の存在でもありましたが、やはり苦手ですw

Redmine本体のインストール

ここまでは全て準備作業でした。
やっとここからRedmineの本体をインストールします。
なんかお手軽インストールの方法もあるようなのですが、最新版ではまだサポートされている気配が無かったので、地道にインストール作業を続けています。
大抵、こういう時は何かの罠に嵌るんですよねぇ~
Linuxのインストールでは毎度のことですが、予定が狂う(TT)

泣き言はやってから!ということで進めます。
以前はSVNを使ってインストールを行いましたが、それも良いのですが、良かったのかどうなのか?というところもありますので、今回はダウンロードで素直に挑んでみたいと思います。

適当なディレクトリへ移動して、パッケージをダウンロードします。
本家からダウロードします。
こちらで対象を確認します。

ここでエラーが発生しました。
どうも幾つかのパッケージがインストールされていなかったようです。

多分、これで実行できるはずですが、もしそれでも上手く行かない場合は以下も試してみてください。(多分、関係ないと思いますが・・・)

再度実行します。

こんな感じで上手くインストール出来た様です。

セッションストア秘密鍵の生成を行います。

データベースへ接続するための設定を行います。

config/database.example.ymlをコピーしてconfig/database.ymlを作成します。
以下の示す様に、必要な項目を変更します。

以下のコマンドを実行すると、データベース上にテーブルを作成してくれます。

更に以下のコマンドを実行してデフォルトデータをデータベースへ登録します。

次に、passengerをインストールします。

しばらく時間が掛かります。
10分以上掛かったと思います。
次に、このコマンドで設定内容を確認します。

ここで表示される内容を記録しておきます。
その上で、Apacheの設定を追加します。

概ねこんな感じでOKですが、サイトによって記載が異なるので参考までに留めてください。

ディレクトリの権限を変更します。

ここで、Aapcheを再起動?起動させればOKです。
念のために、フルセットで行っておきますね。

これだけやっておけばApacheの起動についてはOKでしょう!

ここで、このシステムをRedmineだけに使おうと思っていないので、少し変更してしまいます。

上記で既に記載していますが、/etc/httpd/conf.d/redmine.confに以下の設定を追加します。これでアクセス可能となります。

他の環境ではここまでで行けるはずなのですが、私の環境では上手く行きませんでした。
こんな感じでエラーが出力されていました。

回避方法を記載しておきます。

どうもstrscanが古い様です。
新規にインストールしているところなのに不自然ではありますが、アップデートすることで問題の解決に至りました。不思議です。

再度アクセスすると画面が表示出来る様になりました。

このアップデートをする前は以下のコマンドを実行してブラウザでアクセスすると動作を確認出来ました。

こちらも、他のサイトでは以下の様になっていましたが、上記で動作を確認することが出来ました。

自動でwebrickを認識する様で、必要ないみたいです。

サイトにアクセスしてからのID/パスワードはデフォルトで以下になります。

ID:admin
パスワード:admin

結構嵌りました。
もうしばらくすれば、安定したインストールを方法を記載したサイトが出てくると思います。
こちらのサイトは参考までに留めるのが良いかも知れませんね。

Apache(Webサーバ)のチューニングとベンチマーク

ここでは、Apache HTTP Serverのチューニングとベンチマークに関してまとめます。

Apacheのベンチマーク

Apacheの性能はサーバの性能にも左右されますが、Apacheの設定内容によっても変わってきます。
最近のサーバはそこそこ速くなっているので、デフォルト設定のままでもそこそこ速く動いてくれるのですが、それでもアクセス集中対策を考慮するにはサーバのApacheのチューニングも必要になります。

さて、チューニングの方法は説明する前に、性能測定の方法について説明します。

Apacheの性能測定には、ab(Apache Bench)コマンドを使用します。

色々なサイトでも紹介されていますが、基本的なコマンド操作は以下の様になります。

-n 数値  : リクエストの総数
-c 数値  : 同時接続数

指定したURLに対し「リクエストの総数」分のリクエストを行います。並列して接続するため、「同時接続数」を指定することが出来ます。

試しにabコマンドを叩いてみます。(URLは適当です。)
※絶対に他人のサイトを指定しないでください。DoS攻撃とみなされる可能性があります。負荷試験の一種なので、対象のサーバに高負荷を与えることになります。

ここで注目したいのは、以下の2点です。
Failed requests: 0
Requests per second: 134.39 [#/sec] (mean)

「Failed requests」でリクエストがフェールになった回数をカウントしています。Failが発生しない様に調整する必要があります。

では、調整の仕方を見ていきましょう。

Apacheのチューニング

Apache 2.2系と2.4系ではチューニングの設定が少し異なります。パラメタの名称が一部変更になっているためです。
以下にそれぞれのパラメタ設定例を示します。
ただし、この設定内容は環境により異なりますので、ご自身のサーバ環境によって値を調整してみてください。

Apache2.2系のチューニングパラメタ

Apache 2.2系のチューニング方法を以下に紹介します。今更感はあるのですが、最も効果的な結果が得られたのがこの環境だったので敢えて事例紹介します。

対象ファイル:/etc/httpd/conf.d/httpd.conf

viなどで開いて編集してください。

こちらがデフォルト状態の設定状態です。

こちらが設定変更後の値です。

StartServers1起動時に生成される子サーバの数
MinSpareServers1アイドル状態で待機している
子サーバの最小数
MaxSpareServers5アイドル状態で待機している
子サーバの最大数
ServerLimit10MaxClientsに指定できる上限値
MaxClients10同時接続可能なクライアントの数
MaxRequestsPerChild4000子サーバが処理できる
リクエストの総数

デフォルトの状態では、StartServersが「1」になっていたので、最初の接続に掛かる時間が遅くなる傾向にありそうです。
また、MaxClientsが「10」しかないため同時に処理できるリクエストの数が少なく、こちらも処理が遅くなる傾向にあったようです。
変更後の値に設定し、以下のコマンドでWebサーバを再起動します。

Webサーバの再起動が完了したら、コマンドを実行して動作を確認してみましょう。

主要な内容については以下の通りです。

Failed requests: 0
Requests per second: 601.08 [#/sec]

「Requests per second」の値が134.39→601.08に変化しており、1秒間に処理で来ているリクエストの数が大幅にアップ(約4.5倍)しました。

と、ここで問題です。
MaxClientsを適当にしていしましたが、子サーバ(プロセス)が使用するメモリを考慮して計算しないと、実装メモリよりも多くの子サーバが起動してしまうことになってしまいます。
そうなると、スワップ領域まで達し、最終的にもメモリ不足に陥ることになります。
まず、httpdプロセスがどれ位のメモリを使用しているか?そして、PHPを使用しているならば、PHPの利用するメモリも考慮する必要があります。
実際にサーバ上で動作する際に必要となるメモリ量も気に掛かります。

面倒ですよね。
色々な方が作られている様ですが、MaxClientsを自動計算してくれる仕組みがあります。
その方法について、次に説明を行います。

MaxClientsの自動計算

MaxClientsを自動計算する方法について記載します。
Apache Web Service(Webサーバ)は、並列処理を実現するために複数子サーバを起動して、同時に複数のクライアントから要求されるリクエストに対応します。
その最大値をMaxClientsで指定します。

理論的には、httpd(子サーバ)が利用するメモリとPHPが利用するメモリで1つのクライアントから要求される処理を行うとして、システムのメモリを割ることで値が得られる感じです。
この時、システムでそれ以外に使用するメモリも考慮する必要があり、意外と面倒な計算と情報収集を行うこととなります。

それを自動化してくれる仕組みが以下のサイトにあるスクリプトになります。

https://github.com/richardforth/apache2buddy

apache2buddyを利用してMaxClientsを計算させるには、以下のコマンドを実行し、表示される情報を利用します。

コマンドは以下に記していますが、上記のURLで示されたサイトに記載がありますので(英文ですが)、そちらを参考にされることをお勧めします。(本記事が古くなると使えなくなりますが、上記サイトはメンテナンスされていますので)

重要な箇所は以下の一文です。

Your recommended MaxClients setting (based on available memory) is between 33 and 37. <——- Acceptable Range (10% of MAX)

httpdを再起動した直後などは正確な数値が得られない場合がありますので、本来は24時間程度運用した状態で数値を計算することが望ましいです。

上記の例では、MaxClientsの値として33~37が望ましい値として提示されています。

正直、実験を行ったサーバでは、長時間のヒートランを行っていなかったのでこの値が示されましたが、本来であればもっと少ない値が得られるのではないかと思います。

これを元に、先程示したhttpd.confに記載されている以下の値を調整します。

StartServers
MinSpareServers
MaxSpareServers
ServerLimit
MaxClients
MaxRequestsPerChild

最後に、Webサーバの再起動を行えば設定が反映され安定した動作になると思います。こまめにチェックするというよりも、ある程度時間を空けてチェックすると良いと思います。

apache2buddy以外にも自動計算や手動計算の手法が幾つか紹介されています。
自分に合った方法を見つけることが重要です。
今回の手法は、Linux上での手法となります。Windows上での計算は難しいかな?

concrete5 インストール

背景

concrete5をインストールしたのは覚えていたのですが、インストール方法が解らなくなったので、改めてインストールし直すという恥ずかしぃ〜思いをしながら、まとめ直すとにしました。

対象環境

ここではCentOS 7上に環境を構築します。
多少のパッケージインストール方法は省かせていただきますが、一般的な作業だけ省いているので、概ね問題ないでしょう(^^)

対象OS:CentOS 7.5.1804 (多分、7.xなら同じかと思います。)
他のパッケージ類は適宜インストールしますので、ここでの情報は以上となります。
ちなみにご自身の環境がどうなっているのか分からなければ以下を確認下さい。

ちなみに、作業は全てrootユーザで行います。
一般ユーザでもsudoなんかを使いながら作業を行なえば実現可能ですが、面倒なんで(^^;

準備作業

いつものことながら、インストールする前の準備運動ならぬ下地造りから入ります。

毎度お馴染みのepel-releaseリポジトリの設定ですね。

yum updateコマンドで全体をアップデートして置いた方がよいのですが、私の環境はNVIDIAのドライバをインストールしていたりいろいろと下手なパッケージを更新するとハレーションが発生する可能性があるので、敢えて行いませんが。。。やった方が良いです。

下地造りの前準備?が出来たところで実際に必要なパッケージをインストールします。

と、いきなり間違えました(^^;
単純にインストールすると、PHPのバージョンが古かったはずなので、上記の方法は辞めて以下の方法でインストールを行います。

まずremiで提供されているリポジトリを使えるようにします。

mariadbのインストール

Apache Web Server (httpd)のインストール

PHP5.6のインストール

concrete5 バージョン8以降ではPHPのバージョン 7.2以降を推奨しておりますが、私の環境は既に5.6の環境である程度構築されていたので、PHP5.6をベースにします。

PHPの古いバージョンが入っていた場合には適宜削除してインストール仕直す必要が生じます。(頑張ればなんとかなるなんて思わない方が良いですよw)

unzipのインストール

きっと入ってますよね。でも一応ね。

以上で準備作業は完了です。

concrete5本体のインストール

いつも思うんですけど、本来インストールしようとしているパッケージのインストール作業って、それ程大変じゃないんですよね。どちらかというと下地の準備の方が面倒なんですよね。
そこまできちんとして書いてくれれば嬉しいのですが。。。
そういった意味では、リポジトリって良くできてますよね。
と言っても、勝手にPHPのバージョンが上げられちゃったりすると困るので、結局こうなるのですが。。。

さて、前置きが長くなりましたが、本体のインストールです。

concrete5はWeb上で動作します。また、データベースを利用します。
ということで、httpdとMariaDBをセットアップしておく必要があるわけです。

httpdサービスを起動する。

Webサービスを利用できるように準備します。
毎度のことではありますが。。。

MariaDBサービスを起動する。

データベースサーバを起動します。

データベースサーバはこれで起動しますが、この後にデータベース自体を構築します。

データベースの作成

以下のコマンドを実行し、データベースを作成します。
なお、データベースの作成に関して、各種パラメタをサンプルです。実際のデータベース作成時には、ユーザIDやパスワードを十分に考慮して設定してください。

Firewallの設定

ファイアーウォールが有効になっていると思いますので、HTTPプロトコルが通過できるように設定を施します。

concrete5本体の設置

以下のURLをブラウザで開いて、最新版をダウンロードしましょう。
http://www.concrete5.org/download

Firefoxでダウンロードすると「ダウンロード」フォルダーに保存されますよね。

 

ここから適当なフォルダーへ移動して、解凍して、移動して、パーミッションの設定をイジイジして。。。。という流れを行います。

以上で設置完了です。

うぅーーーーーーー長い!

でも一応のインストールは出来たはずです。
ここからは、順次設定を進めます。

試しに、インストールしたconcrete5を覗いてみましょう!
以下のURLを指定すると閲覧できます。
(リモートで作業を行っている場合はIP

http://localhost/contents/

こんな画面が表示されれば、一応のインストール作業は完了です。

各種設定

言語設定

言語設定を変更します。
「日本語(日本)」を指定します。
#お好きにどうぞ!

環境チェック

実は、ここで「MSQL PDOエクステンションが有効です。」の項目がエラーになっていた。
インストール漏れはなく、設定もされていた。
結論は、Apacheが起動した状態でphp-pdoをインストールしたため、Apacheがphp-pdoを認識していなかったことが原因であった。
Apacheを再起動(systemctl restart httpd)を行うことで、認識した。

ここでは、チェックだけなので、問題がなければ「インストールを続ける」とし次へ進める。
ここで問題があった場合には、必要なパッケージをインストールするなどの対応が必要となる。

サイト情報登録

ここではサイトに関する情報を登録する。
「名前」はサイトの名称となります。
「管理者メールアドレス」は登録会員向けの発信元メールアドレスにもなります。その他、障害通知などもくるのかな?
「管理者パスワード」は編集する際などにログインする場合に使うパスワードになります。データベースのパスワードとは別にした方が良いでしょう。
データベースの各項目にはデータベース作成時に指定した内容を指定します。
今回の例では、
サーバー:localhost
MySQLユーザ名:concrete5
MySQLパスワード:cocrete5
データベース名:concrete5
となっていますが、実際のユーザ名パスワードデータベース名は十分の考慮の上設定してください。
セキュリティ上、上記の設定は宜しくありません。

「concrete5をインストール」ボタンでインストールが開始されます。

しばらく待ちます。

終わったら。。。

これで、concrete5のインストールは完了です。

「サイトを編集」ボタンをクリックすると、編集画面へ遷移します。

編集画面

編集画面をログアウトするには、右上のメニューボタンからログアウトすることが出来ます。

また再度ログインする際には、管理者ユーザが設定されています。
管理者のIDは「admin」です。
パスワードは、設定画面で設定したパスワードとなります。

ログインが上手く行かない場合には、ファイアーウォールを一度停止してみるとか、SELinuxを一度Permissiveにしてみるなどを試してみてください。

今回は以上です。
お疲れさまでした。

その内、操作方法などもアップしてみたいと思います。

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

ファイルを解凍します。

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

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

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

https://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のインストールは完了です。

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

 

 

CGIでソケット通信を行えるようにするには、SELinuxの設定変更が必要

Linux上のApacheでCGIを利用してソケット通信を行いたい場合がありますが、SELinuxではデフォルトで許可されていません。

今回は、CGIでftp通信を行おうとしたのですが、拒否されてしまいました。

対策としては、SELinuxの設定を変更してApache(httpd)から発行されたソケット通信を含む処理を許可してあげます。

以下はその方法です。

まずデフォルトの設定状態を確認します。

次にhttpd_can_network_connectを許可します。

再度、設定内容を確認します。

これで、ソケット通信は可能になります。

 

Apache DocumentRoot以外のディレクトリをシンボリックリンクで繋げたら、Forbidden 403 エラーの対策

Linux上のApacheでDocumentRoot以外の場所を参照できるようシンボリックリンクで接続したら、Forbiddenと表示されました。

Forbidden
You don’t have permission to access /user_dir/hoge.html on this server.

パーミッションや所有者をApacheに変更してみたり、色々試した結果SELinuxを無効にすることで正常に動作することを確認しました。

Permissiveになっていれば、SELinuxはモニタリング状態でありアクセス制御は掛かっていない状態になっています。

SELinux事態を無効(モニタリング状態)にしておくのは、あまり良いことではありません。

出来ればアクセス制御は正常に行われている状態にすべきです。

アクセスできない原因がSELinuxのアクセス制御に影響されることが確定されたら、以下の操作を行うことでこの問題を解決することが出来ます。

さて、一般にパーミッションの確認などをする際には、ls -laなど個人差はありますがlsコマンドを使います。
SELinuxコンテキストも同じように確認することが出来ます。
コマンドは以下になります。

通常のファイルはこんな感じです。

さてSELinuxコンテキストを変更するには、まず最初に対象となるディレクトリに対して設定を行います。

続いて、対象ディレクトリ内のすべてのファイルとフォルダーに対して設定を反映します。

対象ディレクトリ以下に多量のファイルがあると、時間が掛かる場合があります。
SELinuxを有効にします。
SELinuxの有効化は以下のコマンドを実行します。

最後にブラウザで動作確認を行ってください。

これでもForbiddenが表示される場合は、上記の操作に問題があるか?本当にパーミッションが間違っていないか?確認してください。

ついでに確認方法を記載します。

上記でも記載したとおり以下のコマンドで確認します。

設定が変更されているのが解ると思います。

 

 

 

Azure環境のCentOS 7でOpenVASを使えるようにするための設定

前回までで、取りあえずOpenVASのインストールを行いました。

ここで、Auzre環境を設定しないと接続出来ないことを思い出しました。

以前に提供されていたネットワークの設定で「エンドポイント」を指定するのと同じく、ファイアウォールのポートを解放してあげないと、接続出来ないんですね(^^ゞ

「Virtual Machine」から、今回の仮想マシンを選択し、「パブリックIPアドレス/DNS名ラベル」→「設定」へ進みます。

 

更に、「構成」→「DNS名」を入力します。

これで、ドメイン名の設定が完了します。

ここから、ポートを解放します。

同様に、仮想マシンを選択して、「リソースグループ」→「ネットワークセキュリティグループ」(画面のマークを探してください)を選択します。

「受信セキュリティ規則」を選択すると、以下の画面が表示されます。

「追加」を押して、「受信セキュリティ規則」に必要な項目を追加します。

今回は、HTTP(80)とOpenVASが使用するポート番号(デフォルトで9392)を開放します。

IPアドレスによる制限をする場合等、適宜必要に応じて設定してください。

設定が完了すると以下の様に設定した項目が追加されます。

これで、ポートが開放されましたので、ドメイン名を指定してブラウザで開いてみます。

https://ドメイン名/

開かない場合は、httpdが起動していない可能性があります。
前回の設定を確認してみてください。

更に、OpenVASの画面を開いてみます。

https://ドメイン名:9392
httpではなくhttpsであることに注意してください。
本来ならば、以下の画面が表示されるはず・・・なのですが、残念ながらセキュリティ警告画面が表示されると思います。

ブラウザにより異なりますので詳細は記しませんが、表示された画面の「詳細設定」などのリンクをクリックして、そこに掛かれている記述を確認しながら無理やりアクセスを行ってください。

場合によっては、セキュリティ例外に登録する必要があります。

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

設定したログインIDとパスワードを入力して設定の再開です。

次回はOpenVASの設定方法について更に続けます。

 

OpenVASをAzureのCentOS 7へインストールしてみる!

さてと、今回はAzureのCentOS 7へOpenVASをインストールしてみることにした。

AzureのCentOS 7と言っても、何が変わる訳でもないのだが、rootユーザが使えないだけw

自前でサーバ立てたら、rootユーザ使えるんだけど、今回はお試し気分がテンコ盛り状態なのでAzureで作ることにした。

AzureでCentOSの環境を作る方法については、他のサイトを参考にしてください。(「名前」とかに日本語入れるとデプロイ出来ないっぽいので注意かな?)

ちなみに、Azureで作った環境は、1コア メモリ3.5GBのスタンダードなものです。HDDは30GB程度かな?非常にプアなマシンですw

1.OSの更新

取りあえず、ログインして最初にすることは、環境を新しくしておくこと。

現時点(2016年5月初旬)で作業を行いました。

現在のバージョンは/etc/redhat-releaseを確認することで得られます。

その他、適当に/etc/bashrcや~/.bashrcを書き換えて、自分なりの環境を作っておきます。

2.Apacheのインストール

次に、なんとなくApacheが入っていない様なので、Apacheをインストールしておきます。

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

最後に、OS再起動時に自動起動する様に設定する。

以上でApacheのインストールは完了です。
詳細なApacheの設定は省略します。

3.OpenVASのインストール

yumを使ってOpenVASをインストールします。

まずは、リポジトリを登録します。

次にいよいよOpenVASをyumを使ってインストールします。

途中で問い合わせがあるかも知れませんが、基本的に「y」でOKです。

Complete!

と表示されればOKです。

4.OpenVASの設定

OpenVASの設定を行います。

最初に、rsyc使うかどうか聞かれるので、Enter押して次へ。

ここでしばらく更新を待ちます。10分くらいかな?

その後、いきなりこんなメッセージが表示されます。

気にせず「Enter」ですね(^^ゞ

ユーザネームを聞かれます。
adminのままで良いのですが、Azure環境で使用するため、安全のためにデフォルト設定から適当なユーザ名に変更しておきます。
パスワードを入れて次へ。

なんかよく解らないうちにインストールは完了した模様。。。。

一旦、OpenVASのインストールは一旦ここまでにします。

Web画面から設定を行うことになるのですが、その前にAzure環境の設定を行う必要があります。

次回は、その設定方法について記載します。

 

Access-Control-Allow-Origin 対策

クロスサイトの対策で調べていると、Access-Control-Allow-Originの対策が書かれているサイトがいくつか見つかった。

こんな感じの.htaccessファイルを作って、設置すればと書いてある。

Header append Access-Control-Allow-Origin: *

で、実際にやってみると、駄目だったりする。

もしやApacheの設定が必要?かなぁと思っていると、やはりあった!

LoadModule headers_module modules/mod_headers.so

こいつを追加しておかないと先の設定は有効に機能しない。