■目次
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