PostgreSQL/PostgreSQLをソースからCentOSにインストール
の編集
Top
/
PostgreSQL
/
PostgreSQLをソースからCentOSにインストール
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
PostgreSQL/template0とtemplate1の違いについて
#navi(../) * CentOSにPostgreSQL9.1.4をソースからインストール [#fde2c035] CentOS5.8にPostgreSQL9.1.4をソースからインストールしました。~ RPMパッケージからインストールしても良いのですが、特定ユーザ以外はPostgreSQLの各種コマンド等のPATHが通らないようにしたかったため、ソースから手動でインストールしました。~ (特定のユーザしかPostgreSQLを使用しない環境を構築したかったため) #contents #htmlinsertpcsp(db-top.html,db-sp.html) * 関連記事 [#b4f05b39] -[[flexのインストール>PostgreSQL/flexのインストール]] -[[CentOSでPostgreSQLをソースからコンパイルする手順>PostgreSQL/CentOSでPostgreSQLをソースからコンパイルする手順]] -[[PostgreSQLコミュニティーベースのリポジトリを設定し最新を利用する>PostgreSQL/PostgreSQLコミュニティーベースのリポジトリを設定し最新を利用する]] * PostgreSQLのソースを入手 [#i846b507] PostgreSQL9.1.4のソースを以下のサイトからダウンロードしました。~ http://www.postgresql.jp/ ダウンロードしたファイル名は postgresql-9.1.4.tar.gz になります。 * PostgreSQLのユーザを作成 [#dbb9ba6d] PostgreSQLユーザを以下のコマンドで作成しました。 useradd postgres # useradd postgres # id postgres uid=502(postgres) gid=503(postgres) 所属グループ=503(postgres) 尚、パスワードの設定はおこないませんでした。 # cat /etc/passwd | grep postgres postgres:x:502:503::/home/postgres:/bin/bash # cat /etc/shadow | grep postgres postgres:!!:15510:0:99999:7::: ''!!''になっているのでパスワードロック状態なのが確認できます。 * PostgreSQLソースのコンパイル [#wa05420d] 今回は、PostgreSQLをインストールすることにより、他のユーザ環境に影響をあたえたくないので /opt/pgsql にインストールすることにします。~ 尚、本資料はダウンロードしたPostgreSQLのソースアーカイブは/tmpにあることにします。 + su - コマンドで root にスイッチユーザします。 [buildfarm@centos ~]$ su - パスワード: [root@centos ~]# + インストールするディレクトリの作成およびパーミッションの変更など~ 以下のオペレーションでインストールするディレクトリの作成および設定を行いました。 [root@centos /]# mkdir /opt/pgsql [root@centos /]# chown postgres:postgres /opt/pgsql [root@centos /]# chmod 755 /opt/pgsql [root@centos /]# ls -l /opt/ 合計 4 drwxr-xr-x 2 postgres postgres 4096 6月 19 12:28 pgsql + su - postgres で postgres にスイッチユーザします。 [root@centos ~]# su - postgres [postgres@centos ~]$ + tar コマンドでダウンロードしたpostgresql-9.1.4.tar.gzを展開します。 [postgres@centos ~]$ tar zxvf /tmp/postgresql-9.1.4.tar.gz + tarballが展開されていること確認します。 [postgres@centos ~]$ pwd /home/postgres [postgres@centos ~]$ ls -l 合計 4 drwxrwxr-x 6 postgres postgres 4096 6月 1 08:25 postgresql-9.1.4 + 展開したディレクトリにcdします。 [postgres@centos ~]$ cd postgresql-9.1.4/ [postgres@centos postgresql-9.1.4]$ pwd /home/postgres/postgresql-9.1.4 + configureを実行します。~ インストール先は/opt/pgsqlなのでprefixに/opt/pgsqlを指定します。 [postgres@centos postgresql-9.1.4]$ ./configure --prefix=/opt/pgsql checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking which template to use... linux <snip> + configureでerrorなどが出力された場合 ライブラリが不足している場合、以下のようなエラーが出力される場合があります。 *** The installed version of Flex, /usr/bin/flex, is too old to use with PostgreSQL. *** Flex version 2.5.31 or later is required, but this is /usr/bin/flex version 2.5.4. configure: error: readline library not found #br -- flexのバージョンが古いと出力された場合 以下の記事を参考にflexをインストールしてください。~ ---[[flexのインストール>PostgreSQL/flexのインストール]] #br -- configure: error: readline library not found と出力された場合~ 以下のコマンドでreadlineのライブラリをインストールしてください。 yum install readline-devel #br -- configure: error: zlib library not found と出力された場合~ 以下のコマンドでzlibのライブラリをインストールしてください。 yum install zlib-devel + makeコマンドを実行します。 [postgres@centos postgresql-9.1.4]$ make make -C src all make[1]: ディレクトリ `/home/postgres/postgresql-9.1.4/src' に入ります make -C port all make[2]: ディレクトリ `/home/postgres/postgresql-9.1.4/src/port' に入ります <snip> + makeが完了したらインストール前に動作確認をしてみます。(省略可能) [postgres@centos postgresql-9.1.4]$ make check <snip> ../../../src/test/regress/pg_regress --inputdir=. --temp-install=./tmp_check --top-builddir=../../.. --dlpath=. --schedule=./parallel_schedule ============== creating temporary installation ============== <snip> ============== shutting down postmaster ============== ======================= All 126 tests passed. ======================= + make installでコンパイルしたPostgreSQLをインストールします。~ 上記までの操作では、まだインストールされていません。~ $ ls -ltr /opt/pgsql/ 合計 0 make install をすることによりPostgreSQLがインストールされます。 [postgres@centos postgresql-9.1.4]$ make install <snip> /bin/mkdir -p '/opt/pgsql/lib/pgxs/config' /bin/sh ../config/install-sh -c -m 755 ./install-sh '/opt/pgsql/lib/pgxs/config/install-sh' make[1]: ディレクトリ `/home/postgres/postgresql-9.1.4/config' から出ます PostgreSQL installation complete. インストールされたか確認してみます。 $ ls -ltr /opt/pgsql/ 合計 16 drwxrwxr-x 6 postgres postgres 4096 6月 19 13:34 include drwxrwxr-x 6 postgres postgres 4096 6月 19 13:34 share drwxrwxr-x 3 postgres postgres 4096 6月 19 13:34 lib drwxrwxr-x 2 postgres postgres 4096 6月 19 13:34 bin + postgresユーザの.bashrcを編集~ postgresユーザの.bashrcにインストールしたPostgreSQLを使用するための環境変数を設定します。~ 本記事では、viを使って追記しました。 [postgres@centos ~]$ vi ~/.bashrc 追記した内容は以下の通りです。 export PATH=/opt/pgsql/bin:$PATH export POSTGRES_HOME=/opt/pgsql export PGLIB=$POSTGRES_HOME/lib export PGDATA=$POSTGRES_HOME/data export MANPATH="$MANPATH":$POSTGRES_HOME/man export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB" + 起動スクリプトの設置~ 展開したPostgreSQLソース内にcontribディレクトリがあります。~ contribディレクトリ内のstart-scriptsにlinuxというファイルが起動スクリプトの雛型になります。 (本記事の場合は /home/postgres/postgresql-9.1.4/contrib/start-scripts にありました。)~ このファイルをrootユーザで/etc/rc.d/init.d/にpostgresとファイル名を変更してコピーします。 [postgres@centos postgresql-9.1.4]$ su -c "cp contrib/start-scripts/linux /etc/init.d/postgres" パスワード: [postgres@vmbuildfarm postgresql-9.1.4]$ su -c "chmod 755 /etc/init.d/postgres" パスワード: [postgres@centos postgresql-9.1.4]$ ls -l /etc/init.d/postgres -rwxr-xr-x 1 root root 3019 6月 19 13:51 /etc/init.d/postgres + コピーしたpostgresファイルの修正 rootユーザでコピーした/etc/init.d/postgresを修正します。~ 修正箇所はprefixとPGDATAです。 <snip> ## EDIT FROM HERE # Installation prefix prefix=/opt/pgsql # Data directory PGDATA="/opt/pgsql/data" <snip> + chkconfigコマンドにて起動スクリプトの登録 以下のコマンドで上記で編集した起動スクリプトを登録します。(rootユーザで実施) [root@centos ~]# chkconfig --add postgres checkconfig --list で確認できました。 [root@centos ~]# chkconfig --list | grep postgres postgres 0:off 1:off 2:on 3:on 4:on 5:on 6:off + PGDATAで設定したディレクトリを作成します。(initdbします。)~ postgresユーザにスイッチユーザします。~ 上記で.bashrc設定をした環境変数が反映されていることを確認してください。~ 尚、ロケールは--no-localeでinitdbします。 [root@vmbuildfarm ~]# su - postgres [postgres@vmbuildfarm ~]$ initdb --no-locale -D /opt/pgsql/data The files belonging to this database system will be owned by user "postgres". This user must also own the server process. The database cluster will be initialized with locale C. The default database encoding has accordingly been set to SQL_ASCII. The default text search configuration will be set to "english". <snip> + 必要に応じて/opt/pgpsql/dataのpostgresql.conf, pg_hba.confを修正します。~ 当方、localhostのみで運用するつもりなので、デフォルトままです。 + serviceコマンドにてインストールしたpostgresqlを起動してみます。(rootユーザで実施) [root@vmbuildfarm ~]# service postgres start Starting PostgreSQL: ok + postgresユーザで接続してみます。(postgresユーザで実施) [postgres@vmbuildfarm data]$ psql template1 psql (9.1.4) Type "help" for help. template1=# + マシン再起動による自動起動 上記のchkconfig -addで登録したとき既にランレベル2, 3, 4, 5で自動起動するように設定されていました。~ もし全てoffの場合は、以下のコマンドで自動起動するように設定してください。(rootユーザで実施) chkconfig postgres on これで、他のユーザアカウントにインストールしたPostgreSQLの環境変数を設定すれば、設定したユーザのみ使用可能となります。 * 今回実施しなかっとこと [#a327281c] 今回は、特定ユーザのみPostgreSQLを使用できるようにし、現在の環境に影響をあたえたくないのでPostgreSQLのシェアードライブラリをldconfigに設定しませんでした。~ 設定したい場合は、/etc/ld.so.conf.dディレクトリにpostgresql.confのようにファイルを作成しシェアードライブラリのディレクトリを設定すればOKです。~ -設定例(rootで以下のコマンドを実行すれば設定が完了です) echo /opt/pgsql/lib > /etc/ld.so.conf.d/postgresql.conf #htmlinsertpcsp(db-btm.html,db-sp.html)
タイムスタンプを変更しない
#navi(../) * CentOSにPostgreSQL9.1.4をソースからインストール [#fde2c035] CentOS5.8にPostgreSQL9.1.4をソースからインストールしました。~ RPMパッケージからインストールしても良いのですが、特定ユーザ以外はPostgreSQLの各種コマンド等のPATHが通らないようにしたかったため、ソースから手動でインストールしました。~ (特定のユーザしかPostgreSQLを使用しない環境を構築したかったため) #contents #htmlinsertpcsp(db-top.html,db-sp.html) * 関連記事 [#b4f05b39] -[[flexのインストール>PostgreSQL/flexのインストール]] -[[CentOSでPostgreSQLをソースからコンパイルする手順>PostgreSQL/CentOSでPostgreSQLをソースからコンパイルする手順]] -[[PostgreSQLコミュニティーベースのリポジトリを設定し最新を利用する>PostgreSQL/PostgreSQLコミュニティーベースのリポジトリを設定し最新を利用する]] * PostgreSQLのソースを入手 [#i846b507] PostgreSQL9.1.4のソースを以下のサイトからダウンロードしました。~ http://www.postgresql.jp/ ダウンロードしたファイル名は postgresql-9.1.4.tar.gz になります。 * PostgreSQLのユーザを作成 [#dbb9ba6d] PostgreSQLユーザを以下のコマンドで作成しました。 useradd postgres # useradd postgres # id postgres uid=502(postgres) gid=503(postgres) 所属グループ=503(postgres) 尚、パスワードの設定はおこないませんでした。 # cat /etc/passwd | grep postgres postgres:x:502:503::/home/postgres:/bin/bash # cat /etc/shadow | grep postgres postgres:!!:15510:0:99999:7::: ''!!''になっているのでパスワードロック状態なのが確認できます。 * PostgreSQLソースのコンパイル [#wa05420d] 今回は、PostgreSQLをインストールすることにより、他のユーザ環境に影響をあたえたくないので /opt/pgsql にインストールすることにします。~ 尚、本資料はダウンロードしたPostgreSQLのソースアーカイブは/tmpにあることにします。 + su - コマンドで root にスイッチユーザします。 [buildfarm@centos ~]$ su - パスワード: [root@centos ~]# + インストールするディレクトリの作成およびパーミッションの変更など~ 以下のオペレーションでインストールするディレクトリの作成および設定を行いました。 [root@centos /]# mkdir /opt/pgsql [root@centos /]# chown postgres:postgres /opt/pgsql [root@centos /]# chmod 755 /opt/pgsql [root@centos /]# ls -l /opt/ 合計 4 drwxr-xr-x 2 postgres postgres 4096 6月 19 12:28 pgsql + su - postgres で postgres にスイッチユーザします。 [root@centos ~]# su - postgres [postgres@centos ~]$ + tar コマンドでダウンロードしたpostgresql-9.1.4.tar.gzを展開します。 [postgres@centos ~]$ tar zxvf /tmp/postgresql-9.1.4.tar.gz + tarballが展開されていること確認します。 [postgres@centos ~]$ pwd /home/postgres [postgres@centos ~]$ ls -l 合計 4 drwxrwxr-x 6 postgres postgres 4096 6月 1 08:25 postgresql-9.1.4 + 展開したディレクトリにcdします。 [postgres@centos ~]$ cd postgresql-9.1.4/ [postgres@centos postgresql-9.1.4]$ pwd /home/postgres/postgresql-9.1.4 + configureを実行します。~ インストール先は/opt/pgsqlなのでprefixに/opt/pgsqlを指定します。 [postgres@centos postgresql-9.1.4]$ ./configure --prefix=/opt/pgsql checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking which template to use... linux <snip> + configureでerrorなどが出力された場合 ライブラリが不足している場合、以下のようなエラーが出力される場合があります。 *** The installed version of Flex, /usr/bin/flex, is too old to use with PostgreSQL. *** Flex version 2.5.31 or later is required, but this is /usr/bin/flex version 2.5.4. configure: error: readline library not found #br -- flexのバージョンが古いと出力された場合 以下の記事を参考にflexをインストールしてください。~ ---[[flexのインストール>PostgreSQL/flexのインストール]] #br -- configure: error: readline library not found と出力された場合~ 以下のコマンドでreadlineのライブラリをインストールしてください。 yum install readline-devel #br -- configure: error: zlib library not found と出力された場合~ 以下のコマンドでzlibのライブラリをインストールしてください。 yum install zlib-devel + makeコマンドを実行します。 [postgres@centos postgresql-9.1.4]$ make make -C src all make[1]: ディレクトリ `/home/postgres/postgresql-9.1.4/src' に入ります make -C port all make[2]: ディレクトリ `/home/postgres/postgresql-9.1.4/src/port' に入ります <snip> + makeが完了したらインストール前に動作確認をしてみます。(省略可能) [postgres@centos postgresql-9.1.4]$ make check <snip> ../../../src/test/regress/pg_regress --inputdir=. --temp-install=./tmp_check --top-builddir=../../.. --dlpath=. --schedule=./parallel_schedule ============== creating temporary installation ============== <snip> ============== shutting down postmaster ============== ======================= All 126 tests passed. ======================= + make installでコンパイルしたPostgreSQLをインストールします。~ 上記までの操作では、まだインストールされていません。~ $ ls -ltr /opt/pgsql/ 合計 0 make install をすることによりPostgreSQLがインストールされます。 [postgres@centos postgresql-9.1.4]$ make install <snip> /bin/mkdir -p '/opt/pgsql/lib/pgxs/config' /bin/sh ../config/install-sh -c -m 755 ./install-sh '/opt/pgsql/lib/pgxs/config/install-sh' make[1]: ディレクトリ `/home/postgres/postgresql-9.1.4/config' から出ます PostgreSQL installation complete. インストールされたか確認してみます。 $ ls -ltr /opt/pgsql/ 合計 16 drwxrwxr-x 6 postgres postgres 4096 6月 19 13:34 include drwxrwxr-x 6 postgres postgres 4096 6月 19 13:34 share drwxrwxr-x 3 postgres postgres 4096 6月 19 13:34 lib drwxrwxr-x 2 postgres postgres 4096 6月 19 13:34 bin + postgresユーザの.bashrcを編集~ postgresユーザの.bashrcにインストールしたPostgreSQLを使用するための環境変数を設定します。~ 本記事では、viを使って追記しました。 [postgres@centos ~]$ vi ~/.bashrc 追記した内容は以下の通りです。 export PATH=/opt/pgsql/bin:$PATH export POSTGRES_HOME=/opt/pgsql export PGLIB=$POSTGRES_HOME/lib export PGDATA=$POSTGRES_HOME/data export MANPATH="$MANPATH":$POSTGRES_HOME/man export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB" + 起動スクリプトの設置~ 展開したPostgreSQLソース内にcontribディレクトリがあります。~ contribディレクトリ内のstart-scriptsにlinuxというファイルが起動スクリプトの雛型になります。 (本記事の場合は /home/postgres/postgresql-9.1.4/contrib/start-scripts にありました。)~ このファイルをrootユーザで/etc/rc.d/init.d/にpostgresとファイル名を変更してコピーします。 [postgres@centos postgresql-9.1.4]$ su -c "cp contrib/start-scripts/linux /etc/init.d/postgres" パスワード: [postgres@vmbuildfarm postgresql-9.1.4]$ su -c "chmod 755 /etc/init.d/postgres" パスワード: [postgres@centos postgresql-9.1.4]$ ls -l /etc/init.d/postgres -rwxr-xr-x 1 root root 3019 6月 19 13:51 /etc/init.d/postgres + コピーしたpostgresファイルの修正 rootユーザでコピーした/etc/init.d/postgresを修正します。~ 修正箇所はprefixとPGDATAです。 <snip> ## EDIT FROM HERE # Installation prefix prefix=/opt/pgsql # Data directory PGDATA="/opt/pgsql/data" <snip> + chkconfigコマンドにて起動スクリプトの登録 以下のコマンドで上記で編集した起動スクリプトを登録します。(rootユーザで実施) [root@centos ~]# chkconfig --add postgres checkconfig --list で確認できました。 [root@centos ~]# chkconfig --list | grep postgres postgres 0:off 1:off 2:on 3:on 4:on 5:on 6:off + PGDATAで設定したディレクトリを作成します。(initdbします。)~ postgresユーザにスイッチユーザします。~ 上記で.bashrc設定をした環境変数が反映されていることを確認してください。~ 尚、ロケールは--no-localeでinitdbします。 [root@vmbuildfarm ~]# su - postgres [postgres@vmbuildfarm ~]$ initdb --no-locale -D /opt/pgsql/data The files belonging to this database system will be owned by user "postgres". This user must also own the server process. The database cluster will be initialized with locale C. The default database encoding has accordingly been set to SQL_ASCII. The default text search configuration will be set to "english". <snip> + 必要に応じて/opt/pgpsql/dataのpostgresql.conf, pg_hba.confを修正します。~ 当方、localhostのみで運用するつもりなので、デフォルトままです。 + serviceコマンドにてインストールしたpostgresqlを起動してみます。(rootユーザで実施) [root@vmbuildfarm ~]# service postgres start Starting PostgreSQL: ok + postgresユーザで接続してみます。(postgresユーザで実施) [postgres@vmbuildfarm data]$ psql template1 psql (9.1.4) Type "help" for help. template1=# + マシン再起動による自動起動 上記のchkconfig -addで登録したとき既にランレベル2, 3, 4, 5で自動起動するように設定されていました。~ もし全てoffの場合は、以下のコマンドで自動起動するように設定してください。(rootユーザで実施) chkconfig postgres on これで、他のユーザアカウントにインストールしたPostgreSQLの環境変数を設定すれば、設定したユーザのみ使用可能となります。 * 今回実施しなかっとこと [#a327281c] 今回は、特定ユーザのみPostgreSQLを使用できるようにし、現在の環境に影響をあたえたくないのでPostgreSQLのシェアードライブラリをldconfigに設定しませんでした。~ 設定したい場合は、/etc/ld.so.conf.dディレクトリにpostgresql.confのようにファイルを作成しシェアードライブラリのディレクトリを設定すればOKです。~ -設定例(rootで以下のコマンドを実行すれば設定が完了です) echo /opt/pgsql/lib > /etc/ld.so.conf.d/postgresql.conf #htmlinsertpcsp(db-btm.html,db-sp.html)
テキスト整形のルールを表示する