ref.
https://www.findxfine.com/category/aws
$ cat /etc/system-release
Amazon Linuxの特徴とCentOSとの違い まとめ | Developers.IO
参考記事
AWSへEC-CUBE3をインストール : EC-CUBE3 FindxFine | Web制作に関するメモ
Amazon Linuxで nginx + php7 環境構築 | // sakura note
sudo
なしでrootとして実行可能にします。
$ sudo -i
既存のパッケージを更新します。
# yum update
登録済みリポジトリ確認をします。
(2017.03.09時点のAmazon Linux AMI release 2016.09の例)
# ls /etc/yum.repos.d
// amzn-main.repo amzn-nosrc.repo amzn-preview.repo amzn-updates.repo epel-testing.repo epel.repo
Remiリポジトリを登録します。
# wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# rpm -ivh remi-release-6.rpm
登録済みリポジトリを確認します。
# ls /etc/yum.repos.d
// ... remi-php54.repo remi-php70.repo remi-php71.repo remi-safe.repo remi.repo 追加リポジトリ
# yum install httpd
各ディレクトリで.htaccessを使用可能にします。
設定ファイル:/etc/httpd/conf/httpd.conf
<Directory "/var/www/html">
…..
#AllowOverride None <-- コメントアウト
AllowOverride All <-- 追加
…..
</Directory>
# service httpd start
// または
# apachectl start
remi-php70リポジトリからPHP関連をインストールします。
2017年8月15日追記
remi-php70でエラーが発生しますが、remi-php71で正常に動作します。
以下php70をphp71と読み替えてください。
(2017年8月15日時点はphp72はyum installでいくつかエラーが発生します。)
本体をインストールします。
# yum --enablerepo=remi-php70 --disablerepo=amzn-main install php
必要な拡張モジュールをインストールします。
# yum --enablerepo=remi-php70 --disablerepo=amzn-main install php-pdo php-mysqlnd php-mbstring
gdインストール
php-gdをインストール前にlibwebp、gd-lastをインストールします。
# yum --disablerepo=amzn-main --enablerepo=epel install libwebp
# yum install gd-last
# yum --enablerepo=remi-php70 --disablerepo=amzn-main install php-gd
PEAR/PECLインストールします。
php-pearをインストールする前にautomake, gccおよびphp-develをインストールします。
PECLはphp-pearのインストールの際に合わせてインストールされます。
# yum install automake
# yum install gcc
# yum --enablerepo=remi-php70 --disablerepo=amzn-main install php-devel
# yum --enablerepo=remi-php70 --disablerepo=amzn-main install php-pear
XDebugインストール
# pecl install xdebug
php.iniへ下記を追加します。
zend_extension=/usr/lib64/php/modules/xdebug.so
php.iniへ記載する代わりに20-xdebug.iniをScan for additional .ini filesへ作成することもできます。
例) xdebug.ini
zend_extension=/usr/lib64/php/modules/xdebug.so
xdebug.dump_globals = 1;
xdebug.dump.SERVER = *;
xdebug.dump.GET = *;
# yum install mysql-server
MySQLセットアップします。
// MySQLを起動します
# service mysqld start
セキュリティ関連(rootユーザーのパスワード設定など)を設定します。
# /usr/bin/mysql_secure_installation
MySQL5.7からrootはmysqlクライアントからのみ接続可能です。
php - SQLSTATE[HY000] [1698] Access denied for user 'root'@'localhost'. Tried everything - Stack Overflow
バージョン5.6をインストール
# yum install mysql56-server
またmysqlクライアントもインストールする場合は下記を実行します。
# yum install mysql56
Amazon LinuxでMySQLデーモンが起動できないときの対策です。
ログファイルを確認します。
/var/log/mysqld.log
下記行エラーが発生していました。
InnoDB: mmap(137363456 bytes) failed; errno 12
下記記事を参考に/etc/my.cnfでパフォーマンススキーマをオフに設定したら解消しました。
t2.nano で MySQL5.6 を動かすために | ゲンジニア日記 – presented by yskw.info
[mysqld]
...
...
performance_schema=off # <---- 追記
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
パフォーマンススキーマについては下記を参照ください。
MySQL :: MySQL 5.6 リファレンスマニュアル :: 22.1 パフォーマンススキーマクイックスタート
PHP7.0から7.1へアップデートします。yum updateでremi-repo71が利用可能になっていることが前提です。 既存のPHP本体を削除します。
# yum remove -y php
# yum install -y --enablerepo=remi-php71 --disablerepo=amzn-main php
# curl -LO http://ja.wordpress.org/latest-ja.tar.gz
# tar xvzf latest-ja.tar.gz
// ユーザー作成
// rootでログイン
mysql> GRANT ALL PRIVILEGES ON *.* TO <username> IDENTIFIED BY '<password>';
// rootでログアウトし作成ユーザーでログイン
mysql> CREATE DATABASE <database> DEFAULT CHARACTER SET utf8mb4;
Apacheと同様にRemiリポジトリを追加します。
参考記事 YumでNginxセットアップ+PHP-FPM - Qiita
# yum install -y httpd // httpdをインストールしないとNginxが正常にインストールできなかったため
# yum install -y nginx
PHP7, PHP-FPMインストール
# yum --enablerepo=remi-php71 --disablerepo=amzn-main install php php-fpm
設定ファイル | パス |
---|---|
Nginx | /etc/nginx/nginx.conf |
PHP-FPM | /etc/php-fpm.d/www.conf |
server {
.....
server_name 52.199.2.159;
.....
.....
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # これを必ず記載
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
.....
}
user nginx
group nginx
PHP-FPM起動
/etc/rc.d/init.d/php-fpm restart
EC2へMySQLをインストールせずRDSを利用します。
# yum install mysql
RDSインスタンスの 作成が完了するとエンドポイントが表示されるのでmysqlの接続でエンドポイント指定
apt-get updateで参照するリポジトリを最新にします。 当処理を行わないとパッケージのインストール(apt-get install)で古いリポジトリを参照しエラーが発生する可能性があります。
$ sudo apt-get update
Ubuntuバージョン確認
$ sudo cat /etc/lsb-release
// 16.04
Ubuntuアーキテクチャ確認
$ sudo arch
// x86_64
以下の順番は大切です。
1と2が逆になるとうまく動作しません。
How To Install Linux, Apache, MySQL, PHP (LAMP) stack on Ubuntu 16.04 | DigitalOcean
最新版をインストールします。
$ sudo apt-get install apache2
バージョンを指定したインストールの方法を確認してください。
設定ファイル(/etc/apache2/apache2.conf)を検証します。
$ apache2ctl configtest
下記アドレス警告が表示されるときはServerNameへiPアドレスを設定します。
Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
apache2.conf
ServerName xxx.xxx.xxx.xxx
# service apache2 start
# service apache2 restart
# service apathe2 stop
最新版をインストールします。
$ sudo apt-get install php
Apacheのモジュールとして動作させるためのライブラリをインストールします。 バージョンを指定したインストールの方法を確認してください。
$ sudo apt-get install libapache2-mod-php
最新版をインストールします。
$ sudo apt-get install mysql-server
MySQL5.7からrootユーザーはmysqlクライアントからのみ接続可能です。 php - SQLSTATE[HY000] [1698] Access denied for user 'root'@'localhost'. Tried everything - Stack Overflow
バージョンを指定したインストールの方法を確認してください。
セキュリティ関連を設定します。
# sudo mysql_secure_installation
本体にバンドルされているモジュールは下記コマンドで確認できます。
# php -m
足りない拡張モジュールを必要に応じインストールします。
(php-mysqlndはバンドルされていますが今回インストールした本体ではコンパイル時に有効化されていなかったのでダイナミック拡張モジュールとして新たにインストールしました。)
# apt-get install php-mbstring php-mysqlnd php-gd
PECLのコンパイルで必要になるphpizeなどのPHP開発ツールをインストールします。
# apt-get install php-dev
PEARをインストールします。
PECLはPEARをインストールすると同時にインストールされます。
# apt-get install php-pear
PECLのインストール例としてXDebugとImageMagickをインストールします。
# pecl install xdebug
php-devをインストールしていないとphpizeがない旨のエラーが発生します。
iniファイル(/etc/php/7.0/apache2/php.ini)で読み込みます。
;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
zend_extension=/usr/lib/php/20151012/xdebug.so
ImageMagick
ImageMagickをインストールする準備として下記をインストールしてください。
# apt-get install pkg-config
# apt-get install libmagickwand-dev
PECLでImageMagickをインストールします。
# pecl install imagick
参考記事
» PHPにPECLからImageMagickをインストールする
# curl -LO http://ja.wordpress.org/latest-ja.tar.gz
# tar xvzf latest-ja.tar.gz
ユーザー追加
GRANT ALL PRIVILEGES ON <db>.* TO '<user>'@'<host>' IDENTIFIED BY '<password>' WITH GRANT OPTION;
flush privileges
データベース作成
CREATE DATABASE <database> DEFAULT CHARACTER SET utf8mb4;
$ dpkg -l // Debian系インストール済パッケージ一覧を表示
$ dpkg -L <package> // 指定したパッケージがインストールされたパスを表示
$ aptitude search "~i" // dpkgの代わりにaptituteも使える
$ aptitude search <package>
リポジトリを登録(例Remiリポジトリ)
# wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# rpm -ivh remi-release-6.rpm
登録リポジトリ設定ディレクトリ
# ls /etc/yum.repos.d
登録リポジトリ一覧
# yum repolist
登録リポジトリ設定ファイルでenabled=1のリポジトリのみ表示します。EPELはデフォルトは0なので一覧に表示されません。
パッケージインストール
# yum --enablerepo=remi-php70 --disablerepo=amzn-main install php-gd
enabled=0のリポジトリは--enablerepoオプションで明示的に指定する必要があります。また探索から明示的に除外するリポジトリは--disablerepoオプションで指定します。
インストール済みパッケージ
# yum list installed
// php関連
# yum list installed | grep php
PHP関連インストール済み削除
# yum remove php-*
リポジトリの優先順位設定
// yum-plugin-prioritiesがインストールされていないときインストール
# yum install -y yum-plugin-priorities
各リポジトリの優先順項目設定
例)remi-php70
priority=1 # 追加 数字が小さい方が優先順位がたかい
enabled=1 # デフォルトで利用可能に変更 enable=0は--enablerepoで明示的に指定が必要です。
# yum install -y yum-cron
// ユーザー追加
$ sudo useradd <user>
// シェルログイン禁止
$ sudo usermod -s /bin/false <user>
// パスワード設定
$ sudo passwd <user>
AWSはrootのログインを禁止しています。
ログインはSSH経由でec2-userユーザー(Amazon Linux)、ubuntuユーザー(Ubuntu)のみ可能です。
ユーザー一覧
/etc/passwdに記載されています。 ユーザー名のみ抽出
cat /etc/passwd|sed -e 's/:.*//g'
現在のランレベル確認
# runlevel
ランレベル一覧
# chkconfig --list
httpdのランレベル確認
# chkconfig --list | grep httpd
# chkconfig httpd on
# yum install -y clamav // 本体です。
# yum install -y clamav-update // ウイルス定義更新コマンドfreshclamをインストールします。
/etc/freshclam.confのExampleをコメントアウトします。
# Comment or remove the line below.
# Example ここをコメントアウト
スキャン実行(var/www/htmlを再帰的にスキャン)。
# clamscan -r /var/www/html
Cronで定義ファイル更新スキャンを実行します。
ユーザーを指定して編集します。
# crontab -u <user> -e
ユーザーを省略すると現在のユーザーのcrontabを編集します。
# crontab -e
1分ごとにyumのアップデートを実行します。
*/1 * * * * yum -y update >> /var/www/html/cron.txt
60分ごとにyumのアップデートを実行します。
*/60 * * * * yum -y update >> /var/www/html/cron.txt
12時間ごとyumのアップデートを実行します。
* */12 * * * yum -y update >> /var/www/html/cron.txt
priorities, update-motd, upgrade-helper
amzn-main/latest
amzn-updates/latest