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