国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

在 Docker 中運行 Laravel 項目

luxixing / 3306人閱讀

摘要:本篇承接使用構(gòu)建環(huán)境,介紹如何在該文所用的容器中運行項目。接下來可以新建一個項目或是通過轉(zhuǎn)移項目。從上同步項目一般服務(wù)器中運行的項目都是在本地開發(fā)完成后同步上去的。生成文件文件含有項目所需的配置以及用于加密解密的隨機字符串。

本篇承接 使用 Docker 構(gòu)建 LNMP 環(huán)境,介紹如何在該文所用的容器中運行 Laravel 項目。主要步驟為:轉(zhuǎn)移 Laravel 項目到數(shù)據(jù)卷 => 配置數(shù)據(jù)庫 => 配置 Nginx => 配置 Laravel 的 .env 文件。

布置 Laravel 項目

由于我們將 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.sql
Nginx 虛擬主機配置

由于 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=remoteDB_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

相關(guān)文章

  • PHP開發(fā)環(huán)境03 - 使用KFKDock搭建PHP項目環(huán)境

    摘要:基于快速搭建服務(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...

    Zhuxy 評論0 收藏0
  • PHP開發(fā)環(huán)境03 - 使用KFKDock搭建PHP項目環(huán)境

    摘要:基于快速搭建服務(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...

    yagami 評論0 收藏0
  • 使用 Docker 搭建 Laravel 本地環(huán)境

    摘要:本文就介紹如何使用搭建本地環(huán)境。講座介紹是現(xiàn)在火熱的一個容器技術(shù),作為開發(fā)人員有必要掌握它的使用,無論你是用來搭建本地環(huán)境,還是部署應(yīng)用。 (原文地址:https://blog.tanteng.me/2017/...) Laravel 官方提供 Homestead 和 Valet 作為本地開發(fā)環(huán)境,Homestead 是一個官方預封裝的 Vagrant Box,也就是一個虛擬機,但是跟...

    StonePanda 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<