1. 程式人生 > >Laravel學習日記1:安裝與初識

Laravel學習日記1:安裝與初識

前話:
一直使用ThinkPHP框架,最近計劃由tp3升級到tp5,結果發現tp5相關的文件都是收費的,準備棄之,換用Laravel。
工作的環境都是Linux,因此只討論Linux下的操作,不涉及windows相關。
相對於TP而言,Laravel稍顯麻煩,因此寫下本文用於幫助找不到頭緒的初學者們。
本文不適合對Linux基本操作不瞭解的人群。

我寫本文的目的:
1、你看完本文後,應該能夠自己學會安裝laravel到系統中;
2、能夠理解laravel基本的邏輯實現。

本文的預設環境:
centos環境,具體可參考CentOS7搭建LAMPR環境完整教程

這篇以前寫的文章。

安裝Laravel

安裝Composer

安裝composer是第一步要做的事情,也是最重要的一步,如果這一步完成不了,那也就無法向下進行了。
推薦使用composer中國全量映象來進行操作,不推薦使用官方方式。
Packagist / Composer中國全量映象

執行以下命令安裝composer(確保你的php在env path中,如果不在,請使用絕對路徑):

php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"

php composer-setup.php

執行完以上兩條命令後,會發現下載下來一個composer-setup.php檔案和composer.phar檔案,有用的就是這個composer.phar檔案了,將它移動到env path相關的目錄下並重命名為composer。

[root@vm composer]# 
[root@vm composer]# ls
composer.phar  composer-setup.php
[root@vm composer]# env | grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/bin/yasm/bin:/root/bin
[root@vm
composer]# [root@vm composer]# cp composer.phar /usr/local/sbin/composer [root@vm composer]# composer Do not run Composer as root/super user! See https://getcomposer.org/root for details ______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Composer version 1.5.3 2017-11-30 18:29:43

當你在命令列直接輸入執行composer有如上輸出時,就表示composer已經安裝成功了。
請注意:按以上操作安裝成功後,在“/root/.config/”下會生成一個composer目錄。

[[email protected] composer]# ls /root/.config/composer/
keys.dev.pub  keys.tags.pub

安裝Laravel

推薦使用國內的Laravel 中國
執行以下指令安裝Laravel

[root@vm composer]# composer global require "laravel/installer"

等待一會兒之後,laravel就安裝到系統中了。
看文件操作,這時候是不是到了執行laravel new blog來建立一個專案的時候了?但是你執行laravel卻提示沒有此命令?
原來laravel指令在這裡,我們上面說到的目錄:

[root@vm composer]# ls /root/.config/composer/vendor/bin/laravel 
/root/.config/composer/vendor/bin/laravel

所以,執行的時候需要這樣執行:

[root@vm composer]# /root/.config/composer/vendor/bin/laravel new blog
Crafting application...

稍等一段時間後,就會看到blog已經建立好了。(如果提示缺少一些軟體包的話,記得安裝上)

[[email protected] composer]# ls 
blog
[[email protected] composer]# cd blog/
[[email protected] blog]# ll
total 428
drwxr-xr-x  6 root root   4096 Dec 12 16:32 app
-rw-r--r--  1 root root   1686 Dec 12 16:32 artisan
drwxr-xr-x  3 root root   4096 Dec 12 16:32 bootstrap
-rw-r--r--  1 root root   1379 Dec 12 16:32 composer.json
-rw-r--r--  1 root root 141894 Dec 12 16:32 composer.lock
drwxr-xr-x  2 root root   4096 Dec 12 16:32 config
drwxr-xr-x  5 root root   4096 Dec 12 16:32 database
-rw-r--r--  1 root root   1125 Dec 12 16:32 package.json
-rw-r--r--  1 root root   1040 Dec 12 16:32 phpunit.xml
drwxr-xr-x  4 root root   4096 Dec 12 16:32 public
drwxr-xr-x  5 root root   4096 Dec 12 16:32 resources
drwxr-xr-x  2 root root   4096 Dec 12 16:32 routes
-rw-r--r--  1 root root    563 Dec 12 16:32 server.php
drwxr-xr-x  5 root root   4096 Dec 12 16:32 storage
drwxr-xr-x  4 root root   4096 Dec 12 16:32 tests
drwxr-xr-x 36 root root   4096 Dec 12 16:32 vendor
-rw-r--r--  1 root root    549 Dec 12 16:32 webpack.mix.js
-rw-r--r--  1 root root 227362 Dec 12 16:32 yarn.lock
[[email protected] blog]# cd ..

記得檢視一下自己系統的web server使用者,然後修改一下此目錄的相關許可權:

[[email protected] composer]# ps -ef | grep httpd
root      5234     1  0 11:26 ?        00:00:01 /usr/sbin/httpd -DFOREGROUND
apache    5235  5234  0 11:26 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    5236  5234  0 11:26 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
root     26597 25290  0 16:46 pts/2    00:00:00 grep --color=auto httpd
[[email protected] composer]# 
[[email protected] composer]# chown apache:apache -R blog/
[[email protected] composer]# ll
total 4
drwxr-xr-x 12 apache apache 4096 Dec 12 16:32 blog
[[email protected] composer]# ll blog/
total 428
drwxr-xr-x  6 apache apache   4096 Dec 12 16:32 app
-rw-r--r--  1 apache apache   1686 Dec 12 16:32 artisan
drwxr-xr-x  3 apache apache   4096 Dec 12 16:32 bootstrap
-rw-r--r--  1 apache apache   1379 Dec 12 16:32 composer.json
-rw-r--r--  1 apache apache 141894 Dec 12 16:32 composer.lock
drwxr-xr-x  2 apache apache   4096 Dec 12 16:32 config
drwxr-xr-x  5 apache apache   4096 Dec 12 16:32 database
-rw-r--r--  1 apache apache   1125 Dec 12 16:32 package.json
-rw-r--r--  1 apache apache   1040 Dec 12 16:32 phpunit.xml
drwxr-xr-x  4 apache apache   4096 Dec 12 16:32 public
drwxr-xr-x  5 apache apache   4096 Dec 12 16:32 resources
drwxr-xr-x  2 apache apache   4096 Dec 12 16:32 routes
-rw-r--r--  1 apache apache    563 Dec 12 16:32 server.php
drwxr-xr-x  5 apache apache   4096 Dec 12 16:32 storage
drwxr-xr-x  4 apache apache   4096 Dec 12 16:32 tests
drwxr-xr-x 36 apache apache   4096 Dec 12 16:32 vendor
-rw-r--r--  1 apache apache    549 Dec 12 16:32 webpack.mix.js
-rw-r--r--  1 apache apache 227362 Dec 12 16:32 yarn.lock
[[email protected] composer]# 

storage與vendor兩個目錄許可權也要修改一下:

[[email protected] blog]# chmod 777 -R storage/ vendor/
[[email protected] blog]# ll
total 428
drwxr-xr-x  6 apache apache   4096 Dec 12 16:32 app
-rw-r--r--  1 apache apache   1686 Dec 12 16:32 artisan
drwxr-xr-x  3 apache apache   4096 Dec 12 16:32 bootstrap
-rw-r--r--  1 apache apache   1379 Dec 12 16:32 composer.json
-rw-r--r--  1 apache apache 141894 Dec 12 16:32 composer.lock
drwxr-xr-x  2 apache apache   4096 Dec 12 16:32 config
drwxr-xr-x  5 apache apache   4096 Dec 12 16:32 database
-rw-r--r--  1 apache apache   1125 Dec 12 16:32 package.json
-rw-r--r--  1 apache apache   1040 Dec 12 16:32 phpunit.xml
drwxr-xr-x  4 apache apache   4096 Dec 12 16:32 public
drwxr-xr-x  5 apache apache   4096 Dec 12 16:32 resources
drwxr-xr-x  2 apache apache   4096 Dec 12 16:32 routes
-rw-r--r--  1 apache apache    563 Dec 12 16:32 server.php
drwxrwxrwx  5 apache apache   4096 Dec 12 16:32 storage
drwxr-xr-x  4 apache apache   4096 Dec 12 16:32 tests
drwxrwxrwx 36 apache apache   4096 Dec 12 16:32 vendor
-rw-r--r--  1 apache apache    549 Dec 12 16:32 webpack.mix.js
-rw-r--r--  1 apache apache 227362 Dec 12 16:32 yarn.lock

storage目錄包含了快取、日誌等相關資訊,需要有寫許可權。
vendor目錄下的是composer依賴包。

我們在/var/www/目錄下建立一個link指向blog目錄:

[root@vm blog]# cd /var/www/
[root@vm www]# ln -s /home/liangjl/composer/blog/ blog
[root@vm www]# ls
blog  cgi-bin  html
[root@vm www]# 

然後修改apache配置指向blog目錄,這裡我使用的是1045埠:

<VirtualHost *:1045>
  DocumentRoot "/var/www/blog/"
  DirectoryIndex index.html index.php server.php

  <Directory "/var/www/blog/">
    Options -Indexes +FollowSymlinks
    AllowOverride All
    Require all granted
  </Directory>

</VirtualHost>

記得apache配置檔案裡要加上“Listen 1045”。
好了,現在我們重啟apache服務使配置生效:

[root@vm www]# service httpd restart
Redirecting to /bin/systemctl restart httpd.service

現在,使用瀏覽器,開啟頁面看一下,如果出現了以下頁面就表示這個名為blog的laravel專案已經跑起來了。

這裡寫圖片描述

Laravel基本學習

laravel路由

我們修改blog/routes/web.php檔案,在末尾增加一行:

Route::get('users', function(){
        return 'hello,world!';
});

然後訪問“ip:1045/server.php/users”可以看到頁面
這裡寫圖片描述

到這裡,你就已經學會laravel裡面最簡單的路由配置了。
路由有很多功能,平常用的最多的應該是指向Controller下的方法,即如下這種形式:

Route::get('users', '[email protected]');

這個路由表示的是指向UserController下的show方法。

laravel檢視

這裡借用文件裡的說明。
我們建立兩個檢視,一個名為layout.blade.php,內容如下:

<html>

        <body>

                <h1>Laravel Quickstart</h1>

                @yield('content')

        </body>

</html>

另一個為users.blade.php,內容如下:

@extends('layout')

@section('content')

        <p>hello, Taylor!</p>

@stop

同時,需要修改一下路由檔案來使我們新加的檢視生效,將上面路由那一節我們加的那個路由資訊修改為如下形式:

Route::get('users', function(){
        return view('users');
});

這時候,重新整理web頁面,可以看到我們建立的檢視已經被載入了。
這裡寫圖片描述

laravel資料庫配置

laravel支援幾種資料庫在文件裡都可以查到,這裡說一下資料庫的相關配置。
預設配置檔案是“config/database.php”,我們使用mysql的時候,可以看到這個配置檔案裡面很多配置都是使用的'host' => env('DB_HOST', '127.0.0.1')env的方式,這個意思是“讀取環境配置中的相關項,如果沒有此項,則使用後面的值”,讀取的是“blog/.env”檔案中的內容。
所以我們修改資料庫配置,直接修改“.env”檔案裡的相關內容就可以了。
如果沒有修改mysql預設配置,那隻修改以下幾項就可以了:

DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=

laravel控制器

laravel的大部份程式碼都是存放在“blog/app/”下,控制器就在“blog/app/Http/Controllers/”目錄下。

laravel綜合例項

下面我們通過一個簡單的例子,來演示一下laravel控制器+資料庫操作+檢視+路由的具體實現。
1、首先我們建立一個名為“laravel”的資料庫,然後建立一張表,並插入一些資料:

mysql> create database laravel;
mysql> use laravel;
mysql> CREATE TABLE `user` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(16) DEFAULT '',
  `age` int(10) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
mysql> insert into user(name,age) values('Lucy',18),('Lily',22),('tank',10);
mysql> select * from user;
+----+------+-----+
| id | name | age |
+----+------+-----+
|  1 | Lucy |  18 |
|  2 | Lily |  22 |
|  3 | tank |  10 |
+----+------+-----+
3 rows in set (0.00 sec)

記得“.env”中的資料庫配置需要與此相同。

2、現在我們來建立一個控制器檔案UserController.php,內容如下:

<?php
namespace App\Http\Controllers;

use App\User;
use Illuminate\Support\Facades\DB;
use App\Http\Controllers\Controller;

class UserController extends Controller
{
        public function show(){
                $users = DB::select('select * from user');
                return view('users', ['user' => $users]);
        }
}

3、然後,我們需要修改一下檢視檔案users.blade.php,讓檢視能夠顯示我們從Controller中獲取到的資訊,修改後的內容如下:

@extends('layout')

@section('content')

        @foreach($user as $item)
                <p>
                <span> id: {{ $item->id }} </span>
                &nbsp;--&nbsp;
                <span> name: {{ $item->name }} </span>
                &nbsp;--&nbsp;
                <span> age: {{ $item->age }} </span>
                </p>

        @endforeach

@stop

4、最後,我們還需要修改一下路由檔案web.php,將之前新增的那條路由修改為如下:

Route::get('users', '[email protected]');

現在重新整理頁面,可以看到如下的展示:
這裡寫圖片描述

整體實現邏輯
我們使用users路由時,laravel會去呼叫UserController控制器下的show()方法來進行處理,而show()方法中,我們獲取了laravel資料庫user表中的所有資訊,共3條記錄,將它們傳遞給了檢視users,在檢視users中,對傳遞來的資料進行了foreach輸出,形成了最終展示的頁面。

看完本文之後,希望你有所收穫。

———————結束————————–

相關推薦

Laravel學習日記1安裝初識

前話: 一直使用ThinkPHP框架,最近計劃由tp3升級到tp5,結果發現tp5相關的文件都是收費的,準備棄之,換用Laravel。 工作的環境都是Linux,因此只討論Linux下的操作,不涉及windows相關。 相對於TP而

mongodb學習-1安裝基本語句

1.安裝MongoDB     - 安裝     - 配置環境變數         C:\Program Files\MongoDB\Server\3.2\bin     - 在c盤根目錄         - 建立一個資料夾 data         - 在data中建立一個

golang學習筆記(1)安裝&helloworld

golang安裝:golang編譯器安裝過程比較簡單,也比較快,不同平臺下(win/linux/macos)都比較相似;https://dl.gocn.io/golang/1.9.2/go1.9.2.src.tar.gz 下載對應的系統版本的編譯器go的版本號由"." 分為3部分如當前的

hibernate框架學習筆記1搭建測試

for this ble action 1.7 turn yiq targe cts hibernate框架屬於dao層,類似dbutils的作用,是一款ORM(對象關系映射)操作 使用hibernate框架好處是:操作數據庫不需要寫SQL語句,使用面向對象的方式完成

Ionic開發1安裝新建項目

onclick 安卓 rdo start 開發工具 布局 情況 技術分享 成了 我們為什麽要選用Ionic(Hybrid)呢? 不必說那些花裏胡哨的話,我曾經是搞Native Android開發的,兩者的區別還是有體會的 比如:我要做一個手機qq好友列表類似得布局,只是布局

git安裝學習1)-安裝使用

一,git簡介 Git 應該是目前世界上最先進的分散式版本控制系統,是用來追蹤計算機檔案的變化的工具,也是一個供多人使用的協同工具。簡言之就是在完成一項任務時,你可能要和同事朋友相互交換修改,檢視歷史版本等操作,這個時候就可以用到git。 另: git與svn區別: git是分散式的版本控制系統 svn

Pthon基礎學習日記1—Python介紹使用場景

一、Python直譯器可至少通過5中方式執行程式        1、互動式        2、作為Python模組檔案        3、作為Unix檔案型指令碼        4、在其它系統中

NanoPi NEO2 學習筆記 1安裝系統、首次開機和一些設定

前幾天搞到了一塊NanoPi NEO2,A53的核心,512M記憶體,一個千兆網口,非常小的體積,質量也不錯,非常滿意,140元的價格可以買到這樣一塊ARM開發板也是非常划算了,非常適合低成本從微控制器轉向嵌入式學習 說實話這塊板子的資料和樹莓派相比較,可以說是少之又少,需要拿出十足的耐心,敢於折騰的決心去

Caffe學習系列(1)安裝配置ubuntu14.04+cuda7.5+caffe+cudnn

一、版本 linux系統:Ubuntu 14.04 (64位) 顯示卡:Nvidia K20c cuda: cuda_7.5.18_linux.run cudnn: cudnn-7.0-linux-x64-v4.0-rc 二、下載 Ubuntu 14.04下載地址:http://www.ubunt

caffe學習筆記1-win10安裝測試mnist

windows下caffe的安裝有些麻煩,我折騰了一天終於安裝好caffe並且成功測試了mnist,在此期間遇到了不少坑,特此記錄一下。 安裝caffe caffe的安裝方式一直在變化,我安裝的時候發現不少部落格寫的東西已經有些過時了,所以建議大家在安裝的時

HBase學習總結(1)HBase的下載安裝

oot 停止 微信公眾號 profile jdk1 variable jdk oop lib (HBase是一種數據庫:Hadoop數據庫,它是一種NoSQL存儲系統,專門設計用來高速隨機讀寫大規模數據。本文介紹HBase的下載與安裝的整個過程。) 一

機器學習開源框架系列Torch1簡介安裝

Torch是一個基於BSD License的開源的機器學習的框架,早在2002年就釋出了Torch的初版。Torch一直聚焦於大規模的機器學習應用,尤其是影象或者視訊應用等領域,在超過5萬次的下載,在學校和企業中也有著不小的影響力,而Torch7希望能夠做到

學習python第一步安裝配置

半路出家學前端,幹了兩年,其他程式語言沒接觸過,被同事用python自動抓取網頁資料的小程式震撼,決定了解一下 配置:win10系統,python 3.7.1 ,Pycharm 2018.2.4 安裝 安裝python Python官

tensorflow學習筆記1tf.Variable、tf.get_variabletf.get_variable、tf.variable_scope對比總結

** 0. 淺談tensorflow變數機制 ** tensorflow提供了通過變數名稱來建立或者獲取一個變數的機制。通過這個機制,在不同的函式中可以直接通過變數的名字來使用變數,而不需要將變數通過引數的形式到處傳遞,實現了變數共享。 ** 1. 對比tf.V

ThinkPHP學習(一) Windows下Nginx+PHP5+ThinkPHP 3 2 1安裝配置

                工具原料:Nginx153:網盤下載地址:http://pan.baidu.com/s/1qWNgLf2php-5.3.28-nts-Win32-VC9-x86網盤下載地址:http://pan.baidu.com/s/1pdukYThinkPHP_3.2.1網盤下載地址:ht

R語言資料探勘學習筆記(1)資料探勘相關包的介紹

今天發現一個很不錯的部落格(http://www.RDataMining.com),博主致力於研究R語言在資料探勘方面的應用,正好近期很想系統的學習一下R語言和資料探勘的整個流程,看了這個部落格的內容,心裡久久不能平靜。決定從今天開始,只要晚上能在11點之前把碗洗好,就花一個小時的時間學習部落格上的內容,並把

Git學習筆記1版本管理歷史及Git安裝

1.集中式VCS / SVN 有集中的版本管理伺服器,具備檔案管理和分支管理,提高整合效率,但是客戶端必須時刻與伺服器端相互連線。 2.分散式的VCS 客戶端和服務端都有完整的版本庫,即使脫離了服務端,客戶端依然可以進行版本管理,在檢視歷史和版本等操作時都不需要訪問伺服器,相比較集中式,

機器學習筆記1機器學習定義分類

機器學習定義與分類 Andrew Ng機器學習課程學習筆記1 定義 Arthur Samuel (1959) Machine Learning: Field of study that gives computers the ability to l

vagrant系列一vagrant的安裝初識

一個月沒有更新過了。三月份終於把設計模式看完了,自己也寫了一些設計模式的基礎程式碼。也用到了幾個設計模式到自己的專案中。 今天當然不是來說設計模式的,先說說這段時間學到的一個新東西。vagrant,其實之前在用laravel的時候,就知道了這麼個東西,一直覺得

機器學習筆記1機器學習的動機應用

目標:機器學習有意義;機器學習的應用;所有人有能力進行機器學習的研究。 預備知識:隊、列、二叉樹、線性代數 預備軟體:Octave、Matlab 機器學習:1959年由Arthur提出:在不直接對對問題賦予計算機學習能力的一個領域。寫一個下棋,和自己下棋,程式自己和自己