搭建getyii步骤

原始安装方法(推荐)

1、首先你要安装 Composer,然后你需要手动去新建一个数据库,比方说新建 getyii 数据库,如果想使用 emoji 表情的话,意见使用 utf8mb4 编码格式,不想用的话, 建议使用 utf8 编码格式。

composer global require "fxp/composer-asset-plugin:~1.1.1"
git clone https://github.com/iiYii/getyii.git

cd getyii

composer install

php init


2、然后使用运行我写的安装程序(帮你生成数据库表和假数据)

php yii install 

####################安装过程##########################

apt-get install php-mbstring
apt-get install php-mcrypt

root@alex-virtual-machine:/www/getyii# php init
Yii Application Initialization Tool v1.0

Which environment do you want the application to be initialized in?

  [0] Development
  [1] Production

  Your choice [0-1, or "q" to quit] 0

  Initialize the application under 'Development' environment? [yes|no] yes

  Start initialization ...

   generate backend/web/index-test.php
   generate backend/web/index.php
   generate backend/config/main-local.php
   generate backend/config/params-local.php
   generate console/config/main-local.php
   generate console/config/params-local.php
   generate frontend/web/index-test.php
   generate frontend/web/index.php
   generate frontend/config/main-local.php
   generate frontend/config/params-local.php
   generate yii
   generate common/config/main-local.php
   generate common/config/params-local.php
   generate cookie validation key in backend/config/main-local.php
   generate cookie validation key in frontend/config/main-local.php
      chmod 0777 backend/runtime
      chmod 0777 backend/web/assets
      chmod 0777 frontend/runtime
      chmod 0777 frontend/web/assets
      chmod 0755 yii

  ... initialization completed.

root@alex-virtual-machine:/www/getyii# clear
root@alex-virtual-machine:/www/getyii# ls
ali-pay.png  common         composer.lock  doc         docker-files  frontend  init.bat    README.md         tests   wechat-pay.png  yii.bat
backend      composer.json  console        Dockerfile  environments  init      LICENSE.md  requirements.php  vendor  yii
root@alex-virtual-machine:/www/getyii# cat yii
#!/usr/bin/env php
<?php
/**
 * Yii console bootstrap file.
 *
 * @link http://www.yiiframework.com/
 * @copyright Copyright (c) 2008 Yii Software LLC
 * @license http://www.yiiframework.com/license/
 */

defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');

// fcgi doesn't have STDIN and STDOUT defined by default
defined('STDIN') or define('STDIN', fopen('php://stdin', 'r'));
defined('STDOUT') or define('STDOUT', fopen('php://stdout', 'w'));

require(__DIR__ . '/vendor/autoload.php');
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');
require(__DIR__ . '/common/config/bootstrap.php');
require(__DIR__ . '/console/config/bootstrap.php');

$config = yii\helpers\ArrayHelper::merge(
    require(__DIR__ . '/common/config/main.php'),
    require(__DIR__ . '/common/config/main-local.php'),
    require(__DIR__ . '/console/config/main.php'),
    require(__DIR__ . '/console/config/main-local.php')
);

$application = new yii\console\Application($config);
$exitCode = $application->run();
exit($exitCode);
root@alex-virtual-machine:/www/getyii# clear

####先创建数据库####


create database getyii;

#######################################3

root@alex-virtual-machine:/www/getyii# php yii install


 - Step 1 数据库配置 
==================================================
默认数据库配置文件未找到,将进入数据库配置创建流程
请输入数据库主机地址: [localhost] 
请输入数据库名称: [getyii] 
请输入数据库访问账号: [root] 
请输入数据库访问密码: 123456
请输入数据库表前缀(默认不使用): 
请输入数据默认的字符集: [utf8mb4] 
是否测试数据库可用? (yes|no) [yes]:yes
数据连接成功
生成数据库配置文件...
恭喜! 数据库配置完毕!


 - Step 2 初始化数据库数据 
==================================================

开始迁移数据库结构和数据
** 如无特殊需求,当询问是否迁移数据是回复yes既可 **


默认目录迁移: /www/getyii/console/migrations
Yii Migration Tool (based on Yii v2.0.11-dev)

Creating migration history table "migration"...Done.
Total 30 new migrations to be applied:
    m130524_201442_init
    m150104_071047_init_blog
    m150104_091352_init_user
    m150115_081356_create_user_info
    m150201_142415_update_user
    m150205_085033_update_post_comment
    m150209_015931_setting_init
    m150209_090406_create_user_account
    m150211_070335_update_user_info
    m150212_030127_update_user_info_and_post_meta
    m150212_132400_create_topics_table
    m150214_070754_update_post_meta
    m150412_034147_update_site_setting
    m150416_134819_create_notification_table
    m150420_060807_update_post_table
    m150424_025409_update_table_engine
    m150424_031429_update_notification_table
    m150424_100155_update_post_meta_table
    m150425_031844_create_right_link
    m150626_073539_create_nav
    m150626_073559_create_nav_url
    m150702_130239_create_session_init
    m150805_085832_create_search_log_table
    m150808_025734_update_table_character
    m150829_091943_update_post_table
    m160320_093621_create_merit_table
    m160321_132724_add_donate_table
    m160719_093527_modify_user
    m190908_053628_init_admin
    m190908_055507_init_data

Apply the above migrations? (yes|no) [no]:yes
*** applying m130524_201442_init
    > create table {{%user}} ... done (time: 0.007s)
*** applied m130524_201442_init (time: 0.028s)

*** applying m150104_071047_init_blog
    > create table {{%post_meta}} ... done (time: 0.007s)
    > create index type on {{%post_meta}} (type) ... done (time: 0.011s)
    > create table {{%post}} ... done (time: 0.014s)
    > create index post_meta_id on {{%post}} (post_meta_id) ... done (time: 0.015s)
    > create index tags on {{%post}} (tags) ... done (time: 0.008s)
    > create index user_id on {{%post}} (user_id) ... done (time: 0.013s)
    > create table {{%post_tag}} ... done (time: 0.005s)
    > create table {{%post_comment}} ... done (time: 0.012s)
    > create index post_id on {{%post_comment}} (post_id) ... done (time: 0.006s)
    > create index user_id on {{%post_comment}} (user_id) ... done (time: 0.005s)
*** applied m150104_071047_init_blog (time: 0.104s)

*** applying m150104_091352_init_user
    > add column avatar string DEFAULT NULL COMMENT '头像' AFTER `username`  to table {{%user}} ... done (time: 0.002s)
    > create table {{%user_meta}} ... done (time: 0.003s)
    > create index type on {{%user_meta}} (type) ... done (time: 0.004s)
    > create index user_id on {{%user_meta}} (user_id) ... done (time: 0.003s)
    > create index target_id on {{%user_meta}} (target_id) ... done (time: 0.002s)
    > create index target_type on {{%user_meta}} (target_type) ... done (time: 0.002s)
    > create table {{%user_auth}} ... done (time: 0.003s)
    > create index type on {{%user_auth}} (type) ... done (time: 0.003s)
    > create index user_id on {{%user_auth}} (user_id) ... done (time: 0.003s)
*** applied m150104_091352_init_user (time: 0.029s)

*** applying m150115_081356_create_user_info
    > create table {{%user_info}} ... done (time: 0.003s)
*** applied m150115_081356_create_user_info (time: 0.007s)

*** applying m150201_142415_update_user
    > add column location string(10) DEFAULT NULL COMMENT "城市" AFTER `info` to table {{%user_info}} ... done (time: 0.002s)
    > add column company string(40) DEFAULT NULL COMMENT "公司" AFTER `info` to table {{%user_info}} ... done (time: 0.002s)
    > add column website string(100) DEFAULT NULL COMMENT "个人主页" AFTER `info` to table {{%user_info}} ... done (time: 0.002s)
    > add column github string(100) DEFAULT NULL COMMENT "GitHub 帐号" AFTER `info` to table {{%user_info}} ... done (time: 0.001s)
    > add column tagline string(40) DEFAULT NULL COMMENT "一句话介绍" AFTER `email` to table {{%user}} ... done (time: 0.001s)
*** applied m150201_142415_update_user (time: 0.014s)

*** applying m150205_085033_update_post_comment
    > add column updated_at integer UNSIGNED NOT NULL DEFAULT '0' COMMENT '修改时间' to table {{%post_comment}} ... done (time: 0.002s)
    > add column like_count integer UNSIGNED NOT NULL DEFAULT '0' COMMENT '喜欢数' AFTER `user_id` to table {{%post_comment}} ... done (time: 0.003s)
*** applied m150205_085033_update_post_comment (time: 0.008s)

*** applying m150209_015931_setting_init
    > execute SQL: DROP TABLE IF EXISTS {{%setting}}; ... done (time: 0.001s)
    > create table {{%setting}} ... done (time: 0.003s)
    > create index parent_id on {{%setting}} (parent_id) ... done (time: 0.002s)
    > create index code on {{%setting}} (code) ... done (time: 0.003s)
    > create index sort_order on {{%setting}} (sort_order) ... done (time: 0.002s)
    > execute SQL: INSERT INTO {{%setting}} (`id`, `parent_id`, `code`, `type`, `store_range`, `store_dir`, `value`, `sort_order`) VALUES
                (11, 0, 'info', 'group', '', '', '', '50'),
                (21, 0, 'basic', 'group', '', '', '', '50'),
                (31, 0, 'smtp', 'group', '', '', '', '50'),
                (41, 0, 'github', 'group', '', '', '', '50'),
                (51, 0, 'google', 'group', '', '', '', '50'),
                (1111, 11, 'siteName', 'text', '', '', 'Your Site', '50'),
                (1112, 11, 'siteTitle', 'text', '', '', 'Your Site Title', '50'),
                (1113, 11, 'siteKeyword', 'text', '', '', 'Your Site Keyword', '50'),
                (2111, 21, 'timezone', 'select', '-12,-11,-10,-9,-8,-7,-6,-5,-4,-3.5,-3,-2,-1,0,1,2,3,3.5,4,4.5,5,5.5,5.75,6,6.5,7,8,9,9.5,10,11,12', '', '8', '50'),
                (2112, 21, 'commentCheck', 'select', '0,1', '', '1', '50'),
                (3111, 31, 'smtpHost', 'text', '', '', 'localhost', '50'),
                (3112, 31, 'smtpPort', 'text', '', '', '', '50'),
                (3113, 31, 'smtpUser', 'text', '', '', '', '50'),
                (3114, 31, 'smtpPassword', 'password', '', '', '', '50'),
                (3115, 31, 'smtpMail', 'text', '', '', '', '50'),
                (4111, 41, 'githubLogin', 'select', '0,1', '', '1', '50'),
                (4112, 41, 'githubClientId', 'text', '', '', '', '50'),
                (4113, 41, 'githubClientSecret', 'text', '', '', '', '50'),
                (5111, 51, 'googleLogin', 'select', '0,1', '', '1', '50'),
                (5112, 51, 'googleClientId', 'text', '', '', '', '50'),
                (5113, 51, 'googleClientSecret', 'text', '', '', '', '50')
                 ... done (time: 0.002s)
*** applied m150209_015931_setting_init (time: 0.017s)

*** applying m150209_090406_create_user_account
    > execute SQL: DROP TABLE IF EXISTS {{%user_auth}}; ... done (time: 0.001s)
    > create table {{%user_account}} ... done (time: 0.004s)
    > create index client_id on {{%user_account}} (client_id) ... done (time: 0.003s)
    > create index user_id on {{%user_account}} (user_id) ... done (time: 0.003s)
*** applied m150209_090406_create_user_account (time: 0.016s)

*** applying m150211_070335_update_user_info
    > add column like_count integer DEFAULT 0 COMMENT "被赞次数" AFTER `location` to table {{%user_info}} ... done (time: 0.002s)
    > add column thanks_count integer DEFAULT 0 COMMENT "被感谢次数" AFTER `location` to table {{%user_info}} ... done (time: 0.002s)
    > add column post_count integer DEFAULT 0 COMMENT "发布文章数" AFTER `location` to table {{%user_info}} ... done (time: 0.002s)
    > add column comment_count integer DEFAULT 0 COMMENT "发布评论数" AFTER `location` to table {{%user_info}} ... done (time: 0.002s)
    > add column view_count integer DEFAULT 0 COMMENT "个人主页浏览次数" AFTER `location` to table {{%user_info}} ... done (time: 0.002s)
*** applied m150211_070335_update_user_info (time: 0.014s)

*** applying m150212_030127_update_user_info_and_post_meta
    > add column hate_count integer DEFAULT 0 COMMENT "喝倒彩次数" AFTER `like_count` to table {{%user_info}} ... done (time: 0.002s)
*** applied m150212_030127_update_user_info_and_post_meta (time: 0.006s)

*** applying m150212_132400_create_topics_table
    > add column type string(32) DEFAULT "blog" COMMENT "内容类型" AFTER `id` to table {{%post}} ... done (time: 0.028s)
    > alter column tags in table {{%post}} to string DEFAULT NULL COMMENT '标签 用英文逗号隔开' ... done (time: 0.030s)
    > alter column post_meta_id in table {{%post}} to integer UNSIGNED NOT NULL COMMENT '版块ID' ... done (time: 0.002s)
    > create index type on {{%post}} (type) ... done (time: 0.012s)
*** applied m150212_132400_create_topics_table (time: 0.075s)

*** applying m150214_070754_update_post_meta
    > add column alias string(32) DEFAULT NULL COMMENT '变量(别名)' AFTER `name` to table {{%post_meta}} ... done (time: 0.003s)
    > create index alias on {{%post_meta}} (alias) ... done (time: 0.002s)
*** applied m150214_070754_update_post_meta (time: 0.011s)

*** applying m150412_034147_update_site_setting
    > execute SQL: DELETE FROM {{%setting}} WHERE `id` IN (
                51, 5111, 5112, 5113
            ) ... done (time: 0.001s)
    > execute SQL: UPDATE {{%setting}} SET `code` = 'account' WHERE `id` = 41 ... done (time: 0.001s)
    > execute SQL: INSERT INTO {{%setting}} (`id`, `parent_id`, `code`, `type`, `store_range`, `store_dir`, `value`, `sort_order`) VALUES
            (1114, 11, 'siteAnalytics', 'text', '', '', 'Your Site Analytics', '50'),
            (4114, 41, 'googleLogin', 'select', '0,1', '', '1', '50'),
            (4115, 41, 'googleClientId', 'text', '', '', '', '50'),
            (4116, 41, 'googleClientSecret', 'text', '', '', '', '50'),
            (4117, 41, 'weiboLogin', 'select', '0,1', '', '1', '50'),
            (4118, 41, 'weiboClientId', 'text', '', '', '', '50'),
            (4119, 41, 'weiboClientSecret', 'text', '', '', '', '50'),
            (4120, 41, 'qqLogin', 'select', '0,1', '', '1', '50'),
            (4121, 41, 'qqClientId', 'text', '', '', '', '50'),
            (4122, 41, 'qqClientSecret', 'text', '', '', '', '50')
             ... done (time: 0.000s)
*** applied m150412_034147_update_site_setting (time: 0.005s)

*** applying m150416_134819_create_notification_table
    > create table {{%notification}} ... done (time: 0.002s)
    > create index type on {{%notification}} (type) ... done (time: 0.002s)
    > create index post_id on {{%notification}} (post_id) ... done (time: 0.002s)
    > create index user_id on {{%notification}} (user_id) ... done (time: 0.002s)
    > add column notification_count integer UNSIGNED DEFAULT 0 COMMENT "通知条数" AFTER `tagline` to table {{%user}} ... done (time: 0.001s)
*** applied m150416_134819_create_notification_table (time: 0.013s)

*** applying m150420_060807_update_post_table
    > add column follow_count integer UNSIGNED NOT NULL DEFAULT '0' COMMENT '讨厌数' AFTER `view_count` to table {{%post}} ... done (time: 0.026s)
*** applied m150420_060807_update_post_table (time: 0.033s)

*** applying m150424_025409_update_table_engine
    > execute SQL: ALTER TABLE {{%notification}} ENGINE = InnoDB; ... done (time: 0.021s)
    > execute SQL: ALTER TABLE {{%post}} ENGINE = InnoDB; ... done (time: 0.023s)
    > execute SQL: ALTER TABLE {{%post_meta}} ENGINE = InnoDB; ... done (time: 0.015s)
    > execute SQL: ALTER TABLE {{%user}} ENGINE = InnoDB; ... done (time: 0.013s)
    > execute SQL: ALTER TABLE {{%user_info}} ENGINE = InnoDB; ... done (time: 0.014s)
    > execute SQL: ALTER TABLE {{%user_meta}} ENGINE = InnoDB; ... done (time: 0.014s)
*** applied m150424_025409_update_table_engine (time: 0.106s)

*** applying m150424_031429_update_notification_table
    > add column status boolean UNSIGNED NOT NULL DEFAULT '1' COMMENT '状态 1显示 0不显示' AFTER `data` to table {{%notification}} ... done (time: 0.035s)
*** applied m150424_031429_update_notification_table (time: 0.041s)

*** applying m150424_100155_update_post_meta_table
    > add column parent integer UNSIGNED DEFAULT NULL COMMENT '父级ID' AFTER `name` to table {{%post_meta}} ... done (time: 0.019s)
*** applied m150424_100155_update_post_meta_table (time: 0.023s)

*** applying m150425_031844_create_right_link
    > execute SQL: DROP TABLE IF EXISTS {{%rightlink}} ... done (time: 0.001s)
    > create table {{%right_link}} ... done (time: 0.002s)
    > create index type_index on {{%right_link}} (type) ... done (time: 0.002s)
*** applied m150425_031844_create_right_link (time: 0.008s)

*** applying m150626_073539_create_nav
    > execute SQL: DROP TABLE IF EXISTS {{%nav}} ... done (time: 0.001s)
    > create table {{%nav}} ... done (time: 0.005s)
*** applied m150626_073539_create_nav (time: 0.010s)

*** applying m150626_073559_create_nav_url
    > execute SQL: DROP TABLE IF EXISTS {{%nav_url}} ... done (time: 0.001s)
    > create table {{%nav_url}} ... done (time: 0.129s)
*** applied m150626_073559_create_nav_url (time: 0.134s)

*** applying m150702_130239_create_session_init
    > create table {{%session}} ... done (time: 0.005s)
    > add primary key idx on {{%session}} (id) ... done (time: 0.018s)
    > create index idx_expire on {{%session}} (expire) ... done (time: 0.010s)
    > add column session_id string(100) DEFAULT NULL AFTER `last_login_ip` to table {{%user_info}} ... done (time: 0.019s)
*** applied m150702_130239_create_session_init (time: 0.056s)

*** applying m150805_085832_create_search_log_table
    > create table {{%search_log}} ... done (time: 0.002s)
    > create index keyword on {{%search_log}} (keyword) ... done (time: 0.003s)
    > create index user_id on {{%search_log}} (user_id) ... done (time: 0.002s)
*** applied m150805_085832_create_search_log_table (time: 0.013s)

*** applying m150808_025734_update_table_character
    > execute SQL: ALTER TABLE {{%post_comment}} MODIFY COLUMN `comment` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; ... done (time: 0.003s)
    > execute SQL: ALTER TABLE {{%post}} MODIFY COLUMN `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; ... done (time: 0.021s)
    > execute SQL: ALTER TABLE {{%notification}} MODIFY COLUMN `data` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; ... done (time: 0.019s)
*** applied m150808_025734_update_table_character (time: 0.049s)

*** applying m150829_091943_update_post_table
    > add column last_comment_username string(20) DEFAULT NULL COMMENT "最后评论用户" AFTER `tags` to table {{%post}} ... done (time: 0.018s)
    > add column last_comment_time integer DEFAULT NULL COMMENT "最后评论用户" AFTER `tags` to table {{%post}} ... done (time: 0.016s)
*** applied m150829_091943_update_post_table (time: 0.039s)

*** applying m160320_093621_create_merit_table
    > execute SQL: DROP TABLE IF EXISTS {{%merit_template}};
                DROP TABLE IF EXISTS {{%merit}};
                DROP TABLE IF EXISTS {{%merit_log}};
               ... done (time: 0.001s)
    > create table {{%merit_template}} ... done (time: 0.008s)
    > create index type on {{%merit_template}} (type) ... done (time: 0.004s)
    > create index unique_id on {{%merit_template}} (unique_id) ... done (time: 0.008s)
    > create table {{%merit}} ... done (time: 0.006s)
    > create index type on {{%merit}} (type) ... done (time: 0.006s)
    > create index user_id on {{%merit}} (user_id) ... done (time: 0.006s)
    > create table {{%merit_log}} ... done (time: 0.008s)
    > create index type on {{%merit_log}} (type) ... done (time: 0.005s)
    > create index user_id on {{%merit_log}} (user_id) ... done (time: 0.008s)
    > create index merit_template_id on {{%merit_log}} (merit_template_id) ... done (time: 0.009s)
*** applied m160320_093621_create_merit_table (time: 0.071s)

*** applying m160321_132724_add_donate_table
    > create table {{%donate}} ... done (time: 0.003s)
    > create index user_id on {{%donate}} (user_id) ... done (time: 0.002s)
*** applied m160321_132724_add_donate_table (time: 0.011s)

*** applying m160719_093527_modify_user
    > create unique index idx_username on {{%user}} (username) ... done (time: 0.008s)
*** applied m160719_093527_modify_user (time: 0.012s)

*** applying m190908_053628_init_admin

请先创建创始人账户:   
请输入创始人用户名 [admin] 
请输入创始人邮箱 [admin@admin.com] hyrxb@163.com
请输入创始人密码 [123456] 
创始人创建成功
*** applied m190908_053628_init_admin (time: 14.117s)

*** applying m190908_055507_init_data
是否生成测试问题数据? (yes|no) [yes]:yes
[>                                                                                                                                                                                          ] 0% (0/100) ETA: n/a    > execute SQL: INSERT INTO {{%merit_template}} (`id`, `type`, `title`, `unique_id`, `method`, `event`, `action_type`, `rule_key`, `rule_value`, `increment`, `status`, `created_at`, `updated_at`) VALUES
(1, 1, '登录', 'site/login', 2, 0, 2, 1, 1, 2, 1, 1458657160, 1458823425),
(2, 1, '发帖', 'topic/default/create', 2, 0, 2, 0, NULL, 6, 1, 1458657218, 1458657218),
(3, 1, '回复', 'topic/comment/create', 2, 0, 2, 0, NULL, 4, 1, 1458657251, 1458657251),
(4, 1, '发动弹', 'tweet/default/create', 2, 0, 2, 0, NULL, 4, 1, 1458657296, 1468647701);
 ... done (time: 0.000s)
[====================================================================================================================================================================================] 100% (100/100) ETA: 0 sec.
*** applied m190908_055507_init_data (time: 6.180s)


30 migrations were applied.

Migrated up successfully.
恭喜, 站点配置成功!

配置nginx 虚拟主机


server {
    charset utf-8;
    client_max_body_size 128M;

    listen 80; ## listen for ipv4
    #listen [::]:80 default_server ipv6only=on; ## listen for ipv6

    server_name www.bbs.com;
    root        /www/getyii/frontend/web/;
    index       index.php index.html;

    access_log  /www/log/access.log;
    error_log   /www/log/error.log;

    location / {
        # Redirect everything that isn't a real file to index.php
        try_files $uri $uri/ /index.php$is_args$args;
    }

    # uncomment to avoid processing of calls to non-existing static files by Yii
    #location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
    #    try_files $uri =404;
    #}
    #error_page 404 /404.html;

      location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }


    location ~* /\. {
        deny all;
    }
}
     
https://github.com/iiYii/getyii

转载于:https://my.oschina.net/yonghan/blog/1305432

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值