摘要:本篇承接使用構(gòu)建環(huán)境,介紹如何在該文所用的容器中運行項目。接下來可以新建一個項目或是通過轉(zhuǎn)移項目。從上同步項目一般服務(wù)器中運行的項目都是在本地開發(fā)完成后同步上去的。生成文件文件含有項目所需的配置以及用于加密解密的隨機字符串。
布置 Laravel 項目本篇承接 使用 Docker 構(gòu)建 LNMP 環(huán)境,介紹如何在該文所用的容器中運行 Laravel 項目。主要步驟為:轉(zhuǎn)移 Laravel 項目到數(shù)據(jù)卷 => 配置數(shù)據(jù)庫 => 配置 Nginx => 配置 Laravel 的 .env 文件。
由于我們將 Git、Composer 等工具統(tǒng)一管理于 Console 容器,所以,首先需要進入這一容器。當然,在這之前,要確保容器已經(jīng)啟動,在 docker-compose.yml 所在路徑下執(zhí)行:
docker-compose up -d
然后查看容器是否啟動以及啟動后的名字:
docker ps
之后進入 Console 容器,注意替換容器名字:
docker exec -it $console_container_name bash
接下來,可以通過 Composer 新建一個 Laravel 項目,也可以將本地已經(jīng)完成的項目通過 Git 同步到服務(wù)器中。
注意,由于我們在 docker-compose.yml 中對數(shù)據(jù)卷進行了配置,因而項目文件的路徑需要放置于 apps/ 目錄之下,該目錄會在執(zhí)行 docker-compose up -d 之后生成在 .yml 文件的同級目錄中。
接下來可以新建一個 Laravel 項目或是通過 Git 轉(zhuǎn)移項目。
安裝 Laravel執(zhí)行:
composer create-project laravel/laravel=5.4 $project_name --prefer-dist
可以按照需要更換版本和項目名。
從 Git 上同步項目一般服務(wù)器中運行的項目都是在本地開發(fā)完成后同步上去的??梢酝ㄟ^在本地添加遠程 Git 地址后 push 到服務(wù)器中,也可以通過克隆的方式從代碼倉庫(Github、Coding.net 等)中得到項目。
git clone ${your_project_address}Install
為了保證 Laravel 項目中 vendor 的版本與本地完全一致,需要在 Laravel 項目下執(zhí)行:
composer install
這一步會根據(jù) composer.lock 文件中記錄的版本號進行安裝。
生成 .env 文件.env 文件含有項目所需的配置以及用于加密解密的隨機字符串。為了安全,一般不會將該文件與本地同步。但會保留一個 .env.example 作為副本,此時我們需要先復制一份該文件并命名為 .env:
cp .env.example .env
然后生成隨機字符串,該字符串會自動寫入 .env 文件中:
php artisan key:generate修改權(quán)限
部分 Laravel 文件夾需要更多的權(quán)限,執(zhí)行:
chmod -R 777 storage chmod -R 777 bootstrap/cache
注意,這些路徑均是相對于 Laravel 項目而言。
數(shù)據(jù)庫配置 基本配置執(zhí)行 exit; 從 Console 容器中退出,然后進入數(shù)據(jù)庫容器,同樣注意容器名字:
docker exec -it $database_container_name bash
根據(jù) docker-compose.yml 中的設(shè)置,通過 root 進入數(shù)據(jù)庫服務(wù):
mysql -uroot -proot
由于多個 Docker 容器間的關(guān)系類似于依賴網(wǎng)絡(luò)進行連接的主機,要想通過 PHP 容器中的腳本訪問 MySQL 容器的數(shù)據(jù)庫服務(wù),需要具有遠程連接的數(shù)據(jù)庫用戶,執(zhí)行以下命令進行創(chuàng)建:
GRANT ALL PRIVILEGES ON *.* TO username@"%" IDENTIFIED BY "password";
注意以下幾點:
*.* 表示對所有數(shù)據(jù)庫的所有表都具有權(quán)限;
% 表示不限制連接的主機 IP,為了安全起見,這里可以把 % 改為 php。注意,這里的 php 其實相當于一個域名,Docker 的內(nèi)置 DNS 會將其解析為 PHP 容器的地址;
修改 username 和 password 為自定義的用戶名和密碼。
遠程連接若想要在本地(非 Docker 宿主機)連接到數(shù)據(jù)庫容器,需要利用端口映射,將數(shù)據(jù)庫 Docker 的 3306 端口映射到主機的某個端口(如:12345),然后在本地通過訪問服務(wù)器的 $server_ip:12345 并附帶具有遠程訪問權(quán)限的用戶名和密碼進行遠程連接(注意 % 的問題)。
在本文所用的 docker-compose.yml 中已經(jīng)默認打開了 3306:3306 的端口映射,大家可以根據(jù)需要進行設(shè)置。
創(chuàng)建數(shù)據(jù)庫通過以下方式創(chuàng)建一個數(shù)據(jù)庫并設(shè)置字符集:
CREATE DATABASE `database_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin執(zhí)行 SQL 文件
我們可以把本地的數(shù)據(jù)庫導出為 .sql 文件,然后在上傳到數(shù)據(jù)庫容器中并執(zhí)行,首先在本地將 SQL 文件上傳到宿主服務(wù)器:
scp xxx.sql root@your_server_ip:/
然后在宿主服務(wù)器中將該文件轉(zhuǎn)移到數(shù)據(jù)庫容器中的共享數(shù)據(jù)卷中,執(zhí)行:
mv /xxx.sql path/to/docker-compose.yml/database
最后進入數(shù)據(jù)庫容器并進入 MySQL 數(shù)據(jù)庫服務(wù),執(zhí)行:
source /path/to/xxx.sqlNginx 虛擬主機配置
由于 Laravel 的請求依賴重寫規(guī)則,在 Nginx 服務(wù)器中需要使用虛擬主機,將某一域名映射到 Laravel 項目根目錄以實現(xiàn)正確的請求重寫(若為 Apache 則不需要)。
執(zhí)行 exit; 退出上一個容器,然后進入 images/nginx/config 中,該路徑相對于 docker-compose.yml 文件。
由于 Nginx 容器中 nginx.conf 的配置以及數(shù)據(jù)卷的設(shè)置,在該路徑下的所有 *.conf 文件都會起到作用。下面我們新建一個 myweb.comf 文件,內(nèi)容如下:
server{ listen 80; server_name my.app.dev; root /mnt/apps/laravel/public; index index.php index.html index.htm; location / { index index.php index.html; try_files $uri $uri/ /index.php?$query_string; } location ~ .php$ { fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
注意以下兩行需要根據(jù)具體情況進行修改,其中 my.app.dev 為域名,laravel/public 部分要修改為 Laravel 的項目名。注意這里是 /mnt/apps/xxx,路徑為 Nginx 服務(wù)器的項目路徑,注意分清共享數(shù)據(jù)卷和配置文件的作用位置。:
server_name my.app.dev; root /mnt/apps/laravel/public;Laravel 中 .env 文件配置
需要根據(jù)之前的配置修改 .env 文件,主要修改如下:
DB_HOST=database DB_DATABASE=database_name DB_USERNAME=remote DB_PASSWORD=remote
DB_HOST=database 中的 database 同樣是指數(shù)據(jù)庫容器,相當于 Docker 內(nèi)部 DNS 的一個標識(該標識由 docker-compose.yml 進行設(shè)置)。
DB_DATABASE=database_name 為該項目所用的數(shù)據(jù)庫名;
DB_USERNAME=remote 和 DB_PASSWORD=remote 為之前設(shè)置的可以進行遠程連接的數(shù)據(jù)庫用戶;
MySQL 下執(zhí)行 sql 腳本 - 博客園
MySQL 創(chuàng)建數(shù)據(jù)庫指定字符集 - 163 博客
MySQL 開啟遠程連接
Linux 查看服務(wù)器開放的端口號 - 博客園
上傳文件到遠程服務(wù)器 - CSDN
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/26872.html
摘要:基于快速搭建服務(wù)根據(jù)自定義配置文件快速搭建環(huán)境。目錄此項目能做什么地址視頻教程包含軟件項目目錄結(jié)構(gòu)快速運行運行服務(wù)運行項目運行前端服務(wù)此項目能做什么搭建開發(fā)生產(chǎn)環(huán)境。搭建開發(fā)生產(chǎn)環(huán)境。 基于Docker快速搭建Web服務(wù) 根據(jù)自定義配置文件快速搭建Web環(huán)境。 目錄 此項目能做什么 GItHub地址、視頻教程 包含軟件 項目目錄結(jié)構(gòu) 快速運行KFKDock 運行PHP服務(wù) 運行L...
摘要:基于快速搭建服務(wù)根據(jù)自定義配置文件快速搭建環(huán)境。目錄此項目能做什么地址視頻教程包含軟件項目目錄結(jié)構(gòu)快速運行運行服務(wù)運行項目運行前端服務(wù)此項目能做什么搭建開發(fā)生產(chǎn)環(huán)境。搭建開發(fā)生產(chǎn)環(huán)境。 基于Docker快速搭建Web服務(wù) 根據(jù)自定義配置文件快速搭建Web環(huán)境。 目錄 此項目能做什么 GItHub地址、視頻教程 包含軟件 項目目錄結(jié)構(gòu) 快速運行KFKDock 運行PHP服務(wù) 運行L...
摘要:本文就介紹如何使用搭建本地環(huán)境。講座介紹是現(xiàn)在火熱的一個容器技術(shù),作為開發(fā)人員有必要掌握它的使用,無論你是用來搭建本地環(huán)境,還是部署應(yīng)用。 (原文地址:https://blog.tanteng.me/2017/...) Laravel 官方提供 Homestead 和 Valet 作為本地開發(fā)環(huán)境,Homestead 是一個官方預封裝的 Vagrant Box,也就是一個虛擬機,但是跟...
閱讀 2449·2021-10-08 10:17
閱讀 1824·2021-09-06 15:02
閱讀 2539·2019-08-29 17:30
閱讀 2663·2019-08-29 13:24
閱讀 1522·2019-08-29 11:12
閱讀 3337·2019-08-28 17:52
閱讀 666·2019-08-26 11:30
閱讀 3576·2019-08-26 11:01