CentOS6.8にPostgreSQL9.6とPostGIS2.3の環境構築
昔、PostgreSQL9.3でPostGISの環境構築をやったけど中々ブログに書くタイミングがなかった・・・
現在、PostgreSQLの最新は9.6なので、最新版でCentOS6.8に環境構築をしてみようと思う
ちなみにPostGISの公式のインストール方法はコチラ↓
まず、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
↓ 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」と変化しているため、バックアップの復元でコケる。
バージョンアップやLinux→Windows、またはWindows→Linuxへ移植しやすくするためには、「create extension」で機能を有効化したほうが良いでしょう。
自分は初めて9.3で環境構築した時は、SQLから構築したため結構ハマった・・・
Apache2.4 + Windowsでサーバが固まった話
以下が当時の環境
- Windows Server 2012 R2
- Apache 2.4
- PHP 5.6
「PHPのアプリが遅い」と言われ、
WEBサーバとDBサーバの通信が怪しいということ(にしておいて)、それぞれのサーバのTCPのやり取り・フラグをシーケンス図に書いたりした結果
わからないこと が わかった
どうしようかな~と思ったとき、PHPにはスクリプトの処理時間が30秒(デフォルトで)以上掛かると、 処理を中断する機能があったことを思い出した。
なんでそれが動作しないんだろうなー・・・
あり得るとしたら・・・Apacheが固まっているぐらいしか・・・
いやーそんなことあるのかなー(半信半疑)?
「Apache Windows 固まる」で検索したら直ぐに出てきたでござる(´・ω・`)
上記のサイトを参考に設定を追加した。
# 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」を実行しても同じところでコケた
なので、以下のサイトを参考に対処した
- Yum Repository [ほほほのほ]
- linux - CENTOS 6.6 "Errno -1 repomd.xml does not match metalink for updates " when trying to use yum command to install openssl - Stack Overflow
自分の場合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というファイルもあるし・・・
何かしらのチェックサムでコケてるのかしら?
誰か教えて欲しいなー