■目次
・nginx+PHP+MySQL環境を構築
・Laravelをインストール
・参考ページ
■nginx+PHP+MySQL環境を構築
■nginxのインストール
# yum -y install nginx
# service nginx start
# chkconfig nginx on
ブラウザからアクセスを確認する
■PHP7のインストール
# rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm … PHP7のリポジトリを追加
# yum -y install --enablerepo=webtatic-testing php70w php70w-devel php70w-fpm php70w-mysql php70w-mbstring php70w-pdo php70w-xml
# chkconfig php-fpm on
# php -v … PHP7のインストールを確認
PHP 7.0.27 (cli) (built: Jan 14 2018 09:18:47) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
■nginxとPHPを設定
# vi /etc/php-fpm.d/www.conf … php-fpmの設定ファイルを編集
;user = apache
user = nginx
;group = apache
group = nginx
# vi /etc/nginx/nginx.conf … nginxの設定ファイルを編集
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" '
'$request_time $http_x_forwarded_for $http_x_forwarded_proto'; … アクセスログフォーマットの変更
#index index.html index.htm;
index index.php index.html index.htm; … インデックスページにPHPを追加
root /var/www/html; … 公開ディレクトリのパスを設定
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name; … 公開ディレクトリのパスを設定
include fastcgi_params;
}
# service php-fpm start … php-fpmを起動させないと index.php を配置しても404エラーになる
# service nginx restart
■PHPの動作確認
適当なPHPプログラムを作成し、動作確認する
# vi /var/www/html/index.php
<?php phpinfo() ?>
# vi /var/www/html/test/test.php
<?php echo date('Y-m-d H:i:s') ?>
■URLルーティングの設定と動作確認
# vi /etc/nginx/nginx.conf … nginxの設定ファイルを編集
location / {
try_files $uri /index.php?$query_string; … URLルーティング用に追加
}
# vi /var/www/html/index.php … 動作確認用にプログラムを作成
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>nginx + PHP7</title>
</head>
<body>
<h1>nginx + PHP7</h1>
<?php
if (!isset($_SERVER['REQUEST_URI'])) {
$_SERVER['REQUEST_URI'] = '/';
$_SERVER['SCRIPT_NAME'] = '/index.php';
}
$request_uri = explode('/', strtok($_SERVER['REQUEST_URI'], '?'));
$script_name = explode('/', $_SERVER['SCRIPT_NAME']);
for ($i = 0; $i < sizeof($script_name); $i++) {
if ($request_uri[$i] === $script_name[$i]) {
unset($request_uri[$i]);
}
}
$_params = array_values(array_map('urldecode', $request_uri));
print('<pre>');
print_r($_params);
print('</pre>');
?>
</body>
</html>
■MySQLのインストール
# yum -y install http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm
# yum -y install mysql-community-server
# chkconfig mysqld on
# mysql --version
mysql Ver 14.14 Distrib 5.7.21, for Linux (x86_64) using EditLine wrapper
# vi /etc/my.cnf
[mysqld]
〜中略〜
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
character-set-server=utf8mb4 … 追加
validate-password=OFF … 強力すぎるパスワードチェックを解除する場合
# service mysqld start
# vi /var/log/mysqld.log … MySQL初期rootパスワードを確認
2018-02-02T07:44:59.173850Z 1 [Note] A temporary password is generated for root@localhost: gV0+8k6BM#z5
# mysql_secure_installation … MySQL初期設定
gV0+8k6BM#z6
# mysql -u root -p … MySQLへrootでログイン
mysql> CREATE USER webmaster@localhost IDENTIFIED BY 'gV0+8k6BM#z7'; … MySQL5.7からはユーザを作成してからGRANTする必要がある
mysql> GRANT ALL PRIVILEGES ON test.* TO webmaster@localhost;
mysql> FLUSH PRIVILEGES;
mysql> exit
# mysql -u webmaster -p … 作成したユーザのログイン確認&データベース作成
mysql> CREATE DATABASE test DEFAULT CHARACTER SET utf8mb4;
mysql> SHOW DATABASES;
mysql> USE test
mysql> exit
[MySQL][5.7.16]ユーザ操作
http://tech-wiki.pomme-verte.net/?p=299
MySQL 一度DELETEしたuserと同じ名前のuserを登録しようとすると失敗する - 【はてな】ガットポンポコ
http://d.hatena.ne.jp/kobapan/20090910/1252552185
mysql5.7でパスワードを変更する - Qiita
https://qiita.com/RyochanUedasan/items/9a49309019475536d22a
# vi /var/www/html/mysql.php … 動作確認用にプログラムを作成
<?php
try {
$pdo = new PDO(
'mysql:dbname=test;host=localhost',
'webmaster',
'gV0+8k6BM#z7'
);
$stmt = $pdo->query('SELECT NOW() AS now;');
$data = $stmt->fetch(PDO::FETCH_ASSOC);
echo "<p>" . $data['now'] . "</p>\n";
} catch (PDOException $e) {
exit($e->getMessage());
}
$pdo = null;
■Laravelをインストール
■Composerのインストール
# cd
# curl -sS https://getcomposer.org/installer | php
# mv composer.phar /usr/local/bin/composer
# composer
■Laravelのインストール(プロジェクトの作成)
# mkdir /var/www/vhosts
# chown nginx. /var/www/vhosts
# su -s /bin/bash - nginx
$ cd /var/www/vhosts
$ composer create-project --prefer-dist laravel/laravel blog
$ exit
# vi /etc/nginx/nginx.conf
#root /var/www/html;
root /var/www/vhosts/blog/public;
#fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME /var/www/vhosts/blog/public$fastcgi_script_name;
# service nginx restart
ブラウザからLaravelにアクセスできることを確認する
以下なども確認する
$ vendor/bin/comja5
$ php artisan migrate
$ php artisan make:auth
■参考ページ
AWS EC2にNginx1.8 + php7 + Laravel5をインストール
https://qiita.com/horizon67/items/969eca6339378fffcf21
AWS + Nginx + PHP + Laravel
https://qiita.com/yumatsud/items/7093fc9b389070ddecd1
AWSのEC2を立ち上げてLaravelのログイン機能を動かすまで
https://qiita.com/atto/items/e1effd28c212c3829cb0