- 打包 composer 和設定 laravel 的開發環境
(不打包的話在操作 PHP 的時候會遇到 could not find driver 錯誤)
1. 找個地方建個空資料夾
2. 建立 Dockerfile
3. 打包(附範例):
FROM php:7.2.9-fpm
RUN docker-php-ext-install -j$(nproc) pdo_mysql
RUN docker-php-ext-install -j$(nproc) mbstring
RUN docker-php-ext-install -j$(nproc) tokenizer
RUN curl -sS https://getcomposer.org/installer | php
RUN mv composer.phar /usr/local/bin/composer - 操作 php artisan db 相關的操作時遇到 Access denied for user 錯誤:
這個問題的原因來自於你沒有讓你 mysql 的 user 開啟遠端連線的權限
1. GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'IP' IDENTIFIED BY 'PASSWORD';
p.s 1. USERNAME 是允許登入該資料表的使用者帳號
2. IP 是允許連線的 IP 位址, 如果用'%', 會讓所有外來 IP 皆可連線
3. PASSWORD 是使用者密碼 - 操作 composer instsall 時遇到 unable to locate package unzip 錯誤:
1. sudo apt-get update
2. apt-get upgrade
3. sudo apt-get install unzip. - 錯誤 Syntax error or access violation: 1071 Specified key was too long; maxkey length is 767 bytes")
從 5.4 開始 laravel 就把資料庫的預設字符集更改成 utf8mb4,除非你使用 MySQL v5.7.7 或更高的版本才不會出現此錯誤。
1. 找到 App\Providers\AppServiceProvider 文件
2. 在函式 boot 裡面加入 Schema::defaultStringLength(191); - 架設 API Authentication (Passport) 的時候遇到 Unauthenticated 錯誤:
(假設你按照 laravel 官方的教學走,然後遇到這個錯誤,這是因為你沒有看完整篇文章,不過煮煮也懂,誰有那個美國時間慢慢讀,而且其實這部份的說明藏的很下面,就是故意要騙你看完整篇的意思... ...)
1. 打開 App\Http\Kernel.php
2. 在 $middlewareGroups 裡面加入 \Laravel\Passport\Http\Middleware\CreateFreshApiToken::class
2018年10月12日 星期五
架設 laravel 環境遇到的坑
container php-fpm
2018年9月11日 星期二
[測試] 在 Synology Nas 上用 docker 架設 Nginx
秉持著 one process per container 的原則讓我們先來備料...
首先我們需要:
然後就可以開始架設...
蛤?
你喜歡用 cmd 裝逼?
什麼?
你忘了要去哪學?
沒關係沒關係,
煮煮把他留在這裡 [docker],
忘記指令的同學可以先去複習一下,
接下來讓我們開始動手做吧!
(cgi 的操作可以參考 cmd)
1. 首先先把 mysql 架起來
蛤?
你喜歡用 cmd 裝逼?
什麼?
你忘了要去哪學?
沒關係沒關係,
煮煮把他留在這裡 [docker],
忘記指令的同學可以先去複習一下,
接下來讓我們開始動手做吧!
(cgi 的操作可以參考 cmd)
1. 首先先把 mysql 架起來
sudo docker run --restart=always -d --name mysql-server -p 3306:3306 -e MYSQL_ROOT_PASSWORD=[這裡輸入你登入這台 server 用的密碼] -e MYSQL_DATABASE=[這裡輸入你要建立的資料庫名稱] -e MYSQL_USER=[這裡輸入你要建立的資料庫使用者帳號] -e MYSQL_PASSWORD=[這裡輸入資料庫使用者的密碼] mysql/mysql-server:8.0.4
2. 接著架設 php
sudo docker run --restart=always -d --name php7-2-9 -p [隨便選個你喜歡且不是保留用的 port]:9000 --link mysql-server -e DB_HOST=mysql-server -v [project 的存放位置]:[要映射到 container 的位置] -w [project 的存放位置] php:7.2.9-fpm
3. 然後架設 nginx
sudo docker run --restart=always -d --name nginx1-9-9 -p 80:80 --link php7-2-9 -v [project 的存放位置]:[要映射到 container 的位置] -v [你寫好的 default.conf 的存放位置]:/etc/nginx/conf.d/default.conf nginx:1.9.9
p.s 懶得找的話可以參考煮煮的 default.conf
server { listen 80 default_server; server_name localhost; root [映射到 container 的位置]; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$query_string; } error_page 404 /index.php; location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass php7-2-9:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param DB_HOST mysql-server; } location ~ /\.ht { deny all; } }
備註:
- --name 的部分有改動的話其他地方別忘了改
- 圖形介面比較好用,初學的話當然是建議你直接用介面操作,然後再比對指令
- 如果你的操作過程有問題,可以善用 curl localhost:80 來檢查會比較快
沒問題的話應該會像我這樣...
然後可以來試吃啦!
隨便放個 phpinfo 來看看~
是不是很神奇啊~~~
訂閱:
文章 (Atom)