随手记录第十一话

编程入门 行业动态 更新时间:2024-10-08 22:11:14

随手记录第十一话

随手记录第十一话

啥也不想说了,项目是半路接过来,帮接入我们服务的。

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

非学无以广才,非志无以成学。

更多推荐

随手记录第十一话

本文发布于:2023-12-07 15:54:56,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1671601.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!