评论

微信云托管踩坑(续)

云托管和现有VPC的打通说明

写这个标题的时候,我已经构建包大约有40多次。构建成功的只有10来次。以下就是记录的踩坑内容,有一部分是云托管自身的,还有一部分是我自己瞎搞导致的

在写之前,先提一下,目前session无法处理,即重新构建后,session会丢失,所以如果要开放,请尽量使用无状态的方式,否则session没了很烦人,可以尝试用jwt或者类似token的方式先处理吧。

开始踩坑

1、官方的demo里面不含mysql,所以要编译带有mysql的php版本。php官方有现成的:php:fpm-alpine3.15,然而,这个也是不带pdo_mysql的,只有mysqlnd,所以自己在写Dockerfile的时候需要加上docker-php-ext-install pdo_mysql && docker-php-ext-enable php_mysql,

    问题就在这里。3.15/3.14,这两个命令都失败,会报没有权限,然而我明明是root,后来网上查了一下,好象就是alpine包的问题,降到3.13,可以编译,但随之而来的问题是,编译需要100多s,看了下,基本上在2分钟左右。

    然后参考网上的教程,在本地先构建好,然后将pdo_mysql导出来,复制到指定位置。于是我踩的大坑就来了。。。。。我按照教程step by step的完成了,结果上线后发现无法load,感觉很奇怪。折腾了将近1小时,才想起来,我默认构建的m1版本的,而线上是amd64,最后指定版本:FROM --platform=linux/amd64 php:fpm-alpine3.15,进行本地构建。

    再将so文件拷过去,发现还是有点小问题,比如,我在php.ini里加入了extension=pdo_mysql,但进系统一看,还是没有加载。用php -i|grep ini发现,这个fpm镜像,只能建一个ini文件,扔在/usr/local/etc/php/conf.d才OK

    于是照做。OK了

2、云托管里有一个MYSQL ,上一篇有提到,这个数据库怎么都无法删除,显示我不是管理员,于是我一想,我不是买了云数据库么,于是想着利用【对等网络】的功能,将这两个账号打通成内网,这样不就可以从内网直接连数据库了么?经过一翻折腾,发现还是不通。发了工单后,他们建议我不要PING(之前我是直接PING的),而是用telnet xxxx 3306进行测试。 经过测试,OK,能够打通,但也费了不少时间

    最开始的时候,是一直无法将数据库和VPC绑定在一个vpc网络里,后来发现,原来我的数据库从几年前创建好到现在一直是基础网络,也就是说是独立的,后面改成vpc网络才OK。这里一开始没注意,至少浪费半小时以上时间


3、既然这样能够打通,那我的轻量服务器和云数据库能打通吗?测试了好久,发现腾讯云有提供:云联网 功能,利用这个功能,将轻量服务器和云数据库采用VPC的方式打通了。

4、最后的问题就这样来了。。云托管能不能和轻量级打通呢???我不是走了云联网了么?也搞了【对等网络】,结果看了一下文档,只有出口的那个网络(即主VPC)和对等网络的对方才能直接互联,与VPC创建云联网的机器不能直接互联。。。这个就好纠结了。。。

   创建对等网络的VPC,我早就删除了。。。也就是说我已经无法让轻量服务器和云托管互通了。。。

   对等网络有两种:同账号对等、不同账号对等,在同地区是免费的。跨区要收费

----

经过一个周末的折腾,总算是解决了不少问题,虽然没有全部搞定,但还是比较成功。。。比较满足,周末没有虚度


点赞 0
收藏
评论

2 个评论

  • 串儿姐
    串儿姐
    2021-12-28

    你好,感谢你的细致体验,关于你文中提到的几个问题答复一下:

    1. 数据库注销问题:后台核实到你是小程序的开发者,并非管理员,因此无法操作注销数据库这类高危操作。请联系小程序的管理员。
    2. 官方有提供thinkphp的模板,涵盖数据库的操作,可以参考一下:https://github.com/WeixinCloud/wxcloudrun-thinkphp-nginx

    https://github.com/WeixinCloud/wxcloudrun-thinkphp-apache

    2021-12-28
    赞同 2
    回复 1
    • 膘叔
      膘叔
      2021-12-29
      感谢,数据库已经删除了。你这个我知道就是直接主动构建的。和我用的方法其实是差不太多。当然也可以考虑用你的方法。不用现成的fpm包。
      2021-12-29
      回复
  • magic-er
    magic-er
    2022-09-23

    你好,请问有带 pdo_mysql的Dockerfile的文件参考吗

    2022-09-23
    赞同
    回复 1
    • 膘叔
      膘叔
      2022-09-30
      1、官方的demo里面不含mysql,所以要编译带有mysql的php版本。php官方有现成的:php:fpm-alpine3.15,然而,这个也是不带pdo_mysql的,只有mysqlnd,所以自己在写Dockerfile的时候需要加上docker-php-ext-install pdo_mysql && docker-php-ext-enable php_mysql

      我是这么解决的。
      上面官方的两个例子是直接空系统安装pdo_mysql,大同小异
      2022-09-30
      回复
登录 后发表内容