php qcloud sdk weapp_利用docker将wafer2-quickstart-php部署到自己的云服务器

前言

实验环境为: 阿里云/腾讯云服务器 Ubuntu 16.04 x64系统.

使用普通用户操作.

阿里云的Ubuntu系统默认是root用户, 可以新建一个名为ubuntu的普通用户哦.

需要注册一个域名.

安装docker

sudo apt-get update

sudo apt-get install apt-transport-https ca-certificates

sudo apt-key adv \

--keyserver hkp://ha.pool.sks-keyservers.net:80 \

--recv-keys 58118E89F3A912897C070ADBF76221572C52609D

echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list

sudo apt-get update

sudo apt-get upgrade

# apt-cache policy docker-engine

sudo apt-get install -y docker-engine

sudo apt-get clean

sudo usermod -aG docker $(whoami) # 将当前用户加入到docker用户组, 这样以后使用docker就不需要root权限了.

sudo systemctl daemon-reload

sudo systemctl restart docker

# sudo reboot

配置docker镜像加速

腾讯云docker镜像加速

编辑 /etc/systemd/system/multi-user.target.wants/docker.service

在ExecStart=/usr/bin/dockerd -H fd:// 这行后面加上如下部分.

ExecStart=/usr/bin/dockerd -H fd:// --registry-mirror=https://mirror.ccs.tencentyun.com

sudo systemctl daemon-reload

sudo systemctl restart docker

阿里云docker镜像加速

sudo tee /etc/docker/daemon.json <

{

"registry-mirrors": ["https://系统分配的前缀.mirror.aliyuncs.com"]

}

EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

设置域名解析记录

在阿里云/腾讯云控制台添加一条域名解析记录. 将下面的zhoujin7.com换成你自己的域名.

wx.zhoujin7.com

6c3d0bc48bea0045d968934d13a7fb99.png

下载容器相关的配置文件

cd ~

mkdir -p ~/development/docker

mkdir -p ~/development/phpdev

git clone https://github.com/zhoujin7/docker-auto-build.git

cp docker-auto-build/lamp ~/development/docker/wx -R

下载wafer2-quickstart-php并进行相关配置

下载服务端代码

cd ~

git clone https://github.com/tencentyun/wafer2-quickstart-php.git

cp wafer2-quickstart-php/server ~/development/phpdev/wx -R

配置数据库密码

编辑~/development/phpdev/wx/config.php

将下面的yourPassword123456换成你想设置的数据库密码

'mysql' => [

'host' => '172.28.0.3',

'port' => 3306,

'user' => 'root',

'db' => 'cauth',

'pass' => 'yourPassword123456',

'char' => 'utf8mb4'

],

编辑~/development/phpdev/wx/application/config/database.php

将下面的yourPassword123456换成你的数据库密码, 和上面设置的保持一致.

$db['default'] = array(

'dsn'=> '',

'hostname' => '172.28.0.3',

'username' => 'root',

'password' => 'yourPassword123456',

'database' => 'cauth',

'dbdriver' => 'mysqli',

'dbprefix' => '',

'pconnect' => FALSE,

'db_debug' => (ENVIRONMENT !== 'production'),

'cache_on' => FALSE,

'cachedir' => '',

'char_set' => 'utf8',

'dbcollat' => 'utf8mb4_unicode_ci',

'swap_pre' => '',

'encrypt' => FALSE,

'compress' => FALSE,

'stricton' => FALSE,

'failover' => array(),

'save_queries' => TRUE

);

设置SDK配置文件

创建文件~/development/docker/wx/sdk.config.json

将下面的wx.zhoujin7.com换成你的域名, 和上面设置域名解析记录的域名一致.

登录腾讯云控制台, 打开https://console.cloud.tencent.com/cam/capi, 新建密钥.

a06e7f3bc25e8f5619073d8e15e3bd9c.png

将下面yourAPPID, yourSecretId和yourSecretKey换成你的APPID, SecretId和SecretKey.

tee ~/development/docker/wx/sdk.config.json <

{

"serverHost": "wx.zhoujin7.com",

"qcloudAppId": yourAPPID,

"qcloudSecretId": "yourSecretId",

"qcloudSecretKey": "yourSecretKey"

}

EOF

创建docker容器

创建自定义网络用于固定容器IP

docker network create --subnet=172.28.0.0/16 mynetwork

创建容器时, 加上--network mynetwork --ip 172.28.0.x --dns 114.114.114.114 (x为数字)

创建nginx-proxy容器

docker run -d -p 80:80 -p 443:443 \

--name nginx-proxy \

--network mynetwork --ip 172.28.0.2 --dns 114.114.114.114 \

-e TZ=Asia/Shanghai \

-v /var/run/docker.sock:/tmp/docker.sock:ro \

-v /usr/share/nginx/html \

-v /home/ubuntu/development/docker/nginx/certs:/etc/nginx/certs \

-v /home/ubuntu/development/docker/nginx/conf.d:/etc/nginx/conf.d \

--restart=always \

jwilder/nginx-proxy

创建letsencrypt-nginx-proxy-companion容器

docker run -d \

--name nginx-proxy-letsencrypt \

-v /home/ubuntu/development/docker/nginx/certs:/etc/nginx/certs \

-v /var/run/docker.sock:/var/run/docker.sock:ro \

--volumes-from nginx-proxy \

--restart=always \

jrcs/letsencrypt-nginx-proxy-companion

创建mysql容器

将下面的yourPassword123456换成你的数据库密码, 和上面设置过的保持一致.

docker run -d \

--name mysql \

--network mynetwork --ip 172.28.0.3 --dns 114.114.114.114 \

-e TZ=Asia/Shanghai \

-e MYSQL_ROOT_PASSWORD=password \

-e MYSQL_ROOT_HOST=172.28.0.% \

-v /home/ubuntu/development/docker/mysql57:/var/lib/mysql \

--restart=always \

mysql/mysql-server:5.7

创建wx微信小程序后端运行环境容器

将下面的wx.zhoujin7.com换成你的域名, 和上面设置域名解析记录的域名一致.

将下面的yourEmail@qq.com换成你的个人邮箱.

docker run -d \

--name wx \

-e "VIRTUAL_HOST=wx.zhoujin7.com" \

-e "LETSENCRYPT_HOST=wx.zhoujin7.com" \

-e "LETSENCRYPT_EMAIL=yourEmail@qq.com" \

--restart=always \

--network mynetwork --ip 172.28.0.5 --dns 114.114.114.114 \

-v /home/ubuntu/development/phpdev/wx:/var/www/html \

-v /home/ubuntu/development/docker/wx/php.ini:/etc/php/7.0/apache2/php.ini:rw \

-v /home/ubuntu/development/docker/wx/apache2/000-default.conf:/etc/apache2/sites-enabled/000-default.conf:rw \

-v /home/ubuntu/development/docker/wx/sdk.config.json:/data/release/sdk.config.json:rw \

registry.cn-shenzhen.aliyuncs.com/jin7/lamp

将cAuth.sql导入数据库

进入数据库容器mysql控制台.

将下面的yourPassword123456换成你的数据库密码, 和上面设置过的保持一致.

docker exec -it mysql bash -c 'mysql -uroot -pyourPassword123456'

执行下面的sql语句.

CREATE DATABASE `cauth` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;

use cauth;

SET NAMES utf8;

SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------

-- Table structure for `csessioninfo`

-- ----------------------------

DROP TABLE IF EXISTS `csessioninfo`;

CREATE TABLE `csessioninfo` (

`open_id` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,

`uuid` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,

`skey` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,

`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

`last_visit_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

`session_key` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,

`user_info` varchar(2048) COLLATE utf8mb4_unicode_ci NOT NULL,

PRIMARY KEY (`open_id`),

KEY `openid` (`open_id`) USING BTREE,

KEY `skey` (`skey`) USING BTREE

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会话管理用户信息';

SET FOREIGN_KEY_CHECKS = 1;

注意在Windows上, MySQL的数据库名、表名、字段名大小写不敏感, 但在Linux上则大小写敏感.

项目可能同时在Windows和Linux环境运行, 为了避免由于大小写造成的麻烦, 这里将原来的数据库名cAuth和数据表名cSessionInfo都改成了小写.

同时需要修改代码文件, 将里面的cAuth替换为cauth, cSessionInfo替换为csessioninfo

需要修改的文件:

~/development/phpdev/wx/vendor/qcloud/weapp-sdk/lib/Model/User.php

在微信公众平台中设置服务器域名

将下面的wx.zhoujin7.com替换成你的域名.

3e6d26234ac4005f2a2f37b0ec656572.png

在微信开发者工具中设置小程序的服务器地址

e5433fdd76757a37a2b680312c8b115f.png

登录测试

5588ecfb53324c6e603a8b28f90a85c4.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值