>  기사  >  PHP 프레임워크  >  TP 프로젝트를 운영하는 Laradocke 소개

TP 프로젝트를 운영하는 Laradocke 소개

藏色散人
藏色散人앞으로
2020-10-13 10:18:112658검색

프레임워크 튜토리얼 칼럼에서 소개한 내용입니다. 필요한 친구들에게 도움이 되었으면 좋겠습니다!

TP 프로젝트를 운영하는 Laradocke 소개

1. laradock이 처음 실행되었을 때 빌드 과정이 매우 느렸습니다

풀링된 컨테이너의 이미지는 기본적으로 해외이므로 docker-compose 컨테이너를 구성하기 전에 다음 텍스트를 찾아보세요. .env 파일에서 CHANGE_SOURCE=``false

그런 다음 false를 true로 변경하고 다음 텍스트를 찾으세요

#UBUNTU_SOURCE=aliyunCHANGE_SOURCE=``false

然后将false改为true,并查找以下文字

#UBUNTU_SOURCE=aliyun

把前面的 # 去掉,即去掉注释,把默认在国外的镜像源改为国内速度快的aliyun的镜像源

然后把workspace的时区,改为中国时区,查找以下文字

WORKSPACE_TIMEZONE=UTC

把UTC改为PRC

然后执行命令

docker-compose up -d nginx mariadb

自己选择需要启动的容器

亲自对比过build的时间,在20M带宽下,不更改镜像源的话快则一小时,慢则一天,更改过后,仅需10min

二、laradock在启动容器 build workspace 的过程中报错

若出现相关文字 “raw.githubusercontent.com”,则在本地hosts绑定域名到ip

以linux为例

vim ``/etc/hosts

在文件中输入 “199.232.28.133 raw.githubusercontent.com” 即可

三、composer install 速度慢

安装完laradock在worksapce容器中从第三方托管仓库用git拉取tp5框架下来,然后安装框架依赖,这个时候composer install很慢,需要更换国内源,执行下面命令

composer config -g repo.packagist composer https:``//packagist``.phpcomposer.com

四、composer忽略版本号安装

composer install 过程中遇到 Your requirements could not be resolved to an installable set of packages. 错误提示,则可以忽略版本号安装,执行下面命令

composer ``install --ignore-platform-reqs

五、composer安装tp5的数据库迁移工具

tp5.0的迁移工具是 1.,tp5.1是 2.,若不指定版本号,则默认安装最新的迁移工具,执行下面命令

composer require topthink``/think-migration``=1.*

六、laradock中tp5配置数据库连接时,host填写容器名字

我用的mariadb这个容器,所以如下配置

'host'=>'mariadb'

七、tp5给runtime全部权限

hmod -r runtime 777

八、tp5捕获mysql的抛出的异常

在catch的参数Exception前面加个反斜线,表示从最底层的Exception开始捕获

catch``(Exception)

九、做图片上传接口时,mkdir报错 no permission

为了引用图片方便,我把图片存储目录指定为 public/uploads ,但是报错了,可以通过给public全部权限解决

chmod -r public 777

十、后端接口的时候权限验证

oauth2时一个非常好的授权机制,php有一个很好的库 https://github.com/thephpleague/oauth2-server, 但是很无奈,不像laravel有passport,也支持Drupal,cakephp等框架

使用Json-web-token也蛮好的 https://github.com/lcobucci/jwt

十一、跨域处理

在application目录下的tags.php中的添加应用初始化时执行的文件,例如我把跨域放在 applicationapi/behavior/CORS.php 文件中,在应用初始化过程中就发出header

// 应用初始化``'app_init'     => [``'app\api\behavior\CORS'``],

#을 제거하세요. 앞에, 즉 제거하세요 참고, 기본 해외 미러 소스를 국내 빠른 aliyun 미러 소스로 변경하세요

그런 다음 작업 공간의 시간대를 중국 시간대로 변경하고 다음 텍스트를 찾으세요 🎜🎜WORKSPACE_TIMEZONE =UTC🎜🎜 UTC를 PRC로 변경🎜🎜그런 다음🎜🎜docker-compose up -d nginx mariadb🎜🎜시작에 필요한 컨테이너를 선택하세요🎜🎜개인적으로 비교했습니다 빌드 시간은 20M 대역폭 미만에서는 변경되지 않습니다. 미러 소스는 최대 1시간까지 빠르거나 최대 1일까지 느려질 수 있습니다. 변경 후 10분만 소요됩니다🎜🎜🎜🎜🎜 2. laradock에서 오류를 보고합니다. 컨테이너 빌드 작업 공간을 시작하는 과정🎜🎜🎜해당 텍스트 "raw.githubusercontent.com"이 나타나면 로컬 호스트의 IP에 도메인 이름을 바인딩합니다🎜🎜Linux를 예로 들어🎜🎜vim``/ etc/hosts🎜🎜파일에 "199.232.28.133 raw.githubusercontent.com"을 입력하세요🎜 🎜🎜🎜🎜3. Composer 설치가 느립니다🎜🎜🎜laradock을 설치한 후 git을 사용하여 tp5 프레임워크를 작업공간 컨테이너에 타사 호스팅 웨어하우스를 설치한 후 프레임워크 종속성을 설치합니다. 이때 작곡가 설치가 매우 느리므로 다음 명령을 실행해야 합니다.🎜🎜composer config -g repo. packagist Composer https:``//packagist``.phpcomposer.com🎜🎜🎜🎜🎜4. Composer는 버전 번호 설치를 무시합니다🎜🎜🎜composer install 요구 사항을 설치 가능한 세트로 해결할 수 없습니다. 오류 메시지가 나타나면 설치 버전 번호를 무시하고 🎜🎜composer ``install --ignore- platform-reqs🎜🎜 명령을 실행하면 됩니다. 🎜🎜🎜5. Composer는 tp5 데이터베이스 마이그레이션 도구를 설치합니다🎜🎜🎜 tp5.0의 마이그레이션 도구는 1.이고 tp5.1의 경우 2.🎜입니다. 버전 번호가 지정되지 않은 경우 최신 마이그레이션입니다. 도구는 기본적으로 설치되어 있으므로 다음 명령을 실행하십시오. 🎜🎜composer require topthink``/think-migration``=1.*🎜🎜🎜🎜🎜 6. laradock의 tp5에서 데이터베이스 연결을 구성하는 경우 , 호스트는 컨테이너 이름을 입력합니다🎜🎜🎜저는 mariadb 컨테이너를 사용하므로 다음과 같이 구성합니다🎜🎜'host'=>'mariadb'🎜🎜🎜🎜🎜 7. tp5는 모든 권한을 부여합니다 🎜🎜 🎜hmod -r Runtime 777🎜🎜🎜🎜🎜8. TP5는 mysql에서 발생한 예외를 캡처합니다🎜🎜🎜 catch 매개변수 앞에 백슬래시를 추가합니다. 가장 낮은 것부터 시작함을 나타내는 예외 예외 캡처🎜🎜catch``(예외)🎜🎜🎜🎜🎜9. 이미지 업로드 인터페이스를 수행할 때 mkdir에서 권한 없음 오류를 보고했습니다.🎜🎜🎜이미지 참조를 용이하게 하기 위해 이미지 저장 디렉터리를 public/uploads로 지정했지만 오류가 보고되면 공개 전체 권한을 부여하여 해결할 수 있습니다🎜🎜chmod -r public 777🎜🎜🎜🎜🎜10. 백엔드 인터페이스 중 권한 확인🎜🎜🎜 oauth2는 매우 좋은 인증 메커니즘입니다. PHP는 좋은 라이브러리(https://github.com/thephpleague/oauth2-server)를 가지고 있지만 Passport가 있는 laravel과 달리 Drupal도 지원합니다. , cakephp 및 기타 프레임워크🎜🎜Json-web-token https://github.com/lcobucci/jwt🎜🎜🎜🎜🎜을 사용하는 것도 좋습니다. 11. 크로스 도메인 처리🎜🎜🎜응용 프로그램의 Tags.php에서 디렉터리에 애플리케이션이 초기화될 때 실행되는 파일을 추가합니다. 예를 들어 저는 applicationapi/behavior/에 크로스 도메인을 넣었습니다. CORS.php 파일에는 헤더🎜🎜// 애플리케이션 초기화``'app_init ' => [``'app\api\behavior\CORS' ``], 🎜🎜교차 도메인 파일🎜
8e5f4823a1a069d93bb8997d8962fea6isOptions()) {
            exit();
        }
    }}

12.git push/pull에는 신원 확인이 필요합니다. 사용자 이름과 비밀번호를 여러 번 입력하세요

Linux 환경에서는 웨어하우스 디렉터리에서 실행하세요

git config --global credential.helper store<code>git config --global credential.helper store

十三、git push 卡住

设置发包无边界,http的请求换缓冲区设置得大一些

git config --global sendpack.sideband false git config --global http.postBuffer 524288000

十四、nginx不支持tp5的pathinfo

更改项目对应的 .conf 文件配置

<?php
namespace app\api\behavior; use think\Response; class CORS
{ public function appInit(&$params)
    { header(&#39;Access-Control-Allow-Origin: *&#39;);
    header("Access-Control-Allow-Headers: token,Origin, X-Requested-With, Content-Type, Accept");
    header("Access-Control-Allow-Methods:GET, POST"); 
        if (request()->isOptions()) {
            exit();
        }
    }
}

更改前 location ~ .php$ {

 location ~ \.php { 
    try_files $uri /index.php =404;
    fastcgi_pass php-upstream;
    fastcgi_index index.php;
    fastcgi_buffers 16 16k;
    fastcgi_buffer_size 32k;
    # 添加部分↓↓↓↓
    # Set var PATH_INFO
    fastcgi_split_path_info ^(.+\.php)(.*)$;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    #  添加部分↑↑↑↑
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;   
    #fixes timeouts
    fastcgi_read_timeout 600;
    include fastcgi_params;}

具体选项待我找时间学习一下

十四、Docker配置国内源

sudo tee /etc/docker/daemon.json <<-'EOF'

vim /etc/docker/daemon.json

输入以下内容,地址可以自己额外选择

{
  "registry-mirrors": ["https://uxk0ognt.mirror.aliyuncs.com"]
  }

#然后执行下面的指令

systemctl daemon-reload
systemctl restart docker

13. git push 멈춤

전송 패키지를 경계선 없이 설정하고, HTTP 요청 버퍼를 더 크게 설정합니다.

git config --global sendpack.sideband false git config - -global http.postBuffer 524288000

🎜🎜🎜14. nginx는 tp5 pathinfo를 지원하지 않습니다.🎜🎜🎜프로젝트에 해당하는 .conf 파일 구성을 변경하세요🎜rrreee🎜🎜이전 위치를 변경하세요 ~ .php$ {🎜🎜rrreee 🎜구체적인 옵션에 대해 알아보는 시간을 갖도록 하겠습니다🎜🎜🎜🎜🎜14.Docker 구성 국내 소스🎜🎜🎜sudo tee /etc/docker/daemon.json <<-'EOF'🎜 🎜vim /etc/docker/daemon.json🎜🎜🎜🎜🎜다음 내용을 입력하세요. 주소는 직접 선택할 수 있습니다🎜🎜rrreee🎜#그런 다음 다음 명령을 실행하세요🎜🎜 systemctl daemon-reload
systemctl restart docker🎜🎜🎜🎜🎜Remarks🎜🎜🎜우리 모두 알고 있듯이 github에서 복제하는 것은 항상 느립니다. Code Cloud를 사용하여 자주 사용하는 Warehouse를 미리 자신에게 가져오고, 필요할 때 Code Cloud를 통해 복제할 수 있습니다.

위 내용은 TP 프로젝트를 운영하는 Laradocke 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 learnku.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제