部署SSO

准备工作

安装 apache,php,memcache

拉取代码

git clone http://git.dev.yoho.cn/web/sso.git

配置 Apache 的vhost

<VirtualHost *:80>
#    SSLEngine on
#    SSLCertificateFile /usr/local/apache-2.4.7/pki/tls/certs/ca.crt
#    SSLCertificateKeyFile /usr/local/apache-2.4.7/pki/tls/private/ca.key
    ServerAdmin root@localhost
    DocumentRoot "/Data/code/passport.yoho.cn/public/public"
    ServerName passport.yoho.cn
    ServerAlias ssoamnp1.yoho.cn
    CustomLog "/Data/logs/sso_http.log" common
    ErrorLog "logs/error_log"
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !^.*(\.css|\.js|\.gif|\.png|\.jpg|\.jpeg|\.xml|\.html|\.txt|1.html|YOHOBOYS.plist|YOHOGIRLS.plist|YH_Marketplace.plist)$
    RewriteRule ^/(.+)$ /index.php [L]
    <Directory />
    LimitRequestBody 10485760
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
    </Directory>
</VirtualHost>

如果是https,端口改成443,附加证书 DocumentRoot配置代码的public根目录

配置完成,重启Apache服务

修改代码的数据库配置和环境配置,memcache配置

/passport.yoho.cn/config/core/db.test.config.php

[mysql]
yh_uuc.username = xxxx
yh_uuc.password = xxx
yh_uuc.writers  = x.x.x.x:3306
yh_uuc.readers  = x.x.x.x:3306
yh_history.username = xxxx
yh_history.password = xxx
yh_history.writers  = x.x.x.x:3306
yh_history.readers  = x.x.x.x:3306

/passport.yoho.cn/config/core/cache.test.config.php

[memcache]
servers = 127.0.0.1:11212
[redis-master]
servers = 127.0.0.1:11212:6379
[redis-slave-192.168.0.39-6379]
servers = 127.0.0.1:11212:6380

/passport.yoho.cn/public/public/index.php

<?php 

ini_set('display_errors','On');
ini_set('error_reporting ','E_ALL');
define('APP_DIR', dirname(__DIR__));

// 定义应用常量
include APP_DIR.'/config/Defines.class.php';
Config_Defines::setVaribles('release');

// 引入框架文件
$config = include(APP_DIR.'/config/Boot.inc.php');
require $config['Framework_Dir'].'/Y.class.php';

// 执行框架分派
Framework_Y::instance($config)->dispatch();

可以 release改成test,配置对应环境的参数

数据库初始化


CREATE TABLE `tbl_app_info` (

`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,

`key` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '应用的ID',

`secret` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '颁发密钥',

`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '应用名称',

`scope` varchar(1024) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '订阅信息',

`state` tinyint(1) NULL DEFAULT 1 COMMENT '应用状态(1有效,0禁用)',

`domain` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '域名',

`create_time` int(10) NOT NULL COMMENT '创建时间',

`update_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '更新时间',

PRIMARY KEY (`id`) ,

UNIQUE INDEX `idx_key` (`key`)

)

ENGINE=InnoDB

DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci

AUTO_INCREMENT=23

COMMENT='应用订阅表'
;



CREATE TABLE `tbl_auth_info` (

`uid` int(11) NOT NULL COMMENT '用户ID',

`type` smallint(3) NOT NULL COMMENT '验证类型:1:邮箱,2手机,3weibo,4qq,5支付宝,6人人,7豆瓣,8facebook,9instagram,10腾讯微博,11微信',

`auth_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '认证信息,如邮箱登录就是邮箱',

`create_time` int(10) NOT NULL COMMENT '创建时间',

`update_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '更新时间',

PRIMARY KEY (`uid`, `type`) ,

UNIQUE INDEX `unique_auth_id` (`type`, `auth_id`),

INDEX `index_auth_id` (`auth_id`)

)

ENGINE=InnoDB

DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci

COMMENT='账号信息表'
;



CREATE TABLE `tbl_basic_info` (

`uid` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,

`nick` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '昵称',

`gender` tinyint(1) NOT NULL DEFAULT 3 COMMENT '性别(1男,2女,3保密)',

`age` smallint(3) NULL DEFAULT NULL COMMENT '年龄',

`birthday` int(10) NULL DEFAULT NULL COMMENT '生日',

`job` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '职业',

`adress` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '地址',

`area` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '地区',

`city` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '城市',

`province` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '省份',

`country` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '国家',

`email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '邮箱',

`wechat` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信',

`qq` int(30) NULL DEFAULT NULL COMMENT 'qq',

`msn` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'msn',

`telephone` int(20) NULL DEFAULT NULL COMMENT '电话',

`mobile_phone` int(20) NULL DEFAULT NULL COMMENT '手机',

`real_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '姓名',

`head_pic` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '头像',

`income` int(10) NULL DEFAULT NULL COMMENT '收入',

`state` tinyint(1) NULL DEFAULT 1 COMMENT '账号状态:1有效,0禁用',

`app_id` int(11) NULL DEFAULT 1392109259 COMMENT '来自APP',

`create_time` int(10) NULL DEFAULT NULL COMMENT '创建时间',

`update_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '更新时间',

PRIMARY KEY (`uid`) ,

INDEX `idx_nick` (`nick`)

)

ENGINE=InnoDB

DEFAULT CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci

AUTO_INCREMENT=9000010

COMMENT='用户基本信息表'
;



CREATE TABLE `tbl_facebook_rela` (

`openid` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '原来Openid',

`new_openid` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '新openid',

PRIMARY KEY (`openid`, `new_openid`) ,

INDEX `idx_new_openid` (`new_openid`)

)

ENGINE=InnoDB

DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
;



CREATE TABLE `tbl_partner_info` (

`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,

`auth` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '唯一标识(第三方用户)',

`type` tinyint(1) NOT NULL COMMENT '第三方类型:3:weibo,4:qq,5:支付宝,6:人人,7:豆瓣,8:facebook,9:instagram,10腾讯微博,11微信',

`uid` int(11) NOT NULL DEFAULT 0 COMMENT '用户的ID',

`token` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '访问令牌',

`refresh_token` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '刷新令牌',

`expires_in` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '使用周期(访问令牌)',

`create_time` int(10) NOT NULL COMMENT '创建时间',

`update_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '更新时间',

PRIMARY KEY (`id`) ,

UNIQUE INDEX `idx_app_auth` (`auth`, `type`),

INDEX `idx_uid` (`uid`)

)

ENGINE=InnoDB

DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci

AUTO_INCREMENT=6127

COMMENT='第三方信息表'
;



CREATE TABLE `tbl_password` (

`uid` int(11) NOT NULL,

`password` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '加密密码',

`password_salt` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '密码盐',

PRIMARY KEY (`uid`) 

)

ENGINE=InnoDB

DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci

COMMENT='密码表'
;



CREATE TABLE `tbl_query_log` (

`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,

`key` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '应用的ID',

`interface_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '接口名称',

`input` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '输入',

`output` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '输出',

`create_time` int(10) NULL DEFAULT NULL COMMENT '创建时间',

PRIMARY KEY (`id`) 

)

ENGINE=InnoDB

DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci

AUTO_INCREMENT=32265

COMMENT='日志记录表'
;



CREATE TABLE `tbl_session` (

`sessionkey` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '回话ID',

`uid` int(10) NOT NULL,

`update_time` int(10) NULL DEFAULT NULL,

`create_time` int(10) NOT NULL,

`ip` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,

`persist` enum('y','n') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'y' COMMENT '1:自动登录,0:不自动登录',

`src` tinyint(1) NULL DEFAULT 1 COMMENT '来源 1:web,2:android,3:ios',

`logout_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,

`post_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,

PRIMARY KEY (`sessionkey`) 

)

ENGINE=InnoDB

DEFAULT CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci
;



CREATE TABLE `tbl_show_relevance` (

`show_uid` int(11) NOT NULL,

`sso_uid` int(11) NOT NULL,

`create_time` int(11) NULL DEFAULT NULL,

PRIMARY KEY (`show_uid`, `sso_uid`) 

)

ENGINE=InnoDB

DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci

COMMENT='show与有货关联表'
;

数据初始化 APP信息


INSERT INTO `tbl_app_info` VALUES (16, '1392109210', '9777d30941e4377301036cfa17aab03a', 'YOHOSHOW', 'uid,nick,gender,email,head_pic,app_id', 1, 'http://show.test.yoho.cn', 1392109258, '0000-0-0 00:00:00');
INSERT INTO `tbl_app_info` VALUES (17, '1392109259', '1e87e46f115cc813e27ef52eb9915f1e', 'YOHOBUY', 'uid,nick,gender,age,birthday,email,mobile_phone,real_name,head_pic,app_id', 1, 'http://www.yohobuy.com', 1392109259, '0000-0-0 00:00:00');
INSERT INTO `tbl_app_info` VALUES (18, '1392109260', '3d04e2653b425f77864654900d9789c0', 'YOHO.CN', 'uid,nick,gender,age,birthday,email,mobile_phone,real_name,head_pic,app_id', 1, 'http://www.test.yoho.cn', 1392109259, '0000-0-0 00:00:00');
INSERT INTO `tbl_app_info` VALUES (19, '1392109288', '0590621c6002e1e2b2c4a0dc8a1c925e', 'YOHOBOY', 'uid,nick,gender,email,head_pic,app_id', 1, 'http://boys.test.yoho.cn', 1400575050, '0000-0-0 00:00:00');
INSERT INTO `tbl_app_info` VALUES (21, '1392109299', '9d04e2653b425fdd004654900f7789c0', 'YOHOGIRL', 'uid,nick,gender,email,head_pic,app_id', 1, 'http://www.yohogirls.com', 1400575050, '0000-0-0 00:00:00');
INSERT INTO `tbl_app_info` VALUES (22, '1392109266', '372ee0f72988de890f32372653a7a9f4', 'YOHOMARS', 'uid,nick,gender,age,birthday,email,mobile_phone,real_name,head_pic,create_time,app_id', 1, 'http://yohomars.test.yoho.cn', 1400575050, '0000-0-0 00:00:00');