EC2にapache、nginx、mysql、memcached、redisをインストールする方法

EC2にapache、nginx、mysql、memcached、redisをインストールする方法メモ。



apacheのインストール


webサーバーを起動するだけなら以下のコマンドで完了。


ディレクトリの中身一覧を表示しない設定は、最近のバージョンのapacheなら/etc/httpd/conf.d/welcome.confの中で最初から設定されています。


sudo yum install -y httpd
sudo /etc/init.d/httpd restart

sudo chgrp -R ec2-user /var/www
sudo chown -R ec2-user /var/www


nginxのインストール


リバースプロキシとして使うための設定がけっこう面倒。


# yumリポジトリの登録
sudo rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
sudo yum install -y nginx

# mod_so が有効か確認する(最近のapacheはデフォルトで有効)
/usr/sbin/httpd -M | grep so_module

# リバプロのIPを正しいIPに変換するためのモジュール
sudo yum install -y gcc httpd httpd-devel
cd /usr/local/src/
sudo wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
sudo tar xvzf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6
sudo perl -p -i.bak -e 's/APXS2=\$\(shell which apxs2\)/APXS2=\/usr\/sbin\/apxs/g' ./Makefile
sudo make rpaf-2.0
sudo make install-2.0
sudo chmod 755 /usr/lib64/httpd/modules/mod_rpaf-2.0.so

# リバプロの設定をnginxの設定ファイルに追記
sudo sh -c 'echo "
proxy_set_header Host \$http_host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-Proto \$scheme;
proxy_set_header X-Forwarded-Host \$http_host;
proxy_set_header X-Forwarded-Server \$host;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
" >/etc/nginx/conf.d/proxy.conf'

# 参考リンクのディレクトリ名をそのまま使っている。
# Debianだとこういうディレクトリを使うらしい。
# EC2はDebian系ではないので/etc/nginx/conf.d/に置いた方がいいと思う。
sudo mkdir /etc/nginx/sites-available
sudo mkdir /etc/nginx/sites-enabled

cd etc/nginx
sudo perl -p -i.bak -e 's/http {/http {\n    include \/etc\/nginx\/sites-enabled\/*;/g' /etc/nginx/nginx.conf
sudo perl -p -i.bak -e 's/root   \/usr\/share\/nginx\/html;/root   \/var\/www\/html;/g' /etc/nginx/nginx.conf

# ここからはリバースプロキシの設定
sudo sh -c 'echo "
server {
  listen 80;
  server_name .; 

  location / {
    proxy_pass http://localhost:8000;
    proxy_redirect default;
    break;
  }
}" >/etc/nginx/sites-available/isucon_study'

sudo perl -p -i.bak -e 's/^Listen 80$/Listen 127.0.0.1:8000/g' /etc/httpd/conf/httpd.conf

sudo sh -c 'echo "
LoadModule rpaf_module /usr/lib64/httpd/modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 10.0.0.1
RPAFheader X-Forwarded-For
" >/etc/httpd/conf.d/reverse_proxy.conf'

参考リンク

CentOS-6へ最新版のnginxを3分でインストールする方法

NginxとApache



mysqlのインストール


動かすだけならyumでインストールするだけ。


sudo yum intall -y mysql mysql-server
sudo /etc/init.d/mysqld restart

$ mysql
mysql> show databases;
mysql> show tables;
...


memcachedのインストール


動かすだけならyumでインストールするだけ。


sudo yum install -y memcached
sudo /etc/init.d/memcached restart

# telnetで試してみたいなら
telnet 127.0.0.1 11211


redisのインストール


基本的にはhttps://gist.github.com/dstroot/2776679のスクリプトを実行すればインストールできる。


このURLのシェルスクリプトをそのまま実行すると、「sedの部分のみ」sudo権限がなくて失敗することに注意。その点を修正したインストールスクリプトは下記の通り。


# このスクリプトから必要な部分のみ抜粋
# https://gist.github.com/dstroot/2776679

sudo yum -y install gcc gcc-c++ make
cd /usr/local/src
sudo wget http://redis.googlecode.com/files/redis-2.6.0-rc5.tar.gz
sudo tar xzf redis-2.6.0-rc5.tar.gz
sudo rm redis-2.6.0-rc5.tar.gz -f
cd redis-2.6.0-rc5
sudo make
sudo mkdir /etc/redis /var/lib/redis
sudo cp src/redis-server src/redis-cli /usr/local/bin
sudo sh -c ' sed -e "s/^daemonize no$/daemonize yes/" -e "s/^# bind 127.0.0.1$/bind 127.0.0.1/" -e "s/^dir \.\//dir \/var\/lib\/redis\//" -e "s/^loglevel verbose$/loglevel notice/" -e "s/^logfile stdout$/logfile \/var\/log\/redis.log/" redis.conf > /etc/redis/redis.conf'
sudo wget https://raw.github.com/gist/2777433/e64b4b8ad7d38676f7e7f70b24f3f004b4f10b74/redis-server
sudo mv redis-server /etc/init.d
sudo chmod 755 /etc/init.d/redis-server
sudo service redis-server start

# telnetで試してみたいなら
telnet 127.0.0.1 6379

参考リンク

https://gist.github.com/dstroot/2776679


著者プロフィール
Webサイトをいくつか作っています。
著者プロフィール