ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ecx单机部署方案

2022-04-18 12:01:52  阅读:312  来源: 互联网

标签:www 单机 部署 espier -- Copied php php72 ecx


单机部署方案       约定 服务清单
  •   supervisorctl > 3.0
  •   neo4j 3.5.x
  •   mysql 5.7
  •   nginx + fpm
  •   npm > 6.0
  •   redis ~ 4.x
  •   php 7.2
基础服务部署 调整时间 1 timedatectl set-timezone Asia/Shanghai   Copied! 安装sudo 1 yum install sudo   Copied! 安装PHP 1 yum -y install epel-release 2 yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm 3 yum install yum-utils 4 yum-config-manager --enable remi-php72 5 ​ 6 yum install php72 \ 7 php72-php-gd \ 8 php72-php-json \ 9 php72-php-mbstring \ 10 php72-php-mysqlnd \ 11 php72-php-xml \ 12 php72-php-opcache \ 13 php72-php-bcmath \ 14 php72-php-pecl-swoole \ 15 php72-php-pecl-mongodb \ 16 php72-php-pecl-zip \ 17 php72-php-pecl-redis4 \ 18 php72-php-pcntl \ 19 php72-php-pecl-apcu 20 ​ 21 ln /opt/remi/php72/root/usr/bin/php /usr/bin/php   Copied! 验证 1 php --version 2 php --modules   Copied! 安装composer 1 curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer 2 /usr/bin/composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/   Copied! 安装supervisor 版本对于3.0 安装supervisor 1 yum install -y epel-release 2 yum install -y supervisor   Copied! 开启supervisorctl 1 systemctl enable supervisord.service   Copied! 创建用户和组 1 groupadd www 2 useradd --shell /sbin/nologin -g www www   Copied! 安装php-fpm 安装php-fpm 1 yum install php72-php-fpm   Copied! 开启php-fpm 1 systemctl enable php72-php-fpm.service   Copied! 修改用户权限, 将用户和组从apache 改为www 1 /etc/opt/remi/php72/php-fpm.d/www.conf   Copied! 1 user = www 2 group = www   Copied! 安装npm
  1. 1. 添加Node.js Yum仓库 1 curl -sL https://rpm.nodesource.com/setup_12.x | bash -   Copied!
  2. 2. 安装Node.js 1 yum install -y nodejs   Copied!
  3. 3. 检查Node.js和NPM版本 1 node -v 2 ​ 3 v12.6.0 4 Also, check the version of npm. 5 ​ 6 npm -v 7 ​ 8 6.9.0   Copied!
参考: How To Install Latest Nodejs on CentOS/RHEL 7/6​ 安装nginx 安装nginx 1 yum install nginx   Copied! 开启nginx 1 systemctl enable nginx.service   Copied! 安装crontabs 1 yum install crontabs   Copied! 1 systemctl enable crond.service   Copied! 1 systemctl start crond.service   Copied! 安装redis 安装redis 1 yum install -y redis   Copied! 开启redis 1 yum enable redis   Copied! 修改配置文件/etc/redis.conf 1 # requirepass foobared 2 requirepass #指定密码为 redis1234   Copied! 启动redis 1 systemctl start redis   Copied! 测试 1 redis-cli -h 127.0.0.1 -a redis1234 2 keys *   Copied! 安装neo4j
  1. 1. 导入签名并且添加neo4j的源到本地centos源中 1 rpm --import https://debian.neo4j.org/neotechnology.gpg.key 2 cat <<EOF> /etc/yum.repos.d/neo4j.repo 3 [neo4j] 4 name=Neo4j RPM Repository 5 baseurl=https://yum.neo4j.org/stable 6 enabled=1 7 gpgcheck=1 8 EOF   Copied!
  2. 2. 安装neo4j
    •   用root权限安装neo4j社区版 1 yum install neo4j-3.5.7   Copied!
  3. 3. 运行以下命令会返回已安装的Neo4j的版本: 1 rpm -qa | grep neo4j   Copied!
  4. 4. 修改默认密码 生产环境使用时需要修改初始密码, 否则会安装使用时报错. 1 # neo4j-admin set-initial-password <password> 2 neo4j-admin set-initial-password neo4j1234   Copied!
安装mysql   如果使用云方提供的RDS, 请忽略安装 添加mysql7的源到本地centos源中 1 yum install -y https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm   Copied! 安装mysql 1 yum install -y mysql-server   Copied! 修改配置文件/etc/my.conf(配置位置取决于安装方式)   如果使用阿里云的RDS可以忽略此步骤 1 sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'   Copied! 开启mysql 1 systemctl enable mysqld   Copied! 启动mysql 1 systemctl start mysqld   Copied! 在安装过程中,为MySQLroot用户生成一个临时密码 1 grep 'temporary password' /var/log/mysqld.log   Copied! 输出: 1 2016-12-01T00:22:31.416107Z 1 [Note] A temporary password is generated for root@localhost: mqRfBU_3Xk>r   Copied! 请记录下密码, 在此例里中为mqRfBU_3Xk>r 1 mysql_secure_installation   Copied! 会提示你输入默认的root密码, 输入好后, 会被要求改掉密码. 输出 1 The existing password for the user account root has expired. Please set a new password. 2 ​ 3 New password:   Copied! 输入一个新的12个字符的密码,该密码至少包含一个大写字母、一个小写字母、一个数字和一个特殊字符。在提示时重新输入. 在此例中设置为, Wka25ijklmng0ada-x 您将收到关于新密码强度的反馈,然后您将立即被提示再次更改密码. 输出 1 Estimated strength of the password: 100 2 Change the password for root ? (Press y|Y for Yes, any other key for No) :   Copied! 我们将按下Y,然后进入所有后续问题,以便删除匿名用户、禁止远程根登录、删除测试数据库并访问它,并重新加载特权表. 命令行连接mysql 1 mysql -uroot -p"Wka25ijklmng0ada-x"   Copied! 创建应用数据库 1 CREATE DATABASE espier_bloated CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;   Copied! 参考: How To Install MySQL on CentOS 7​ 系统应用部署 部署几部分 商家端(VUE) + API端 配置授权 安装swoole-loader 确认PHP扩展目录 1 # php -r 'phpinfo();' | grep -i '^extension_dir' 2 ​ 3 extension_dir => /opt/remi/php72/root/usr/lib64/php/modules => /opt/remi/php72/root/usr/lib64/php/modules   Copied! 本例中为/opt/remi/php72/root/usr/lib64/php/modules 1 curl https://business.swoole.com/static/loader2.0.0/swoole_loader72.so > /opt/remi/php72/root/usr/lib64/php/modules/swoole_loader72.so   Copied! php扩展配置文件位置 1 # php -r 'phpinfo();' | grep -i 'Scan this dir for additional' 2 ​ 3 Scan this dir for additional .ini files => /etc/opt/remi/php72/php.d   Copied! 设置授权   注意配置license的正确位置, 默认license.zl在代码包(espier-bloated)根目录下 1 { \ 2 echo "extension=swoole_loader72.so"; \ 3 echo "swoole_license_files=/var/www/html/license.zl"; \ 4 } > /etc/opt/remi/php72/php.d/60-swoole_loader.ini   Copied! 重启fpm 1 systemctl enable php72-php-fpm.service   Copied! 部署API服务(php) 配置 后端代码 1 mkdir -p /var/www/espier-bloated 2 chown -R www:www /var/www/espier-bloated   Copied! 放置代码到/var/www/espier-bloated目录中 修改配置.env, 拷贝.env.production文件做为模版.
  1. 1. 配置数据库 1 DB_HOST=127.0.0.1 2 DB_PORT=3306 3 DB_DATABASE=espier_bloated 4 DB_USERNAME=root 5 DB_PASSWORD=Wka25ijklmng0ada-x   Copied!
  2. 2. 配置REDIS 1 # REDIS 相关配置 2 REDIS_CLIENT=predis 3 REDIS_HOST=redis-ali-espier-master 4 REDIS_PASSWORD=redis1234 5 REDIS_MEMBERS_PORT=6379   Copied!
  3. 3. 配置队列 1 QUEUE_DRIVER=redis   Copied!
  4. 4. 配置neo4j 1 NEO4J_DEFAULT_PROTOCOL=bolt 2 NEO4J_DEFAULT_HOST=127.0.0.1 3 NEO4J_DEFAULT_PORT=7687 4 NEO4J_DEFAULT_USERNAME=neo4j 5 NEO4J_DEFAULT_PASSWORD=neo4j1234   Copied!
  5. 5. 配置缓存 1 CACHE_DRIVER=redis   Copied!
  6. 6. 配置七牛 ​如何获取Access Key和Secret Key​ ​icon.png​ 1 # 图片CDN域名 2 QINIU_IMAGE_DOMAIN=b-img-cdn.yuanyuanke.cn 3 # 图片bucket 4 QINIU_IMAGE_NAME=espier-images 5 # 导入导出文件CDN域名 6 QINIU__FILE_DOMAIN=https://b-import-cdn.yuanyuanke.cn 7 导入导出bucket 8 QINIU_FILE_NAME=espier-import-files 9 # 七牛Access Key 10 QINIU_ACCESS_KEY= 11 # 七牛Secret Key 12 QINIU_SECRET_KEY=   Copied!
  7. 7. 配置微信开放平台第三方平台相关配置 需要根据实际 1 # 微信开放平台对应第三方平台APPID 2 WECHAT_APPID= 3 # 微信开放平台对应第三方平台APPSECRET 4 WECHAT_SECRET= 5 # 微信开放平台对应第三方平台 消息校验Token 6 WECHAT_TOKEN= 7 # 微信开放平台对应第三方平台 消息加解密Key 8 WECHAT_AES_KEY= 9 WECHAT_DEBUG=true   Copied!
  8. 8. 配置商城小程序模版 模版ID, 需要添加到小程序模版库,获得模版ID, 参考:开发者平台小程序模板​ 1 # 商城小程序模版相关配置 2 # 小程序模版ID号 3 YYKWEISHOP_TEMPLATE_ID= 4 # 小程序模版版本 5 YYKWEISHOP_VERSION= 6 # request合法域名 7 YYKWEISHOP_REQUESTDOMAIN=https://b.yuanyuanke.cn 8 # socket合法域名 9 YYKWEISHOP_WSREQUESTDOMAIN=wss://b-websocket.yuanyuanke.cn 10 # uploadFile(上传文件)合法域名 11 YYKWEISHOP_UPLOADDOMAIN=https://b.yuanyuanke.cn 12 # downloadFile(下载文件)合法域名 13 YYKWEISHOP_DOWNLOADDOMAIN1=https://mmbiz.qpic.cn 14 YYKWEISHOP_DOWNLOADDOMAIN2=https://b.yuanyuanke.cn 15 YYKWEISHOP_DOWNLOADDOMAIN3=https://wx.qlogo.cn   Copied!
  9. 9. 配置腾讯位置服务
  腾讯位置服务需要申请账号配置KEY, KEY对接口的访问是有配额的, 配额内是免费的. 在腾讯位置服务Key管理, 可以查询到Key, 并且可以查询到配额.   为了开发环境方便, 提供只为开发环境公用的免费KEY. 因为是公共的, 无法保证一定可用. 1 QQMAP_KEY=PSPBZ-KQ5CW-CSGRF-ON2S4-K2HQJ-XEBQG   Copied!
  1. 1. 配置支付通知接口 1 WECHAT_PAYMENT_NOTIFY=https://b.yuanyuanke.cn/wechatAuth/wxpay/notify   Copied!
完整的例子 1 # 标识应用环境, 本地环境设置为local 2 APP_ENV=local 3 # 调试模式, 正式环境可以关闭 4 APP_DEBUG=true 5 # 时区不要修改 6 APP_TIMEZONE=PRC 7 ​ 8 # 数据库相关配置 9 # DB_CONNECTION默认不需要改 10 DB_CONNECTION=default 11 # 数据库主机 12 DB_HOST=127.0.0.1 13 DB_PORT=3306 14 DB_DATABASE=espier_bloated 15 DB_USERNAME=root 16 DB_PASSWORD=Wka25ijklmng0ada-x 17 ​ 18 # 缓存驱动, 默认使用redis 19 CACHE_DRIVER=redis 20 # 队列驱动, 默认使用redis 21 QUEUE_DRIVER=redis 22 ​ 23 # 七牛相关配置 24 QINIU_IMAGE_DOMAIN=b-img-cdn.yuanyuanke.cn 25 QINIU_IMAGE_NAME=espier-image 26 QINIU__FILE_DOMAIN=https://b-import-cdn.yuanyuanke.cn 27 QINIU_FILE_NAME=espier-file 28 QINIU_ACCESS_KEY= 29 QINIU_SECRET_KEY= 30 ​ 31 # 短信会用到, 如果需要商派短信, 误删 32 PRISM_URL=http://openapi.shopex.cn/api 33 PRISM_KEY=7zfgrchh 34 PRISM_SECRET=ykiy27tqhlnbn6ndaddr 35 ​ 36 # JWT 相关配置, 可根据需要调整或不调整 37 JWT_SECRET=ker4H1sp4TsdDvcVJMa72SMW8Zsh3drv 38 JWT_TTL=300 39 JWT_REFRESH_TTL=20160 40 ​ 41 # 微信第三方平台设置. 本地开发环境不配置, 会影响到调用微信的相关页面, 整体不影响后台开发. 42 WECHAT_APPID= 43 WECHAT_SECRET= 44 WECHAT_TOKEN= 45 WECHAT_AES_KEY= 46 WECHAT_DEBUG=true 47 ​ 48 # 支付通知接口 49 WECHAT_PAYMENT_NOTIFY=https://b.yuanyuanke.cn/wechatAuth/wxpay/notify 50 ​ 51 # dingo标准配置, 根据实际场景进行配置 52 API_PREFIX=api 53 API_NAME="Espier API" 54 API_STANDARDS_TREE=vnd 55 API_STRICT=false 56 API_DEBUG=false 57 API_VERSION=v1 58 API_SUBTYPE=espier 59 API_CONDITIONAL_REQUEST=false 60 API_TOKEN=Os6Bass1oT5vig2Yod0yiT8dU0as5cIn 61 ​ 62 RPCCALL_DRIVER=dingo 63 ​ 64 # 腾讯地图接口KEY, 建议根据项目进行申请 65 QQMAP_KEY=PSPBZ-KQ5CW-CSGRF-ON2S4-K2HQJ-XEBQG 66 ​ 67 # REDIS 相关配置 68 REDIS_CLIENT=predis 69 REDIS_HOST=redis-ali-espier-master 70 REDIS_PASSWORD=redis1234 71 REDIS_MEMBERS_PORT=6379 72 ​ 73 ​ 74 LICENSE_PRODUCTION_URL=https://service.ec-os.net/api/yyk/register 75 LICENSE_PRODUCT=yyk 76 ​ 77 # 商城小程序相关配置 78 # 小程序模版ID号 79 YYKWEISHOP_TEMPLATE_ID= 80 YYKWEISHOP_REQUESTDOMAIN=https://b.yuanyuanke.cn 81 YYKWEISHOP_WSREQUESTDOMAIN=wss://b-websocket.yuanyuanke.cn 82 # 小程序版本 83 YYKWEISHOP_VERSION= 84 YYKWEISHOP_DOWNLOADDOMAIN1=https://mmbiz.qpic.cn 85 YYKWEISHOP_DOWNLOADDOMAIN2=https://b.yuanyuanke.cn 86 YYKWEISHOP_DOWNLOADDOMAIN3=https://wx.qlogo.cn 87 ​ 88 ​ 89 WEBSOCKET_SERVER_PORT=9051 90 WEBSOCKET_SERVER_HOST=b-websocket.yuanyuanke.cn 91 ​ 92 SENTRY_LARAVEL_DSN=https://eb0daff7a4244e2e8e8131e178952c55:d13add823922418f859c081feb671d73@report.shopex.cn/41 93 ​ 94 SUPER_ADMIN_LOGIN_NAME=yykpms 95 SUPER_ADMIN_LOGIN_PASSWORD=c0f50922ef5c2d72adac424fca752aa97523fa33 96 ​ 97 NEO4J_DEFAULT_PROTOCOL=http 98 NEO4J_DEFAULT_HOST=distribution-neo4j-neo4j-core-0.distribution-neo4j-neo4j.espier.svc.cluster.local 99 NEO4J_DEFAULT_PORT=7474 100 NEO4J_DEFAULT_USERNAME=neo4j 101 NEO4J_DEFAULT_PASSWORD=oPMfxPwMwY 102 ​ 103 BROKERAGE_URI= 104 BROKERAGE_URI_ITEM= 105 ALIPAY_PAYMENT_NOTIFY= 106 ALIPAY_PAYMENT_RETURN= 107 ​ 108 H5_BASE_URL=   Copied! 安装 安装composer扩展包 1 cd /var/www/espier-blaoted 2 composer install   Copied! 数据库迁移 1 cd /var/www/espier-blaoted 2 ./artisan doctrine:migrations:migrate   Copied! 部署商家端(vue) 商家端代码 代码build好后build目录里的文件直接copy至此目录
  1. 1. 创建项目目录 1 mkdir -p /var/www/espier-retail-manage   Copied!
  2. 2. 放置代码 通常会通过git的方式进行部署及更新 修改app/config/test.env.js 1 module.exports = { 2 NODE_ENV: '"testing"', 3 BASE_API: '"https://b.yuanyuanke.cn/api"', 4 //WXIMG_URL: '"https://bbc54.shopex123.com/image/"', 5 WXIMG_URL: '""', 6 WXAUTHCALL_Url: '"https://b.yuanyuanke.cn/"' 7 }   Copied!
  3. 3. 安装npm宝 1 cd /var/www/espier-retail-manage/app 2 ​ 3 npm installl   Copied!
  4. 4. 代码编译目录 /var/www/espier-retail-manage/app/config/index.js 1 assetsRoot: path.resolve(__dirname, '../test'),   Copied! 编译后的文件在/var/www/espier-retail-manage/app/test下
  5. 5. 代码编译 1 npm run build-test   Copied!
  6. 6. 更改权限 1 chown -R www:www /var/www/espier-retail-manage   Copied!
配置nginx 修改/etc/nginx/nginx.conf, 将权限nginx 改为www 1 use www;   Copied! 创建项目nginx配置 1 vim /etc/nginx/conf.d/espier.conf   Copied!   需要配置ssl证书, 在下边配置的所有配置ssl处. 1 server 2 { 3 listen 443; 4 # 配置ssl 5 ​ 6 server_name b.yuanyuanke.cn; 7 ​ 8 location /api/ { 9 access_log /var/log/nginx/espier-bloated.log; 10 proxy_pass http://localhost:8080; 11 } 12 ​ 13 location /wechatAuth/ { 14 access_log /var/log/nginx/espier-wechatauth.log; 15 proxy_pass http://localhost:8080; 16 } 17 ​ 18 location / { 19 proxy_pass http://localhost:8081; 20 } 21 } 22 ​ 23 # 配置API服务(espier-bloated) 24 server { 25 ​ 26 listen 8080; 27 listen [::]:8080; 28 ​ 29 server_name localhost; 30 root /var/www/espier-bloated/public; 31 index index.php index.html index.htm; 32 ​ 33 location / { 34 try_files $uri $uri/ /index.php$is_args$args; 35 } 36 ​ 37 location ~ \.php$ { 38 add_header Access-Control-Allow-Origin '*' always; 39 add_header Access-Control-Allow-Headers "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"; 40 add_header Access-Control-Expose-Headers "Authorization"; 41 add_header Access-Control-Allow-Methods "DELETE, GET, HEAD, POST, PUT, OPTIONS, TRACE, PATCH"; 42 ​ 43 if ($request_method = OPTIONS ) { 44 return 200; 45 } 46 ​ 47 fastcgi_pass localhost:9000; 48 fastcgi_read_timeout 150; 49 fastcgi_index index.php; 50 fastcgi_buffers 16 16k; 51 fastcgi_buffer_size 32k; 52 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 53 include fastcgi_params; 54 } 55 ​ 56 location ~ /\.ht { 57 deny all; 58 } 59 } 60 ​ 61 # 配置商家端(espier-retail-manage) 62 server { 63 listen 8081; 64 listen [::]:8081; 65 ​ 66 server_name localhost; 67 ​ 68 location / { 69 root /var/www/espier-retail-manage/app/test; 70 index index.html index.htm; 71 try_files $uri $uri/ /index.html =404; 72 } 73 ​ 74 location /wximage/ { 75 set $hostx ""; 76 set $addrs ""; 77 if ( $uri ~ "^/wximage/http./+([^/]+)/(.+)$") { 78 set $hostx $1; 79 set $addrs $2; 80 } 81 resolver 8.8.8.8; 82 proxy_pass http://$hostx/$addrs; 83 proxy_set_header referer "http://read.html5.qq.com/image"; 84 } 85 } 86 ​ 87 配置websocket服务 88 server 89 { 90 listen 443; 91 ​ 92 # 配置ssl 93 ​ 94 server_name b-websocket.yuanyuanke.cn; 95 ​ 96 location / { 97 proxy_pass http://localhost:9051/; 98 ​ 99 proxy_set_header X-Real-IP $remote_addr; 100 proxy_set_header Host $host; 101 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 102 ​ 103 proxy_http_version 1.1; 104 proxy_set_header Upgrade $http_upgrade; 105 proxy_set_header Connection "upgrade"; 106 } 107 }   Copied! 配置定时任务 1 crontab -e   Copied! 1 * * * * * sudo -E -u www php /var/www/espier-bloated/artisan schedule:run >> /var/log/espier-cront.log 2>&1   Copied! 配置队列服务 修改队列配置 1 vim /etc/supervisord.d/super-queue.ini   Copied! 1 [program:bloated-queue-default] 2 command=/var/www/espier-bloated/artisan queue:work --queue=default --delay=3 --memory=128 --timeout=30 --sleep=1 --tries=3 3 stdout_logfile=/var/www/espier-bloated/storage/logs/supervisor-bloated-queue-default.log 4 redirect_stderr=true 5 process_name=%(program_name)s_%(process_num)02d 6 autostart=true 7 autorestart=true 8 numprocs=1 9 user=www 10 startsecs=3 11 startretries=100000 12 ​ 13 [program:bloated-queue-slow] 14 command=/var/www/espier-bloated/artisan queue:work --queue=slow --delay=3 --memory=128 --timeout=1800 --sleep=1 --tries=3 15 stdout_logfile=/var/www/espier-bloated/storage/logs/supervisor-bloated-queue-slow.log 16 redirect_stderr=true 17 process_name=%(program_name)s_%(process_num)02d 18 redirect_stderr=true 19 autostart=true 20 autorestart=true 21 numprocs=1 22 user=www 23 startsecs=3 24 startretries=100000 25 ​ 26 [program:bloated-queue-sms] 27 command=/var/www/espier-bloated/artisan queue:work --queue=sms --delay=3 --memory=128 --timeout=1800 --sleep=1 --tries=3 28 stdout_logfile=/var/www/espier-bloated/storage/logs/supervisor-bloated-queue-sms.log 29 redirect_stderr=true 30 process_name=%(program_name)s_%(process_num)02d 31 redirect_stderr=true 32 autostart=true 33 autorestart=true 34 numprocs=1 35 user=www 36 startsecs=3 37 startretries=100000   Copied! 配置websocket服务 配置websocket 1 vim /etc/supervisord.d/super-websocket.ini   Copied! 1 [program:websocket] 2 command=/var/www/espier-bloated/artisan websocket:start 3 stdout_logfile=/var/www/espier-bloated/storage/logs/supervisor-websocket.log 4 redirect_stderr=true 5 autostart=true 6 autorestart=true 7 numprocs=1 8 user=www 9 startsecs=3 10 startretries=100000   Copied! 服务启动 启动队列任务, websocket服务 1 systemctl start supervisord.service   Copied! 启动nginx 1 systemctl start nginx.service   Copied! 启动php-fpm 1  

标签:www,单机,部署,espier,--,Copied,php,php72,ecx
来源: https://www.cnblogs.com/showker/p/16159037.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有