lamp架构

lamp架构

lamp架构就是在linux中由apache+mysql/mariadb+php/perl/python的一个web架构组成的一种动态网站。

web服务器工作流程

web服务器的资源分为两种,静态和动态

  • 静态资源就是静态的内容,客户端从服务器获得的资源的表现与原文件相同,静态资源没有后端对其的处理(没有开发语言对其处理),例如.html和.htm。
  • 动态资源则通常使程序文件,需要在接受到请求后,程序对请求进行处理然后再返回给客户端,例如.jps,.aspx,.net。
    在这里插入图片描述
    工作流程:
    客户端通过http协议向web服务器发送请求,web服务器收到请求后判断客户端请求的使静态资源还是动态资源,如果是静态资源则直接从本地文件中取出返回给客户端,若是动态资源则通过FastCGI协议将请求交给php服务器的CGI的master进程将请求分配给worker进程来执行,以获得客户端请求的动态资源,并将执行的结果通过FastGCI协议返回给httpd服务器,httpd服务器收到php执行的结果后,将其封装成http报文响应给客户端。在执行程序获取动态资源时,若需要获取数据库中的资源,则由php服务器从MySQL/mariadb服务器中取出。整个过程中httpd服务器不与mysql/mariadb进行交互

cgi和fastcgi

CGI(Common Gateway Interface,通用网关接口),CGI是外部应用程序(CGI程序)与WEB服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的过程。CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。
FastCGI(Fast Common Gateway Interface)是CGI的改良版,CGI是通过启用一个解释器进程来处理每个请求,耗时且耗资源,而FastCGI则是通过master-worker形式来处理每个请求,即启动一个master主进程,然后根据配置启动几个worker进程,当请求进来时,master会从worker进程中选择一个去处理请求,这样就避免了重复的生成和杀死进程带来的频繁cpu上下文切换而导致耗时。

httpd与php结合的方式

httpd与php结合的方式有以下三种:
modules:php将以httpd的扩展模块形式存在,需要加载动态资源时,httpd可以直接通过php模块来加工资源并返回给客户端
httpd prefork:libphp5.so(多进程模型的php)
httpd event or worker:libphp5-zts.so(线程模型的php)
CGI:httpd需要加载动态资源时,通过CGI与php解释器联系,获得php执行的结果,此时httpd负责与php连接的建立和断开等。
FastCGI:利用php-fpm机制,启动为服务进程,php自行运行为一个服务,https通过socket与php通信。

lamp的搭建

php要求httpd使用perforek MPM工作模型

在同一台服务器上搭建

安装apache

安装编译器和所需要的工具等

[root@localhost ~]# dnf -y install gcc gcc-c++ pcre-devel zlib-devel openssl openssl-devel make expat-devel libtool
[root@localhost ~]# dnf -y groups mark install 'Development Tools'

解压rpm包

[root@localhost ~]# tar xf apr-1.7.0.tar.bz2 
[root@localhost ~]# tar xf apr-util-1.6.1.tar.bz2
[root@localhost ~]# tar xf httpd-2.4.43.tar.bz2
[root@localhost ~]# ls
anaconda-ks.cfg    apr-util-1.6.1          httpd-2.4.43.tar.bz2
apr-1.7.0          apr-util-1.6.1.tar.bz2
apr-1.7.0.tar.bz2  httpd-2.4.43

编译安装
因为httpd依赖apr-util-1.6.1,而apr-util-1.6.1又依赖apr-1.7.0所以安装顺序为apr-1.7.0,apr-util-1.6.1,httpd-2.4.43
将apr-1.7.0下的configure中的RM "$cfgfile"删除或者注释掉

编译按装apr-1.7.0

[root@localhost apr-1.7.0]# ./configure --prefix=/usr/local/apr
[root@localhost apr-1.7.0]# make
[root@localhost apr-1.7.0]# make install

编译安装apr-util-1.6.1

[root@localhost apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@localhost apr-util-1.6.1]# make
[root@localhost apr-util-1.6.1]# make install

检测apache的编译环境并且配置所需要的功能并安装

[root@localhost httpd-2.4.43]# ./configure --prefix=/usr/local/apache \
--sysconfdir=/etc/httpd24 \
--enable-so \
--enable-ssl \
--enable-cgi \
--enable-rewrite \
--with-zlib \
--with-pcre \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util/ \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=prefork
[root@localhost httpd-2.4.43]# make
[root@localhost httpd-2.4.43]# make install

创建用户和组并设置属组和属主

[root@localhost httpd-2.4.43]# useradd -r -M -s /sbin/nologin -g apache apache
[root@localhost httpd-2.4.43]# chown -R apache.apache /usr/local/apache/

配置环境变量帮助文档和头文件

[root@localhost ~]# echo 'export PATH=/usr/local/apache/bin:$PATH' > /etc/profile.d/httpd.sh
[root@localhost ~]# source /etc/profile.d/httpd.sh
[root@localhost ~]# ln -s /usr/local/apache/include/ /usr/include/httpd
[root@localhost ~]# echo 'MANPATH /usr/local/apache/man' >> /etc/man.config

取消ServerName的注释

[root@localhost ~]# sed -i '/#ServerName/s/#//g' /etc/httpd24/httpd.conf 

写apache的service文件

[root@localhost ~]# cat << EOF >> /etc/systemd/system/httpd.service
> Description=Start httpd
> [Service]
> Type=simple
> EnvironmentFile=/etc/httpd24/httpd.conf
> ExecStart=/usr/local/apache/bin/httpd -k start -DFOREGROUND
> ExecReload=/usr/local/apache/bin/httpd -k graceful
> ExecStop=/bin/kill -WINCH ${MAINPID}
> [Install]
> WantedBy=multi-user.target
> EOF

启动apache

[root@localhost system]# systemctl start httpd
[root@localhost system]# systemctl status httpd
● httpd.service
   Loaded: loaded (/etc/systemd/system/httpd.service; disabled;>
   Active: active (running) since Tue 2021-04-20 20:34:47 CST; >
 Main PID: 53212 (httpd)
    Tasks: 6 (limit: 8756)
   Memory: 4.9M
   CGroup: /system.slice/httpd.service
           ├─53212 /usr/local/apache/bin/httpd -k start -DFOREG>
           ├─53213 /usr/local/apache/bin/httpd -k start -DFOREG>
           ├─53214 /usr/local/apache/bin/httpd -k start -DFOREG>
           ├─53215 /usr/local/apache/bin/httpd -k start -DFOREG>
           ├─53216 /usr/local/apache/bin/httpd -k start -DFOREG>
           └─53217 /usr/local/apache/bin/httpd -k start -DFOREG>
四月 20 20:34:47 localhost.localdomain systemd[1]: Started http>
四月 20 20:34:47 localhost.localdomain httpd[53212]: AH00558: h>

关闭防火墙和selinux

[root@localhost ~]# systemctl disable firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

查看80端口是否开启

[root@localhost system]# ss -anlt
State            Recv-Q           Send-Q                     Local Address:Port                     Peer Address:Port          Process           
LISTEN           0                128                              0.0.0.0:22                            0.0.0.0:*                               
LISTEN           0                128                                    *:80                                  *:*                               
LISTEN           0                128                                 [::]:22                               [::]:*     

安装mysql

安装依赖包

[root@localhost ~]# dnf -y install ncurses-devel openssl-devel openssl cmake mariadb-devel

创建用户

[root@localhost mysql]# useradd -r -M -s /sbin/nologin mysql

解压至指定目录

[root@localhost mysql]# tar xf mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz -C /usr/local

创建软链接或者修改目录名

[root@localhost local]# mv mysql-5.7.33-linux-glibc2.12-x86_64/ mysql
[root@localhost local]# ls
apache  apr-util  etc    include  lib64    mysql  share
apr     bin       games  lib      libexec  sbin   src

修改属主和属组

[root@localhost local]# chown -R mysql.mysql /usr/local/mysql/
[root@localhost local]# ll
drwxr-xr-x.  9 mysql mysql 129 五月    4 20:40 mysql

设置环境变量(因为不是用yum装的,找不到mysql程序)

[root@localhost mysql]# vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH
[root@localhost mysql]# . /etc/profile.d/mysql.sh
[root@localhost mysql]# which mysql
/usr/local/mysql/bin/mysql

创建存放数据的目录并修改属主属组
需要一个空间大的目录,或者将目录创建后将硬盘设备挂载在此目录上

[root@localhost mysql]# mkdir /opt/mysql_data
[root@localhost mysql]# chown -R mysql.mysql /opt/mysql_data/
[root@localhost mysql]# ll /opt
drwxr-xr-x. 2 mysql mysql 6 五月    4 20:58 mysql_data

初始化并保存密码

[root@localhost mysql]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/opt/mysql_data/		//初始化	控制mysql的用户		数据存放目录
2021-05-04T13:01:07.403961Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2021-05-04T13:01:07.683107Z 0 [Warning] InnoDB: New log files created, LSN=45790
2021-05-04T13:01:07.739366Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2021-05-04T13:01:07.746720Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: caa21b8a-acd8-11eb-b7ab-000c294bb269.
2021-05-04T13:01:07.747895Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2021-05-04T13:01:09.096727Z 0 [Warning] CA certificate ca.pem is self signed.
2021-05-04T13:01:09.485357Z 1 [Note] A temporary password is generated for root@localhost: q_UG8?3sa/l%
[root@localhost mysql]# vim password
q_UG8?3sa/l%

写配置文件

[root@localhost mysql]# vim /etc/my.cnf
[mysqld]
basedir = /usr/local/mysql			//程序位置
datadir = /opt/mysql_data			//数据存放位置
socket = /tmp/mysql.sock			//文件套接字位置
port = 3306									//端口
pid-file = /opt/mysql_data/mysql.pid		//进程文件位置
user = mysql								//用户
skip-name-resolve						//跳过域名解析,即直接在内网使用ip连接数据库

配置启动脚本和开机自启

[root@localhost ~]# cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@localhost ~]# sed -ri 's#^(basedir=).*#\1/usr/local/mysql#g' /etc/init.d/mysqld
[root@localhost ~]# sed -ri 's#^(datadir=).*#\1/opt/mysql_data#g' /etc/init.d/mysqld
[root@localhost mysql]# head -47 /etc/init.d/mysqld |tail -2
basedir=/usr/local/mysql
datadir=/opt/mysql_data
[root@localhost mysql]# service mysqld start
Starting MySQL.Logging to '/opt/data/localhost.localdomain.err'.
 SUCCESS! 
[root@localhost mysql]# chkconfig  mysqld on
[root@localhost mysql]# chkconfig --list
Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.
      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.
mysqld         	0:off	1:off	2:on	3:on	4:on	5:on	6:off
[root@localhost mysql]# ss -anlt
State   Recv-Q  Send-Q    Local Address:Port     Peer Address:Port  Process  
LISTEN  0       128             0.0.0.0:22            0.0.0.0:*              
LISTEN  0       128                   *:443                 *:*              
LISTEN  0       80                    *:3306                *:*              
LISTEN  0       128                   *:80                  *:*              
LISTEN  0       128                [::]:22               [::]:*              

头文件和库文件配置

[root@localhost mysql]# ln -s /usr/local/mysql/include /usr/include/mysql						
[root@localhost mysql]# vim /etc/ld.so.conf.d/mysql.conf
/usr/local/mysql/lib
[root@localhost mysql]# ldconfig			//重新读取配置文件

启动并设置密码

[root@localhost local]# mysql -uroot -p
mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory		//缺少包
[root@localhost local]# dnf provides libncurses.so.5						//查看包所依赖的类库
Warning: failed loading '/etc/yum.repos.d/mssql-server.repo', skipping.
ncurses-compat-libs-6.1-7.20180224.el8.i686 : Ncurses compatibility libraries
Repo        : baseos
Matched from:
Provide    : libncurses.so.5
[root@localhost local]# dnf -y install ncurses-compat-libs
[root@localhost local]# cat password
/sdjtceDy7F7
[root@localhost local]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.33
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> 

安装php

安装php

[root@localhost ~]# dnf -y install php*

启动php-fpm

[root@localhost ~]# service php-fpm start

监听端口并重启服务

[root@localhost ~]# vim /etc/php-fpm.d/www.conf 
[root@localhost ~]# head -38 /etc/php-fpm.d/www.conf |tail -2
listen = /run/php-fpm/www.sock
listen = 0.0.0.0:9000
[root@localhost ~]# service php-fpm restart
[root@localhost ~]# ss -anlt
State   Recv-Q  Send-Q   Local Address:Port   Peer Address:Port Process 
LISTEN  0       128            0.0.0.0:9000        0.0.0.0:*            
LISTEN  0       128            0.0.0.0:22          0.0.0.0:*            
LISTEN  0       80                   *:3306              *:*            
LISTEN  0       128                  *:80                *:*            
LISTEN  0       128               [::]:22             [::]:*         

配置apache

在apache的主配置文件中取消以下注释即可配置虚拟主机

Include /etc/httpd24/extra/httpd-vhosts.conf

在apache的主配置文件中取下以下两行注释开启apache的代理模块

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

在apache主配置文件中添加以下两行

AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .phe  					//添加此行
AddType application/x-httpd-php-source .phps		//添加此行

在apache的主配置文件中找到以下代码,在index.html前面添加index.php使apaache服务能够第一个找到php的初始页面

<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>

创建php页面的初始页面的根目录,并且写一个php测试页

[root@localhost ~]# mkdir /usr/local/apache/htdocs/hanao
[root@localhost ~]# cd /usr/local/apache/htdocs/hanao
[root@localhost hanao]# vim index.php
<?php
        phpinfo();
?>

配置虚拟主机

<VirtualHost *:80>
    DocumentRoot "/usr/local/apache/htdocs/hanao"
    ServerName www.hanao.com
    ProxyRequests Off
    ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/apache/h
tdocs/hanao/$1
    <Directory "/usr/local/apache/htdocs/hanao">
        Options none
        AllowOverride none
        Require all granted
    </Directory>
    ErrorLog "logs/dummy-host.example.com-error_log"
    CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>

效果图:
在这里插入图片描述

在多台主机上搭建

apache主机的配置

安装编译器和所需要的工具等

[root@localhost ~]# dnf -y install gcc gcc-c++ pcre-devel zlib-devel openssl openssl-devel make expat-devel libtool
[root@localhost ~]# dnf -y groups mark install 'Development Tools'

解压rpm包

[root@localhost ~]# tar xf apr-1.7.0.tar.bz2 
[root@localhost ~]# tar xf apr-util-1.6.1.tar.bz2
[root@localhost ~]# tar xf httpd-2.4.43.tar.bz2
[root@localhost ~]# ls
anaconda-ks.cfg    apr-util-1.6.1          httpd-2.4.43.tar.bz2
apr-1.7.0          apr-util-1.6.1.tar.bz2
apr-1.7.0.tar.bz2  httpd-2.4.43

编译安装
因为httpd依赖apr-util-1.6.1,而apr-util-1.6.1又依赖apr-1.7.0所以安装顺序为apr-1.7.0,apr-util-1.6.1,httpd-2.4.43
将apr-1.7.0下的configure中的RM "$cfgfile"删除或者注释掉

编译按装apr-1.7.0

[root@localhost apr-1.7.0]# ./configure --prefix=/usr/local/apr
[root@localhost apr-1.7.0]# make
[root@localhost apr-1.7.0]# make install

编译安装apr-util-1.6.1

[root@localhost apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@localhost apr-util-1.6.1]# make
[root@localhost apr-util-1.6.1]# make install

检测apache的编译环境并且配置所需要的功能并安装

[root@localhost httpd-2.4.43]# ./configure --prefix=/usr/local/apache \
--sysconfdir=/etc/httpd24 \
--enable-so \
--enable-ssl \
--enable-cgi \
--enable-rewrite \
--with-zlib \
--with-pcre \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util/ \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=prefork
[root@localhost httpd-2.4.43]# make
[root@localhost httpd-2.4.43]# make install

创建用户和组并设置属组和属主

[root@localhost httpd-2.4.43]# useradd -r -M -s /sbin/nologin -g apache apache
[root@localhost httpd-2.4.43]# chown -R apache.apache /usr/local/apache/

配置环境变量帮助文档和头文件

[root@localhost ~]# echo 'export PATH=/usr/local/apache/bin:$PATH' > /etc/profile.d/httpd.sh
[root@localhost ~]# source /etc/profile.d/httpd.sh
[root@localhost ~]# ln -s /usr/local/apache/include/ /usr/include/httpd
[root@localhost ~]# echo 'MANPATH /usr/local/apache/man' >> /etc/man.config

取消ServerName的注释

[root@localhost ~]# sed -i '/#ServerName/s/#//g' /etc/httpd24/httpd.conf 

写apache的service文件

[root@localhost ~]# cat << EOF >> /etc/systemd/system/httpd.service
> Description=Start httpd
> [Service]
> Type=simple
> EnvironmentFile=/etc/httpd24/httpd.conf
> ExecStart=/usr/local/apache/bin/httpd -k start -DFOREGROUND
> ExecReload=/usr/local/apache/bin/httpd -k graceful
> ExecStop=/bin/kill -WINCH ${MAINPID}
> [Install]
> WantedBy=multi-user.target
> EOF

启动apache

[root@localhost system]# systemctl start httpd
[root@localhost system]# systemctl status httpd
● httpd.service
   Loaded: loaded (/etc/systemd/system/httpd.service; disabled;>
   Active: active (running) since Tue 2021-04-20 20:34:47 CST; >
 Main PID: 53212 (httpd)
    Tasks: 6 (limit: 8756)
   Memory: 4.9M
   CGroup: /system.slice/httpd.service
           ├─53212 /usr/local/apache/bin/httpd -k start -DFOREG>
           ├─53213 /usr/local/apache/bin/httpd -k start -DFOREG>
           ├─53214 /usr/local/apache/bin/httpd -k start -DFOREG>
           ├─53215 /usr/local/apache/bin/httpd -k start -DFOREG>
           ├─53216 /usr/local/apache/bin/httpd -k start -DFOREG>
           └─53217 /usr/local/apache/bin/httpd -k start -DFOREG>
四月 20 20:34:47 localhost.localdomain systemd[1]: Started http>
四月 20 20:34:47 localhost.localdomain httpd[53212]: AH00558: h>

关闭防火墙和selinux

[root@localhost ~]# systemctl disable firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

查看80端口是否开启

[root@localhost system]# ss -anlt
State            Recv-Q           Send-Q                     Local Address:Port                     Peer Address:Port          Process           
LISTEN           0                128                              0.0.0.0:22                            0.0.0.0:*                               
LISTEN           0                128                                    *:80                                  *:*                               
LISTEN           0                128                                 [::]:22                               [::]:*     

在apache主机的主配置文件中取消以下注释即可配置虚拟主机

Include /etc/httpd24/extra/httpd-vhosts.conf

在apache主机的主配置文件中取下以下两行注释开启apache的代理模块

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

在apache的主配置文件中找到以下代码,在index.html前面添加index.php使apaache服务能够第一个找到php的初始页面

<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>

在apache主配置文件中添加以下两行

AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .phe  					//添加此行
AddType application/x-httpd-php-source .phps		//添加此行

创建虚拟主机的根目录并设置属组为apache

[root@localhost httpd-2.4.43]# mkdir /usr/local/php
[root@localhost httpd-2.4.43]# mkdir /usr/local/php/hanao
[root@localhost local]# chown -R apache.apache php

配置虚拟主机

<VirtualHost *:80>
    DocumentRoot "/usr/local/php/hanao"
    ServerName www.hanao.com
    DirectoryIndex index.php
    ProxyRequests Off
    ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.247.211:9000/usr/local
/php/hanao/$1
    <Directory "/usr/local/php/hanao/">
        Options none
        AllowOverride none
        Require all granted
    </Directory>
    ErrorLog "logs/dummy-host.example.com-error_log"
    CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>

php主机的配置

安装php

[root@localhost ~]# dnf -y install php*

启动php-fpm

[root@localhost ~]# service php-fpm start

监听端口并重启服务

[root@localhost ~]# vim /etc/php-fpm.d/www.conf 
[root@localhost ~]# head -38 /etc/php-fpm.d/www.conf |tail -2
;listen = /run/php-fpm/www.sock			//用;注释掉此行
listen = 0.0.0.0:9000
……
;listen.allowed_clients = 127.0.0.1	//用;注释掉此行表示允许所有主机连接
[root@localhost ~]# service php-fpm restart
[root@localhost ~]# ss -anlt
State   Recv-Q  Send-Q   Local Address:Port   Peer Address:Port Process 
LISTEN  0       128            0.0.0.0:9000        0.0.0.0:*            
LISTEN  0       128            0.0.0.0:22          0.0.0.0:*            
LISTEN  0       80                   *:3306              *:*            
LISTEN  0       128                  *:80                *:*            
LISTEN  0       128               [::]:22             [::]:*         

在php主机下创建/usr/loca/php/hanao/index.php的测试页面并且联级设置php目录属主和属组为apache

[root@localhost ~]# mkdir /usr/local/php
[root@localhost ~]# mkdir /usr/local/php/hanao
[root@localhost ~]# vim /usr/local/php/hanao/index.php
<?php
        phpinfo();
?>

测试页面:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值