1121 views
owned this note
# 安裝 Laravel
###### tags: `MCL` `web`
# Laravel 10.x
```bash
# Docker
curl -sSL https://get.docker.com/ | sh
sudo chmod -aG docker ${USER}
# Laravel (e.g., example-laravel-project)
curl -s "https://laravel.build/example-laravel-project?with=mysql" | bash
```
# Laravel 5.8
Laravel 需要 PHP 7 以上版本、支援改寫規則的 HTTP 伺服器、套件管理器 composer、以及 PHP 擴充功能,才能完整初始化一個專案。
因為整體流程複雜,不建議手動安裝。這時候我們會利用 Docker 協助環境建置。
## 安裝 Docker
### Ubuntu 16.04 / 18.04
* 方案一、快速方案:輸入以下指令
```bash
curl -sSL https://get.docker.com/ | sh
```
* 方案二、手動安裝:請參考[此文件](https://docs.mcl.math.ncu.edu.tw/books/mcl-documents/page/docker-ce-%E8%88%87-docker-compose-%E9%83%A8%E5%B1%AC)。
### Windows 10 (Docker for Windows)
> 若有 Ubuntu 遠端機器,建議於遠端機器上安裝後,透過 vscode 進行遠端開發。
* 如果 Windows 版本為專業版或是企業版,可以考慮安裝 Docker desktop,不過他會使用 Hyper-V (這會使得 VirtualBox 與 VMWare 都無法使用),請自行斟酌使用。
* 若為家用版,也可以安裝 [Docker Toolbox on Windows](https://docs.docker.com/toolbox/toolbox_install_windows/),他不會使用 Hyper-V 而是 VirtualBox
## 安裝 Docker-compose
### Ubuntu 16.04 / 18.04
根據 [Docker 文件](https://docs.docker.com/compose/install/),安裝指令如下:
```bash
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
```
### Windows 10 (Docker for Windows)
內建就有附,所以不用特別裝。
## 匯入 Docker-compose 設定檔
首先選擇一個空資料夾當作開發資料夾,接著將以下內容寫入檔案 `docker-compose.yml`
* Ubuntu 版本 (所有資料都會放在該空資料夾下)
```yaml=
version: '2'
services:
php:
image: stephen359595/laravel-php:7.3
volumes:
- ./volume/web:/var/www/
user: 1000:1000
nginx:
image: jguyomard/laravel-nginx:1.13
volumes_from:
- php
ports:
- 8080:80
mysql:
image: mysql:5.7
volumes:
- ./volume/sql:/var/lib/mysql
environment:
- "MYSQL_ROOT_PASSWORD=password"
- "MYSQL_DATABASE=your-db-name"
sql-admin:
image: phpmyadmin/phpmyadmin
restart: always
ports:
- 8888:80
environment:
- PMA_ARBITRARY=1
```
* Windows 版本
> 兩者版本差別在於 [MySQL 的資料卷儲存方法](https://stackoverflow.com/a/39208187)
```yaml=
version: '2'
services:
php:
image: stephen359595/laravel-php:7.3
volumes:
- ./volume/web:/var/www/
# user: 1000:1000
nginx:
image: jguyomard/laravel-nginx:1.13
volumes_from:
- php
ports:
- 8080:80
mysql:
image: mysql:5.7
volumes:
#- ./volume/sql:/var/lib/mysql
- my-mysql-volume:/var/lib/mysql
environment:
- "MYSQL_ROOT_PASSWORD=password"
- "MYSQL_DATABASE=your-db-name"
sql-admin:
image: phpmyadmin/phpmyadmin
restart: always
ports:
- 8888:80
environment:
- PMA_ARBITRARY=1
volumes:
my-mysql-volume:
```
然後根據設定檔新增空資料夾,使整個資料結構呈現以下狀態:
```
.
├── docker-compose.yml
└── volume
├── sql
└── web
```
然後就於當前目錄下啟動服務:
```bash
docker-compose up -d
```
### 新增 Laravel 專案
於當前目錄下執行以下指令:
```bash
docker-compose exec php composer create-project --prefer-dist laravel/laravel blog "5.8.*"
```
然後至 `docker-compose.yml` 將第六行
```yaml
- ./volume/web:/var/www/
```
改成
```yaml
- ./volume/web/blog:/var/www/
```
接著再重新啟動服務
```bash
docker-compose up -d
```
此時前往 http://your-ip:8080 應可看到 Laravel 主頁。
### 修改資料夾權限
因為 Laravel 需要一些寫入權限,所以要補一些權限給他。
```bash
cd volume/web/blog
chmod -R +x storage bootstrap public
```
:::info
如果上述指令發生權限問題,可嘗試使用 `sudo`。
:::