EC2 にいろいろ環境構築したメモ

久しぶりにプロトタイプ用にサーバーの環境設定をして、2年くらい前に作ったときと色々状況変わってたので、メモりました。ゆとりサーバー設定なので、あんまりちゃんとしたものではないです。

## この記事で設定した環境

- amazon linux
- vim
- zsh
- php
- mysql
- phpmyadmin
- node.js
- nginx


## Amazon マシンイメージ

- イメージは、amazon linux を使用
- インスタンスタイプは t2.micro(無料利用枠)
- その他は特に設定せず、デフォルトのまま


## 最初の設定
vim、wget、zsh をインストールして設定する

```
$ sudo yum update
$ sudo yum install vim-enhanced wget zsh
```

vim の設定

```
$ sudo vim ~/.vimrc

if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
set fileencodings=ucs-bom,utf-8,latin1
endif
 
set nocompatible    " Use Vim defaults (much better!)
set bs=indent,eol,start     " allow backspacing over everything in insert mode
" set ai         " always set autoindenting on
" set backup     " keep a backup file
set viminfo='20,\"50    " read/write a .viminfo file, don't store more
" than 50 lines of registers
set history=50      " keep 50 lines of command line history
set ruler       " show the cursor position all the time
 
set number
set autoindent
 
set showmatch
set shiftwidth=4
set tabstop=4
set smartindent
imap ^[OA <Up>
imap ^[OB <Down>
imap ^[OC <Right>
imap ^[OD <Left>
colorscheme molokai
syntax on


$ mkdir -p ~/.vim/colors
$ cd ~/.vim/colors
$ wget http://www.vim.org/scripts/download_script.php?src_id=9750
$ mv download_script.php\?src_id\=9750 molokai.vim
```


英語化

```
$ sudo vim /etc/sysconfig/i18n

LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8

$ . /etc/sysconfig/i18n # で設定反映できるが 以下の .zshrc で反映するのがここでやんなくてもOK
$ locale # で設定の確認もできるかがみなくてもOK

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
```


タイムゾーンを日本にする

```
$ sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
$ sudo vim /etc/sysconfig/clock
#ZONE="UTC"
#UTC=true
ZONE="Asia/Tokyo"
UTC=false
$ date
```


zsh の設定

```
$ sudo vim ~/.zshrc

# http://mollifier.hatenablog.com/entry/2013/02/22/025415
# https://gist.github.com/mollifier/4979906

########################################
# 環境変数
export LANG=en_US.UTF-8

# 言語設定
. /etc/sysconfig/i18n

# 色を使用出来るようにする
autoload -Uz colors
colors

# emacs 風キーバインドにする
# bindkey -e

# ヒストリの設定
HISTFILE=~/.zsh_history
HISTSIZE=1000000
SAVEHIST=1000000

# プロンプト
# 1行表示
# PROMPT="%~ %# "
# 2行表示
PROMPT="%{${fg[cyan]}%}[%n] - %~%{${fg[blue]}%}
$%{${reset_color}%} "


# 単語の区切り文字を指定する
autoload -Uz select-word-style
select-word-style default

# ここで指定した文字は単語区切りとみなされる
# / も区切りと扱うので、^W でディレクトリ１つ分を削除できる
zstyle ':zle:*' word-chars " /=;@:{},|"
zstyle ':zle:*' word-style unspecified

########################################
# 補完
# 補完機能を有効にする
autoload -Uz compinit
compinit

# 補完で小文字でも大文字にマッチさせる
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'

# ../ の後は今いるディレクトリを補完しない
zstyle ':completion:*' ignore-parents parent pwd ..

# sudo の後ろでコマンド名を補完する
zstyle ':completion:*:sudo:*' command-path /usr/local/sbin /usr/local/bin \
                   /usr/sbin /usr/bin /sbin /bin /usr/X11R6/bin

# ps コマンドのプロセス名補完
zstyle ':completion:*:processes' command 'ps x -o pid,s,args'


########################################
# vcs_info
autoload -Uz vcs_info
autoload -Uz add-zsh-hook

zstyle ':vcs_info:*' formats '%F{green}(%s)-[%b]%f'
zstyle ':vcs_info:*' actionformats '%F{red}(%s)-[%b|%a]%f'

function _update_vcs_info_msg() {
    LANG=en_US.UTF-8 vcs_info
    RPROMPT="${vcs_info_msg_0_}"
}
add-zsh-hook precmd _update_vcs_info_msg


########################################
# オプション
# 日本語ファイル名を表示可能にする
setopt print_eight_bit

# beep を無効にする
# setopt no_beep

# フローコントロールを無効にする
setopt no_flow_control

# Ctrl+Dでzshを終了しない
setopt ignore_eof

# '#' 以降をコメントとして扱う
setopt interactive_comments

# ディレクトリ名だけでcdする
setopt auto_cd

# cd したら自動的にpushdする
setopt auto_pushd
# 重複したディレクトリを追加しない
setopt pushd_ignore_dups

# 同時に起動したzshの間でヒストリを共有する
# setopt share_history

# 同じコマンドをヒストリに残さない
setopt hist_ignore_all_dups

# スペースから始まるコマンド行はヒストリに残さない
setopt hist_ignore_space

# ヒストリに保存するときに余分なスペースを削除する
setopt hist_reduce_blanks

# 高機能なワイルドカード展開を使用する
setopt extended_glob

########################################
# キーバインド

# ^R で履歴検索をするときに * でワイルドカードを使用出来るようにする
bindkey '^R' history-incremental-pattern-search-backward

########################################
# エイリアス

alias la='ls -a'
alias ll='ls -laF'

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

alias mkdir='mkdir -p'

# sudo の後のコマンドでエイリアスを有効にする
alias sudo='sudo '

# グローバルエイリアス
alias -g L='| less'
alias -g G='| grep'

# C で標準出力をクリップボードにコピーする
# mollifier delta blog : http://mollifier.hatenablog.com/entry/20100317/p1
if which pbcopy >/dev/null 2>&1 ; then
    # Mac
    alias -g C='| pbcopy'
elif which xsel >/dev/null 2>&1 ; then
    # Linux
    alias -g C='| xsel --input --clipboard'
elif which putclip >/dev/null 2>&1 ; then
    # Cygwin
    alias -g C='| putclip'
fi



########################################
# OS 別の設定
case ${OSTYPE} in
    darwin*)
        #Mac用の設定
        export CLICOLOR=1
        alias ls='ls -G -F'
        ;;
    linux*)
        #Linux用の設定
        alias ls='ls -F --color=auto'
        ;;
esac

# vim:set ft=zsh:


########################################

# bind key
bindkey "^[^[[D" backward-word
bindkey "^[^[[C" forward-word


$ sudo chsh ec2-user
 /bin/zsh
$ echo $SHELL # ←確認
$ exit
```




# php , nginx , mysql , phpmyadmin を入れる

[この記事](http://qiita.com/ki6ool/items/a9798792590fa2a5c9c8)を参考に進めました。


php7 のモジュールを入れる。

```
$ sudo rpm -Uvh ftp://ftp.scientificlinux.org/linux/scientific/6.4/x86_64/updates/fastbugs/scl-utils-20120927-8.el6.x86_64.rpm
$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
$ sudo yum install php70 php70-php-fpm php70-php-mbstring php70-php-mysqlnd php70-php-mcrypt
$ php -v
PHP 7.0.14 (cli) (built: Jan 18 2017 19:13:23) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
```

nginx を入れて、あとに入れる phpmyadmin 用に設定をした。ポートは aws でいうと、セキュリティグループをちゃんと設定する必要あり。

```
$ sudo rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
$ sudo yum install nginx
$ nginx -v
nginx version: nginx/1.10.1
$ sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.org
$ sudo vim /etc/nginx/nginx.conf
$ sudo vim /etc/nginx/conf.d/phpmyadmin.conf

server {

    listen 0000;
    server_name xx.xx.xx.xx;

    access_log /var/log/nginx/phpmyadmin.access_log;
    error_log /var/log/nginx/phpmyadmin.error_log;

    location /admin {
        alias /var/www/phpmyadmin;
        index index.php;

        # basic認証
        # auth_basic "hoge";
        # auth_basic_user_file "/etc/nginx/conf.d/hoge.htpasswd";

        # ip制限
        allow xx.xx.xx.xx;
        deny all;
    }

    location ~ ^/admin.+\.php$ {
        fastcgi_pass    localhost:9000;
        fastcgi_index   index.php;
        fastcgi_split_path_info ^/admin(.+\.php)(.*)$;
        fastcgi_param   SCRIPT_FILENAME /var/www/phpmyadmin$fastcgi_script_name;
        include         /etc/nginx/fastcgi_params;

        # ip制限
        allow xx.xx.xx.xx;
        deny all;
    }

}


$ sudo service nginx start
$ sudo service php70-php-fpm start
$ sudo chkconfig nginx on
$ sudo chkconfig php70-php-fpm on
```

mysql はこの[記事](http://www.yoheim.net/blog.php?q=20160402
)を参考にした。

```
$ sudo yum -y install http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm
$ sudo yum -y install mysql-community-server
$ mysqld --version
mysqld  Ver 5.7.17 for Linux on x86_64 (MySQL Community Server (GPL))
$ sudo service mysqld start
$ sudo chkconfig mysqld on

$ sudo cat /var/log/mysqld.log | grep "temporary pass"
この最後に書いてあるのが一時的なパスワード
2017-01-30T10:28:59.090604Z 1 [Note] A temporary password is generated for root@localhost: eNFkquzmw3?j

$ sudo mysql_secure_installation 
```

phpmyadmin

```
$ cd /var/www/
$ sudo wget https://files.phpmyadmin.net/phpMyAdmin/4.6.6/phpMyAdmin-4.6.6-all-languages.zip
$ sudo unzip phpMyAdmin-4.6.6-all-languages.zip
$ sudo mv phpMyAdmin-4.6.6-all-languages phpmyadmin
$ sudo rm -rf phpMyAdmin-4.6.6-all-languages.zip
$ sudo cp phpmyadmin/config.sample.inc.php phpmyadmin/config.inc.php
$ sudo vim phpmyadmin/config.inc.php

/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'config';
/* Server parameters */
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
/* Select mysql if your server does not have mysqli */
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['AllowNoPassword'] = true;
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'iA4&E6F2hFt(';
```

ここまで設定して、以下へアクセスすると phpmyadmin みれる。

```
http://xx.xx.xx.xx:4000/admin/
```

nodejs 

`tj/n` ていうバージョン管理マネージャーを使って入れました。[この記事](http://moro-archive.hatenablog.com/entry/2015/07/27/225747#3)を参考にしました。

```
$ sudo yum install nodejs npm --enablerepo=epel
$ node -v
v0.10.48
$ npm -v
1.3.6
$ sudo npm install -g n
$ sudo n ls
$ sudo n stable
$ node -v
v7.4.0
$ npm -v
4.0.5
```

以上です。