#はじめに
仕事の現場で「本番環境の構築どうしますか?」と聞くと
「本番環境構築しといて」と言われることよくありますよね。
(言い出しっぺがやらされる法則)
そういう人のために構築手順まとめました。
#PostgreSQLのインストール
最新版をインストールしたいので、PostgreSQLのyumリポジトリを追加
sudo yum localinstall https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
インストール
sudo yum install postgresql96-server postgresql96-contrib postgresql96-devel
インストールするパッケージの説明
postgresql-server サーバ本体(postgresql、libsもインストールされる)
postgresql クライアント
postgresql-libs libpqなどのPostgreSQLのライブラリ群
postgresql-devel 開発用モジュール(役立つかもしれないので入れておく)
postgresql-contrib contribモジュール(役立つかもしれないので入れておく)
バージョン確認コマンド
psql --version
データベースクラスタ(保存領域みたいなもの)を作成
※postgresユーザー(自動で作成されている)になってから実行
sudo su - postgres
/usr/pgsql-9.6/bin/initdb --no-locale --encoding=UTF8
※--no-localeをつけないと、サーバーのロケールが設定されてしまうので注意
(ロケールが設定されるとソート順が変わってしまう)
※initdbをやり直したい場合は「/var/lib/pgsql/9.6/data」の中をすべて削除し再度実行
initdbの実行の仕方はいろいろあるようでどうやるのが正しいかわかりません。
「/usr/pgsql-9.6/bin/postgresql96-setup initdb --no-locale --encoding=UTF8」
他のサイトを見ると上記コマンドをrootで実行してたりするのですが、--no-localeオプションがうまく渡りません。またPostgreSQLのドキュメントには以下の記載があります。
https://www.postgresql.jp/document/9.4/html/app-initdb.html
initdbは、サーバプロセスの所有者となるユーザによって実行されなければなりません。 initdbによって作成されるファイルやディレクトリにサーバがアクセスできる必要があるからです。 サーバをrootとして実行することはできませんので、rootでinitdbを実行してはいけません (実際には、実行しようとしても拒否されます)。
とりあえず、postgresユーザーになってinitdbコマンドを直接叩けば実行できましたが、どうするのが正しいのか分かる人がいたら教えてください。
自動起動確認(Loadedのserviceの箇所を確認 disabledまたはenabled)
systemctl status postgresql-9.6
またはサービス一覧でも確認可能
enabled(自動起動する) disabled(自動起動しない) static(他のサービスに依存)
systemctl list-unit-files -t service
自動起動設定
sudo systemctl enable postgresql-9.6
起動
sudo systemctl start postgresql-9.6
#PostgreSQLの動作確認
PostgreSQLクライアント起動
sudo -u postgres psql
ロケール確認(settingがCになっていればロケールなし)
SELECT name, setting, context FROM pg_settings WHERE name LIKE 'lc%';
データベース作成
create database データベース名;
データベース一覧表示(エンコードはUTF8)
\l
終了
\q
#Javaのインストール
以下参照
Javaのビルドサーバ(Ant)構築手順
#Nginxのインストール
最新版をインストールしたいので、Nginxのyumリポジトリを追加
sudo yum install http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
インストール
sudo yum install nginx
自動起動確認
systemctl status nginx
自動起動設定
sudo systemctl enable nginx
起動
sudo systemctl start nginx
※AWSのEC2インスタンスで繋がらない場合はセキュリティグループを確認
SELinuxが有効でも繋がりました。
#tomcatのインストール
構築手順作成しました。
以下参照
CentOS7にTomcat8をインストールして自動起動設定
#さいごに
言い出しっぺにやらせるとだれも言い出さなくなると思います。
そこで、今後は言い出しっぺ以外にやらせるというルールにしたらどうでしょう?
とりあえず、今後は「本番環境の構築どうしますか?」と言い出さないようにしようと思います。