もなかアイスの試食品

「とりあえずやってみたい」そんな気持ちが先走りすぎて挫折が多い私のメモ書きみたいなものです.

CentOS6.8にPostgreSQL9.6とPostGIS2.3の環境構築

昔、PostgreSQL9.3でPostGISの環境構築をやったけど中々ブログに書くタイミングがなかった・・・

現在、PostgreSQLの最新は9.6なので、最新版でCentOS6.8に環境構築をしてみようと思う

ちなみにPostGISの公式のインストール方法はコチラ↓

postgis.net


まず、yumでインストール出来るようにrpmでパッケージを追加

# rpm -U https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-6-x86_64/pgdg-centos96-9.6-3.noarch.rpm


また、PostGISのパッケージインストールするためにはepelリポジトリが必要なので、以下のコマンドでepelリポジトリを追加

# yum install epel-release


あと、間違ってCentOS6で標準のPostgreSQL8.4をインストールしてしまわないように、パッケージを場外しておく

以下のコマンドでリポジトリの設定の変更

# vim /etc/yum.repos.d/CentOS-Base.repo

「exclude=*postgres*」を「base」と「updates」に追記する。

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

# ↓追記
exclude=*postgres*

#released updates 
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
# ↓追記
exclude=*postgres*



以下のコマンドで、PostgreSQL9.6とPostGISをインストールする。

# yum install postgresql96 postgresql96-server postgis2_96

「依存性が解決できない」等言われてインストールできないときは、epelリポジトリを参照していない設定になっている可能性があるため、オプション「--enablerepo=epel」を追加するとインストール出来るかも

# yum install --enablerepo=epel postgresql96 postgresql96-server postgis2_96



DBクラスタの作成する

# cd /var/lib/pgsql/9.6/
# su postgres
$ /usr/pgsql-9.6/bin/initdb data/
$ exit



DBを起動して、拡張機能PostGIS」を有効にする。

↓ postgresql-9.6デーモンの起動
# service postgresql-9.6 start

↓ コマンドで新しいDB「sample」を作成
# createdb -U postgres sample

↓ psqlでsampleにログインする
# psql -U postgres sample

↓ psqlでsampleにログインする
sample=# create extension postgis;



実際にPostGIS拡張機能が有効になったかテーブル・関数を見て確認

↓テーブルの確認
sample=# \d
                 リレーションの一覧
 スキーマ |       名前        |    型    |  所有者  
----------+-------------------+----------+----------
 public   | geography_columns | ビュー   | postgres
 public   | geometry_columns  | ビュー   | postgres
 public   | raster_columns    | ビュー   | postgres
 public   | raster_overviews  | ビュー   | postgres
 public   | spatial_ref_sys   | テーブル | postgres


↓関数の確認
sample=# \df
非常に長い・・・qで表示を中断できる

備考

「create extension」を実行せずに、PostGISの機能を利用することは可能

以下、公式サイトからの転記(Chapter 2. PostGIS Installation

createdb yourdatabase
createlang plpgsql yourdatabase
psql -d yourdatabase -f postgis.sql
psql -d yourdatabase -f postgis_comments.sql
psql -d yourdatabase -f spatial_ref_sys.sql
psql -d yourdatabase -f topology.sql
psql -d yourdatabase -f topology_comments.sql

ただし、PostgreSQLのバージョンアップ(9.3→9.5)する時にDBバックアップが使えない。

PostGISのバージョンも変わっており、関数内の共有ライブラリのファイルパスが「2.1→2.2」と変化しているため、バックアップの復元でコケる。

バージョンアップやLinuxWindows、またはWindowsLinuxへ移植しやすくするためには、「create extension」で機能を有効化したほうが良いでしょう。

自分は初めて9.3で環境構築した時は、SQLから構築したため結構ハマった・・・

Apache2.4 + Windowsでサーバが固まった話

Windows + Apacheでエラくハマった

以下が当時の環境

PHPのアプリが遅い」と言われ、

PHPの処理を見直したり、TCPの通信ログを取ってみたり、

WEBサーバとDBサーバの通信が怪しいということ(にしておいて)、それぞれのサーバのTCPのやり取り・フラグをシーケンス図に書いたりした結果

わからないこと が わかった

どうしようかな~と思ったとき、PHPにはスクリプトの処理時間が30秒(デフォルトで)以上掛かると、 処理を中断する機能があったことを思い出した。

なんでそれが動作しないんだろうなー・・・

あり得るとしたら・・・Apacheが固まっているぐらいしか・・・

いやーそんなことあるのかなー(半信半疑)?

Apache Windows 固まる」で検索したら直ぐに出てきたでござる(´・ω・`)

blog.wolfs.jp

上記のサイトを参考に設定を追加した。

# Apparently this fixes an issue with Apache 2.4.6 on Windows hanging
# when serving requests from Internet Explorer 10/11.
# see http://stijndewitt.wordpress.com/2014/01/10/apache-hangs-ie11/
# Windows + Apacheでプロセスが固まるのを防ぐための設定
AcceptFilter http none
AcceptFilter https none

動作を確認した所、一応現象は出なくなった

アプリケーションが遅いって言われたら、まず疑うべきはアプリケーションより環境やなと思った今日このごろです。

yum updateで「他のミラーを試します」から進まない時の対処法

CentOS6.8で久しぶりに「yum update」でパッケージを更新しようとしたらエラーが出た

エラーの内容はこんな感じ

[Errno -1] repomd.xml does not match metalink for epel 他のミラーを試します。

最初は回線の調子が悪いのかと思ったけど、何回「yum update」を実行しても同じところでコケた


なので、以下のサイトを参考に対処した

自分の場合epelリポジトリで起きていたので、「/etc/yum.repos.d/epel.repo」を編集

1.mirrorlistをコメントにし、コメントになっていた「baseurl」をコメント解除する。

↓こんな感じ

[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch

2.yum check-updateを実行する。

3.編集を元に戻す。(「baseurl」をコメントにし、「mirrorlist」をコメント解除する。)

4.yum check-updateを実行する。


無事に「yum update」が出来るようになった

「repomd.xml does not match metalink」はどんなときに起きるのか調べようとしたけど、結局分からない・・・

エラーが起きてるサイトにはアクセスできるし、repomd.xmlというファイルもあるし・・・

何かしらのチェックサムでコケてるのかしら?

誰か教えて欲しいなー