Centos6.6部署Mysql+nginx+php环境

Centos6.6部署Mysql+nginx+php环境

mysql安装

下载mysql安装包

http://dev.mysql.com/downloads/mysql/
选择 Linux-Generic
选择Linux - Generic (glibc 2.5) (x86, 64-bit), RPM

下载完毕后放到自定义放置目录,本例中放置在/usr/local/software/mysql目录下

解压缩

tar -xf MySQL-5.6.22-1.linux_glibc2.5.x86_64.rpm-bundle.tar

在安装MySQL之前,先检查CentOS系统中是否已经安装了一个MySQL,如果已经安装先卸载,不然会导致安装新的MySQL失败。

rpm -qa | grep mysql   --查看系统之前是否已安装MySQL。

mysql-libs-5.1.47-4.el6.i686

显示结果说明 CentOS6.0系统自带了一个MySQL,我们需要删除这个老版本,用root用户执行下面语句

rpm -e --nodeps mysql-libs-5.1.47-4.el6.i686  

在删除MySQL的rpm后,还要进行一些扫尾操作
第一种善后处理:使用下面命令进行处理。

rm -rf /var/lib/mysql*

rm -rf /usr/share/mysql*
另一种善后处理:卸载后 /var/lib/mysql 中的 /etc/my.cnf 会重命名为 my.cnf.rpmsave,/var/log/mysqld.log 会重命名为 /var/log/mysqld.log.rpmsave,如果确定没用后就手工删除。

开始安装mysql服务器

执行命令:

rpm -ivh MySQL-server-5.6.22-1.linux_glibc2.5.x86_64.rpm 

结果如下:

Preparing… ########################################### [100%]
1:MySQL-server ########################################### [100%]
warning: user mysql does not exist - using root
warning: group mysql does not exist - using root
2014-08-10 22:43:44 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use –explicit_defaults_for_timestamp server option (see documentation for more details).
2014-08-10 22:43:44 23012 [Note] InnoDB: Using atomics to ref count buffer pool pages
2014-08-10 22:43:44 23012 [Note] InnoDB: The InnoDB memory heap is disabled
2014-08-10 22:43:44 23012 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2014-08-10 22:43:44 23012 [Note] InnoDB: Memory barrier is not used
2014-08-10 22:43:44 23012 [Note] InnoDB: Compressed tables use zlib 1.2.3
2014-08-10 22:43:44 23012 [Note] InnoDB: Using Linux native AIO
2014-08-10 22:43:44 23012 [Note] InnoDB: Not using CPU crc32 instructions
2014-08-10 22:43:44 23012 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2014-08-10 22:43:44 23012 [Note] InnoDB: Completed initialization of buffer pool
2014-08-10 22:43:45 23012 [Note] InnoDB: The first specified data file ./ibdata1 did not exist: a new database to be created!
2014-08-10 22:43:45 23012 [Note] InnoDB: Setting file ./ibdata1 size to 12 MB
2014-08-10 22:43:45 23012 [Note] InnoDB: Database physically writes the file full: wait…
2014-08-10 22:43:45 23012 [Note] InnoDB: Setting log file ./ib_logfile101 size to 48 MB
2014-08-10 22:43:46 23012 [Note] InnoDB: Setting log file ./ib_logfile1 size to 48 MB
2014-08-10 22:43:46 23012 [Note] InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0
2014-08-10 22:43:46 23012 [Warning] InnoDB: New log files created, LSN=45781
2014-08-10 22:43:46 23012 [Note] InnoDB: Doublewrite buffer not found: creating new
2014-08-10 22:43:46 23012 [Note] InnoDB: Doublewrite buffer created
2014-08-10 22:43:46 23012 [Note] InnoDB: 128 rollback segment(s) are active.
2014-08-10 22:43:46 23012 [Warning] InnoDB: Creating foreign key constraint system tables.
2014-08-10 22:43:47 23012 [Note] InnoDB: Foreign key constraint system tables created
2014-08-10 22:43:47 23012 [Note] InnoDB: Creating tablespace and datafile system tables.
2014-08-10 22:43:47 23012 [Note] InnoDB: Tablespace and datafile system tables created.
2014-08-10 22:43:47 23012 [Note] InnoDB: Waiting for purge to start
2014-08-10 22:43:47 23012 [Note] InnoDB: 5.6.22 started; log sequence number 0
A random root password has been set. You will find it in ‘/root/.mysql_secret’.
2014-08-10 22:43:48 23012 [Note] Binlog end
2014-08-10 22:43:48 23012 [Note] InnoDB: FTS optimize thread exiting.
2014-08-10 22:43:48 23012 [Note] InnoDB: Starting shutdown…
2014-08-10 22:43:50 23012 [Note] InnoDB: Shutdown completed; log sequence number 1625977

2014-08-10 22:43:50 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use –explicit_defaults_for_timestamp server option (see documentation for more details).
2014-08-10 22:43:50 23039 [Note] InnoDB: Using atomics to ref count buffer pool pages
2014-08-10 22:43:50 23039 [Note] InnoDB: The InnoDB memory heap is disabled
2014-08-10 22:43:50 23039 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2014-08-10 22:43:50 23039 [Note] InnoDB: Memory barrier is not used
2014-08-10 22:43:50 23039 [Note] InnoDB: Compressed tables use zlib 1.2.3
2014-08-10 22:43:50 23039 [Note] InnoDB: Using Linux native AIO
2014-08-10 22:43:50 23039 [Note] InnoDB: Not using CPU crc32 instructions
2014-08-10 22:43:50 23039 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2014-08-10 22:43:50 23039 [Note] InnoDB: Completed initialization of buffer pool
2014-08-10 22:43:50 23039 [Note] InnoDB: Highest supported file format is Barracuda.
2014-08-10 22:43:50 23039 [Note] InnoDB: 128 rollback segment(s) are active.
2014-08-10 22:43:50 23039 [Note] InnoDB: Waiting for purge to start
2014-08-10 22:43:50 23039 [Note] InnoDB: 5.6.22 started; log sequence number 1625977
2014-08-10 22:43:50 23039 [Note] Binlog end
2014-08-10 22:43:50 23039 [Note] InnoDB: FTS optimize thread exiting.
2014-08-10 22:43:50 23039 [Note] InnoDB: Starting shutdown…
2014-08-10 22:43:52 23039 [Note] InnoDB: Shutdown completed; log sequence number 1625987

A RANDOM PASSWORD HAS BEEN SET FOR THE MySQL root USER !
You will find that password in ‘/root/.mysql_secret’.

You must change that password on your first connect,
no other statement but ‘SET PASSWORD’ will be accepted.
See the manual for the semantics of the ‘password expired’ flag.

Also, the account for the anonymous user has been removed.

In addition, you can run:

/usr/bin/mysql_secure_installation

which will also give you the option of removing the test database.
This is strongly recommended for production servers.

See the manual for more instructions.

Please report any problems at http://bugs.mysql.com/

The latest information about MySQL is available on the web at

http://www.mysql.com

Support MySQL by buying support/licenses at http://shop.mysql.com

New default config file was created as /usr/my.cnf and
will be used by default by the server when you start it.
You may edit this file to change server settings

安装mysql客户端

rpm -ivh MySQL-client-5.6.22-1.linux_glibc2.5.x86_64.rpm

Preparing… ########################################### [100%]

1:MySQL-client ^C########################################### [100%] 安装完成

MySQL的几个重要目录。

MySQL安装完成后不像 SQL Server 默认安装在一个目录,它的数据库文件、配置文件和命令文件分别在不同的目录,了解这些目录非常重要,尤其对于Linux的初学者,因为 Linux本身的目录结构就比较复杂,如果搞不清楚MySQL的安装目录那就无从谈起深入学习。

a、数据库目录 /var/lib/mysql/

b、配置文件 /usr/share/mysql(mysql.server命令及配置文件)

c、相关命令 /usr/bin(mysqladmin mysqldump等命令)

d、启动脚本 /etc/rc.d/init.d/(启动脚本文件mysql的目录)

如:/etc/rc.d/init.d/mysql start/restart/stop/status

更改 MySQL 目录。由于MySQL数据库目录占用磁盘比较大,而MySQL默认的数据文件存储目录为 /”var/lib/mysql”,也可以把要把数据目录移到 “/” 根目录下的 “mysql_data” 目录中(如果做测试用就不用移动了)。

把 “/var/lib/mysql” 整个目录移到 “/mysql_data”

mv /var/lib/mysql /mysql_data

找到my.cnf配置文件

如果”/etc/”目录下没有my.cnf配置文件,请到 “/usr/share/mysql/” 下找到 my-default.cnf 文件,拷贝其中一个合适的配置文件到 “/etc/” 并改名为 “my.cnf” 中。命令如下:

cp /usr/share/mysql/my-medium.cnf  /etc/my.cnf

编辑MySQL的配置文件 “/etc/my.cnf” 为保证MySQL能够正常工作,需要指明”mysql.sock”文件的产生位置,以及默认编码修改为UTF-8。用下面命令:

vim /etc /my.cnf

添加以下命令

[mysqld]

socket = /mysql_data/mysql/mysql.sock

datadir=/mysql_data/mysql

如果你的数据存储位置要改变的话需要在这里指定存储目录

lower_case_table_names=1

(注意linux下mysql安装完后是默认:区分表名的大小写,不区分列名的大小写;# lower_case_table_names = 0 0:区分大小写,1:不区分大小写)

character-set-server=utf8

[client]

socket = /mysql_data/mysql/mysql.sock

最后,需要修改MySQL启动脚本 /etc/rc.d/init.d/mysql,

vim /etc/rc.d/init.d/mysql

修改 datadir=/mysql_data/mysql。


vi  /etc/selinux/config

把 SELINUX=enforcing 改为 SELINUX=disabled 后存盘退出重启机器试试,必须要重启,很关键

机器重启后,配置防火墙,开放3306端口

vim /etc/sysconfig/iptables

新增

-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT

内容编辑后如下:

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

启动mysql

service mysql start

1 mysql装完之后,默认的初始化root密码在/root/.mysql_secret里面

所以你登录的时候用 mysql -u root -p密码,就可以了

2 登录之后,必须密码

mysql> set password=password('新的密码');

3 目前为止root只有本地登录权限,没有远程登录权限

至此,mysql安装完毕。

接下来,要开放一个用户可以通过工具可以连接到服务器的数据库,

创建用户命令如下:

CREATE USER 'username'@'%' IDENTIFIED BY 'password';

授权如下:

GRANT ALL ON *.* TO 'username'@'%';

Nginx安装

安装nginx需要的环境,pcre(作用rewrite)、zlib(作用压缩)、ssl,这个也可以自己下载编译安装

minimal下要先安装如下支持

yum -y install gcc gcc-c++ autoconf automake openssl openssl-devel pcre-devel zlib-devel zlib pcre

执行以上代码,环境安装完毕。

下载对应的nginx安装包(nginx-*.tar.gz)

下载地址:http://nginx.org/en/download.html

本文中下载的是1.11.1版本

解压压缩包

tar –zxvf nginx-1.11.1.tar.gz

进入解压后的目录

cd nginx-1.11.1;

然后执行

./congigure --prefix=/usr/local/nginx;

继续执行代码

make && make install;

为了方便执行nginx命令,这里加入对应的环境变量

执行命令:

vim /ect/profile

新增如下内容

PATH=$PATH:/usr/local/nginx/sbin
export PATH

加好后如下:

# /etc/profile
# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

pathmunge () {
    case ":${PATH}:" in
        *:"$1":*)
            ;;
        *)
            if [ "$2" = "after" ] ; then
                PATH=$PATH:$1
            else
                PATH=$1:$PATH
            fi
    esac
}


if [ -x /usr/bin/id ]; then
    if [ -z "$EUID" ]; then
        # ksh workaround
        EUID=`id -u`
        UID=`id -ru`
    fi
    USER="`id -un`"
    LOGNAME=$USER
    MAIL="/var/spool/mail/$USER"
fi

# Path manipulation
if [ "$EUID" = "0" ]; then
    pathmunge /sbin
    pathmunge /usr/sbin
    pathmunge /usr/local/sbin
else
    pathmunge /usr/local/sbin after
    pathmunge /usr/sbin after
    pathmunge /sbin after
fi

HOSTNAME=`/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
    export HISTCONTROL=ignoreboth
    pathmunge /sbin
    pathmunge /usr/sbin
    pathmunge /usr/local/sbin
else
    pathmunge /usr/local/sbin after
    pathmunge /usr/sbin after
    pathmunge /sbin after
fi

HOSTNAME=`/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
    export HISTCONTROL=ignoreboth
else
    export HISTCONTROL=ignoredups
fi

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

PATH=$PATH:/usr/local/nginx/sbin
export PATH

# By default, we want umask to get set. This sets it for login shell
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
    umask 002
else
    umask 022
fi

for i in /etc/profile.d/*.sh ; do
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then
            . "$i"
        else
            . "$i" >/dev/null 2>&1
        fi
    fi
done

unset i
unset -f pathmunge

按ESC键退出vim编辑模式,输入

:wq

保存退出

让修改后的环境变量生效:

source /etc/profile

这样环境变量就加好了,测试一下呗。
输入命令:

nginx -v

成功配置后结果显示如下:

nginx version: nginx/1.11.1

接下来修改防火墙配置,开放80端口

执行命令:

vim /etc/sysconfig/iptables

新增内容

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

修改后的内容如下:

**filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT*

:wq保存退出

重启防火墙配置

执行命令:

/etc/init.d/iptables restart

防火墙重启成功后,启动nginx
输入命令:

nginx

打开浏览器访问ip,看见nginx欢迎页面说明成功。

php环境的搭建

nginx本身不能处理PHP,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户,接下来以php-fpm为例介绍如何使nginx支持PHP。

新版PHP已经集成php-fpm了,不再是第三方的包了,推荐使用

安装前的环境准备:

yum -y install gcc automake autoconf libtool make
yum -y install gcc gcc-c++ glibc
yum -y install libmcrypt-devel mhash-devel libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel

centos源不能安装libmcrypt-devel,由于版权的原因没有自带mcrypt的包

使用wget可以通过以下路径下载

wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/attic/libmcrypt/libmcrypt-2.5.7.tar.gz

或者单独去下载压缩包

下载好后解压

tar -zxvf libmcrypt-2.5.7.tar.gz   

进入解压后的目录

cd libmcrypt-2.5.7

#编译(默认安装到/usr/local/lib/)

执行代码:

./configure --prefix=/usr/local/libmcrypt

执行代码安装:

make && make install  

接下来新版php-fpm的安装

解压php安装包

tar -zvxf php-5.4.7.tar.gz

进入解压后的目录

cd php-5.4.7

执行命令:

./configure --prefix=/usr/local/php  --enable-fpm --with-mcryp=/usr/local/libmcrypt --enable-mbstring --disable-pdo --with-curl --disable-debug  --disable-rpath --enable-inline-optimization --with-bz2  --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-zip --with-pcre-regex --with-mysql --with-mysqli 

然后输入命令:

make all install

以上就完成了php-fpm的安装。

进入php目录

cd /usr/local/php

将对应的配置文件copy
执行命令:

cp etc/php-fpm.conf.default etc/php-fpm.conf

修改nginx配置以支持php-fpm

vim /usr/local/nginx/conf/nginx.conf

做如下修改:

location / {
            root   html;
            index  index.html index.htm index.php;
        }
location ~ .php$ {
            root /usr/local/nginx/html;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }

修改配置文件后重启nginx

nginx -s reload

在/usr/local/nginx/html下创建index.php文件,输入如下内容

<?php
    echo phpinfo();
?>

启动php-fpm

执行命令:

/usr/local/php/sbin/php-fpm

访问ip/index.php出现php配置,成功搞定。

关于nginx配置thinkphp项目的说明

这里我直接copy自百度上的某个,亲测可用。

listen       80;
server_name  localhost;

#charset koi8-r;

#access_log  logs/host.access.log  main;
#这里配置你自己的项目路径就好了
 root        /var/www/tsl;

location / {
        index  index.htm index.html index.php;
        #访问路径的文件不存在则重写URL转交给ThinkPHP处理
        if (!-e $request_filename) {
           rewrite  ^/(.*)$  /index.php/$1  last;
           break;
        }
    }
    location ~ \.php/?.*$ {

        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        #加载Nginx默认"服务器环境变量"配置
        include        fastcgi.conf;

        #设置PATH_INFO并改写SCRIPT_FILENAME,SCRIPT_NAME服务器环境变量
        set $fastcgi_script_name2 $fastcgi_script_name;
        if ($fastcgi_script_name ~ "^(.+\.php)(/.+)$") {
            set $fastcgi_script_name2 $1;
            set $path_info $2;
        }
        fastcgi_param   PATH_INFO $path_info;
        fastcgi_param   SCRIPT_FILENAME   $document_root$fastcgi_script_name2;
        fastcgi_param   SCRIPT_NAME   $fastcgi_script_name2;
    }

配置好之后启动php-fpm,如果报如下错误:
==STORAGE_WRITE_ERROR_:./Runtime/Cache/==
进入项目目录对Runtime文件夹授权

chmod -R 777 Runtime/

某些童鞋可能需要验证码所支持的GD扩展, 关于PHP中GD扩展的安装说明(摘自其他网友的,亲测可用)

一、首先安装环境许需要的包

yum -y install libjpeglibjpeg-devel libpng libpng-devel freetype freetype-devel

二、进入到php的源码目录下的ext/gd目录(这里是源码目录,不是安装目录,注意区别)

1.首先执行:

{$php_indtall_dir}/bin/phpize

注:这里的{$php_indtall_dir}指的是php的安装目录,如果安装到了/usr/local/php,那就执行/usr/local/php/bin/phpize,这里是要生成.configure编译文件的
2.执行:

./configure --with-png-dir --with-freetype-dir --with-jpeg-dir --with-gd --with-php-config=/usr/local/php/bin/php-config

注:这里的–with-php-config目录根据自己php的安装路径配置
3.执行:

make && make install

完成后可以看到这么一段信息

Build complete.
Don't forget to run 'make test'.
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/
Installing header files:           /usr/local/php/include/php/

三、修改php.ini

(如果/usr/local/php/lib下面没有php.ini,可以去源码安装包中将php.ini-development拷贝过来,改名php.ini)

添加:extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/gd.so
(这个补充说明下,可以直接配置绝对路径,比如我配置的)
第四步:
重启php-rpm,再重启下nginx或是apache,这里就看到php_info页面有gd扩展了

关于访问项目时可能会遇到的几个问题

一、Class ‘PDO’ not found

缺少pdo_mysql扩展

解决:前往php安装源码包,进入ext/pdo_mysql/下,
运行phpize 命令,如:

/usr/local/php/bin/phpize

然后编译执行安装

./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql/
参数说明:

–with-php-config=/usr/local/php/bin/php-config 指定安装 PHP 的时候的配置
–with-pdo-mysql=/usr/local/mysql/ 指定 MySQL 数据库的安装目录位置

编译完成后,会和安装gd扩展一样给出位置,在php.ini中配置好对应的扩展路径,重启php-fpm即可。
可以通过phpinfo()查看pdo_mysql是否安装成功。

二、SQLSTATE[HY000] [2002] No such file or directory

1、数据库配置出错这种低级错误请自行检查;
2、检查 mysql.sock 文件路径位置是否设置正确

打开 php.ini ,检查 default_socket 设置的路径是否正确

如启动 Mysql 后,使用 如下命令找到 mysql.sock 的路径

ps aux | grep -i mysql

输出

mysql 12388 0.0 0.2 390744 44636 pts/0 Sl 14:02 0:01 /opt/mysql/product/bin/mysqld –basedir=/opt/mysql/product –datadir=/opt/mysql/product/data –plugin-dir=/opt/mysql/product/lib/plugin –user=mysql –log-error=/opt/mysql/product/data/oracle1.err –pid-file=/opt/mysql/product/data/oracle1.pid –socket=/var/lib/mysql/mysqld.sock –port=3306

修改 php.ini 中,所有关于 “default_socket” 的所有路径为 “/var/lib/mysql/mysqld.sock”

修改后如下:

default_socket_timeout = 60
pdo_mysql.default_socket=/var/lib/mysql/mysqld.sock
mysql.default_socket =/var/lib/mysql/mysqld.sock
mysqli.default_socket =/var/lib/mysql/mysqld.sock

重启 php-fpm 服务器

3、关于Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version问题

解决办法:
php.ini的always_populate_raw_post_data’ 设置成 ‘-1’

其实就是把那句注释放开;

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值