SlideShare a Scribd company logo
1 of 94
Download to read offline
第3回 一撃サーバー構築シェルスクリプト勉強会 
USP友の会 
@nullpopopo
第3回 一撃サーバー構築シェルスクリプト勉強会 
[自己紹介] 
名前: 濱田康貴 ( @nullpopopo ) 
USP友の会 
http://www.usptomo.com/ 
Blog 
http://nullpopopo.blogcube.info/ 
Facebook 
https://www.facebook.com/nullpopopo 
著書: USP Magazine 
教えて先輩♡サーバー運用お助けTIPS 
隔月(偶数月号)連載中
第3回 一撃サーバー構築シェルスクリプト勉強会 
石狩に行ってきました
第3回 一撃サーバー構築シェルスクリプト勉強会
第3回 一撃サーバー構築シェルスクリプト勉強会 
北海道観光、楽しんできました。
第3回 一撃サーバー構築シェルスクリプト勉強会 
北海道グルメを堪能しました。
第3回 一撃サーバー構築シェルスクリプト勉強会 
次回勉強会予告 
12/13(土)〜12/14(日)、日本UNIXユーザー会と共催で 
シェルスクリプトワークショップ を開催します。 
会場は鳥取環境大学 講義棟 1階 15教室で、懇親会には 
カニが出ます。 
東京でもサテライト開催予定です。
第3回 一撃サーバー構築シェルスクリプト勉強会 
前回のおさらい 
&& 
今回の環境構築
第3回 一撃サーバー構築シェルスクリプト勉強会 
http://nullpopopo.blogcube.info/2014/09/ichigeki-kotaeall.html 
ここからコピペして 
環境構築します
第3回 一撃サーバー構築シェルスクリプト勉強会
第3回 一撃サーバー構築シェルスクリプト勉強会
第3回 一撃サーバー構築シェルスクリプト勉強会
第3回 一撃サーバー構築シェルスクリプト勉強会
第3回 一撃サーバー構築シェルスクリプト勉強会
第3回 一撃サーバー構築シェルスクリプト勉強会
第3回 一撃サーバー構築シェルスクリプト勉強会
第3回 一撃サーバー構築シェルスクリプト勉強会
第3回 一撃サーバー構築シェルスクリプト勉強会
第3回 一撃サーバー構築シェルスクリプト勉強会
第3回 一撃サーバー構築シェルスクリプト勉強会
第3回 一撃サーバー構築シェルスクリプト勉強会
第3回 一撃サーバー構築シェルスクリプト勉強会
第3回 一撃サーバー構築シェルスクリプト勉強会
第3回 一撃サーバー構築シェルスクリプト勉強会
第3回 一撃サーバー構築シェルスクリプト勉強会 
このように、WordPressのインストール 
画面が表示されればOKです。 
けどまだWordPressのインストールは行 
わないでください。後でお楽しみがあり 
ますので。
第3回 一撃サーバー構築シェルスクリプト勉強会 
中で何をしていたかというと・・・ 
1.yum update 
2.fail2banのメール宛先と送信元をroot@localhostに変更 
3.iptables設定 
4.nginxインストール 
5.phpインストール 
6.mysqlインストール 
7.mysqlパラメータ生成→mysql設定 
8.php設定 
9.WordPressインストール 
10.nginx設定ファイル生成 
11.OS再起動
第3回 一撃サーバー構築シェルスクリプト勉強会 
今回のテーマ
第3回 一撃サーバー構築シェルスクリプト勉強会 
どうせなら単一のホストだけではなくバーチャル 
ホストも一撃サーバーで運用したい・・・という 
声が聞こえてきたので、一撃スクリプト作っちゃ 
いました。
第3回 一撃サーバー構築シェルスクリプト勉強会 
http://nullpopopo.blogcube.info/2014/11/20141108_ichigeki_odai.html
第3回 一撃サーバー構築シェルスクリプト勉強会 
●コマンドライン一発でWordPressがインストー 
ルされたバーチャルホストを構築 
●勿論バーチャルホストの削除も可能 
●バーチャルホスト削除時にはコンテンツとDBを 
自動バックアップ
第3回 一撃サーバー構築シェルスクリプト勉強会 
スクリプト起動 
第1引数が create の場合 
第1引数が delete の場合 
第1引数が その他の場合 
引数が6つでなければ、使い方を表示して異常終了する。 
引数が6つであれば、関数CREATEを実行する。 
引数が2つでなければ、使い方を表示して異常終了する。 
引数が2つであれば、関数DELETEを実行する。 
使い方を表示して異常終了する。
第3回 一撃サーバー構築シェルスクリプト勉強会 
使い方 (バーチャルホスト作成) 
# VHMAINTE create www.example.com "ぬるぽぽぽのブログ" 
nullpopopo BlogP@ssw0rd_is_here youremail@example.com
第3回 一撃サーバー構築シェルスクリプト勉強会 
使い方 (バーチャルホスト作成) 
バーチャルホスト名 
# VHMAINTE create www.example.com "ぬるぽぽぽのブログ" 
nullpopopo BlogP@ssw0rd_is_here youremail@example.com
第3回 一撃サーバー構築シェルスクリプト勉強会 
使い方 (バーチャルホスト作成) 
ブログのタイトル 
# VHMAINTE create www.example.com "ぬるぽぽぽのブログ" 
nullpopopo BlogP@ssw0rd_is_here youremail@example.com
第3回 一撃サーバー構築シェルスクリプト勉強会 
使い方 (バーチャルホスト作成) 
# VHMAINTE create www.example.com "ぬるぽぽぽのブログ" 
nullpopopo BlogP@ssw0rd_is_here youremail@example.com 
ブログの 
ログインID
第3回 一撃サーバー構築シェルスクリプト勉強会 
使い方 (バーチャルホスト作成) 
# VHMAINTE create www.example.com "ぬるぽぽぽのブログ" 
nullpopopo BlogP@ssw0rd_is_here youremail@example.com 
ブログの 
ログインパスワード
第3回 一撃サーバー構築シェルスクリプト勉強会 
使い方 (バーチャルホスト作成) 
# VHMAINTE create www.example.com "ぬるぽぽぽのブログ" 
nullpopopo BlogP@ssw0rd_is_here youremail@example.com 
メールアドレス
第3回 一撃サーバー構築シェルスクリプト勉強会 
使い方 (バーチャルホスト削除) 
# VHMAINTE delete www.example.com
第3回 一撃サーバー構築シェルスクリプト勉強会 
#!/bin/bash 
変数設定、基本設定 
バーチャルホスト作成時の処理をまとめた「CREATE」関数 
バーチャルホスト削除時の処理をまとめた「DELETE」関数 
第一引数によって処理を選択するCASE文
第3回 一撃サーバー構築シェルスクリプト勉強会 
変数設定、基本設定
第3回 一撃サーバー構築シェルスクリプト勉強会 
# cat bin/VHMAINTE | head 
#!/bin/bash 
set -e 
LANG=C 
FQDN=$2 
BLOGTITLE=$3 
AdminUsername=$4 
AdminPassword=$5 
AdminEmail=$6 
バーチャルホスト作成時に引数として 
指定する内容
第3回 一撃サーバー構築シェルスクリプト勉強会 
bashの引数 
$0 実行時のコマンド名 
$1〜$n シェルスクリプト実行時に渡す引数
第3回 一撃サーバー構築シェルスクリプト勉強会 
DROOT=/var/www/${FQDN} 
ドキュメントルートのディレクトリ 
/var/www/www.example.com のように 
引数に与えたFQDNがディレクトリ名となる。
第3回 一撃サーバー構築シェルスクリプト勉強会 
ETH0=$(ip a show eth0 | grep inet | grep -v inet6 | awk 
'{print $2}' | sed -e "s//[0-9]*//") 
eth0のIPアドレスをipコマンドから取得
第3回 一撃サーバー構築シェルスクリプト勉強会 
PARAMFILE=${HOME}/.mysql/MySQLPARAM 
MySQLのパラメータファイル名を変数に格納
第3回 一撃サーバー構築シェルスクリプト勉強会 
if [ ! -x ${HOME}/bin/wp ]; 
then 
curl -o ${HOME}/bin/wp https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar 
chmod 700 ${HOME}/bin/wp 
fi 
一撃シリーズ今回の目玉!wp-cliのインストール! 
※ 取得元ファイル: https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
第3回 一撃サーバー構築シェルスクリプト勉強会 
wp-cliとは? 
WordPress本体のインストール、アップデートか 
らプラグインやテーマのインストールやアップ 
デートまでほぼすべての操作がコマンドラインか 
らできてしまう! 
_人人人人人人人人人_ 
> まさにシェル芸 < 
 ̄Y^Y^Y^Y^Y^Y^Y^Y ̄
第3回 一撃サーバー構築シェルスクリプト勉強会 
http://wp-cli.org/
第3回 一撃サーバー構築シェルスクリプト勉強会 
バーチャルホスト作成時の処理をまとめた「CREATE」関数
第3回 一撃サーバー構築シェルスクリプト勉強会 
関数 CREATE でやっていること 
1.DB名を作成する (wpdb0000〜) 
2.DBユーザー名を作成する (user0000〜) 
3.DBパラメータファイル作成 
4.DB作成 
5.DBユーザー作成 
6.ドキュメントルート作成 
7.WordPressインストール 
8.nginx設定ファイル生成 
9.nginx再起動
第3回 一撃サーバー構築シェルスクリプト勉強会 
# cat bin/VHMAINTE | head -n 51 | tail -n 31 
CREATE(){ 
DBNAME=$(printf "wpdb%04dn" $(ls /var/www/ | egrep -v "(^html|gz$|^"${ETH0}")" | wc -l)) 
DBUSER=$(printf "user%04dn" $(ls /var/www/ | egrep -v "(^html|gz$|^"${ETH0}")" | wc -l)) 
(中略) 
} 
バーチャルホスト作成時の処理を 
関数「CREATE」にまとめた
第3回 一撃サーバー構築シェルスクリプト勉強会 
DBNAME=$(printf "wpdb%04dn" $(ls /var/www/ | egrep -v "(^html|gz$|^"${ETH0}")" | wc -l)) 
DBUSER=$(printf "user%04dn" $(ls /var/www/ | egrep -v "(^html|gz$|^"${ETH0}")" | wc -l)) 
DB名とDBユーザー名を連番で作成するため、 
/var/www以下のディレクトリ(/var/www/IPア 
ドレス と /var/www/html、そしてバックアッ 
プファイルを除く)の数をもとに採番する
第3回 一撃サーバー構築シェルスクリプト勉強会 
if [ 0 = $(grep ${FQDN} ${PARAMFILE} | wc -l) ]; 
then 
echo "DBPARAM ${DBNAME} ${DBUSER} $(cat /dev/urandom | tr -dc '[:alnum:]' | head -c 8)"  
${FQDN} ${BLOGTITLE} ${AdminUsername} ${AdminPassword} ${AdminEmail}>> $ 
{PARAMFILE} 
mysql -u root -p$(grep ^user ${PARAMFILE} | awk '{print $NF}')  
-e "create database ${DBNAME} character set utf8;" 
PW=$(grep ${FQDN} ${PARAMFILE} | awk '{print $4}') 
mysql -u root -p$(grep ^user ${PARAMFILE} | awk '{print $NF}')  
-e "GRANT ALL PRIVILEGES on ${DBNAME}.* to ${DBUSER}@localhost identified by "${PW}";" 
mysql -u root -p$(grep ^user ${PARAMFILE} | awk '{print $NF}')  
-e "FLUSH PRIVILEGES;" 
fi 
もし引数に指定したFQDNがパラメータファイ 
ルになければ、引数の内容をパラメータファ 
イルに書き込み、パラメータファイルをもと 
にDB作成、ユーザー作成を行い、MySQLの権 
限テーブルを再読み込みする。
第3回 一撃サーバー構築シェルスクリプト勉強会 
echo "DBPARAM ${DBNAME} ${DBUSER} $(cat /dev/urandom | tr -dc '[:alnum:]' | head -c 8)"  
${FQDN} ${BLOGTITLE} ${AdminUsername} ${AdminPassword} ${AdminEmail}>> $ 
{PARAMFILE} 
パラメータファイルへの書き込み処理例: 
# VHMAINTE create www.example.com "ぽぽぽぽぽ" nullpopopo BlogP@ssw0rD 
yasutaka.hamada@gmail.com 
# cat ${HOME}/.mysql/MySQLPARAM | grep www.example.com 
DBPARAM wpdb0000 user0000 DB_PASSWORD www.example.com ぽぽぽぽぽ nullpopopo 
BlogP@ssw0rD yasutaka.hamada@gmail.com
第3回 一撃サーバー構築シェルスクリプト勉強会 
mysql -u root -p$(grep ^user ${PARAMFILE} | awk '{print $NF}')  
-e "create database ${DBNAME} character set utf8;" 
確認1 データベースが作成されているかの確認: 
# mysql -u root -p$(cat ${HOME}/.mysql/MySQLPARAM | grep ^user | awk '{print $NF}') -e 
'show databases;' 
+--------------------+ 
| Database | 
+--------------------+ 
| information_schema | 
| mysql | 
| wordpress | 
| wpdb0000 | 
+--------------------+
第3回 一撃サーバー構築シェルスクリプト勉強会 
mysql -u root -p$(grep ^user ${PARAMFILE} | awk '{print $NF}')  
-e "create database ${DBNAME} character set utf8;" 
確認2 データベースの文字コードが正しいことの確認: 
# mysql -u root -p$(cat ${HOME}/.mysql/MySQLPARAM | grep ^user | awk '{print $NF}') -e 
'show create database wpdb0000;' 
+----------+-------------------------------------------------------------------+ 
| Database | Create Database | 
+----------+-------------------------------------------------------------------+ 
| wpdb0000 | CREATE DATABASE `wpdb0000` /*!40100 DEFAULT CHARACTER SET utf8 */ | 
+----------+-------------------------------------------------------------------+
第3回 一撃サーバー構築シェルスクリプト勉強会 
変数 DROOT は /var/www/${FQDN} でしたね 
[ ! -d ${DROOT} ] && mkdir -p ${DROOT} 
wp core download --locale=ja --path=${DROOT} 
cd ${DROOT} 
wp core download でWordPressを公式サイトからダウンロードします。 
引数に「--locale=ja」を加えることで、日本語版のWordPressをダウン 
ロードすることができます。「--path=<フルパス>」でインストール先 
ディレクトリを指定できるので、ここではバーチャルホストのドキュメ 
ントルートを指定します。
第3回 一撃サーバー構築シェルスクリプト勉強会 
wp core config --dbname=$(grep ${FQDN} ${PARAMFILE} | awk '{print $2}')  
--dbuser=$(grep ${FQDN} ${PARAMFILE} | awk '{print $3}')  
--dbpass=$(grep ${FQDN} ${PARAMFILE} | awk '{print $4}') 
wp core config コマンドで wp-config.php を生成する。 
前ページでドキュメントルートに移動しているので、-- 
pathを指定せずにカレントディレクトリで作業する。
第3回 一撃サーバー構築シェルスクリプト勉強会 
wp core config --dbname=$(grep ${FQDN} ${PARAMFILE} | awk '{print $2}')  
--dbuser=$(grep ${FQDN} ${PARAMFILE} | awk '{print $3}')  
--dbpass=$(grep ${FQDN} ${PARAMFILE} | awk '{print $4}') 
# cat ${HOME}/.mysql/MySQLPARAM | grep www.example.com 
DBPARAM wpdb0000 user0000 DB_PASSWORD www.example.com ぽぽぽぽぽ 
nullpopopo BlogP@ssw0rD yasutaka.hamada@gmail.com 
# cat ${HOME}/.mysql/MySQLPARAM | grep www.example.com | awk '{print $2}' 
wpdb0000 
# cat ${HOME}/.mysql/MySQLPARAM | grep www.example.com | awk '{print $3}' 
user0000 
# cat ${HOME}/.mysql/MySQLPARAM | grep www.example.com | awk '{print $4}' 
DB_PASSWORD
第3回 一撃サーバー構築シェルスクリプト勉強会 
wp core install --url=${FQDN} --title=${BLOGTITLE} 
--admin_user=${AdminUsername} --admin_password=$ 
{AdminPassword} --admin_email=${AdminEmail} 
cd 
wp core install コマンドで WordPressをインストール 
(wp-config.phpの内容をDBに投入)する。ドキュメント 
ルートに移動済なので、--pathを指定せずにカレントディ 
レクトリで作業する。
第3回 一撃サーバー構築シェルスクリプト勉強会 
cp -p /etc/nginx/conf.d/000_VHOST.conf /etc/nginx/conf.d/$ 
{FQDN}.conf 
IPアドレスでアクセスした時に表示する 
バーチャルホストのconfigファイルをも 
とに、新しく作成するバーチャルホスト 
のconfigファイルを生成(コピー)する。
第3回 一撃サーバー構築シェルスクリプト勉強会 
sed -i s/${ETH0}/${FQDN}/g /etc/nginx/conf.d/${FQDN}.conf 
configファイル中のIPアドレスをバー 
チャルホスト名に置換する。
第3回 一撃サーバー構築シェルスクリプト勉強会 
sed -i 's/^}$//g' /etc/nginx/conf.d/${FQDN}.conf 
ログの設定をserverディレクティブに追 
記するため、一旦ディレクティブの閉じ 
カッコを削除する。
第3回 一撃サーバー構築シェルスクリプト勉強会 
echo " access_log /var/log/nginx/${FQDN}_access.log 
main;" >> /etc/nginx/conf.d/${FQDN}.conf 
echo " error_log /var/log/nginx/${FQDN}_error.log 
warn;" >> /etc/nginx/conf.d/${FQDN}.conf 
echo "}" >> /etc/nginx/conf.d/${FQDN}.conf 
ログの設定をserverディレクティブに追 
記し、一旦削除したディレクティブの閉 
じカッコを追記する。
第3回 一撃サーバー構築シェルスクリプト勉強会 
service nginx reload 
nginxの設定ファイルを再読み込みする。
第3回 一撃サーバー構築シェルスクリプト勉強会 
# diff /etc/nginx/conf.d/000_VHOST.conf 
/etc/nginx/conf.d/www.example.com.conf 
2,3c2,3 
< server_name 133.242.18.139; 
< root /var/www/133.242.18.139; 
--- 
> server_name www.example.com; 
> root /var/www/www.example.com; 
29a30,32 
> 
> access_log /var/log/nginx/www.example.com_access.log main; 
> error_log /var/log/nginx/www.example.com_error.log warn;
第3回 一撃サーバー構築シェルスクリプト勉強会 
# ls -l /var/log/nginx/ 
合計 28 
-rw-r----- 1 nginx adm 589 10月 23 04:12 2014 access.log 
-rw-r----- 1 nginx adm 973 10月 22 04:41 2014 access.log-20141021.gz 
-rw-r----- 1 nginx adm 737 10月 23 03:04 2014 access.log-20141022.gz 
-rw-r----- 1 nginx adm 4174 10月 22 23:54 2014 access.log-20141023 
-rw-r----- 1 nginx adm 142 10月 23 03:20 2014 error.log 
-rw-r--r-- 1 nginx root 1713 10月 23 04:19 2014 www.example.com_access.log 
-rw-r--r-- 1 nginx root 0 10月 20 11:35 2014 www.example.com_error.log 
-rw-r--r-- 1 root root 0 10月 20 11:38 2014 www2.example.com_access.log 
-rw-r--r-- 1 root root 0 10月 20 11:38 2014 www2.example.com_error.log
第3回 一撃サーバー構築シェルスクリプト勉強会 
# cat /etc/logrotate.d/nginx 
/var/log/nginx/*.log { 
daily 
missingok 
rotate 52 
compress 
delaycompress 
notifempty 
create 640 nginx adm 
sharedscripts 
postrotate 
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid` 
endscript 
}
第3回 一撃サーバー構築シェルスクリプト勉強会 
休憩
第3回 一撃サーバー構築シェルスクリプト勉強会 
バーチャルホスト削除時の処理をまとめた「DELETE」関数
第3回 一撃サーバー構築シェルスクリプト勉強会 
関数 DELETE でやっていること 
1.nginx設定ファイルをリネーム 
2.nginx再起動 
3.DBバックアップ 
4.DB削除 
5.DBユーザー削除 
6.パラメータファイルから該当FQDNを削除
第3回 一撃サーバー構築シェルスクリプト勉強会 
# cat bin/VHMAINTE | head -n 73 | tail -n 21 
DELETE(){ 
mv /etc/nginx/conf.d/${FQDN}.conf /etc/nginx/conf.d/${FQDN}.conf.DISABLED_$(date +%Y%m%d%H%M%S) 
service nginx reload 
(中略) 
} 
バーチャルホスト削除時の処理を 
関数「DELETE」にまとめた
第3回 一撃サーバー構築シェルスクリプト勉強会 
nginxのバーチャルホスト設定ファイルをリネー 
ムし、nginxを再読み込みする 
mv /etc/nginx/conf.d/${FQDN}.conf /etc/nginx/conf.d/$ 
{FQDN}.conf.DISABLED_$(date +%Y%m%d%H%M%S) 
service nginx reload 
例) 
www.example.com.conf 
↓ 
www.example.com.conf.DISABLED_20141020113617
第3回 一撃サーバー構築シェルスクリプト勉強会 
# grep include /etc/nginx/nginx.conf 
include /etc/nginx/mime.types; 
include /etc/nginx/conf.d/*.conf; 
/etc/nginx/conf.d ディレクトリ配下にあるファイル名の接尾 
語を「.conf」からリネームしてnginxを再起動すれば設定 
ファイルのincludeから外れる仕組みを利用する
第3回 一撃サーバー構築シェルスクリプト勉強会 
ドキュメントルートのディレクトリをtar.gz圧縮し、元のディレク 
トリを削除する 
[ -d ${DROOT} ] && tar czf ${DROOT}_$(date +%Y%m%d).tar.gz $ 
{DROOT} && rm -fr ${DROOT} 
例) 
/var/www/www.example.com 
↓/ 
var/www/www.example.com_20141020.tar.gz
第3回 一撃サーバー構築シェルスクリプト勉強会 
DB名とDB接続ユーザーを変数に格納する 
DBNAME=$(grep ${FQDN} ${PARAMFILE} | awk '{print $2}') 
DBUSER=$(grep ${FQDN} ${PARAMFILE} | awk '{print $3}') 
# grep www.example.com $ 
{HOME}/.mysql/MySQLPARAM | awk '{print 
$2,$3}' 
wpdb0000 user0000
第3回 一撃サーバー構築シェルスクリプト勉強会 
if [ 1 = $(grep ${FQDN} ${PARAMFILE} | wc -l) ]; 
then 
mysqldump -u root -p$(grep ^user ${PARAMFILE} | awk '{print $NF}')  
${DBNAME} > /var/www/${FQDN}_${DBNAME}_$(date +%Y%m%d).sql 
gzip /var/www/${FQDN}_${DBNAME}_$(date +%Y%m%d).sql 
mysql -u root -p$(grep ^user ${PARAMFILE} | awk '{print $NF}')  
-e "drop database ${DBNAME};" 
mysql -u root -p$(grep ^user ${PARAMFILE} | awk '{print $NF}')  
-e "DELETE FROM mysql.user WHERE user = '${DBUSER}';" 
mysql -u root -p$(grep ^user ${PARAMFILE} | awk '{print $NF}')  
-e "FLUSH PRIVILEGES;" 
cp -p ${PARAMFILE} ${PARAMFILE}.$(date +%Y%m%d%H%M%S) 
grep -v ${DBUSER} ${PARAMFILE}.$(date +%Y%m%d%H%M%S) > ${PARAMFILE} 
fi
第3回 一撃サーバー構築シェルスクリプト勉強会 
if [ 1 = $(grep ${FQDN} ${PARAMFILE} | wc -l) ]; 
then 
mysqldump -u root -p$(grep ^user ${PARAMFILE} | awk '{print $NF}')  
${DBNAME} > /var/www/${FQDN}_${DBNAME}_$(date +%Y%m%d).sql 
gzip /var/www/${FQDN}_${DBNAME}_$(date +%Y%m%d).sql 
mysql -u root -p$(grep ^user ${PARAMFILE} | awk '{print $NF}')  
-e "drop database ${DBNAME};" 
mysql -u root -p$(grep ^user ${PARAMFILE} | awk '{print $NF}')  
-e "DELETE FROM mysql.user WHERE user = '${DBUSER}';" 
mysql -u root -p$(grep ^user ${PARAMFILE} | awk '{print $NF}')  
-e "FLUSH PRIVILEGES;" 
cp -p ${PARAMFILE} ${PARAMFILE}.$(date +%Y%m%d%H%M%S) 
grep -v ${DBUSER} ${PARAMFILE}.$(date +%Y%m%d%H%M%S) > ${PARAMFILE} 
fi 
バーチャルホストのFQDNがパラメータファイルに 
1行書かれていたら実行する
第3回 一撃サーバー構築シェルスクリプト勉強会 
mysqldump -u root -p$(grep ^user ${PARAMFILE} | awk '{print $NF}')  
${DBNAME} > /var/www/${FQDN}_${DBNAME}_$(date +%Y%m%d).sql 
gzip /var/www/${FQDN}_${DBNAME}_$(date +%Y%m%d).sql 
wpdb0000 データベースの中身が 
/var/www/www.example.com_wpdb0000_20141108.sql に 
保存された後、gzip圧縮され 
/var/www/www.example.com_wpdb0000_20141108.sql.gz 
になる。
第3回 一撃サーバー構築シェルスクリプト勉強会 
mysql -u root -p$(grep ^user ${PARAMFILE} | awk '{print $NF}')  
-e "drop database ${DBNAME};" 
wpdb0000 データベースを削除する
第3回 一撃サーバー構築シェルスクリプト勉強会 
mysql -u root -p$(grep ^user ${PARAMFILE} | awk '{print $NF}')  
-e "DELETE FROM mysql.user WHERE user = '${DBUSER}';" 
mysql -u root -p$(grep ^user ${PARAMFILE} | awk '{print $NF}')  
-e "FLUSH PRIVILEGES;" 
user0000 (変数DBUSERに格納されている) を mysql 
データベースから削除し、権限情報を再読み込みする。
第3回 一撃サーバー構築シェルスクリプト勉強会 
cp -p ${PARAMFILE} ${PARAMFILE}.$(date +%Y%m%d%H%M%S) 
grep -v ${DBUSER} ${PARAMFILE}.$(date +%Y%m%d%H%M%S) > ${PARAMFILE} 
パラメータファイルをバックアップし、削除対象のFQDN 
以外をパラメータファイルに残す。
第3回 一撃サーバー構築シェルスクリプト勉強会 
第一引数によって処理を選択するCASE文
第3回 一撃サーバー構築シェルスクリプト勉強会 
# cat bin/VHMAINTE | tail -n 14 
case "$1" in 
[cC][rR][eE][aA][tT][eE]) 
[ ! $# = 6 ] && echo "USAGE: $(basename $0) create FQDN BLOGTITLE 
AdminUsername AdminPassword AdminEmail" && exit 1 
CREATE 
;; 
[dD][eE][lL][eE][tT][eE]) 
[ ! $# = 2 ] && echo "USAGE: $(basename $0) delete FQDN" && exit 1 
DELETE 
;; 
*) 
echo "USAGE: $(basename $0) <create|delete> FQDN BLOGTITLE 
AdminUsername AdminPassword AdminEmail" 
exit 1 
;; 
esac
第3回 一撃サーバー構築シェルスクリプト勉強会 
おまけ: wp-cliによるWordPressシェル芸
第3回 一撃サーバー構築シェルスクリプト勉強会 
IPアドレスのバーチャルホストでWordPressを使えるようにする 
# ETH0=$(ip a show eth0 | grep inet | grep -v inet6 | awk '{print 
$2}' | sed -e "s//[0-9]*//") ; wp core install --url=${ETH0} 
--title="WordPressでシェル芸" --admin_user=nullpopopo 
--admin_password=Bl0gP@ssw0rd 
--admin_email=yasutaka.hamada@gmail.com --path=/var/www/${ETH0} 
実行後 
Success: WordPress installed successfully. 
と表示されればOK
第3回 一撃サーバー構築シェルスクリプト勉強会 
IPアドレスのバーチャルホストでWordPressを使えるようにする
第3回 一撃サーバー構築シェルスクリプト勉強会 
IPアドレスのバーチャルホストでWordPressを使えるようにする 
_人人人人人人人人人人人人人人人人人_ 
> コマンドラインでも確認したい! < 
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
第3回 一撃サーバー構築シェルスクリプト勉強会 
IPアドレスのバーチャルホストでWordPressを使えるようにする 
# wp post list --path=/var/www/<IPアドレス>/ 
+----+--------------+-------------+---------------------+-------------+ 
| ID | post_title | post_name | post_date | post_status | 
+----+--------------+-------------+---------------------+-------------+ 
| 1 | Hello world! | hello-world | 2014-10-25 17:53:51 | publish | 
+----+--------------+-------------+---------------------+-------------+
第3回 一撃サーバー構築シェルスクリプト勉強会 
PostID 1のタイトルを変更してみる 
※ 事前確認 
# wp post get 1 --field=post_title --path=/var/www/<IPアドレス>/ 
Hello world! 
※ タイトル変更 
# wp post update 1 --post_title="(っ´∀`)っ ゃー" --path=/var/www/<IPアド 
レス>/ 
Success: Updated post 1. 
※ 事後確認 
# wp post get 1 --field=post_title --path=/var/www/<IPアドレス>/ 
(っ´∀`)っ ゃー
第3回 一撃サーバー構築シェルスクリプト勉強会 
PostID 1のタイトルを変更してみる
第3回 一撃サーバー構築シェルスクリプト勉強会 
コマンドラインから新しい記事を投稿してみる 
※ いきなり公開状態でポスト名をUNIXタイムにし、ポストタイトル 
を「ぬるぽぽぽ」、本文を「(っ´∀`)っ ゃー」で投稿する 
# wp post create --post_status=publish --post_name=$(date +%s) 
–-post_title='ぬるぽぽぽ' --post_content='(っ´∀`)っ ゃー' -– 
path=/var/www/<IPアドレス>/ 
Success: Created post 4.
第3回 一撃サーバー構築シェルスクリプト勉強会 
コマンドラインから新しい記事を投稿してみる
第3回 一撃サーバー構築シェルスクリプト勉強会 
お疲れ様でした!

More Related Content

What's hot

2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみるairtoxin Ishii
 
ノンプログラマのためのウェブサーバ入門
ノンプログラマのためのウェブサーバ入門	ノンプログラマのためのウェブサーバ入門
ノンプログラマのためのウェブサーバ入門 Atsu Yamaga
 
Zabbixを2分でインストール
Zabbixを2分でインストールZabbixを2分でインストール
Zabbixを2分でインストール真乙 九龍
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefnpsg
 
明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudyTakeshi Komiya
 
今日から使い始めるChef
今日から使い始めるChef今日から使い始めるChef
今日から使い始めるChefMasahiro NAKAYAMA
 
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Taro Hirose
 
20140828 #ssmjp 社内チューニンガソンで優勝したはなし
20140828 #ssmjp 社内チューニンガソンで優勝したはなし20140828 #ssmjp 社内チューニンガソンで優勝したはなし
20140828 #ssmjp 社内チューニンガソンで優勝したはなしMasahiro NAKAYAMA
 
Pythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapacPythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapacTakeshi Komiya
 
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
Ansibleで始めるサーバ管理勉強会(2014年10月1日)Ansibleで始めるサーバ管理勉強会(2014年10月1日)
Ansibleで始めるサーバ管理勉強会(2014年10月1日)CLARA ONLINE, Inc.
 
Ansible handson ood2016
Ansible handson ood2016Ansible handson ood2016
Ansible handson ood2016Hideki Saito
 
initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動Takashi Takizawa
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Sho A
 
Hive undocumented feature
Hive undocumented featureHive undocumented feature
Hive undocumented featuretamtam180
 
MySQL Casual Talks in Fukuoka vol.2
MySQL Casual Talks in Fukuoka vol.2MySQL Casual Talks in Fukuoka vol.2
MySQL Casual Talks in Fukuoka vol.2学 松崎
 
動画共有ツール
動画共有ツール動画共有ツール
動画共有ツールtamtam180
 

What's hot (20)

2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる
 
ノンプログラマのためのウェブサーバ入門
ノンプログラマのためのウェブサーバ入門	ノンプログラマのためのウェブサーバ入門
ノンプログラマのためのウェブサーバ入門
 
Zabbixを2分でインストール
Zabbixを2分でインストールZabbixを2分でインストール
Zabbixを2分でインストール
 
ICHIGEKI-MT 2015/03/14
ICHIGEKI-MT 2015/03/14ICHIGEKI-MT 2015/03/14
ICHIGEKI-MT 2015/03/14
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
 
明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy
 
今日から使い始めるChef
今日から使い始めるChef今日から使い始めるChef
今日から使い始めるChef
 
Fabric Essentials
Fabric EssentialsFabric Essentials
Fabric Essentials
 
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
 
20140828 #ssmjp 社内チューニンガソンで優勝したはなし
20140828 #ssmjp 社内チューニンガソンで優勝したはなし20140828 #ssmjp 社内チューニンガソンで優勝したはなし
20140828 #ssmjp 社内チューニンガソンで優勝したはなし
 
Pythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapacPythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapac
 
PowerShell de Azure
PowerShell de AzurePowerShell de Azure
PowerShell de Azure
 
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
Ansibleで始めるサーバ管理勉強会(2014年10月1日)Ansibleで始めるサーバ管理勉強会(2014年10月1日)
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
 
Ansible handson ood2016
Ansible handson ood2016Ansible handson ood2016
Ansible handson ood2016
 
initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動
 
Ansible入門
Ansible入門Ansible入門
Ansible入門
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
 
Hive undocumented feature
Hive undocumented featureHive undocumented feature
Hive undocumented feature
 
MySQL Casual Talks in Fukuoka vol.2
MySQL Casual Talks in Fukuoka vol.2MySQL Casual Talks in Fukuoka vol.2
MySQL Casual Talks in Fukuoka vol.2
 
動画共有ツール
動画共有ツール動画共有ツール
動画共有ツール
 

Viewers also liked

不健康極まりない現役エンジニア生活を送っていたぼくが余生モードになって健康についていろいろ考えてみた
不健康極まりない現役エンジニア生活を送っていたぼくが余生モードになって健康についていろいろ考えてみた不健康極まりない現役エンジニア生活を送っていたぼくが余生モードになって健康についていろいろ考えてみた
不健康極まりない現役エンジニア生活を送っていたぼくが余生モードになって健康についていろいろ考えてみたYasutaka Hamada
 
2012/03/31 Apacheスタートスクリプト読書会発表資料
2012/03/31 Apacheスタートスクリプト読書会発表資料2012/03/31 Apacheスタートスクリプト読書会発表資料
2012/03/31 Apacheスタートスクリプト読書会発表資料Yasutaka Hamada
 
2015/06/27 sakuraclub LT @nullpopopo
2015/06/27 sakuraclub LT @nullpopopo2015/06/27 sakuraclub LT @nullpopopo
2015/06/27 sakuraclub LT @nullpopopoYasutaka Hamada
 
20110211 nullpopopo diet
20110211 nullpopopo diet20110211 nullpopopo diet
20110211 nullpopopo dietYasutaka Hamada
 
みんなそろそろ707やめようぜ (;´Д`)
みんなそろそろ707やめようぜ (;´Д`)みんなそろそろ707やめようぜ (;´Д`)
みんなそろそろ707やめようぜ (;´Д`)Yasutaka Hamada
 
dbts2013:MariaDB Galera Cluster 活用例
dbts2013:MariaDB Galera Cluster 活用例dbts2013:MariaDB Galera Cluster 活用例
dbts2013:MariaDB Galera Cluster 活用例Jun Shimizu
 
MariaDB+GaleraClusterの運用事例(MySQL勉強会2016-01-28)
MariaDB+GaleraClusterの運用事例(MySQL勉強会2016-01-28)MariaDB+GaleraClusterの運用事例(MySQL勉強会2016-01-28)
MariaDB+GaleraClusterの運用事例(MySQL勉強会2016-01-28)Yuji Otani
 
MaxScaleを触ってみた
MaxScaleを触ってみたMaxScaleを触ってみた
MaxScaleを触ってみたFujishiro Takuya
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話Yoshinori Matsunobu
 

Viewers also liked (12)

不健康極まりない現役エンジニア生活を送っていたぼくが余生モードになって健康についていろいろ考えてみた
不健康極まりない現役エンジニア生活を送っていたぼくが余生モードになって健康についていろいろ考えてみた不健康極まりない現役エンジニア生活を送っていたぼくが余生モードになって健康についていろいろ考えてみた
不健康極まりない現役エンジニア生活を送っていたぼくが余生モードになって健康についていろいろ考えてみた
 
2012/03/31 Apacheスタートスクリプト読書会発表資料
2012/03/31 Apacheスタートスクリプト読書会発表資料2012/03/31 Apacheスタートスクリプト読書会発表資料
2012/03/31 Apacheスタートスクリプト読書会発表資料
 
2015/06/27 sakuraclub LT @nullpopopo
2015/06/27 sakuraclub LT @nullpopopo2015/06/27 sakuraclub LT @nullpopopo
2015/06/27 sakuraclub LT @nullpopopo
 
20110211 nullpopopo diet
20110211 nullpopopo diet20110211 nullpopopo diet
20110211 nullpopopo diet
 
20101211 #
20101211 #20101211 #
20101211 #
 
みんなそろそろ707やめようぜ (;´Д`)
みんなそろそろ707やめようぜ (;´Д`)みんなそろそろ707やめようぜ (;´Д`)
みんなそろそろ707やめようぜ (;´Д`)
 
はじめてのgithub
はじめてのgithubはじめてのgithub
はじめてのgithub
 
dbts2013:MariaDB Galera Cluster 活用例
dbts2013:MariaDB Galera Cluster 活用例dbts2013:MariaDB Galera Cluster 活用例
dbts2013:MariaDB Galera Cluster 活用例
 
MariaDB+GaleraClusterの運用事例(MySQL勉強会2016-01-28)
MariaDB+GaleraClusterの運用事例(MySQL勉強会2016-01-28)MariaDB+GaleraClusterの運用事例(MySQL勉強会2016-01-28)
MariaDB+GaleraClusterの運用事例(MySQL勉強会2016-01-28)
 
超高速WordPress
超高速WordPress超高速WordPress
超高速WordPress
 
MaxScaleを触ってみた
MaxScaleを触ってみたMaxScaleを触ってみた
MaxScaleを触ってみた
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
 

Similar to 2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料

Itcamp長崎2012 capistrano
Itcamp長崎2012 capistranoItcamp長崎2012 capistrano
Itcamp長崎2012 capistranokumachang_LL
 
シラサギハンズオン 東京
シラサギハンズオン 東京シラサギハンズオン 東京
シラサギハンズオン 東京Yu Ito
 
シラサギハンズオン 大阪
シラサギハンズオン 大阪シラサギハンズオン 大阪
シラサギハンズオン 大阪Yu Ito
 
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)さくらインターネット株式会社
 
20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!Midori Oge
 
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-靖 小田島
 
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよnpsg
 
カオスエンジニアリング入門〜ChaosBladeの紹介〜
カオスエンジニアリング入門〜ChaosBladeの紹介〜カオスエンジニアリング入門〜ChaosBladeの紹介〜
カオスエンジニアリング入門〜ChaosBladeの紹介〜Nobuhide Watanabe
 
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )hiro345
 
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介Midori Oge
 
シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016Yu Ito
 
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE辰徳 斎藤
 
徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925Yu Ito
 
Powershell勉強会 v4 (もっと新しいバージョンがあります。)
Powershell勉強会 v4 (もっと新しいバージョンがあります。)Powershell勉強会 v4 (もっと新しいバージョンがあります。)
Powershell勉強会 v4 (もっと新しいバージョンがあります。)Tetsu Yama
 

Similar to 2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料 (20)

Itcamp長崎2012 capistrano
Itcamp長崎2012 capistranoItcamp長崎2012 capistrano
Itcamp長崎2012 capistrano
 
シラサギハンズオン 東京
シラサギハンズオン 東京シラサギハンズオン 東京
シラサギハンズオン 東京
 
シラサギハンズオン 大阪
シラサギハンズオン 大阪シラサギハンズオン 大阪
シラサギハンズオン 大阪
 
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
 
Mina 20130417
Mina 20130417Mina 20130417
Mina 20130417
 
Niigata.pm #1
Niigata.pm #1Niigata.pm #1
Niigata.pm #1
 
20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!
 
OpenStack Grizzly構築手順書
OpenStack Grizzly構築手順書OpenStack Grizzly構築手順書
OpenStack Grizzly構築手順書
 
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
 
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよ
 
カオスエンジニアリング入門〜ChaosBladeの紹介〜
カオスエンジニアリング入門〜ChaosBladeの紹介〜カオスエンジニアリング入門〜ChaosBladeの紹介〜
カオスエンジニアリング入門〜ChaosBladeの紹介〜
 
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )
 
Vyatta 改造入門
Vyatta 改造入門Vyatta 改造入門
Vyatta 改造入門
 
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
 
実は怖くないDevOps
実は怖くないDevOps実は怖くないDevOps
実は怖くないDevOps
 
シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016
 
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
 
徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925
 
Powershell勉強会 v4 (もっと新しいバージョンがあります。)
Powershell勉強会 v4 (もっと新しいバージョンがあります。)Powershell勉強会 v4 (もっと新しいバージョンがあります。)
Powershell勉強会 v4 (もっと新しいバージョンがあります。)
 
ZabbixとAWS
ZabbixとAWSZabbixとAWS
ZabbixとAWS
 

More from Yasutaka Hamada

試験前に抑えておきたいRTX/vRX VPN接続
試験前に抑えておきたいRTX/vRX VPN接続試験前に抑えておきたいRTX/vRX VPN接続
試験前に抑えておきたいRTX/vRX VPN接続Yasutaka Hamada
 
「いきなり{非機能要求グレード,PCIDSS}担当にさせられた!どうする!?」
「いきなり{非機能要求グレード,PCIDSS}担当にさせられた!どうする!?」「いきなり{非機能要求グレード,PCIDSS}担当にさせられた!どうする!?」
「いきなり{非機能要求グレード,PCIDSS}担当にさせられた!どうする!?」Yasutaka Hamada
 
うっかりyum updateでコケちゃってもさくらのVPSならレスキューモードでデータ吸い出せるぜ
うっかりyum updateでコケちゃってもさくらのVPSならレスキューモードでデータ吸い出せるぜうっかりyum updateでコケちゃってもさくらのVPSならレスキューモードでデータ吸い出せるぜ
うっかりyum updateでコケちゃってもさくらのVPSならレスキューモードでデータ吸い出せるぜYasutaka Hamada
 
ぬるぽぽ2019年アウトプットの振り返り
ぬるぽぽ2019年アウトプットの振り返りぬるぽぽ2019年アウトプットの振り返り
ぬるぽぽ2019年アウトプットの振り返りYasutaka Hamada
 
ヤマハで作るセキュアで逸般的なサテライトネットワーク
ヤマハで作るセキュアで逸般的なサテライトネットワークヤマハで作るセキュアで逸般的なサテライトネットワーク
ヤマハで作るセキュアで逸般的なサテライトネットワークYasutaka Hamada
 
学びの掛け算 コアスキルになにかを掛けろ この先生きのこるための生存戦略 - Strategy -
学びの掛け算 コアスキルになにかを掛けろ この先生きのこるための生存戦略 - Strategy -学びの掛け算 コアスキルになにかを掛けろ この先生きのこるための生存戦略 - Strategy -
学びの掛け算 コアスキルになにかを掛けろ この先生きのこるための生存戦略 - Strategy -Yasutaka Hamada
 
2019 10-04 cross-party nullpopopo
2019 10-04 cross-party nullpopopo2019 10-04 cross-party nullpopopo
2019 10-04 cross-party nullpopopoYasutaka Hamada
 
ゆで太郎はいいぞ - コミュニケーションツールとしてのゆで太郎活用TIPS
ゆで太郎はいいぞ - コミュニケーションツールとしてのゆで太郎活用TIPSゆで太郎はいいぞ - コミュニケーションツールとしてのゆで太郎活用TIPS
ゆで太郎はいいぞ - コミュニケーションツールとしてのゆで太郎活用TIPSYasutaka Hamada
 
ニフクラとヤマハルーターで作るセキュアなオフィス環境
ニフクラとヤマハルーターで作るセキュアなオフィス環境ニフクラとヤマハルーターで作るセキュアなオフィス環境
ニフクラとヤマハルーターで作るセキュアなオフィス環境Yasutaka Hamada
 
ヤマハルーターとクラウドをVPNで繋いでDaaS環境を構築しよう
ヤマハルーターとクラウドをVPNで繋いでDaaS環境を構築しようヤマハルーターとクラウドをVPNで繋いでDaaS環境を構築しよう
ヤマハルーターとクラウドをVPNで繋いでDaaS環境を構築しようYasutaka Hamada
 
君はxDSLを体感したか? Yahoo! BB ADSL終了記念カキコ
君はxDSLを体感したか? Yahoo! BB ADSL終了記念カキコ君はxDSLを体感したか? Yahoo! BB ADSL終了記念カキコ
君はxDSLを体感したか? Yahoo! BB ADSL終了記念カキコYasutaka Hamada
 
@nullpopopo が考える、未来のプレゼン | 明日に向かって
@nullpopopo が考える、未来のプレゼン | 明日に向かって@nullpopopo が考える、未来のプレゼン | 明日に向かって
@nullpopopo が考える、未来のプレゼン | 明日に向かってYasutaka Hamada
 
ゆで太郎エヴァンジェリスト 濱田康貴
ゆで太郎エヴァンジェリスト 濱田康貴ゆで太郎エヴァンジェリスト 濱田康貴
ゆで太郎エヴァンジェリスト 濱田康貴Yasutaka Hamada
 
平成生まれにこそススメたい!さくらとヤマハのハイブリッド!
平成生まれにこそススメたい!さくらとヤマハのハイブリッド!平成生まれにこそススメたい!さくらとヤマハのハイブリッド!
平成生まれにこそススメたい!さくらとヤマハのハイブリッド!Yasutaka Hamada
 
concrete5もシェルスクリプトで一撃ダウンロードしようず
concrete5もシェルスクリプトで一撃ダウンロードしようずconcrete5もシェルスクリプトで一撃ダウンロードしようず
concrete5もシェルスクリプトで一撃ダウンロードしようずYasutaka Hamada
 
「なりたい自分」になろう - 自分探しエンジニアの生存戦略 - インフラエンジニアのためのキャリアセミナー2018 アンケート結果
「なりたい自分」になろう - 自分探しエンジニアの生存戦略 - インフラエンジニアのためのキャリアセミナー2018 アンケート結果「なりたい自分」になろう - 自分探しエンジニアの生存戦略 - インフラエンジニアのためのキャリアセミナー2018 アンケート結果
「なりたい自分」になろう - 自分探しエンジニアの生存戦略 - インフラエンジニアのためのキャリアセミナー2018 アンケート結果Yasutaka Hamada
 
「なりたい自分」になろう - 自分探しエンジニアの生存戦略 - インフラエンジニアのためのキャリアセミナー2018
「なりたい自分」になろう - 自分探しエンジニアの生存戦略 - インフラエンジニアのためのキャリアセミナー2018「なりたい自分」になろう - 自分探しエンジニアの生存戦略 - インフラエンジニアのためのキャリアセミナー2018
「なりたい自分」になろう - 自分探しエンジニアの生存戦略 - インフラエンジニアのためのキャリアセミナー2018Yasutaka Hamada
 
NVRシリーズで始める はじめてのヤマハルーター Interop2018
NVRシリーズで始める はじめてのヤマハルーター Interop2018NVRシリーズで始める はじめてのヤマハルーター Interop2018
NVRシリーズで始める はじめてのヤマハルーター Interop2018Yasutaka Hamada
 
スタートアップこそOffice365で業務効率化
スタートアップこそOffice365で業務効率化スタートアップこそOffice365で業務効率化
スタートアップこそOffice365で業務効率化Yasutaka Hamada
 
2017/09/27 さくらの夕べ-さくらのvps ユーザーミートアップ LT
2017/09/27 さくらの夕べ-さくらのvps ユーザーミートアップ LT2017/09/27 さくらの夕べ-さくらのvps ユーザーミートアップ LT
2017/09/27 さくらの夕べ-さくらのvps ユーザーミートアップ LTYasutaka Hamada
 

More from Yasutaka Hamada (20)

試験前に抑えておきたいRTX/vRX VPN接続
試験前に抑えておきたいRTX/vRX VPN接続試験前に抑えておきたいRTX/vRX VPN接続
試験前に抑えておきたいRTX/vRX VPN接続
 
「いきなり{非機能要求グレード,PCIDSS}担当にさせられた!どうする!?」
「いきなり{非機能要求グレード,PCIDSS}担当にさせられた!どうする!?」「いきなり{非機能要求グレード,PCIDSS}担当にさせられた!どうする!?」
「いきなり{非機能要求グレード,PCIDSS}担当にさせられた!どうする!?」
 
うっかりyum updateでコケちゃってもさくらのVPSならレスキューモードでデータ吸い出せるぜ
うっかりyum updateでコケちゃってもさくらのVPSならレスキューモードでデータ吸い出せるぜうっかりyum updateでコケちゃってもさくらのVPSならレスキューモードでデータ吸い出せるぜ
うっかりyum updateでコケちゃってもさくらのVPSならレスキューモードでデータ吸い出せるぜ
 
ぬるぽぽ2019年アウトプットの振り返り
ぬるぽぽ2019年アウトプットの振り返りぬるぽぽ2019年アウトプットの振り返り
ぬるぽぽ2019年アウトプットの振り返り
 
ヤマハで作るセキュアで逸般的なサテライトネットワーク
ヤマハで作るセキュアで逸般的なサテライトネットワークヤマハで作るセキュアで逸般的なサテライトネットワーク
ヤマハで作るセキュアで逸般的なサテライトネットワーク
 
学びの掛け算 コアスキルになにかを掛けろ この先生きのこるための生存戦略 - Strategy -
学びの掛け算 コアスキルになにかを掛けろ この先生きのこるための生存戦略 - Strategy -学びの掛け算 コアスキルになにかを掛けろ この先生きのこるための生存戦略 - Strategy -
学びの掛け算 コアスキルになにかを掛けろ この先生きのこるための生存戦略 - Strategy -
 
2019 10-04 cross-party nullpopopo
2019 10-04 cross-party nullpopopo2019 10-04 cross-party nullpopopo
2019 10-04 cross-party nullpopopo
 
ゆで太郎はいいぞ - コミュニケーションツールとしてのゆで太郎活用TIPS
ゆで太郎はいいぞ - コミュニケーションツールとしてのゆで太郎活用TIPSゆで太郎はいいぞ - コミュニケーションツールとしてのゆで太郎活用TIPS
ゆで太郎はいいぞ - コミュニケーションツールとしてのゆで太郎活用TIPS
 
ニフクラとヤマハルーターで作るセキュアなオフィス環境
ニフクラとヤマハルーターで作るセキュアなオフィス環境ニフクラとヤマハルーターで作るセキュアなオフィス環境
ニフクラとヤマハルーターで作るセキュアなオフィス環境
 
ヤマハルーターとクラウドをVPNで繋いでDaaS環境を構築しよう
ヤマハルーターとクラウドをVPNで繋いでDaaS環境を構築しようヤマハルーターとクラウドをVPNで繋いでDaaS環境を構築しよう
ヤマハルーターとクラウドをVPNで繋いでDaaS環境を構築しよう
 
君はxDSLを体感したか? Yahoo! BB ADSL終了記念カキコ
君はxDSLを体感したか? Yahoo! BB ADSL終了記念カキコ君はxDSLを体感したか? Yahoo! BB ADSL終了記念カキコ
君はxDSLを体感したか? Yahoo! BB ADSL終了記念カキコ
 
@nullpopopo が考える、未来のプレゼン | 明日に向かって
@nullpopopo が考える、未来のプレゼン | 明日に向かって@nullpopopo が考える、未来のプレゼン | 明日に向かって
@nullpopopo が考える、未来のプレゼン | 明日に向かって
 
ゆで太郎エヴァンジェリスト 濱田康貴
ゆで太郎エヴァンジェリスト 濱田康貴ゆで太郎エヴァンジェリスト 濱田康貴
ゆで太郎エヴァンジェリスト 濱田康貴
 
平成生まれにこそススメたい!さくらとヤマハのハイブリッド!
平成生まれにこそススメたい!さくらとヤマハのハイブリッド!平成生まれにこそススメたい!さくらとヤマハのハイブリッド!
平成生まれにこそススメたい!さくらとヤマハのハイブリッド!
 
concrete5もシェルスクリプトで一撃ダウンロードしようず
concrete5もシェルスクリプトで一撃ダウンロードしようずconcrete5もシェルスクリプトで一撃ダウンロードしようず
concrete5もシェルスクリプトで一撃ダウンロードしようず
 
「なりたい自分」になろう - 自分探しエンジニアの生存戦略 - インフラエンジニアのためのキャリアセミナー2018 アンケート結果
「なりたい自分」になろう - 自分探しエンジニアの生存戦略 - インフラエンジニアのためのキャリアセミナー2018 アンケート結果「なりたい自分」になろう - 自分探しエンジニアの生存戦略 - インフラエンジニアのためのキャリアセミナー2018 アンケート結果
「なりたい自分」になろう - 自分探しエンジニアの生存戦略 - インフラエンジニアのためのキャリアセミナー2018 アンケート結果
 
「なりたい自分」になろう - 自分探しエンジニアの生存戦略 - インフラエンジニアのためのキャリアセミナー2018
「なりたい自分」になろう - 自分探しエンジニアの生存戦略 - インフラエンジニアのためのキャリアセミナー2018「なりたい自分」になろう - 自分探しエンジニアの生存戦略 - インフラエンジニアのためのキャリアセミナー2018
「なりたい自分」になろう - 自分探しエンジニアの生存戦略 - インフラエンジニアのためのキャリアセミナー2018
 
NVRシリーズで始める はじめてのヤマハルーター Interop2018
NVRシリーズで始める はじめてのヤマハルーター Interop2018NVRシリーズで始める はじめてのヤマハルーター Interop2018
NVRシリーズで始める はじめてのヤマハルーター Interop2018
 
スタートアップこそOffice365で業務効率化
スタートアップこそOffice365で業務効率化スタートアップこそOffice365で業務効率化
スタートアップこそOffice365で業務効率化
 
2017/09/27 さくらの夕べ-さくらのvps ユーザーミートアップ LT
2017/09/27 さくらの夕べ-さくらのvps ユーザーミートアップ LT2017/09/27 さくらの夕べ-さくらのvps ユーザーミートアップ LT
2017/09/27 さくらの夕べ-さくらのvps ユーザーミートアップ LT
 

Recently uploaded

あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]
あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]
あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]Taka Narita
 
動的 & 非同期コンポーネント / Dynamic & Async Components
動的 & 非同期コンポーネント / Dynamic & Async Components動的 & 非同期コンポーネント / Dynamic & Async Components
動的 & 非同期コンポーネント / Dynamic & Async Componentsokitamasashi
 
ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法
ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法
ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法ivanwang53
 
Windowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーン
Windowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーンWindowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーン
Windowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーンivanwang53
 
Windows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docx
Windows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docxWindows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docx
Windows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docxivanwang53
 
Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元
Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元
Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元ivanwang53
 

Recently uploaded (6)

あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]
あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]
あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]
 
動的 & 非同期コンポーネント / Dynamic & Async Components
動的 & 非同期コンポーネント / Dynamic & Async Components動的 & 非同期コンポーネント / Dynamic & Async Components
動的 & 非同期コンポーネント / Dynamic & Async Components
 
ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法
ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法
ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法
 
Windowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーン
Windowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーンWindowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーン
Windowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーン
 
Windows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docx
Windows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docxWindows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docx
Windows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docx
 
Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元
Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元
Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元
 

2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料