场景介绍:由于我的一个im应用经常给客户部署,该应用涉及到多个服务(redis、mysql、mongo、nginx),一般都是在宝塔进行部署,但是各种问题层出不穷,所以萌生了使用docker compose制作一个一键部署的脚本,其中nginx和php-fpm不在同一台服务器有坑,这里记录,我这里使用临时的php-fpm + nginx容器来演示两个服务不在同一个服务器上时如何配置,没有涉及到其他的服务(redis、mysql、mongo)同时也介绍了如果在同一台服务器时如何处理。
如果需要两个容器进行通信,那么必须要让他们在同一个网络中。
docker network create m1
docker run -it --rm -p 80:80 --network m1 nginx
docker run -it --rm -p 9000:9000 --network m1 alpine:3.14
由于没有配置name,所以我这里需要查看下配置,用ip来解析,使用docker compose可以通过container_name配置容器名称。docker inspect network m1

主要看containers里面的两个容器信息的ip,对应到下面的docker,这里有一个问题,如果容器重启的话,ip有可能会变动,所以建议使用container_name来进行后面的ip配置(就是用container_name来代理后面的ip,本机可以通过ping container_name来测试是否连通,或者看/etc/hosts文件)。
如果nginx和php-fpm在同一台服务器这里是不用修改的。
apk <span class="token function">add</span> php php-fpm <span class="token function">vi</span> /etc/php7/php-fpm.d/www.conf 主要修改两处 <span class="token assign-left variable">listen</span><span class="token operator">=</span><span class="token number">0.0</span>.0.0:9000 listen.allowed_clients <span class="token operator">=</span> <span class="token number">172.20</span>.0.3apk <span class="token function">add</span> php php-fpm <span class="token function">vi</span> /etc/php7/php-fpm.d/www.conf 主要修改两处 <span class="token assign-left variable">listen</span><span class="token operator">=</span><span class="token number">0.0</span>.0.0:9000 listen.allowed_clients <span class="token operator">=</span> <span class="token number">172.20</span>.0.3apk add php php-fpm vi /etc/php7/php-fpm.d/www.conf 主要修改两处 listen=0.0.0.0:9000 listen.allowed_clients = 172.20.0.3
添加php文件
mkdir -p /usr/share/nginx/html && echo "<php? phpinfo();"
注意这是在php-fpm那台服务器,如果实际部署,我们的文件是需要挂在到这里。记得修改后要启动或重启php-fpm,
php-fpm7
,alpine里面这个命令有点怪异。
apk update -y apk <span class="token function">add</span> <span class="token function">vim</span> <span class="token function">vi</span> /etc/nginx/conf.d/default.confapk update -y apk <span class="token function">add</span> <span class="token function">vim</span> <span class="token function">vi</span> /etc/nginx/conf.d/default.confapk update -y apk add vim vi /etc/nginx/conf.d/default.conf
完整配置
root@67cef1eb971c:/usr/share/nginx/html server <span class="token punctuation">{</span> listen <span class="token number">80</span><span class="token punctuation">;</span> listen <span class="token punctuation">[</span>::<span class="token punctuation">]</span>:80<span class="token punctuation">;</span> server_name localhost<span class="token punctuation">;</span> location / <span class="token punctuation">{</span> root /usr/share/nginx/html<span class="token punctuation">;</span> index index.html index.htm<span class="token punctuation">;</span> <span class="token punctuation">}</span> error_page <span class="token number">500</span> <span class="token number">502</span> <span class="token number">503</span> <span class="token number">504</span> /50x.html<span class="token punctuation">;</span> location <span class="token operator">=</span> /50x.html <span class="token punctuation">{</span> root /usr/share/nginx/html<span class="token punctuation">;</span> <span class="token punctuation">}</span> location ~ <span class="token punctuation">\</span>.php$ <span class="token punctuation">{</span> root /usr/share/nginx/html<span class="token punctuation">;</span> fastcgi_pass <span class="token number">172.20</span>.0.2:9000<span class="token punctuation">;</span> fastcgi_index index.php<span class="token punctuation">;</span> fastcgi_param SCRIPT_FILENAME <span class="token variable">$document_root</span><span class="token variable">$fastcgi_script_name</span><span class="token punctuation">;</span> include fastcgi_params<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span>root@67cef1eb971c:/usr/share/nginx/html server <span class="token punctuation">{</span> listen <span class="token number">80</span><span class="token punctuation">;</span> listen <span class="token punctuation">[</span>::<span class="token punctuation">]</span>:80<span class="token punctuation">;</span> server_name localhost<span class="token punctuation">;</span> location / <span class="token punctuation">{</span> root /usr/share/nginx/html<span class="token punctuation">;</span> index index.html index.htm<span class="token punctuation">;</span> <span class="token punctuation">}</span> error_page <span class="token number">500</span> <span class="token number">502</span> <span class="token number">503</span> <span class="token number">504</span> /50x.html<span class="token punctuation">;</span> location <span class="token operator">=</span> /50x.html <span class="token punctuation">{</span> root /usr/share/nginx/html<span class="token punctuation">;</span> <span class="token punctuation">}</span> location ~ <span class="token punctuation">\</span>.php$ <span class="token punctuation">{</span> root /usr/share/nginx/html<span class="token punctuation">;</span> fastcgi_pass <span class="token number">172.20</span>.0.2:9000<span class="token punctuation">;</span> fastcgi_index index.php<span class="token punctuation">;</span> fastcgi_param SCRIPT_FILENAME <span class="token variable">$document_root</span><span class="token variable">$fastcgi_script_name</span><span class="token punctuation">;</span> include fastcgi_params<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span>root@67cef1eb971c:/usr/share/nginx/html server { listen 80; listen [::]:80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { root /usr/share/nginx/html; fastcgi_pass 172.20.0.2:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
修改后记得重启或者重新加载nginx:nginx -t && nginx -s reloat
apk <span class="token function">add</span> <span class="token function">composer</span> <span class="token builtin class-name">cd</span> /etc/share/nginx/html <span class="token function">composer</span> create-project topthink/think<span class="token operator">=</span><span class="token number">5.0</span>.* <span class="token punctuation">..</span>/html --prefer-distapk <span class="token function">add</span> <span class="token function">composer</span> <span class="token builtin class-name">cd</span> /etc/share/nginx/html <span class="token function">composer</span> create-project topthink/think<span class="token operator">=</span><span class="token number">5.0</span>.* <span class="token punctuation">..</span>/html --prefer-distapk add composer cd /etc/share/nginx/html composer create-project topthink/think=5.0.* ../html --prefer-dist
https://blog.csdn.net/weixin_34551601/article/details/115242284
https://www.cnblogs.com/fansik/p/6635813.html
第一个文档讲了fastcgi_pass参数socket和tcp连接的不同,第二个介绍了nginx和php-fpm不在同一台服务器时的配置。
声明:本站为非盈利性赞助网站,本站所有数据均来自互联网,版权属原著所有,如有需要请联系作者或购买正版。如有侵权,敬请来信联系我们,我们立即删除。
原文链接:https://m.zsyts.cn/6244.html