Skip to content

Instantly share code, notes, and snippets.

@yyoshiki41
Last active December 31, 2015 14:45
Show Gist options
  • Save yyoshiki41/bb3fde09b763e2568208 to your computer and use it in GitHub Desktop.
Save yyoshiki41/bb3fde09b763e2568208 to your computer and use it in GitHub Desktop.

LAMP on EC2

1. ユーザー設定

- root 設定

sudo su root
passwd

- ユーザー追加

sudo adduser newuser
sudo su newuser
cd
mkdir -m 700 .ssh
cd .ssh
vim authorized_keys	

id_rsa.pub をコピペ。

chmod 600 authorized_keys

- 権限設定

sudo visudo
newuser        ALL=(ALL)       NOPASSWD:ALL

- ec2-user の扱い

※重要 必ずnewuserでsshログインを確認してから、行う!

念のため、ec2-userのauthorized_keysのコピーして、newuserのauthorized_keysにペースト.

cat /home/ec2-user/.ssh/authorized_keys
sudo vim /home/newuser/.ssh/authorized_keys

A. ec2-user のsshログインを禁止する場合

sudo vim /etc/ssh/sshd_config

下記、1行を追加.

DenyUsers ec2-user

sshd をリロードして、確認.

sudo service sshd reload

B. ec2-user を削除する場合

sudo userdel ec2-user

2. yum

sudo yum update -y

- Install packages

sudo yum -y install gcc gcc-c++ make httpd httpd-devel
sudo yum -y install git
sudo yum -y install php
sudo yum -y install mysql
sudo yum -y install mysql-server
sudo yum -y install php-mysql php-devel php-mbstring php-mcrypt php-gd php-xmlrpc php-pear php-tidy php-pecl-apc php-pecl-memcache
sudo yum -y install ImageMagick-devel

- Setting of automatic start

sudo chkconfig httpd on
sudo chkconfig mysqld on

3. Time Zone

sudo mv /etc/localtime /etc/localtime.orig
sudo ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
sudo cp /etc/sysconfig/clock /etc/sysconfig/clock.orig
sudo vim /etc/sysconfig/clock

以下を追加.

ZONE="Asia/Tokyo"
UTC=false
ARC=false

確認.

date

4. apache

sudo cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.orig

諸々の設定

sudo vim /etc/httpd/conf/httpd.conf

.htaccess

AllowOverride All

サーバーネーム

ServerName *:80

Virtual Host の設定(任意)

NameVirtualHost *:80
<VirtualHost *:80>
    DocumentRoot /var/www/hoge
    ServerName hoge
</VirtualHost>

Syntax Check

sudo apachectl configtest

ディレクトリ作成

sudo mkdir /var/www/default
sudo chmod 777 /var/www/default
sudo apachectl restart

5. php

- php.ini 設定

sudo vim /etc/php.ini
;timezone 設定
date.timezone = Asia/Tokyo
;file size の上限
upload_max_filesize = 200M
;httpヘッダにphpのバージョンを表示しない
expose_php = Off

- APC(Alternative PHP Cache) 設定

PHP の実行コードをキャッシュする仕組みで、 フリーかつオープンに使用できます。PHP の中間コードのキャッシュ・最適化を行うための、 フリーでオープンかつ堅牢なフレームワークを提供するということを目標としています。

Setting of APC extension module

sudo vim /etc/php.d/apc.ini

以下があるか、チェック.

extension=apc.so

APC の管理画面を作成する場合(任意)

apc.phpを探す.

sudo find / -name apc.php
/usr/share/doc/php-pecl-apc-3.1.15/apc.php

パスをコピー.

mkdir -p /var/www/default/apc
cp /usr/share/doc/php-pecl-apc-3.1.15/apc.php /var/www/default/apc/index.php

Id, Passwordを設定.

vim /var/www/default/apc/index.php

- xdebug 設定

sudo pecl install xdebug
sudo vim /etc/php.d/xdebug.ini
extension=xdebug.so

Tips!

以下のようなエラーが出る場合の対処

Xdebug MUST be loaded as a Zend extension in Unknown on line 0

xdebug.soを探して、/etc/php.d/xdebug.iniを変更.

※ zend_extension の場合は、絶対パスで指定する.

;extension=xdebug.so
zend_extension=/path/to/xdebug.so

- System Daemon

phpプログラムをデーモンとして常駐して動かしてくれる。cronでは処理が単体で繰り返されるために、前後の処理の状況をチェックするのが面倒で不具合の原因にもなるという場合にこのSystem Daemonが便利。

sudo pear install System_Daemon
sudo yum install -y php-posix

- Imagemagick 設定

sudo pecl install imagick
Please provide the prefix of Imagemagick installation [autodetect] : Enter押す
sudo vim /etc/php.d/imagick.ini

以下を追加.

extension=imagick.so

- PHP Unit

xUnitと呼ばれるユニット・テスト向けフレームワークのphp版。手動では面倒なテスト手順を自動化して繰り返し実行できる。

sudo yum install -y php-dom
sudo pear channel-update pear.php.net
sudo pear upgrade-all
sudo pear channel-discover pear.phpunit.de
sudo pear channel-discover pear.symfony-project.com
sudo pear channel-discover components.ez.no
sudo pear install --alldeps phpunit/PHPUnit

- phpMyAdmin(任意)

cd /var/www/default
sudo wget 'http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/3.4.10.2/phpMyAdmin-3.4.10.2-all-languages.tar.gz?r=http%3A%2F%2Fwww.phpmyadmin.net%2Fhome_page%2Fdownloads.php&ts=1333528110&use_mirror=jaist'
sudo tar xvfz phpMyAdmin-3.4.10.2-all-languages.tar.gz 
sudo mv phpMyAdmin-3.4.10.2-all-languages db
sudo rm -rf phpMyAdmin-3.4.10.2-all-languages.tar.gz

- webmin(任意)

LinuxなどのUnixライクなシステムを設定できるウェブブラウザベースのツールである。 ユーザーやディスク使用上限、サービス、設定ファイル等といったOS内部設定を多数行え、ApacheやPHP、MySQLなどといった多くのオープンソースのアプリケーションの変更や制御を行える。

mkdir src
cd src
wget http://prdownloads.sourceforge.net/webadmin/webmin-1.550-1.noarch.rpm
rpm -Uvh webmin-1.550-1.noarch.rpm

- 確認

vim /var/www/default/index.php
<?php phpinfo();

6.mysql

sudo /etc/init.d/mysqld start
sudo mysql -u root

Password 設定

mysql> SET PASSWORD FOR root@localhost=PASSWORD('パスワード');
mysql> GRANT ALL PRIVILEGES ON *.* TO peepapp@localhost IDENTIFIED BY 'パスワード' WITH GRANT OPTION;

7. サーバー資源節約

- 仮想コンソール(/dev/ttyN)を1個にする

mingettyプロセスの数を確認.

$ ps alx | grep mingetty | grep -v grep
4     0  2949     1  20   0   4180   580 n_tty_ Ss+  tty1       0:00 /sbin/mingetty /dev/tty1
4     0  2953     1  20   0   4180   576 n_tty_ Ss+  tty2       0:00 /sbin/mingetty /dev/tty2
4     0  2955     1  20   0   4180   584 n_tty_ Ss+  tty3       0:00 /sbin/mingetty /dev/tty3
4     0  2957     1  20   0   4180   580 n_tty_ Ss+  tty4       0:00 /sbin/mingetty /dev/tty4
4     0  2961     1  20   0   4180   584 n_tty_ Ss+  tty5       0:00 /sbin/mingetty /dev/tty5
4     0  2963     1  20   0   4180   580 n_tty_ Ss+  tty6       0:00 /sbin/mingetty /dev/tty6
sudo vim /etc/sysconfig/init

以下へ、変更.

#ACTIVE_CONSOLES=/dev/tty[1-6]
ACTIVE_CONSOLES=/dev/tty1

再起動して、確認.

$ shutdown -r now
$ ps alx | grep mingetty | grep -v grep
4     0  2922     1  20   0   4180   580 n_tty_ Ss+  tty1       0:00 /sbin/mingetty /dev/tty1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment