iT邦幫忙

2022 iThome 鐵人賽

DAY 12
0
Modern Web

跳脫MVC,Laravel + React 建立電商網站系列 第 12

Day 12 認識拉拉維爾(Laravel)

  • 分享至 

  • xImage
  •  

昨天安裝環境的時候忘記安裝資料庫了,這次選擇MySQL 8。我這裡快速帶過安裝步驟跟流程,我把前陣子的安裝筆記拿出來跟大家分享,沒意外照著做應該就Ok了XD

MySQL 8 安裝

安裝MySql 8時,先刪除CebtOs7 預設的MariaDB

rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
如果沒有結果不需處理

安裝MySql 8
下面是一大坨指令,有興趣的同學可以仔細看我留的解釋~

cd /usr/src
yum -y install wget
wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
yum localinstall mysql80-community-release-el7-1.noarch.rpm

#更新yum源
yum clean all
yum makecache
#---
yum install mysql-community-server # 下載

-------------------------------
例外狀況 --2022/04/21更新
如果遇到以下:
The GPG keys listed for the "MySQL 8.0 Community Server" repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.
Failing package is: mysql-community-client-8.0.28-1.el7.x86_64
GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
代表 GPG密鑰過期了(如果擔心可以將原本的rpm -e 先移除掉再重新安裝),因此要重新rpm import一次GPG密鑰:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
下完後再重新 下:yum install mysql-community-server
-------------------------------

systemctl start mysqld # 啟動
cat /var/log/mysqld.log | grep password # 查看隨機產生的密碼
(這裡的隨機密碼要記一下,不過因為考量安全性,這個密碼非常的複雜,既然我們只是為了測試,我們就一切從簡,想辦法把密碼改成123456)
mysql -u root -p #登入

寫剛剛出現的password
為了讓密碼之後可以變成123456 需要修改安全性強度的政策(policy)
先看一下現行政策
> show variables like '%password%';

return :
You must reset your password using ALTER USER statement before executing this statement.

我們要先改過密碼才可以查看政策
因此下這個指令:
alter user 'root'@'localhost' identified by '這裡是密碼';
其中

validate_password.length -->代表字元數
validate_password.mixed_case_count -->大小寫字元數
validate_password.number_count -->數字數量
validate_password.policy --> 強度政策
validate_password.special_char_count --> 特殊字元數

修改以下條件:
> set global validate_password.policy=0;
> set global validate_password.length=4;
> set global validate_password.special_char_count =0;

因為個人比較喜歡直覺操作,這裡以下是為了用navicate操作資料庫 而需要的設定,如果要直接操作指令的朋友可以跳過


授權外部連線(從localhost本地端變更成%)

GRANT ALL ON . TO 'root'@'%';
You are not allowed to create a user with GRANT

因為8版本的限制導致錯誤
步驟-->先查看所有用戶,確認user 是否正常

use mysql
select host, user, authentication_string, plugin from user;

解法:(要先use mysql ps:mysql是儲存使用者以及一些系統資訊的資料庫)
update user set host='%' where user='root';
--先下sql把 host 變成 %
再重新下
GRANT ALL ON . TO 'root'@'%';
--->Query Ok!
如果使用navicate連線時遇到,Authentication plugin 'caching_sha2_password' cannot be loaded
應該是因為密碼sha2 的限制,所以要變更密碼
變更密碼
ALTER USER 'root' IDENTIFIED WITH mysql_native_password BY '123456';

然後使用navicate連線就可以完成了!


關於Laravel

終於進到正題了XD,Laravel 是一款"MVC"的框架。MVC分別是:模型(Model)、視圖(View)和控制器(Controller),是一種軟體架購,而Laravel就是遵從這樣的架構而做出來的框架。
根據維基百科的定義:
模型(Model) 用於封裝與應用程式的業務邏輯相關的資料以及對資料的處理方法。「 Model 」有對資料直接存取的權力,例如對資料庫的存取。「Model」不依賴「View」和「Controller」,也就是說, Model 不關心它會被如何顯示或是如何被操作。但是 Model 中資料的變化一般會通過一種重新整理機制被公布。為了實現這種機制,那些用於監視此 Model 的 View 必須事先在此 Model 上註冊,從而,View 可以了解在資料 Model 上發生的改變。

視圖(View)能夠實現資料有目的的顯示(理論上,這不是必需的)。在 View 中一般沒有程式上的邏輯。為了實現 View 上的重新整理功能,View 需要存取它監視的資料模型(Model),因此應該事先在被它監視的資料那裡註冊。

控制器(Controller)起到不同層面間的組織作用,用於控制應用程式的流程。它處理事件並作出回應。「事件」包括使用者的行為和資料 Model 上的改變。

既然都說MVC是一種軟體架構了,其實這只是一個概念,並沒有絕對的對與錯,因此一般來說會針對專案的 需求、複雜度、大小 來進行不同的架構設計
以到目前使用Laravel的工程專案來說,多半會在MVC的基礎上再依不同的需求進行架構調整,例如這篇文章,就是在既有的MVC架構下進行擴展,充分規劃每個部件的職責,降低彼此之間的耦合,這部分如果申論太多就變成Design Pattern專欄了,所以這裡的前導概念就先到這邊。

在接觸一個概念之前,我個人的習慣都是換先理解一下他的檔案配置,可以參考 官方文件

這裡會特別推薦Laravel的原因是,我認為這個框架可以很好的處理跟資料庫之間的溝通跟應用。
基本上我們最後要進行的電商網站概念很簡單,就是將資料從資料庫拿出來 然後應用。
關於電商網站的架構要多大,等我之後再來決定><,畢竟一頁式電商也是電商R

今天就先到這邊,這兩天實在被環境搞到有點累,剩下的我們明天再說~
參考資料:MVC維基百科


上一篇
Day 11 開始拉拉維爾(Laravel)之前的準備(虛擬環境架設)
下一篇
Day 13 淺談 拉拉維爾(Laravel) - Migration
系列文
跳脫MVC,Laravel + React 建立電商網站30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言