Más contenido relacionado La actualidad más candente (20) Similar a 第1回 一撃サーバー構築シェルスクリプト勉強会 (20) Más de Yasutaka Hamada (20) 第1回 一撃サーバー構築シェルスクリプト勉強会2. 第1回 一撃サーバー構築シェルスクリプト勉強会
[自己紹介]
名前: 濱田康貴 ( @nullpopopo )
USP友の会
http://www.usptomo.com/
Blog
http://nullpopopo.blogcube.info/
Facebook
https://www.facebook.com/nullpopopo
著書: USP Magazine
教えて先輩♡サーバー運用お助けTIPS
隔月連載中
20. 第1回 一撃サーバー構築シェルスクリプト勉強会
サーバ作成時にアプリケーションのインストールやサーバ設定を
自動的に行う「スタートアップスクリプト」
サーバを作成する際に、任意のシェルスクリプトを記述した「ス
タートアップスクリプト」を選択することにより、 起動時にそれ
らを自動的に実行できます。この機能によりあらかじめ必要なア
プリケーションをインストールや、 サーバ設定の自動化も行えま
す。
※スタートアップスクリプト機能は現在、CentOS、ScientificLinux環境のみで動作します。
※ http://cloud.sakura.ad.jp/feature.php より引用
22. 第1回 一撃サーバー構築シェルスクリプト勉強会
@sacloud-once
シェルスクリプト中のコメントに以下のように記述すると、OS起
動時に1回だけ(OSインストール後初回起動時のみ)実行されます。
記述例
# @sacloud-once
これにより、yumコマンドによるアップデートやrebootコマンドに
よる再起動(kernelやglibcアップデート後の反映)をスタートアップ
スクリプト内にて行うことができます。
※ @sacloud-once の記述を忘れてrebootコマンドをスタートアップスクリプトで実行すると、起動
→再起動→再起動→(以下エンドレス)という地獄を味わってしまいます。。。
23. 第1回 一撃サーバー構築シェルスクリプト勉強会
@sacloud-desc
以下のように、1行コメントをつけることができます。
# @sacloud-desc これはコメントです
@sacloud-desc-begin / @sacloud-desc-end
以下のように、複数行のコメントをつけることができます。
# @sacloud-desc-begin
# このように
# 複数行のコメントをつけることができます。
# @sacloud-desc-end
28. 第1回 一撃サーバー構築シェルスクリプト勉強会
非機能要件
●WEBサーバは nginx + PHP-FPMとし、nginx は
mainline からインストールする
● PHPは5.5または5.6をインストールする
(php-cli php-common php-mbstring php-pdo php-xml
php-mysqlnd php-pecl-apcu php-xmlrpc php-opcache
php-fpm)
29. 第1回 一撃サーバー構築シェルスクリプト勉強会
非機能要件
●MySQL Serverは標準リポジトリからインストー
ルする
●MySQLのrootパスワード、WordPress接続用
ユーザのパスワードは自動生成する
●mysql_secure_installation と同等の処理を行う
31. 第1回 一撃サーバー構築シェルスクリプト勉強会
#!/bin/bash
# @sacloud-once
DBNAME=wordpress
DBUSER=wpuser
ETH0=$(ip a show eth0 | grep inet | grep -v inet6 | awk '{print $2}' | sed -e "s//[0-9]*//")
HOME=/root
export HOME
USER=root
export USER
################################################################################
# Section1 yum update
yum -y update
################################################################################
34. 第1回 一撃サーバー構築シェルスクリプト勉強会
iptables設定内容
● 受信パケットは一旦破棄する
● 送信パケットはすべて許可する
● パケット転送は許可しない
● localhostからのアクセスをすべて許可する
● 内部から行ったアクセスに対する外部からの返答アクセスを許可
する
● 外部からのTCP22番ポート(SSH)へのアクセスを許可する
● 外部からのTCP80番ポート(HTTP)へのアクセスを許可する
38. 第1回 一撃サーバー構築シェルスクリプト勉強会
[PHP]
● remi-release-6リポジトリ取得
● php-cli php-common php-mbstring php-pdo php-xml
php-mysqlnd php-pecl-apcu php-xmlrpc php-opcache
php-fpm インストール
44. 第1回 一撃サーバー構築シェルスクリプト勉強会
ポイント
● rootユーザのパスワードはランダムに生成したい(固定値にし
ちゃうと、漏れたときのリスクが同じスクリプトを使って作った
サーバすべてに及ぶ)
● WordPress接続用のユーザーも、同様にパスワードをランダムに
生成する
● mysqlコマンドに-eオプション
45. 第1回 一撃サーバー構築シェルスクリプト勉強会
● mysqldを起動し、スタートアップに登録する
● MySQLのrootユーザとパスワードを作成し、パラメーターファ
イルに格納する。書式は user root <Password>
● WordPressのDBに関してパラメーターファイルに格納する。書
式は DBPARAM DB名 DBユーザー名 <Password>
● MySQLのrootユーザーのパスワードを設定する。
● WordPressのデータベースを作成する。
● DBユーザー(WordPressデータベース接続用)のパスワードを変数
PWに格納する。
● DBユーザーを作成する。
46. 第1回 一撃サーバー構築シェルスクリプト勉強会
● mysql_secure_installation 代替コマンド実行
● 匿名ユーザーの削除
● localhost以外からのrootログイン禁止
● testデータベース削除
なぜmysql_secure_installationを使わないのか?
→ 対話式のコマンドなので、入力待ちで止まってしまうため
● 権限情報の再読込
49. 第1回 一撃サーバー構築シェルスクリプト勉強会
やること
● php.iniのタイムゾーン設定
→ 余計なログを出したくないので、東京に合わせておく。
● php-fpmの実行ユーザー設定
→ apacheからnginxへ変更する。
● php-fpmを起動し、スタートアップ登録する
52. 第1回 一撃サーバー構築シェルスクリプト勉強会
● ドキュメントルートは /var/www/IPアドレス
● githubからWordPressダウンローダーを取得する
https://raw.githubusercontent.com/nullpopopo/wpdl/master/bin/wpdl
● WordPress ( latest-ja.tar.gz ) は ${HOME}/src/wordpress/current/
に保存される
● wp-config-sample.php から wp-config.php をコピーし、DB名、
DBのユーザー名、パスワードを設定し、「put your unique
phrase here」を32文字のランダムな文字列に置換する
● ドキュメントルートのユーザー・グループは nginx:root とする
55. 第1回 一撃サーバー構築シェルスクリプト勉強会
● /etc/nginx/nginx.conf を直接弄るのは
worker_processesの数をコア数に合わせるくら
いで、他は弄らない。
● /etc/nginx/conf.d/000_VHOST.conf にヒアドキュ
メントで設定を流し込む。
56. 第1回 一撃サーバー構築シェルスクリプト勉強会
# This order might seem weird - this is attempted to match last if rules below
fail.
# http://wiki.nginx.org/HttpCoreModuleJa#try_files
location / {
try_files $uri $uri/ /index.php?$args;
index index.php index.html index.htm;
}
ファイルの存在を順に確認し、最初に確認できたファイルを返却します。$uri /のように末尾にス
ラッシュのついたパスはディレクトリを示します。ファイルが確認できなかった場合は、末尾に指
定したパラメータに対して内部リダイレクトが行われます。末尾のパラメータはフォールバック用
の URI で、必ず 存在している必要があります。存在していない場合は内部エラーが発生します。
57. 第1回 一撃サーバー構築シェルスクリプト勉強会
# Add trailing slash to */wp-admin requests.
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
リクエストURIが http://IPアドレス/wp-admin だったら、末尾にス
ラッシュをつけたURIにリライトする。