Heim >PHP-Framework >Denken Sie an PHP >Über Laradocke, der das TP-Projekt betreibt
-Frameworks zum Ausführen des TP-Projekts über Laradocke vorgestellt. Ich hoffe, es wird für Freunde hilfreich sein, die es benötigen! 1. Als Laradock zum ersten Mal gestartet wurde, war der Build-Prozess sehr langsam in der .env-Datei CHANGE_SOURCE=``false
Dann ändern Sie false in true und suchen Sie nach dem folgenden Text
#UBUNTU_SOURCE=aliyun
Ändern Sie dann die Zeitzone des Arbeitsbereichs in die chinesische Zeitzone und suchen Sie nach dem folgenden Text WORKSPACE_TIMEZONE =UTC
CHANGE_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'``],
docker-compose up -d nginx mariadb
Wählen Sie den Container aus, den Sie starten müssen
🎜Ich habe das persönlich verglichen Build-Zeit, unter 20 MB Bandbreite ändert sich nicht. Die Spiegelquelle kann bis zu einer Stunde oder bis zu einem Tag langsam sein. Nach der Änderung dauert es nur 10 Minuten. 2. Laradock meldet einen Fehler während Prozess zum Starten des Container-Build-Arbeitsbereichs🎜🎜🎜Wenn der relevante Text „raw.githubusercontent.com“ angezeigt wird, dann binden Sie den Domänennamen an die IP in lokalen Hosts🎜🎜Nehmen Sie Linux als Beispiel🎜🎜vim ``/ etc/hosts
🎜🎜Geben Sie „199.232.28.133 raw.githubusercontent.com“ in die Datei ein Hosting-Warehouse eines Drittanbieters im Workspace-Container und installieren Sie dann die Framework-Abhängigkeiten. Zu diesem Zeitpunkt ist die Composer-Installation sehr langsam und inländische Quellen müssen ersetzt werden. Führen Sie den folgenden Befehl aus: composer config -g repo. packagist Composer https:``//packagist``.phpcomposer.com
🎜🎜🎜🎜🎜4 Wenn Sie während des Vorgangs eine Fehlermeldung zu den Paketen erhalten, können Sie die Versionsnummer für die Installation ignorieren und den folgenden Befehl ausführen: 🎜🎜composer ``install
--ignore- platform-reqs
🎜🎜 🎜🎜🎜5. Composer installiert das tp5-Datenbankmigrationstool🎜🎜🎜Das Migrationstool für tp5.0 ist 1. und für tp5.1 ist 2.🎜, wenn die Versionsnummer nicht angegeben ist, die neueste Migration Das Tool ist standardmäßig installiert. Führen Sie den folgenden Befehl aus: 🎜🎜composer require topthink``/think-migration``=1.*
🎜🎜🎜🎜🎜 6. Beim Konfigurieren der Datenbankverbindung in TP5 in Laradock , Host trägt den Containernamen ein🎜🎜🎜Ich verwende den Mariadb-Container, also konfiguriere ihn wie folgt🎜🎜'host'=>'mariadb'
🎜🎜🎜🎜🎜 7. tp5 gewährt volle Berechtigungen zur Laufzeit🎜🎜 🎜hmod -r runtime 777
🎜🎜🎜🎜🎜8. TP5 erfasst von MySQL ausgelöste Ausnahmen🎜🎜🎜Fügen Sie einen Backslash vor dem Catch-Parameter Exception hinzu, um anzuzeigen, dass mit dem niedrigsten Wert begonnen wird Ausnahmeerfassung🎜🎜catch``(Ausnahme)
🎜🎜🎜🎜🎜9 Beim Ausführen der Bild-Upload-Schnittstelle hat mkdir einen Fehler ohne Berechtigung gemeldet🎜🎜🎜Um die Referenzierung von Bildern zu erleichtern, Ich habe das Bildspeicherverzeichnis als „public/uploads“ angegeben, es wird jedoch ein Fehler gemeldet. Dieser kann behoben werden, indem während der Backend-Schnittstelle „public“ vollständige Berechtigungen erteilt werden ist ein sehr guter Autorisierungsmechanismus, PHP verfügt über einen sehr guten Autorisierungsmechanismus. Eine gute Bibliothek https://github.com/thephpleague/oauth2-server, aber im Gegensatz zu Laravel, das über Passport verfügt, unterstützt es auch Drupal und Cakephp und andere Frameworks🎜🎜Es ist auch gut, Json-web-token https://github.com/lcobucci/jwt zu verwenden🎜🎜🎜🎜🎜 11. Domänenübergreifende Verarbeitung🎜🎜🎜In tags.php im Anwendungsverzeichnis, Fügen Sie die Datei hinzu, die ausgeführt wird, wenn die Anwendung initialisiert wird. Zum Beispiel habe ich die domänenübergreifende Datei in applicationapi/behavior/ eingefügt. In der CORS.php-Datei ist der Header🎜🎜// Anwendungsinitialisierung``'app_init' <code>=> [``'app\api\behavior\CORS' ``],
🎜🎜Domainübergreifende Dateien🎜8e5f4823a1a069d93bb8997d8962fea6isOptions()) { exit(); } }}
12. Git Push/Pull erfordert Identitätsüberprüfung, geben Sie den Benutzernamen und das Passwort mehrmals ein
In der Linux-Umgebung im Warehouse-Verzeichnis ausführen
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('Access-Control-Allow-Origin: *'); 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 steckt fest
Stellen Sie das Sendepaket auf randlos ein und stellen Sie den HTTP-Anforderungspuffer auf einen größeren Wert eingit config --global sendpack.sideband false git config - -global http.postBuffer 524288000
sudo tee /etc/docker/daemon.json <<-'EOF'🎜 🎜vim /etc/docker/daemon.json
🎜🎜🎜🎜🎜Geben Sie den folgenden Inhalt ein, die Adresse kann selbst ausgewählt werden🎜🎜rrreee🎜#Führen Sie dann den folgenden Befehl aus🎜🎜 systemctl daemon-reload
systemctl restart docker
🎜🎜🎜🎜🎜Bemerkungen🎜🎜🎜Wie wir alle wissen, ist das Klonen von Github immer langsam. Sie können es wählen Verwenden Sie Code Cloud, um häufig verwendete Warehouses im Voraus in Ihren Code Cloud-Arbeitsbereich zu importieren. Sie können ihn bei Bedarf über die Code Cloud klonen
Das obige ist der detaillierte Inhalt vonÜber Laradocke, der das TP-Projekt betreibt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!