2014年3月24日月曜日

pg_bigmインストールメモ

事前に資材(pg_bigm-20130405.tar.gz)をあげておく
WINSCPで/usr/local/src/ディレクトリにpg_bigm-20130405.tar.gzをアップロード

■インストール
su
cd /usr/local/src/
tar zvxf pg_bigm-20130405.tar.gz
cd pg_bigm-20130405
make USE_PGXS=1 PG_CONFIG=/opt/powergres91/bin/pg_config
make USE_PGXS=1 PG_CONFIG=/opt/powergres91/bin/pg_config install


・postgres.confの最終行にでも下記2行を追加する
shared_preload_libraries = 'pg_bigm'
custom_variable_classes = 'pg_bigm'

・修正後にpostgresを再起動する
・postgresに接続

xxxxxx=# CREATE EXTENSION pg_bigm;
CREATE EXTENSION
xxxxxx=# \dx pg_bigm
                    List of installed extensions
  Name   | Version | Schema |              Description
---------+---------+--------+---------------------------------------
 pg_bigm | 1.0     | public | text index searching based on bigrams
(1 row)

(※\dxが使えない場合は。。
test=> select * from pg_extension;
 extname | extowner | extnamespace | extrelocatable | extversion | extconfig | e
xtcondition
---------+----------+--------------+----------------+------------+-----------+--
------------
 plpgsql |       10 |           11 | f              | 1.0        |           |
 pg_bigm |       10 |         2200 | t              | 1.0        |           |
(2 行)


CREATE EXTENSION pg_bigm;
DROP EXTENSION pg_bigm CASCADE;


CREATE INDEX idx_entry_body_gin_bigm ON entry  USING gin (body gin_bigm_ops);
DROP INDEX idx_entry_body_gin_bigm;
CREATE INDEX idx_entry_title_gin_bigm ON entry  USING gin (title gin_bigm_ops);
DROP INDEX idx_entry_title_gin_bigm;
CREATE INDEX idx_entry_extend_gin_bigm ON entry  USING gin (extend gin_bigm_ops);
DROP INDEX idx_entry_extend_gin_bigm;


CREATE INDEX idx_test_three ON entry  USING gin (body gin_bigm_ops,title gin_bigm_ops,extend gin_bigm_ops);
DROP INDEX idx_test_three;

■アンインストール
$ psql -d <データベース名>
=# DROP EXTENSION pg_bigm CASCADE;
=# \q

$ pg_ctl -D $PGDATA stop
$ su

# cd <pg_bigmのソースディレクトリ>
# make USE_PGXS=1 PG_CONFIG=/opt/pgsql-9.1.X/bin/pg_config uninstall
# exit



■pg-bigm
xxxxxx=# explain analyze select * from entry where body like'%ああ%';
                                                       QUERY PLAN

--------------------------------------------------------------------------------
-----------------------------------------
 Bitmap Heap Scan on entry  (cost=12.34..66.99 rows=44 width=173) (actual time=0
.036..0.056 rows=28 loops=1)
   Recheck Cond: (body ~~ '%ああ%'::text)
   ->  Bitmap Index Scan on idx_test_body  (cost=0.00..12.33 rows=44 width=0) (a
ctual time=0.026..0.026 rows=28 loops=1)
         Index Cond: (body ~~ '%ああ%'::text)
 Total runtime: 0.099 ms
(5 rows)

xxxxxx=# explain analyze select * from entry where body like'%あああ%';
                                                       QUERY PLAN

--------------------------------------------------------------------------------
-----------------------------------------
 Bitmap Heap Scan on entry  (cost=12.28..63.46 rows=36 width=173) (actual time=0
.035..0.070 rows=26 loops=1)
   Recheck Cond: (body ~~ '%あああ%'::text)
   ->  Bitmap Index Scan on idx_test_body  (cost=0.00..12.27 rows=36 width=0) (a
ctual time=0.023..0.023 rows=28 loops=1)
         Index Cond: (body ~~ '%あああ%'::text)
 Total runtime: 0.110 ms
(5 rows)


■indexなし
xxxxxx=# explain analyze select * from entry where body like'%あああ%';
                                             QUERY PLAN

--------------------------------------------------------------------------------
--------------------
 Seq Scan on entry  (cost=0.00..85.10 rows=36 width=173) (actual time=0.059..2.9
49 rows=26 loops=1)
   Filter: (body ~~ '%あああ%'::text)
 Total runtime: 3.016 ms
(3 rows)

xxxxxx=# explain analyze select * from entry where body like'%ああ%';                                               QUERY PLAN

--------------------------------------------------------------------------------
--------------------
 Seq Scan on entry  (cost=0.00..85.10 rows=44 width=173) (actual time=0.058..2.9
03 rows=28 loops=1)
   Filter: (body ~~ '%ああ%'::text)
 Total runtime: 2.961 ms
(3 rows)

Linux centos6.3 再インストール時のメモ


linux centos6.3 再インストール時のメモ
DeskTop環境は入れない
最小限のみ
apache2.4.7 + tomcat7 + Dice(固定IPじゃないので)導入
外部から見れるようになるまで

■マシンのローカルアドレスを設定する

vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"
#BOOTPROTO="dhcp"  ←コメントアウトする
IPADDR=192.168.0.X    ←指定したいIPアドレスを設定する
NETMASK=255.255.255.0
GATEWAY=192.168.0.1     ←デフォルトゲータウェイ
HWADDR="D4:3D:7E:0B:FD:67"
NM_CONTROLLED="yes"
ONBOOT="yes"              ←noだったらyesにしとく
TYPE="Ethernet"



※上記BOOTPROTOのコメントアウトとONBOOTをyesにしておかないと再起動したときに
プライベートIPアドレスがセットされないで127.0.0.1にもどる。するのわすれてリモートで再起動しちゃってつながらくなったのは良い思い出。

■上記設定を反映 反映をすればLAN内の別マシンから接続ができる teraterm winSCP ok
ifdown eth0  ←イーサネットを無効にする
ifup eth0    ←イーサネットを有効にする
ifconfig     ←ネットワークの設定を確認する

以降はteratermで別マシンより作業



■ユーザ作成 xxxxxx
[root@xxxxxx ~]# useradd xxxxxx ← ユーザー作成
[root@xxxxxx ~]# id -a xxxxxx
uid=500(xxxxxx) gid=500(xxxxxx) 所属グループ=500(xxxxxx)
[root@xxxxxx ~]# ls -l /home/xxxxxx/

■wget コマンドをインストールする
[root@xxxxxx src]# yum install wget

■apache インストール
Apache HTTP Server 2.4.7 (httpd)

[root@xxxxxx src]# cd /usr/local/src/
・ソースダウンロード
[root@xxxxxx src]# wget http://ftp.kddilabs.jp/infosystems/apache//httpd/httpd-2.4.7.tar.gz
・ソースの解凍
[root@xxxxxx src]# tar zxvf httpd-2.4.7.tar.gz  -C /usr/local/src/

[root@xxxxxx src]# cd httpd-2.4.7
・configure インストール先とかを指定 
(configureのオプション http://www.itmedia.co.jp/help/tips/linux/l0371.html
--prefix=PREFIX  PREFIXで指定されたディレクトリにApache(コマンド)をインストールする
--enable-rule=NAME NAMEで指定したルールを有効にする


[root@xxxxxx src]# ./configure --prefix=/usr/local/apache2.4.7 --enable-so --enable-rewrite=shared
エラー発生
checking for APR... no
configure: error: APR not found.  Please read the documentation.
解決策 http://d.hatena.ne.jp/yohei-a/20120809/1344489131
Download - The Apache Portable Runtime Project から aprz、apr-util をダウンロードする。
http://ftp.meisei-u.ac.jp/mirror/apache/dist//apr/apr-1.5.0.tar.gz
http://ftp.meisei-u.ac.jp/mirror/apache/dist//apr/apr-util-1.5.3.tar.gz

[root@xxxxxx httpd-2.4.7]#  cd /usr/local/src/
[root@xxxxxx src]# wget http://ftp.meisei-u.ac.jp/mirror/apache/dist//apr/apr-1.5.0.tar.gz
[root@xxxxxx src]# wget http://ftp.meisei-u.ac.jp/mirror/apache/dist//apr/apr-util-1.5.3.tar.gz
[root@xxxxxx src]# tar zxvf apr-1.5.0.tar.gz
[root@xxxxxx src]# tar zxvf apr-util-1.5.3.tar.gz



[root@xxxxxx src]# cp -p apr-* /usr/local/src/httpd-2.4.7/srclib/
[root@xxxxxx src]# cd /usr/local/src/httpd-2.4.7/srclib/
[root@xxxxxx src]# mv apr-1.5.0 apr
[root@xxxxxx src]# mv apr-util-1.5.3 apr-util
[root@xxxxxx src]# mv apr /usr/local/src/httpd-2.4.7/srclib/
[root@xxxxxx src]# mv apr-util /usr/local/src/httpd-2.4.7/srclib/
[root@xxxxxx src]# cd /usr/local/src/httpd-2.4.7
[root@xxxxxx httpd-2.4.7]# ./configure --prefix=/usr/local/apache2.4.7 --enable-so --enable-rewrite=shared
またエラー Cコンパイラねーよっていう
configure: error: in `/usr/local/src/httpd-2.4.7/srclib/apr':
configure: error: no acceptable C compiler found in $PATH

ので拾ってくる
[root@xxxxxx httpd-2.4.7]# yum install gcc

[root@xxxxxx httpd-2.4.7]# ./configure --prefix=/usr/local/apache2.4.7 --enable-so --enable-rewrite=shared
さらにエラー pcre-configがねーよっていわれる PCREってなんだよっていう
→PCREライブラリはPerl 5の正規表現文法と同じ記法で正規表現を使うことができるライブラリです。PCREはネイティブのAPIを提供することに加え、POSIX互換のラッパ関数も用意しています。

configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/
[root@xxxxxx src]# yum install pcre-devel
[root@xxxxxx pcre-8.33]# ./configure
エラー C++コンパイラねーよっていう
configure: error: You need a C++ compiler for C++ support.
のでひろってくる
[root@xxxxxx pcre-8.33]# yum install gcc-c++
[root@xxxxxx pcre-8.33]# ./configure
[root@xxxxxx pcre-8.33]# make
makeなんてコマンドねーよっていう いれる
[root@xxxxxx src]# yum install make

[root@xxxxxx src]# cd /usr/local/src/httpd-2.4.7
[root@xxxxxx httpd-2.4.7]# ./configure --prefix=/usr/local/apache2.4.7 --enable-so --enable-rewrite=shared
[root@xxxxxx src]# make
[root@xxxxxx src]# make install

Apacheの起動・停止スクリプトを配置する。
ln -s /usr/local/apache2.4.7/bin/apachectl /etc/init.d/apache

[root@xxxxxx httpd-2.4.7]# cd /usr/local/apache2.4.7/conf/
[root@xxxxxx conf]# vi httpd.conf


#ServerName www.example.com:80
ServerName 192.168.0.x:80


[root@xxxxxx conf]#  /usr/local/apache2.4.7/bin/apachectl start
別PCブラウザから192.168.0.5をたたきapacheのページをみれるか確認→みれねー

iptablesいじって80番portをうけいれokに変更する
[root@xxxxxx conf]# vi /etc/sysconfig/iptables
※変更前
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT


ここでは、HTTP と HTTPS の通信を許可。

# /sbin/iptables -I INPUT 5 -p tcp --dport http -j ACCEPT #HTTP
# /sbin/iptables -I INPUT 5 -p tcp --dport https -j ACCEPT #HTTPS

攻撃を防ぐ設定
synフラッド攻撃(syn 信号を大量に送信される)、Ping攻撃(Pingを大量に送信される)を回避する為に、syn信号やPingは1秒に1回だけ受信する様に設定する
# /sbin/iptables -A INPUT -i ppp+ -p tcp --syn -m limit --limit 1/s -j ACCEPT
# /sbin/iptables -A INPUT -i ppp+ -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

iptablesの設定を保存
設定が完了したら設定を保存し、iptables を再起動しないといけない
そうしないと再起動後に、設定したルールが消えてしまう
ルールを/etc/sysconfig/iptablesに保存する
# /etc/init.d/iptables save

保存後、iptables を再起動する
# service iptables restart


※変更後 参考 http://fnya.cocolog-nifty.com/blog/2012/03/centos-6aa8.html
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --sport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

外部からも見れるようにする Dice導入 以前のCentOS6インストールメモを参考 モジュール足りないとかのメモあり
####下記が以前のメモ
[root@xxxxxx bin]# /usr/local/bin/DiCE/diced
bash: /usr/local/bin/DiCE/diced: /lib/ld-linux.so.2: bad ELF interpreter: そのようなファイルやディレクトリはありません
http://kajuhome.com/cgi-bin/patio/patio.cgi?mode=view&no=1853
ib/ld-linux.so.2がないと怒られたので、インストールします。

yum install ld-linux.so.2
インストールできた

/usr/local/bin/DiCE/diced

文字化けしたのでctr+cで一旦キャンセルしteratermの文字コードをutf-8からEUC-JPに変更

>^C[root@xxxxxx DiCE]# /usr/local/bin/DiCE/diced
=-=-=- DiCE DynamicDNS Client -=-=-=
Version 0.19 for Japanese
Copyright(c) 2001 sarad

:setup
IPアドレスの検出方法を指定してください
(0) 自動検出
(1) ローカルのネットワークアダプタから検出
(2) 外部のスクリプトから検出
<現在:0>
(N)変更しない  (P)戻る
>n
-------------------------------------------------
プライベートIPアドレスも検出対象ですか? (Y/N)
<現在:いいえ>
(P)戻る
>n
-------------------------------------------------
IPアドレスの検出をテストしますか? (Y/N)
(P)戻る
>n
-------------------------------------------------
IPアドレスをチェックする間隔を指定してください(分)
設定可能範囲は5分以上です
<現在:10>
(N)変更しない  (P)戻る
>n
=================================================
DNSサーバーの負荷を軽減するために頻繁なDNS更新を防ぐ必要があります
前回の更新から一定時間DNS更新処理を行わないように保護時間を設定して
ください(分)  設定可能範囲は10分から1440分です
<現在:60>
(N)変更しない  (P)戻る
>30
=================================================
設定を保存しますか? (Y/N)
(P)戻る
>y
設定を保存しました
=================================================
:add
新しくイベントを追加します

DynamicDNSサービス名を入力してください
"?"で対応しているサービスを一覧表示します
(P)戻る
>ieServer
-------------------------------------------------
<< ieServer Project >>
URL: http://www.ieserver.net/
*** 情報 ***
IPアドレスはサーバー側で自動検出します。
IPアドレスの指定は出来ません。
(入力しても無視されます)
=================================================
ドメイン名を入力してください
"?"でドメイン一覧を表示します
(P)戻る
>jpn.ph
=================================================
ホスト名を入力してください
(P)戻る
>xxxxxx
=================================================
ログインユーザ名を入力してください
(P)戻る
>p
=================================================
ホスト名を入力してください
(P)戻る
>
=================================================
ログインユーザ名を入力してください
(P)戻る
>xxxxxx
=================================================
ログインパスワードを入力してください
(P)戻る
>xxxxxxxxxxxxxxxxxxx
=================================================
登録するIPアドレスを入力してください
空白にすると現在のIPアドレスを自動検出します
(P)戻る
>
=================================================
このイベントに題名を付けてください
(P)戻る
>xxxxxx.jpn.phアドレス更新
=================================================
このイベントを実行するスケジュールを設定します
-------------------------------------------------
実行する頻度を指定してください (番号入力)
(0)1回のみ (1)1日1回 (2)1週間に1回 (3)1ヵ月に1回
(4)その他の周期 (5)IPアドレス変化時 (6)起動時
(P)戻る
>5
-------------------------------------------------
IPアドレスがあまり変化しない環境の場合、更新せずに一定期間を過ぎると
アカウントを削除されてしまうことがあります
IPアドレスの変化が無い時に実行する間隔を指定してください
(0)7日毎   (1)14日毎  (2)21日毎  (3)28日毎
(4)35日毎  (5)56日毎  (6)84日毎
(P)戻る
>0
=================================================
詳細オプションを設定します
-------------------------------------------------
[ オフライン ]
(0)No (1)Yes
番号>0
=================================================
このイベントを有効にしますか? (Y/N)
(イベントの有効/無効は"EN/DIS"コマンドで切替えられます)
>y
=================================================
イベントを保存しますか? (Y/N)
>y
イベント"xxxxxx.jpn.phアドレス更新"を保存しました
=================================================
:list
(No.)   (イベント名)                   (スケジュール)             (次回予定)
  0 *  xxxxxx.jpn.phアドレス更新      IPアドレス変化時 (7日毎)   01/26 23:15
:ex 0
+ 1/19 23:16 にxxxxxx.jpn.phアドレス更新が実行されました
  IPアドレスを更新しました
:exit

DiCE起動
[root@xxxxxx DiCE]# setarch `uname -m` /usr/local/bin/DiCE/diced -d -l
=-=-=- DiCE DynamicDNS Client -=-=-=
Version 0.19 for Japanese
Copyright(c) 2001 sarad

DiCE Daemon Started !!
[root@xxxxxx DiCE]#

DiCE自動起動設定
[root@xxxxxx DiCE]# echo "setarch `uname -m` /usr/local/bin/DiCE/diced -d -l" >> /etc/rc.local

teratermの端末設定をUTF-8に戻す

####過去のメモ終了

[root@xxxxxx conf]# cd /usr/local/bin
[root@xxxxxx bin]# wget http://www.hi-ho.ne.jp/cgi-bin/user/yoshihiro_e/download.cgi?p=diced019
[root@xxxxxx bin]# tar zxvf diced01914.tar.gz
[root@xxxxxx bin]# rm -f diced01914.tar.gz
[root@xxxxxx bin]# yum install ld-linux.so.2
[root@xxxxxx bin]# /usr/local/bin/DiCE/diced
あとは過去メモどおりに設定した


■javaインストール
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
からjdk-7u45-linux-i586.rpmをダウンロード

[root@xxxxxx src]# mkdir /usr/local/java ←にwinscpでアップロード
[root@xxxxxx java]# cd /usr/local/java/
[root@xxxxxx java]# rpm -ivh jdk-7u45-linux-x64.rpm
参考: http://java.com/ja/download/help/linux_x64rpm_install.xml
ファイル /usr/java/jdk1.7.0_45/jre/lib/charsets.pack (パッケージ jdk-2000:1.7.0_45-fcs.x86_64 から) は、パッケージ jdk-2000:1.7.0_45-fcs.i586 からのファイルと競合しています。
とかでる

[root@xxxxxx java]# rpm -aq | sort  でrpm一覧だしてはいっていたjavaを消した
[root@xxxxxx java]# rpm -e jdk-1.7.0_45-fcs.i586
[root@xxxxxx java]# rpm -ivh jdk-7u45-linux-x64.rpm  再度いんすとーる
[root@xxxxxx java]# ls -l /usr/java/
合計 4
lrwxrwxrwx. 1 root root   16 12月  7 12:34 2013 default -> /usr/java/latest
drwxr-xr-x. 8 root root 4096 12月  7 12:34 2013 jdk1.7.0_45
lrwxrwxrwx. 1 root root   21 12月  7 12:34 2013 latest -> /usr/java/jdk1.7.0_45
[root@xxxxxx java]# rm -rf /usr/local/java rpmパッケージファイル100Mとかあるんで削除しといた
[root@xxxxxx java]# java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)


■tomcat いんすとーる
参考 http://homepage1.nifty.com/y-osumi/works/code/tomcat7/

[root@xxxxxx java]# useradd -s /sbin/nologin tomcat

[root@xxxxxx java]# cd /usr/local/src/
[root@xxxxxx src]# wget http://ftp.meisei-u.ac.jp/mirror/apache/dist/tomcat/tomcat-7/v7.0.47/src/apache-tomcat-7.0.47-src.tar.gz
[root@xxxxxx src]# tar zvxf apache-tomcat-7.0.47-src.tar.gz
[root@xxxxxx src]# mv apache-tomcat-7.0.47-src /usr/local/tomcat7.0.47
[root@xxxxxx src]# chown tomcat:tomcat -R /usr/local/tomcat7.0.47

[root@xxxxxx conf]# cd /usr/local/tomcat7.0.47/conf
[root@xxxxxx conf]# vi server.xml
変更前
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
   
変更後      
<!--
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
-->
             
             
[root@xxxxxx conf]# vi /usr/local/apache2.4.7/conf/httpd.conf
下記のコメントアウトをはずす
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

下記を最終行に追加
<Location / >
  ProxyPass ajp://localhost:8009/
</Location>