Posted at

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

More than 1 year has passed since last update.

久しぶりにプロトタイプ用にサーバーの環境設定をして、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 でディレクトリ1つ分を削除できる
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 を入れる

この記事を参考に進めました。

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 はこの記事を参考にした。

$ 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 ていうバージョン管理マネージャーを使って入れました。この記事を参考にしました。

$ 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

以上です。