部署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');