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`。 :::