随手记录第十一话
啥也不想说了,项目是半路接过来,帮接入我们服务的。
1.版本和依赖问题
多版本,Mac是默认带有php的,但是版本是个问题,可以用如下指令来选择当前的版本
brew unlink php && brew link php //默认的版本
brew unlink php && brew link shivammathur/php/php@7.4
在项目中,尤其要特别注意PHP的版本和项目实际运行的版本
~/apple/java-work/mime/mimo-api main +4 !1 > php -v node system rb 2.7.6 16:31:11
PHP 7.4.33 (cli) (built: Jul 13 2023 19:26:04) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologieswith Zend OPcache v7.4.33, Copyright (c), by Zend Technologies
框架用的是yii2,我找的文档地址是这个。
搭建一切正常,需要安装php-fmp来搭配nginx来访问到服务。
如果是纯页面访问,则直接php yii serve
来启动服务
下载依赖
composer install
拿到手怎么都下载不了MongoDB的依赖,只能先排除下载
composer install --ignore-platform-req=ext-mongodb
2. 一把是通过这种方式请求,fmp和nginx
在安装php的时候勾选php-fmp即可,也可单独安装。
首先需要启动php-fmp,它的配置文件的路径(我电脑上)/usr/local/etc/php/8.2/php-fpm.d/www.conf
; The address on which to accept FastCGI requests.
; Valid syntaxes are:
; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on
; a specific port;
; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
; a specific port;
; 'port' - to listen on a TCP socket to all addresses
; (IPv6 and IPv4-mapped) on a specific port;
; '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = 127.0.0.1:9000
默认占用9000端口,大概流程就是请求接口到nginx(nginx支持的路径方式),在转发到9000端口也就是fmp服务中,变为适合PHP路由请求的方式。以此来实现接口调用。
启动服务,先启动php-fmp,在启动nginx
php-fmp
需要注意的是php-fmp找php文件的默认路径为/www,所有需要和nginx下的目录对应上
docker内nginx配置
server {listen 80;server_name localhost;#root /usr/share/nginx/html;location / {client_max_body_size 10m;add_header "Access-Control-Allow-Origin" "*";index index.php index.html index.htm default.htm;if (!-e $request_filename){#专门处理Yii2 rewriterewrite ^/(.*) /index.php?r=$1 last;}}location ~ \.php$ {include fastcgi_params;#fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # 使用 PHP-FPM 监听的 socketfastcgi_pass 192.168.168.199:9000;fastcgi_index index.php;#这个目录要指定到fpm下面的对应入口fastcgi_param SCRIPT_FILENAME /www/php-apii/web/$fastcgi_script_name;}
}
3.docker部署
每次启动php-fmp都需要杀掉在重新启动,找了找也有docker支持的。
3.1 php-fmp docker部署
php-fmp服务的yml文件
version: '3.7'
services:php01:image: php:7.4-fpmcontainer_name: php01restart: alwaysports:- "9000:9000"environment:- TZ=Asia/Shanghaivolumes:- /Users/admin/apple/java-work/php-api:/www/php-api- /Users/admin/apple/java-work/php-admin:/www/php-adminnetworks:- my-net
networks:my-net:external: true
相当于把php-api、php-admin
都部署到了php-fmp服务中了,路径在/www
下
3.2 容器内安装插件
进入到容器内部,或者docker exec php01 /bin/bash -c
加上下面内容
mysql等直接可以使用封装好的脚本docker-php-ext-install
安装的插件
docker-php-ext-install pdo_mysql
docker-php-ext-install bcmath
docker-php-ext-install sockets
redis
pecl install -o -f redis && rm -rf /tmp/pear && docker-php-ext-enable redis
mongodb
pecl install -o -f mongodb && rm -rf /tmp/pear && docker-php-ext-enable mongodb
#查看mongodb信息
php --ri mongodb
这里需要注意,mongodb在使用某些情况调用方法用到MongoDB时会需要打开ssl,还需要安装ssl依赖
#打开mongodb链接 ssl
apt-get update && \apt-get install -y libcurl4-openssl-dev pkg-config libssl-dev
如果项目中用到了本地缓存apcu,也需要安装查插件
pecl install -o -f apcu && rm -rf /tmp/pear && docker-php-ext-enable apcu
3.3 命令指南
#配置文件
php --ini /usr/local/etc/php/7.4/php.ini
#扩展目录 /usr/local/lib/php/extensions/no-debug-non-zts-20190902
php-config --extension-dir
#万能指令 找不到目录的时候用,只要是在能直接执行的都能找到
which php
3.4 nginx容器
配置文件在上面已经贴过了,这里就只贴yml了
version: '2.11'
services:nginx01:image: nginxcontainer_name: nginx01restart: alwaysports:- "80:80"environment:- TZ=Asia/Shanghaivolumes:- ./nginx.conf:/etc/nginx/nginx.conf- ./logs:/var/log/nginxnetworks:- my-net #自己配置的网卡
networks:my-net:external: true
关于my-net,自定义的网卡,在nginx中的配置文件转发到php-fmp就可以直接填php01:9000
关于php中的定时任务,我这里推荐用操作系统的定时任务来实现,例如在liunx上
#宿主机
#查看定时任务
crontab -l
#编辑定时任务
crontab -e
#每分钟一次
* * * * * docker exec mimo-php /bin/bash -c "cd /www/-api/task && ./php_task.sh"
部署完了做接口请求就可以变成这样了
#yii服务或者apache的模式访问
http://localhost:82/index.php?r=/site/test?name=12345
#使用了nginx+php-fmp的模式下访问
http://localhost:82/site/test?name=12345
其他里面的语法已经方法和路由的定义,自行百度和看API吧,如果会JAVA这个也不是很难。
以上就是本文的全部内容了!
上一篇:随手记录第十话 – 升级SpringBoot3.0 + JDK17的踩坑记录
下一篇:随手记录第十二话 – xxx
非学无以广才,非志无以成学。
更多推荐
随手记录第十一话
发布评论