sudo apt-get install openjdk-8-jre-headless
EngineYard日本支社クローズにともなって怖話をさくらクラウドに移行しました。
sunziでサーバー作ってcapistranoでデプロイしてるんですが、sunziのshell scriptでちょっとわからない点があります。
debianでLANGとかLC_ALLの設定無しでapt-get install
とかやると下記のようなお決まりのWARNINGが出まくります。
$ sudo apt-get install foo
...
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
僕の中では下記のエントリーで一応対応方法は決着していたんですが、sunziなどを使う場合はreboot無しで反映されないと気持ち悪い。
Setting locale failedを防ぐ - komagata
現状のrecipeは下記で、これはreboot必要なんですよね。みなさんどうやってるんでしょうか?(en_US.UTF-8でもかまわない)
sunzi-recipes/locale-jp.sh at master · fjordllc/sunzi-recipes
if ! grep -Fq "LC_ALL" /etc/environment; then
sed -i 's/.*ja_JP.UTF-8 UTF-8.*/ja_JP.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
cat < /etc/environment
LANG=ja_JP.UTF-8
LC_ALL=ja_JP.UTF-8
EOF
source /etc/environment
fi
この辺からUSB用のイメージを持ってくる。
dmgにconvertする。
$ hdiutil convert -format UDRW -o mini.dmg mini.iso
usbのデバイス名(下記の場合/dev/disk2
)を確認してアンマウントする。
$ diskutil list
/dev/disk0
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *500.3 GB disk0
1: EFI EFI 209.7 MB disk0s1
2: Apple_CoreStorage 499.4 GB disk0s2
3: Apple_Boot Recovery HD 650.0 MB disk0s3
/dev/disk1
#: TYPE NAME SIZE IDENTIFIER
0: Apple_HFS Macintosh HD *499.1 GB disk1
/dev/disk2
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *7.7 GB disk2
1: DOS_FAT_32 UNTITLED 7.7 GB disk2s1
$ diskutil umountDisk /dev/disk2
書き込む。
$ sudo dd bs=8192 if=mini.dmg of=/dev/disk2
アップデートはdebian任せになるので楽だが最新を追っかけるのとどっちがセキュアなのかはわからない。
setup-mysql
というdebianのwordpress独自のスクリプトを使うのが面白い。
# DEBIAN_FRONTEND=noninteractive apt-get -y install mysql-server
# apt-get -y install wordpress
# cd /usr/share/doc/wordpress/examples
# gunzip setup-mysql.gz
# bash setup-mysql -n wordpress example.com
# vi /etc/apache2/sites-available/example.com
<virtualhost *:80>
ServerName example.com
UseCanonicalName Off
VirtualDocumentRoot /usr/share/wordpress
Options All
# wp-content in /srv/www/wp-content/$0
RewriteEngine On
RewriteRule ^/wp-content/(.*)$ /srv/www/wp-content/%{HTTP_HOST}/$1
<VirtualHost>
# a2ensite example.com
# a2enmod rewrite
# a2enmod vhost_alias
# /etc/init.d/apache2 restart
日本語化する場合。
# sed -i "s/?>/define('WPLANG', 'ja');\n?>/" /etc/wordpress/config-example.com.php
$ open http://example.com
DebianでいっつもこのWarning出てて気になってた。
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "en_US:en",
LC_ALL = (unset),
LC_CTYPE = "UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
正しい直し方は多分これ。
$ vi sudo /etc/environment
LC_ALL=en_US.UTF-8
$ sudo reboot
日本語の場合はja_JP.UTF-8
にする。
置いておきます。
https://dl.dropboxusercontent.com/u/188423/wheezy.box
VirtualBoxでVM作成
- OS
- Linux
- バージョン
- Debian
- メモリ
- 512MB
- オーディオ
- 無効
- USB
- 無効
- ストレージ
- VMDK 32GB
Debian wheezyをインストール
rootパスワード: vagrant
vagrantパスワード: vagrant
VirtualBox Guest Additionのインストール
# apt-get install build-essential module-assistant sudo ssh ca-certificates zerofree
# m-a prepare
# reboot
Virtualboxのメニュー > Device > Install Guest Additions
# mount /media/cdrom
# sh /media/cdrom/VBoxLinuxAdditions.run
その他色々
# visudo
%sudo ALL=(ALL) NOPASSWD:ALL
# gpasswd -a vagrant sudo
# mkdir /home/vagrant/.ssh
# cd /home/vagrant/.ssh
# wget https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub
# mv vagrant.pub authorized_keys
# chmod 700 /home/vagrant/.ssh
# chown -R vagrant:vagrant /home/vagrant/.ssh
# echo 'UseDNS no' >> /etc/ssh/sshd_config
イメージサイズ縮小
# apt-get clean
# rm -rf /usr/src/vboxguest*
# rm -rf /usr/share/doc
# find /var/cache -type f -exec rm -rf {} \;
# rm -rf /usr/share/locale/{af,am,ar,as,ast,az,bal,be,bg,bn,bn_IN,br,bs,byn,ca,cr,cs,csb,cy,da,de,de_AT,dz,el,en_AU,en_CA,eo,es,et,et_EE,eu,fa,fi,fo,fr,fur,ga,gez,gl,gu,haw,he,hi,hr,hu,hy,id,is,it,ja,ka,kk,km,kn,ko,kok,ku,ky,lg,lt,lv,mg,mi,mk,ml,mn,mr,ms,mt,nb,ne,nl,nn,no,nso,oc,or,pa,pl,ps,pt,pt_BR,qu,ro,ru,rw,si,sk,sl,so,sq,sr,sr*latin,sv,sw,ta,te,th,ti,tig,tk,tl,tr,tt,ur,urd,ve,vi,wa,wal,wo,xh,zh,zh_HK,zh_CN,zh_TW,zu}
# init 1
# mount -o remount,ro /dev/sda1
# zerofree /dev/sda1
# halt
box作成
Macで。
% vagrant package --base wheezy
ハマリポイント
- 古いvagrantを削除する。
- VirtualBoxを新しくし過ぎない。(ちょっと古いやつを使う)
- VirtualBox系でハマったらMacを再起動する。
- ruby2.xではchef-solo動かない。
- chefは公式サイトからcurlで入れる。
- knife-soloはgithubから入れる。
- knife-soloをbundle exec rake installする時ちゃんとruby1.9.3に入るようにする。
古いvagrantのアンインストール
% gem uninstall vagrant
% rm -rf ~/.vagrant.d
vagrantのインストール
http://downloads.vagrantup.com/tags/v1.2.2
debian wheezy64のvm作成
断固debian。
% vagrant box add wheezy64 http://dl.dropbox.com/u/937870/VMs/wheezy64.box
% mkdir wheezy64
% cd wheezy64
% vagrant init wheezy64
% vagrant up
下記でいい感じの設定を履いてくれる。(便利)
% vagrant ssh-config --host wheezy64 >> ~/.ssh/config
% ssh wheezy64
で入れるようになってる。
chef-soloのインストール
% curl -L https://www.opscode.com/chef/install.sh | sudo bash
% chef-solo -v
Chef: 11.4.4
ちゃんと動くか確認。
knife-soloのインストール
gem版は0.2.0だったのでgithubから入れる。
% git clone git@github.com:matschaffer/knife-solo.git
% cd knife-solo
% git submodule init
% git submodule update
% bundle
% bundle exec rake install
rubyが2.xだと動かないので注意!
chef-soloをwheezy64にインストール
% knife solo prepare wheezy64
これで入るChefが0.10.8なのが気になる・・・。
自分のcookbookのリポジトリ作成
% knife solo init chef-cookbook
% cd chef-cookbook
% git init .
% git commit -m'First commit'
% hub create
nginxをインストールするrecipeを書く
% knife cookbook create nginx -o site-cookbooks
% vi site-cookbooks/nginx/recipes/default.rb
package 'nginx' do
action :install
end
% vi nodes/wheezy64.json
{
"run_list":[
"nginx"
]
}
実行。
% knife solo cook wheezy64
Running Chef on wheezy64...
Checking Chef version...
Uploading the kitchen...
Generating solo config...
Running Chef...
[Wed, 26 Jun 2013 08:35:26 +0200] INFO: *** Chef 0.10.8 ***
[Wed, 26 Jun 2013 08:35:26 +0200] INFO: Setting the run_list to ["nginx"] from JSON
[Wed, 26 Jun 2013 08:35:26 +0200] INFO: Run List is [recipe[nginx]]
[Wed, 26 Jun 2013 08:35:26 +0200] INFO: Run List expands to [nginx]
[Wed, 26 Jun 2013 08:35:26 +0200] INFO: Starting Chef Run for vagrant-debian-wheezy-64.vagrantup.com
[Wed, 26 Jun 2013 08:35:26 +0200] INFO: Running start handlers
[Wed, 26 Jun 2013 08:35:26 +0200] INFO: Start handlers complete.
[Wed, 26 Jun 2013 08:35:26 +0200] FATAL: No cookbook found in ["/home/vagrant/chef-solo/cookbooks-1", "/home/vagrant/chef-solo/cookbooks-2", "/home/vagrant/chef-solo/cookbooks-3"], make sure cookbook_path is set correctly.
[Wed, 26 Jun 2013 08:35:26 +0200] INFO: Processing package[nginx] action install (nginx::default line 9)
[Wed, 26 Jun 2013 08:35:26 +0200] INFO: Chef Run complete in 0.267082 seconds
[Wed, 26 Jun 2013 08:35:26 +0200] INFO: Running report handlers
[Wed, 26 Jun 2013 08:35:26 +0200] INFO: Report handlers complete
一応入ったけどFATALがきになる・・・。
公式のAMIが公開されてるのでそれを使う。
Cloud/AmazonEC2Image/Wheezy - Debian Wiki
東京リージョン(ap-northeast-1)の64bitはami-dbe16edaってやつだそうです。
SSH username
In line with the security of most Linux distributions on Amazon Web Services, remote root SSH is disabled (as is password authentication). You will need to connect to instances from this AMI as the user admin using your SSH key, and then sudo -i to gain root access.
ユーザーがrootじゃなくてadminなのに注意とのこと。
EC2は高いのであんまり使ってないんですが、検証用やフルタイムで起動しないやつは楽ですね。
debian(wheezy)でお手軽なiptablesのフロントエンドはないかなと、Debian WikiのFirewallのページを探していたらufw(Uncomplecated Firewal)が便利そうだったので使ってみました。(これ絶対元々はUbuntu Firewallとかそういう名前だっただろう。汚い、流石Ubuntu汚い)
ufw気に入った
$ sudo apt-get install ufw
ufwは単なるiptablesのフロントエンドでufw show raw
でiptablesの生ruleも表示できるそうです。良さそうな予感。
$ sudo ufw default deny
$ sudo ufw allow 10022
$ sudo ufw allow 80/tcp
$ sudo ufw enable
あら簡単。(sshは10022ポートに変更してるので)
何回来たらrejectとか細かい設定もできるみたいですが、インフラ弱者の俺にはこれでも十分過ぎる程です。