正式环境数据迁移到测试环境及测试环境LAMP搭建

参照正式环境扩展模块来搭建测试环境,否则访问不了 PHP 代码

PDO、PDO_MYSQL、OPENSSL、SSL、CURL等扩展模块

正式环境

Windows Server 2008 R2 X64

Apache+MySQL+PHP+FTP服务

备份MySQL、PHP、APP数据

通过anv软件连接MySQL数据库备份

将 goshop数据库备份,格式为goshop.sql

通过Filezilla软件连接FTP服务,备份PHP及APP数据

正式环境数据备份好后,开始搭建测试环境,将数据上传至测试环境,导入数据

测试环境

阿里云主机Centos 6.5 X64 CPU:1核内存:2GB 硬盘:40GB

源码编译安装:

Libxml2-2.6.30.tar.gz

Libmcrypt-2.5.8.tar.gz

Zlib-1.2.8.tar.gz

Libpng-1.6.16.tar.gz

Jpegsrc.v9a.tar.gz

Freetype-2.6.3.tar.gz

Autoconf-2.69.tar.gz

Libgd-2.1.0.tar.gz

Apr-1.5.2.tar.gz

Apr-util-1.5.4.tar.gz

Pcre-8.38.tar.gz

Apache-2.2.24.tar.bz2

PHP-5.5.38.tar.gz

二进制安装:

Mysql-5.6.15-linux-glibc2.5-x86_64.tar.gz

LAMP环境搭建步骤:

YUM安装LAMP所需的环境

yum install –y makegcc gcc-c++ zlib-devel libtool libtool-ltdl libtool-ltdl-devel bisonncurses-devel

1、  编译安装libxml2

tar –zxf libxml2-2.6.30.tar.gz

cd libxml2-2.6.30

./configure –prefix=/usr/local/libxml2

make && make install

2、  编译安装libmcrypt

tar –zxf libmcrypt-2.5.8.tar.gz

cd libmcrypt-2.5.8

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

make && make install

3、  编译安装zlib

tar –zxf zlib-1.2.8.tar.gz

cd zlib-1.2.8

CFLAGS=”-O3 –fPIC” ./configure –prefix=/usr/local/zlib

make&& make install

4、  编译安装libpng

tar –zxf libpng-1.2.31.tar.gz

cd libpng-1.2.31

./configure –prefix=/usr/local/libpng –enable-shared

make && make install

5、  编译安装jpeg

tar –zxf jpegsrc.v9a.tar.gz

cd jpegsrc.v9a

mkdir/usr/local/jpeg

mkdir/usr/local/jpeg/bin

mkdir/usr/local/jpeg/lib

mkdir/usr/local/jpeg/include

make/usr/local/jpeg/man/man1 –p

./configure –prefix=/usr/local/jpeg–enable-shared –enable-static

make &&make install

6、  编译安装freetype

tar –zxf freetype-2.6.3.tar.gz

cd freetype-2.6.3

./configure –prefix=/usr/local/freetype –enable-shared

make && make install

7、  编译安装autoconf

tar –zxf autoconf-2.69.tar.gz

cd autoconf-2.69

./configure

make && make install

8、  编译安装GD

tar –zxf libgd-2.1.0.tar.gz

cd libgd-2.1.0

./configure –prefix=/usr/local/gd –with-zlib=/usr/local/zlib–with-jpeg=/usr/local/jpeg –with-png=/usr/local/libpng –with-freetype=/usr/local/freetype

make && make install

9、  编译安装apr

tar –zxf apr-1.5.2.tar.gz

cd apr-1.5.2.tar.gz

./configure –prefix=/usr/loca/apr

make && make install

10、编译安装apr-util

tar–zxf apr-util-1.5.4.tar.gz

cd apr-util-1.5.4

./configure–prefix=/usr/local/apr-util –with-apr=/usr/local/apr-util

make&& make install

11、编译安装pcre

tar –zxf pcre-8.38.tar.gz

cd pcre-8.38

./configure

make && make install

12、编译安装apache

tar –zxf apache-2.2.24.tar.gz

cd apache-2.2.24

./configure --prefix=/usr/local/apache2.2.24 --enable-so --enable-rewrite=shared --enable-cgi --enable-pcre --enable-ssl=shared --enable-mods-shared=all --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/

说明:

--enable-so    #支持动态共享模块,如果没有此功能,php 无法与 apache 一起工作,必须安装

--enable-rewrite    #支持 url 重写

--enable-cgi    #支持 cgi

--enable-pcre    #支持pcre

--enable-ssl    #启用 ssl 功能,不安装无法启用 https

--enable-mods-shared=all    #编译所有模块

--with-apr=/usr/local/apr    #指定apr库文件路径

--with-apr-util=/usr/local/apr-util/    #指定apr-util库文件路径

--with-mpm=worker    #指定apache工作模式

参加后面加上shared开启所有的共享(动态)编译模式,如果不加shared,则为静态编译模式

注意:mpm_开头的就是apache的mp工作模式,2.2版本的httpd默认的mpm工作模式为prefork。除了prefork外,常见的工作模式还有worker以及event。2.4版本的httpd默认是event工作模式。关于这几种工作模式的区别,可以参考一下 http://www.cnblogs.com/fnng/archive/2012/11/20/2779977.html

make && make install

cp–vRp /usr/local/apache2.2.24/bin/apachectl /etc/init.d/httpd

vim/etc/init.d/httpd 在第二行后面添加两行注释行

#chkconfig:2345 10 90

#description:Activates Apache Web Server

chkconfig–add httpd

chkconfig–level 2345 httpd on

servicehttpd start

启动apache服务时,提示告警

httpd: Could not reliablydetermine the server‘s fully qualified domain name, using

localhost.localdomainfor ServerName

解决办法:

vim/usr/local/apache/conf/httpd.config    添加一行

ServerName localhost:80

生成密钥和证书

直接进入到Apache安装目录下的conf目录;

建立三个文件(不然为网站服务器签署证书时候会报错):

mkdir newcerts

echo "01" > serial

touch index.txt

建立服务器密钥:

可以通过 openssl --help    查看命令的帮助

openssl genrsa -des3 1024 > server.key

输入口令:******

确定口令:******

从密钥中删除密码(以避免系统启动后被询问口令):

openssl rsa -in server.key > server2.key

输入server.key口令:******

替换文件:

mv server2.key server.key

建立服务器密钥请求文件:

openssl req -new -key server.key -out server.csr

建立服务器证书:

openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365

Apache添加SSL支持

打开apache安装目录下conf目录中的httpd.conf文件,找到   
#LoadModule ssl_module modules/mod_ssl.so   
#Include conf/extra/httpd_ssl.conf   
删除行首的配置语句注释符号“#”

打开apache安装目录下conf/extra目录中的httpd-ssl.conf文件   
在配置文件中查找以下配置语句   
SSLCertificateFile conf/ssl.crt/server.crt         将服务器证书配置到该路径下   
SSLCertificateKeyFile conf/ssl.key/server.key    将服务器证书私钥配置到该路径下

打开apache安装目录下conf/extra目录中的httpd-ssl.conf文件

修改端口 Listen 443

DocumentRoot "/var/www/html"    ssl的访问站点要跟http访问的站点目录要一致,否则https访问失败

打开apache安装目录下conf目录中的httpd.conf文件

DocumentRoot "/var/www/html"

重启服务

/usr/local/apache/bin/apachectl–t    检查httpd配置文件是否有误

servicehttpd restart

输入https://ip/网站进行验证,则表示已经支持ssl

注意:证书认证服务器,是需要另行购买的,以上步骤只是创建本地证书服务,只能当测试使用的,访问https会提示无效的证书,但是访问正常。比如:app需要推向苹果商店,一定要购买证书服务器,在linux服务器上指定证书路径,客户端访问就不会提示证书的问题,app才能在苹果商店审核通过,例如访问 https://www.baidu.com  直接就能访问了

执行以下命令,检查apache编译后加载的模块

/usr/local/apache2.2.24/bin/apachectl -M

ssl_mod(shared)    为共享(动态)模块

ssl_mod(static)    为静态模块,不共享

Loaded Modules:

core_module (static)

mpm_prefork_module (static)

http_module (static)

so_module (static)

authn_file_module (shared)

authn_dbm_module (shared)

authn_anon_module (shared)

authn_dbd_module (shared)

authn_default_module (shared)

authz_host_module (shared)

authz_groupfile_module (shared)

authz_user_module (shared)

authz_dbm_module (shared)

authz_owner_module (shared)

authz_default_module (shared)

auth_basic_module (shared)

auth_digest_module (shared)

dbd_module (shared)

dumpio_module (shared)

reqtimeout_module (shared)

ext_filter_module (shared)

include_module (shared)

filter_module (shared)

substitute_module (shared)

deflate_module (shared)

log_config_module (shared)

log_forensic_module (shared)

logio_module (shared)

env_module (shared)

mime_magic_module (shared)

cern_meta_module (shared)

expires_module (shared)

headers_module (shared)

ident_module (shared)

usertrack_module (shared)

unique_id_module (shared)

setenvif_module (shared)

version_module (shared)

ssl_module (shared)

mime_module (shared)

dav_module (shared)

status_module (shared)

autoindex_module (shared)

asis_module (shared)

info_module (shared)

cgi_module (shared)

dav_fs_module (shared)

vhost_alias_module (shared)

negotiation_module (shared)

dir_module (shared)

imagemap_module (shared)

actions_module (shared)

speling_module (shared)

userdir_module (shared)

alias_module (shared)

rewrite_module (shared)

php5_module (shared)

Syntax OK

13、安装mysql

清理系统自带的my.cnf文件,如/etc/my.cnf

rm –rf /etc/my.cnf

tar–zxf mysql-5.6.15-linux-glibc2.5-x86_64.tar.gz

mv mysql-5.6.15-linux-glibc2.5-x86_64 /usr/local/mysql

ls /usr/local/mysql/

bin目录包含客户端工具及mysqld

data目录存放数据库数据文件及日志文件

docs目录包含info格式的用户手册

include目录包含mysql头文件

lib目录包含相关lib库

mysql-test目录包含mysql的一些测试脚本文件

scripts目录存放mysql_install_db初始化文件

share目录存放各种支持文件,包括错误信息,语言编码支持,sql安装脚本等。

sqlbench目录存放benchmark脚本

support-file目录存放mysql配置文件模板

安装过程,权限设置

groupaddmysql

useradd–r –g mysql mysql

chown–R mysql.mysql /usr/local/mysql/.

初始化

cd/usr/local/mysql/

scripts/mysql_install_db–user=mysql

注:运行初始化脚本需在mysql安装目录下执行

启动mysql

chown–R root /usr/local/mysql/.

chown–R mysql /usr/local/mysql/data/

cp/usr/local/mysql/my.cnf /etc/my.cnf

/usr/local/mysql/bin/mysqld_safe–defaluts-file=/etc/my.cnf –user-mysql &

加入开机启动

cp/usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

chkconfig–add mysqld

chkconfig–level 35 mysqld on

/etc/init.d/mysqldrestart

加入环境变量

echo “export PATH=$PATH:/usr/local/mysql/bin”  >> /etc/profile

source /etc/profile

配置文件my.cnf

basedir = /usr/local/mysql

datadir =/usr/local/mysql/data

port = 3306

server_id = 1

socket =/tmp/mysql.sock

innodb_buffer_pool_size = 512M

内存使用限制

performance_schema_max_table_instances=400

table_definition_cache=400

table_open_cache=256

给mysql用户root设置密码

mysqladmin–uroot password ‘root123’                  密码自定义

mysql–uroot –proot123

14、编译安装PHP

tar –zxf php-5.5.38.tar.gz

cd php-5.5.38

./configure –prefix=/usr/local/php --with-apxs2=/usr/local/apache2.2.24/bin/apxs --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir=/usr/lcoa/libxml2 --with-png-dir=/usr/local/libpng --with-jpeg-dir=/usr/local/jpeg --with-freetype-dir=/usr/local/freetype --with-gd=/usr/local/gd --with-mcrypt=/usr/local/libmcrypt --with-config-file-path=/usr/local/php/etc --with-xpm-dir=/usr/lib64 --with-pdo-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --enable-pdo --enable-mbstring=all --enable-sockets --enable-exif --enable-openssl --with-curl=/usr/local/curl --with-php-config=/usr/local/php/bin/php-config

如果编译PHP时提示--with-culr=DIR    --with-php-config=DIR 错误,可以先将此参数去掉,编译好后,使用PHP扩展curl编译安装,请看下面介绍

说明

--with-apxs2:编译共享的apache2.0处理程序的模块

--with-mysqli:指定mysql安装路径,mysqli扩展模块

--with-pdo-mysql:指定mysql安装路径,pdo_mysql扩展模块

--enable-pdo:启动pdo扩展模块

--enable-openssl:启动https扩展模块

--with-curl:指定curl安装路径,PHP配置好修改php.ini配置文件,启动curl扩展模块

make

make test            会提示y/n,输入y回车,输入邮箱账号

make install

cp php.ini-development /usr/local/php/etc

编辑apache配置文件

vim/usr/local/apache/conf/httpd.conf

添加

AddTypeapplication/x-httpd-php .php

DirectoryIndexindex.html index.php

修改默认路径

DocumentRoot "/usr/local/apache2.2.23/htdocs"

<Directory"/usr/local/apache2.2.23/htdocs">

修改为

DocumentRoot "/var/www/html"

<Directory "/var/www/html">

打开php.ini文件

添加两行

extension=pdo.so

extension=pdo_mysql.so

去掉注释的行

将 ;date.timezone =     修改为 date.timezone = UTC

重启apache服务

service httpd restart

PHP扩展curl编译安装

步骤如下:

1. 进到对应扩展目录

# cd /usr/local/src/php-5.5.38/ext/curl

2. 调用phpize程序生成编译配置文件

# /usr/local/php/bin/phpize

3. 调用configure生成Makefile文件,然后调用make编译,make install安装

# ./configure -with-curl=/usr/local/curl -with-php-config=/usr/local/php5/bin/php-config

# make

# make install

4. 修改php配置文件

;修改扩展库目录extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/"

;添加curl扩展extension = curl.so

5. 重启Apache即可。

测试:

mkdir/var/www/html –p

vim/var/www/html/phpinfo.php

<?php

phpinfo();

?>

访问http://IP/phpinfo.php       返回结果为PHP页面,正常

访问https://IP/phpinfo.php       返回结果为PHP页面,正常

搭建vsftpd服务,上传备份数据

创建FTP用户

gogouophp

louis

yum install –y vsftpd

vim /etc/vsftpd/vsftpd

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

anon_upload_enable=NO

anon_mkdir_write_enable=NO

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

chroot_local_user=YES

listen=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

local_root=/var/www/html/

/etc/init.d/vsftpdstart

netstat–lnapt |grep vsftpd

上传备份数据后,将goshop.sql导入到数据库

mysql –uroot –proot123

创建数据库,指定编码格式,防止编码格式错误,导致访问出现乱码等错误

create database Gogou_data defaultcharacter set utf8 collate utf8_general_ci;

show databases;

授权用户访问数据库

grant all on *.* to ‘gogou‘@‘%‘ identifiedby ‘gogou123‘;

grant all on *.* to ‘gogouophp123‘@‘%‘identified by ‘gogou123‘;

刷新数据库

flush privileges;

导入数据库

mysql –uroot –proot123 Gogou_data < /var/www/html/goshop.sql

再次登录mysql查看数据库导入是否正常

mysql –uroot –proot123

use Gogou_data;

show tables;

select count(*) from cart;

数据库导入正常,导入数据完成

/usr/local/php/bin/php –m          查看php模块

[PHP Modules]

Core

ctype

curl

date

dom

ereg

exif

fileinfo

filter

gd

hash

iconv

json

libxml

mbstring

mcrypt

mysql

mysqli

openssl

pcre

PDO

pdo_mysql

pdo_sqlite

Phar

posix

Reflection

session

SimpleXML

soap

sockets

SPL

sqlite3

standard

tokenizer

xml

xmlreader

xmlwriter

zlib

[Zend Modules]

遇到的问题

http://IP/gomall/index.php/home/test/testdb出现以下问题,因为缺少pdo、pdo_mysql扩展模块导出访问出错,在编译php时,没有添加—with-pdo-mysql=[MYSQL_DIR] --enable-pdo 这两个参数,所以导致php安装完成后,缺少pdo和pdo_mysql扩展模块

解决办法:

方法一:

在已经编译好的php下添加pdo和pdo_mysql扩展模块

  • 安装pdo

首先查找pdo

find / -name “pdo”

进入pdo目录

cd /tmp/soft/php-5.5.38/ext/pdo    这是php-5.5.38.tar.gz解压包的路径,而不是已经编译好的php路径

/usr/loca/php/bin/phpize  利用已经编译好的php命令生成编译文件

./configure –with-php-config=/usr/local/php/bin/php-config–enable-pdo=shared

make

make test

make install

  • 安装pdo-mysql

wget http://pecl.php.Net/get/PDO_MYSQL-1.0.2.tgz   下载软件

tar–zxf PDO_MYSQL-1.0.2.tgz

cdPDO_MYSQL-1.0.2

/usr/loca/php/bin/phpize  利用已经编译好的php命令生成编译文件

./configure –with-php-config=/usr/local/php/bin/php-config–with-pdo-mysql=/usr/local/mysql

注:

--with-php-config:指定php安装路径

--with-pdo-mysql:指定mysql安装路径

make

make install

打开php.ini文件

添加两行

extension=pdo.so

extension=pdo_mysql.so

去掉注释的行

重启apache服务

service httpd restart

方法二:

重新编译php,加上—with-pdo-mysql和—enable-pdo参数

打开php.ini文件

添加两行

extension=pdo.so

extension=pdo_mysql.so

去掉注释的行

重启apache服务

service httpd restart

http://IP/gomall/index.php/home/test/testdb

出现访问数据库授权问题

解决办法:

方法一:

登录mysql数据库,给gogou用户授权,允许localhost登录

grant all on *.* to ‘gogou’@’localhost’identified by ‘gogou123’;

方法二:

修改config.php脚本文件

vim /var/www/html/gomall/Application/Common/Conf
将gogou用户修改为root用户和密码,因为mysql允许root本地登录

<?php

return array(

//‘配置项‘=>‘配置值‘

‘LOAD_EXT_CONFIG‘   => ‘sms,weixin‘,

‘DB_HOST‘ =>‘localhost‘,

//      ‘DB_NAME‘ =>‘test‘,

‘DB_NAME‘ =>‘Gogou_data‘,

‘DB_USER‘ => ‘root‘,

‘DB_PWD‘ =>‘******‘,

‘DB_TYPE‘ =>‘mysql‘,

//‘DB_PARAMS‘ => array(\PDO::ATTR_CASE => \PDO::CASE_NATURAL),//字段区分

大小写

‘HOST_NAME‘=>‘http://IP/gomall/‘,//域名

‘SCROE_MONEY‘=>0.1,//一个积分抵多少钱,单位元

//‘URL_MODEL‘   =>3,

);

http://IP/gomall/index.php/home/test/testdb

正常访问代码

注意:先确认正式环境的各服务的版本号,PHP扩展模块,再开始搭建测试环境,这样做起来比较轻松,不然就像我这样,缺少这个缺少哪个的,要一个一个去排错。

还有个需求没有完成……..

搭建git 服务,要与码云git 结合使用

时间: 2024-07-31 22:11:09

正式环境数据迁移到测试环境及测试环境LAMP搭建的相关文章

模块化之后的项目在正式环境中的数据迁移(含代码生成器)

先说下背景,项目以前一直使用EntityFramework中的自动迁移功能,虽然一开始就知道存在一些不妥的地方,但由于时间原因一直没有更改这个方式,而这一次由于协同开发的人越来越多不得不进行改造. 为什么不再使用EntityFramework的自动迁移功能 1.迁移过程不可控 EntityFramework自动迁移所生成的脚本我们不可见,并不知道执行了什么内容,这对正式运行的项目是一个很危险的因素. 2.可能存在表丢失的情况 因为项目是模块化的,所以当一些模块在特定的情况下(我们当然希望是100

Oracle RAC环境实时数据迁移

系统要求及安装前的说明 Oracle GoldenGate可以在Oracle不同版本间移动数据,也可以在Oracle和其它类型数据库之间移动数据.Oracle GoldenGate支持数据的过滤.映射和转换.Oracle还能在相似的Oracle数据库之间复制DDL操作.注意下面一句:当DDL支持被激活的时候,Oracle GoldenGate不支持数据的过滤.映射和转换. 支持的Oracle数据库版本,从9.2开始支持DML和DDL.支持几乎所有的主流操作系统,具体的可以从MOS(My Orac

生产环境下,oracle不同用户间的数据迁移。第二部分

任务名称:生产环境下schema ELON数据迁移至schema TIAN######################################## 测试二:测试参数remap_tablespace 导出schema ELON的全部数据:[[email protected] ~]$expdp system/xxxxxx SCHEMAS=ELON directory=EXPDP_DIR dumpfile =ELON_`date +"%Y%m%d%H%M%S"`.dmp logfil

细说Mammut大数据系统测试环境Docker迁移之路

欢迎访问网易云社区,了解更多网易技术产品运营经验. 前言 最近几个月花了比较多精力在项目的测试环境Docker迁移上,从最初的docker"门外汉"到现在组里的同学(大部分测试及少数的开发)都可以熟练地使用docker环境开展测试工作,中间也积累了一些经验和踩过不少坑,借此2017复盘的机会,总结一下整个环境的搭建过程,希望可以给其他有志于向docker迁移的项目提供些许参考,同时也想跟其他docker的老司机们一起探讨改进方式. Docker迁移的必要性 这篇文章不对docker的基

EF 第三篇 生产环境下的数据迁移

前言 本文所谓数据迁移,直白点不如说成数据库升级.虽然大部分带服务器型的应用,所有客户端都是连到同一台服务器上,对这样的生产环境,数据库升级起来不是什么难事,用vs自带的Migration也好,执行sql脚本也好,都比较容易.然而在每家客户现场都要部署一台服务器的应用也不少,如果一家家手工地去升级数据库,那将是一个可怕的工作量.那么对于这样的环境要怎么做到自动升级数据库呢?相信大家也在网上搜了不少了EF关于生产环境下的数据迁移方案,然后99%搜到的都是使用vs自带的Migration命令方式迁移

生产环境下,oracle不同用户间的数据迁移。第三部分

任务名称:生产环境下schema ELON数据迁移至schema TIAN########################################前期准备:1:确认ELON用户下的对象状态select owner,constraint_name,constraint_type,table_name,status,validated from dba_constraints where owner='ELON'owner constraint_name constraint_type ta

elasticsearch7.5.0+kibana-7.5.0+cerebro-0.8.5集群生产环境安装配置及通过elasticsearch-migration工具做新老集群数据迁移

一.服务器准备 目前有两台128G内存服务器,故准备每台启动两个es实例,再加一台虚机,共五个节点,保证down一台服务器两个节点数据不受影响. 二.系统初始化 参见我上一篇kafka系统初始化:https://www.cnblogs.com/mkxfs/p/12030331.html 三.安装elasticsearch7.5.0 1.因zookeeper和kafka需要java启动 首先安装jdk1.8环境 yum install java-1.8.0-openjdk-devel.x86_64

ESX环境打通2套SAN存储交换机实现数据迁移

因vmware集群升级,需要将旧集群存储中的数据迁移到新集群的存储中,要求热迁移,尽可能的不中断业务,或短时间中断.有多种实现方式:1.将2套SAN交换机级联,使2个平台主机能看到对方的存储.(部分SAN交换机不支持与外厂交换机互联,像浪潮5800. 支持的型号有浪潮5610,博科交换机等)2.使用一台服务器进行存储中转.3.使用SAN交换机直连对方的存储控制器. 如有其他更好的方式,欢迎留言交流. 原文地址:https://blog.51cto.com/gaodi2002/2353983

MySQL数据迁移到MSSQL-以小米数据库为例-测试828W最快可达到2分11秒

这里采用.NET Framework 4.0以上版本中新出现的 ConcurrentQueue<T> 类 MSDN是这样描述的: ConcurrentQueue<T> 类是一个线程安全的先进先出 (FIFO) 集合. ConcurrentQueue<T> 的所有公共且受保护的成员都是线程安全的,可从多个线程同时使用. 共采用两个线程,一个读一个写. ConcurrentQueue<T>的实现方法: (FIFO) 集合: ConcurrentQueue<