運用環境の構築手順 - shinkasystems/kintaikanri GitHub Wiki
運用環境の構築手順
目的
- 勤怠管理ツールの運用環境を構築する
- 構築後の運用環境のメンテナンスを行う
担当者は事前に不明点を洗い出し、解消しておくこと。
バージョンの確認
ユーザー:root
OS のバージョンを確認する。
cat /etc/redhat-release
arch
Java のバージョンを確認する。
java -version
yum パッケージの最新化と管理設定
ユーザー:root
パッケージの最新化と、基本的なパッケージをインストールする。 yum アップデートの自動化を設定する。
yum -y update
yum -y groupinstall "Base" "Development tools" "Japanese Support"
yum -y install yum-cron
/etc/rc.d/init.d/yum-cron start
chkconfig yum-cron on
chkconfig --list yum-cron
Javaのインストール
ユーザー:root
インストール可能な Java のパッケージ名を確認する。
yum list \*java-1\* | grep open
インストールする。
-
2015年度までは Java7
yum -y install java-1.7.0-openjdk.x86_64 yum -y install java-1.7.0-openjdk-devel.x86_64
-
2016年度からは Java8
yum -y install java-1.8.0-openjdk.x86_64 yum -y install java-1.8.0-openjdk-devel.x86_64
バージョンを確認する。
java -version
バージョンを切り替える。
alternatives --config java
Logwatch のインストール
perl のバージョンを確認する(logwatch の実行に必要なため)。
perl --version
logwatch をインストールする。
yum -y install logwatch
設定ファイルを確認、修正する。
vi /etc/logwatch/conf/logwatch.conf
+ [email protected]
文字コードの設定
ユーザー:root
設定ファイルを開く。
vi /etc/sysconfig/i18n
UTF-8 に変更する。
- LANG="C"
+ LANG="ja_JP.UTF-8"
TCP Wrapper の設定
ユーザー:root
設定ポリシーは以下の通り。
- SSHD サービスへの接続を許可する
- それ以外のサービスへの接続を拒否する
echo "sshd: ALL" >> /etc/hosts.allow
echo "ALL: ALL" >> /etc/hosts.deny
SSHの設定変更
ユーザー:root
SSH の設定ファイルを開く。
vi /etc/ssh/sshd_config
root のログインを禁止する。
- #PermitRootLogin yes
+ PermitRootLogin no
空のパスワードを禁止する。
- #PermitEmptyPasswords no
+ PermitEmptyPasswords no
ユーザー kintai
のみログインを許可する。
+ AllowUsers kintai
SSH サービスを再起動する。
/etc/rc.d/init.d/sshd restart
ホストの変更
ユーザー:root
hosts ファイルを開く。
vi /etc/hosts
- 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
+ 127.0.0.1 localhost app.shinka-ss.net localhost4 localhost4.localdomain4
network ファイルを開く。
vi /etc/sysconfig/network
- HOSTNAME=xxxxx
+ HOSTNAME=app.shinka-ss.net
ホスト名を設定する。
hostname app.shinka-ss.net
hostname
SELinuxの無効化
ユーザー:root
SELinuxの状態を確認し、設定ファイルを開く。
getenforce
setenforce 0
getenforce
vi /etc/sysconfig/selinux
無効にする。
- SELINUX=enforcing
+ SELINUX=disabled
バッファオーバーフローの対策
ユーザー:root
exec-shield の状態を確認し、設定ファイルを開く。
cat /proc/sys/kernel/exec-shield
echo 2 > /proc/sys/kernel/exec-shield
cat /proc/sys/kernel/exec-shield
vi /etc/sysctl.conf
有効化する。
+ kernel.exec-shield = 2
ユーザーの新規追加
ユーザー:root
ユーザー kintai
を作成する。
useradd kintai
passwd kintai
chmod 701 /home/kintai
root になれるユーザーを限定する
ユーザー:root
設定ファイルを開く。
vi /etc/pam.d/su
- #auth required pam_wheel.so use_uid
+ auth required pam_wheel.so use_uid
usermod -G wheel kintai
鍵認証の設定
ユーザー:kintai
予め作成した秘密鍵と公開鍵を SCP でサーバーへアップロードする。
- id_rsa(パスフレーズつき秘密鍵)
- id_rsa.pub(公開鍵)
公開鍵をサーバーへ登録する。
cd ~
mkdir .ssh
chmod 700 .ssh
cat id_rsa.pub > .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
rm -f id_rsa.pub
ユーザー:root
SSH を鍵認証に設定する。
vi /etc/ssh/sshd_config
- #PubkeyAuthentication yes
+ PubkeyAuthentication yes
- #AuthorizedKeysFile .ssh/authorized_keys
+ AuthorizedKeysFile .ssh/authorized_keys
- #PasswordAuthentication yes
+ PasswordAuthentication no
+ ChallengeResponseAuthentication no
/etc/rc.d/init.d/sshd reload
iptables の設定
ユーザー:root
設定のポリシーは以下のとおりとする。
- 外からの通信は明示して許可していない限り全て拒否、内からの通信は全て許可
- 確立済みの通信は許可
- pingを許可
- ループバックを許可
- 特定ポートへの通信を許可
- 80 ポートへの通信を 8080 ポートへフォワードする。
iptables ファイルを開く。
vi /etc/sysconfig/iptables
iptables の内容は以下の通り。
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
COMMIT
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [17:2552]
:SERVICES - [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -j SERVICES
-A INPUT -p udp -m udp --sport 53 -j ACCEPT
-A INPUT -p udp -m udp --sport 123 --dport 123 -j ACCEPT
-A SERVICES -p tcp -m tcp --dport 22 -j ACCEPT
-A SERVICES -p tcp -m tcp --dport 80 -j ACCEPT
-A SERVICES -p tcp -m tcp --dport 8080 -j ACCEPT
COMMIT
サービスの登録
ユーザー:kintai
サービスのシェルスクリプトを作成する。
cd ~
touch shinka-app.sh
vi shinka-app.sh
シェルスクリプトの内容は以下の通り。
https://gist.github.com/aogiri/dadd5d6f051918c36703
サービスに実行権限を与える。
chmod +x shinka-app.sh
サービスが自動起動するよう設定する。
crontab -e
+ @reboot sh /home/kintai/shinka-app.sh start
サービスの開始と終了を手動で行うときは、以下のコマンドを実行する。
ユーザー:kintai
- サービスの開始
shinka-app.sh start
- サービスの終了
shinka-app.sh stop
- サービスの再起動
shinka-app.sh restart
ビルドとデプロイ
ユーザー:kintai
Gradle タスクの distributeKintaiApp を実行し、 アプリケーションの zip ファイルを作成する。 作成した zip ファイルをアップロードし解凍する。
unzip kintaikanri.zip
ディレクトリ構造
解凍したファイルは、以下のディレクトリ構造になるように構成する。
pwd;find . | sort | sed '1d;s/^\.//;s/\/\([^/]*\)$/|--\1/;s/\/[^/|]*/| /g'
一部抜粋
/home/kintai
|--database
| |--h2
| | |--bin
| | | |--h2-1.4.185.jar
|--kintai_app
| |--kintaikanri.jar
| |--kintaikanri.log
| |--properties
| | |--smtp.properties
| |--war
|--kintai_data
| |--kintai.mv.db
|--shinka-app.sh