SNSサイト作りの試み2 ログイン画面の追加
通常のフレームワークならログイン機能は既に用意してくれていると思うので、
実装と書かず追加とした。
laravelプロジェクト直下にて以下のコマンドを叩く
それでログイン及びユーザー登録機能が追加される。
以下のコマンドでルーティングを確認すると、ログイン画面が追加されていることが確認できる。
php artisan route:list
特に凝ったログイン機能でなければ、これでよさそう。
ただ問題がいくつか残っている。
ざっくりいうと
・URLがダサい
・DBの設定(及び構築)ができていない
■URLの問題
サーバにはApacheを採用しているのだけど、
今のままだとログイン画面を開こうとすると以下のようなURLになる
http://192.168.33.10/index.php/login
これに関してはmod_rewriteを有効にすれば対応できる。
sudo vi /etc/httpd/conf/httpd.conf
<directory "/var/www/html/laravel/public">
# allowoverride none
allowoverride all
</directory>
// apache再起動
systemctl restart httpd.service
http://192.168.33.10/login
→動いた!
*nginxを採用しようか迷ったけど、今回はあまりインフラ周りにこだわらず
見せるコードを作る、というところに重点を置いている。
ただし、今のままではDBに繋がっていないので、
フォームに入力し、送信するとエラーが画面に表示される
Illuminate \ Database \ QueryException (1045)
SQLSTATE[HY000] [1045] Access denied for user 'homestead'@'localhost' (using password: YES) (SQL: select * from `users` where `email` = enigma@gmial.com limit 1)
■DBの接続
MySQLを使用する
プロビジョニングファイルでインストールしたつもりだったけれども、できていなかったようなので、
ひとまずコマンド叩いて導入することに
sudo yum install mysql mysql-devel mysql-server mysql-utilities
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
よくわからないエラーが出る。
色々調べ持って以下のコマンドで導入を確認
// 「localinstall」を使うことでrpmファイルを直接インストールすることができる
sudo yum -y localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
//導入できるMySQLのバージョンを確認。
yum info mysql-community-server
// インストール
sudo yum update // 必要?思い出したので叩いてしまった
sudo yum -y --skip-broken install mysql-community-server
// 導入を確認
mysqld --version
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
MySQL 5.7ではログファイルにパスワードが吐かれているらしい
以下のコマンドでパスワード確認
cat /var/log/mysqld.log | grep 'password is generated'
mysql -u root -p
catコマンドで確認したパスワードを入力してログイン
ログインした後にパスワードを変えないとエラーが出る
mysql> SHOW VARIABLES LIKE 'validate_password%';
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
パスワードを変えるにあたって、以下のポリシーに従ったものでないといけないらしい
MEDIUM ポリシーは、パスワードが最低 1 つの数値文字を含み、1 つの小文字および大文字を含み、1 つの特殊文字 (英数字以外) を含む必要があるという条件を追加します。
SET PASSWORD = 'passwordPASSWORD@999';
■Laravelの設定ファイル変更
.envの以下の部分を環境に適したものに書き換える
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
その後以下のマイグレーションのコマンドを叩く
php artisan migrate
*スキーマにテーブルができていること確認
ログイン画面で適当に入力
These credentials do not match our records.
正しくバリデーションの文言が返ってくる
ユーザーの登録はログイン画面の右上にあるRegisterから行える。
登録したユーザーでログインを行えばホーム画面に遷移する。
リマインダーの機能もあるっぽいけど、試していないな。
参照
// mod_rewrite を適用するために httpd.conf を修正
http://katzplus.com/centos-6/apache/mod_rewrite-%E3%82%92%E9%81%A9%E7%94%A8%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AB-httpd-conf-%E3%82%92%E4%BF%AE%E6%AD%A3/
CentOS7にMySQL導入&初期設定をおこなう
http://vdeep.net/centos7-mysql// MySQL 5.7をインストールしたら出てきたERROR 1045 (28000)の対処法
https://qiita.com/okuzawats/items/d3cd9f8aca7262715629
// mysql5.7でパスワードを変更する
https://qiita.com/RyochanUedasan/items/9a49309019475536d22a