2011年6月7日星期二

Web服务器的配置(apache+nginx)

最近一直困扰于Apache2负载过高的问题。CPU始终在70%以上,晚上的高峰直接是页面打开很慢很慢,又到了当初Apache2 MPM模块没有配置好时候的情况了...不过那个时候的CPU不高,还有发挥余地,现在就有点头疼了。
学校是不大可能给你升级服务器的了,于是下决心把Apache2换成了Nginx。
Nginx的介绍不说了,google上很多。就是一个俄罗斯的,大家都认为很牛X的Web Server。比较头疼的就是他的中文文档少之又少。
参照了Discuz!商业区的文章,利用Nginx,将PHP请求转发给Apache2,由后者负责处理。并未采用网上介绍的比较多的FastCGI模式。
 
 
1、首先是安装Nginx。我的配置模式如下:
 
#./configure --with-http_stub_status_module --with-http_addition_module --with-http_realip_module --with-pcre=/data/soft/pcre-7.7  --with-http_ssl_module --with-openssl=/data/soft/openssl-0.9.8e/
#make
#make install
 
 
  1. Pcre7.7,Perl Compatible Regular Expressions,在使用Discuz!以及其他程序的Rewrite的时候会用到。
  2. Stub-status是一个状况模块,可以查看Nginx当前的运行状态,类似于Apache2的ServerStatus。
  3. Pcre和OpenSSL的目录,不是他们的安装目录而是他们的源代码的目录。
  4. 这个配置加载了ssl模块以支持https,如果不需要可以去掉最后两段。
 
 
2、然后是重新编辑Apache2,大部分模块都不需要了,可以在config里面去掉。
 
#./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/bin
 
 
  1. 重新编译的话会遇到APR的问题。错误如下:
configure: error: Cannot use an external APR with the bundled APR-utilq

这个以前遇到过。解决方法如下:
安装apr以及apr-util。
#cd /usr/local/httpd-2-2-4/srclib/apr
#./configure --prefix=/usr/local/apr #make #make install 安装APR-util

#cd /usr/local/httpd-2-2-4/srclib/apr-util 
#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
#make
#make install
 
这些文件在Apache2的源码包里面有。

3、然后是PHP+eAcelerator。
投了个懒,直接把原来Apache下的PHP配置加进来了。
 
#./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/etc --with-mysql=/usr/local/mysql --with-libxml-dir=/usr/local/libxml2 --with-gd=/usr/local/gd2 --enable-gd-native-ttf --with-jpeg-dir --with-png-dir --with-bz2 --with-freetype-dir --with-iconv-dir --with-zlib-dir --enable-mbstring --disable-ipv6 --disable-cgi --disable-cli --enable-ftp --enable-magic-quotes --with-pear --enable-sockets --with-ttf --enable-gd-native-ttf --enable-sysvsem --enable-sysvshm --with-pcre-regex --enable-xml
 
 
另外根据DZ系统的情况添加了一些乱七八糟的东东。比如什么ftp啥的。
#cp php-dist.ini /etc/php.ini
接下来安装eAcelerator.
[root@bbs eaccelerator-0.9.5.3]# make install
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/

注意系统提示。将下面这段修改之后加入到/etc/php.ini的末尾
extension_dir="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"
extension="eaccelerator.so"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.shm_size="64"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="60"
eaccelerator.shm_prune_period="60"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
eaccelerator.keys="shm_and_disk"
eaccelerator.sessions="shm_and_disk"
eaccelerator.content="shm_and_disk"
下面是Zend,虽然DZ不再加密了,不过有了总比没有好。很简单,不再多说。
#./install.sh
查看phpinfo,是否已加载。
4、其他的诸如GD等不再赘述了,很简单。不过要记得在最开始安装。

5、进入Nginx的配置阶段。
Nginx的一些Tips:
#/usr/local/nginx/sbin/nginx -t
测试Config文件是否正常。如果不正常会提示你在哪一行出错。
#/usr/local/nginx/sbin/nginx
启动Nginx进程。和Apache2不同的是,他没有restart/start/stop这样的脚本。
相对应的,重新启动Nginx则是
首先
#ps -ef | grep "nginx: master process" | grep -v "grep" | awk -F ' ' '{print $2}'
显示出来的就是Nginx的主进程的ID号。然后
#kill -HUP xxxx
即可
下面是Nginx的Config文件配置部分。他的配置文件只有一个,就是/usr/local/nginx/conf/nginx.conf
Nginx的配置文档有点类似于C语言的{}形式。比如一个典型的虚拟主机配置
 
server
  {
   listen 80;
   server_name zone.nau.edu.cn;
   index index.html index.htm index.php;
   root /data/web/nauzone;
#Upload Size
   client_max_body_size 6M
  location / {
    valid_referers none blocked bbs.nau.edu.cn *.nau.edu.cn;
    if ($invalid_referer) {
      return 403;
     }
   root /data/web/nauzone;
   index index.php index.html index.htm;
#UCHome Rewrite Rule
   rewrite ^/(space|network)\-(.+)\.html$ /$1.php?rewrite=$2 last;
   rewrite ^/(space|network)\.html$ /$1.php last;
   rewrite ^/([0-9]+)$ /space.php?uid=$1 last;
   break;
                                                                                }
#Forward PHP Request TO Apache Server
   location ~ \.php$ {
   proxy_pass http:
//127.0.0.1:81;   proxy_redirect off;
   proxy_set_header Host $host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#proxy_hide_header Content-Type;
                      }
}

 
这一段配置是放在http部分的。很简单,也很容易理解。
需要注意的是这部分

#Forward PHP Request TO Apache Server
location ~ \.php$
{
     proxy_pass http:
//127.0.0.1:81;     proxy_redirect off;
     proxy_set_header Host $host;
     proxy_set_header X-Real-IP $remote_addr;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     #proxy_hide_header Content-Type;
}
                                                                                   作用是将PHP的请求转发给Apache2处理。和DZ商业区的那篇文章区别在于,我将最后一行注释掉了。这一个问题困扰了我一天多。
如果不注释掉的话,结果就是会将Content-type传递给Apache2。
而Discuz!的Ajax功能,用到了/templates/default/header_ajax.htm这个文件,这个文件很奇怪,虽然是.htm,但是在内容里却包含了
{eval @header("Content-type: application/xml; charset=$charset");}

具体的用意不知道,但是肯定是和这个Content-Type有关的。结果就是传递出错,造成Discuz!所有使用到AJAX的功能均不正常,包括表情、投票贴内容、评分等等。
注释掉这一段即OK。也就是Nginx不会将Content-Type传递给Apache2。
=======================================================================
20080523添加,防盗链配置
在location部分添加以下内容。
 
valid_referers none blocked bbs.nau.edu.cn *.nau.edu.cn;
                 if ($invalid_referer) {
                        return 403;
                        }
其中,valid_referers可选参数包括none,blocked,以及server_names。
None就是没有,简单的说就是直接通过下载软件下载文件,没有提供referers.
Blocked就是“一块”主机头,比如我前面的配置,可以通过*来通配符。
server_names就是简单的一个主机了。
我上面的结果就是(可以通过Bitcomet测试),如果不输入主机头、或者指定Referer,下载均可成功。而如果是错误的主机头,就会报403错误。
=======================================================================
20080526添加日志部分
现在需要做的就是把它和Awstats结合起来。
首先配置日志。官方文档提到一个log_format格式,如下:

log_format  combined  '$remote_addr - $remote_user [$time_local] '
                      '"$request" $status $body_bytes_sent '
                      '"$http_referer" "$http_user_agent"';
但是实际上我把它添加到http{}部分的时候不停地报错。
2008/05/26 18:45:16 [emerg] 19875#0: "log_format" directive duplicate "log_format" name in /usr/local/nginx/conf/nginx.conf:26
实际上原因就是因为,“The "combined" log_format is predefined in sources, you do not need to define it.”作者回答我的...汗。
接下来设定每个虚拟主机的配置。
access_log /data/logs/nginx/bbs.access.log;
注意由于nginx不支持管道,所以无法使用cronolog轮询了。也好,避免2g死机问题。我们会使用脚本来实现这个功能。
=======================================================================
20080619添加日志部分
编辑nginx配置文件的时候,可以使用UltraEDIT,然后高亮,选择php,效果会好很多。
=======================================================================

其他功能不多说了,具体可以参照nginx的文档。
 
参考网站:
1、Nginx官方网站Wiki
http://wiki.codemongers.com/Main
2、bskzq,关于大型论坛系统环境搭建的讨论--理想论坛的终极解决方案
http://www.discuz.net/viewthread.php?tid=882980&highlight=
3、netseek,利用Nginx替代apache实现高性能的Web环境
http://www.discuz.net/viewthread.php?tid=803925&highlight=nginx
4、张宴,Nginx 0.5.33 + PHP 5.2.5(FastCGI)搭建胜过Apache 10倍的Web服务器(第2版)
http://blog.s135.com/read.php/314.htm

Mapn Ver.2.9 MySQL + Apache + PHP + Nginx 下载


Mapn 是一个用于 Linux 系统的自动编译环境程序包 Mapn 是以 MySQL + Apache + PHP + Nginx 的安装顺序命名,以 Nginx 作为服务器前端运行, Apache 作为服务器后端运行
版本号: Ver. 2.9  发布日期: 2011年2月10日
Mapn 项目专页: http://www.ngro.org/mapn.html 
程序版本信息:
MySQL: 5.1.54      Apache: 2.2.17      PHP: 5.2.17      Nginx: 0.8.54
Memcache: 2.2.6      eAccelerator: 0.9.5.3      ZendOptimizer: 3.3.9
phpMyAdmin: 3.3.9      Suhosin: 0.9.32.1      ionCube: 4.0.5
… And so on.
新版本更新简述:
增加自动开始程序,分为自动版本、手动版本; 增加对 CentOS / RadHat 64bit 支持; 增加 Mapn 数据反馈; 增加卸载 Mapn 脚本; 修复数据导出导入错误问题; 修改上传文件最大限制为 50M; 修改脚本超时时间为 100秒; 优化增加虚拟主机脚本; 优化删除虚拟主机脚本; 优化 Apache / Nginx 运行参数; 优化 Apache 配置文件; 优化 Mapn 安装脚本; eAccelerator 降级为 0.9.5.3 版本以增强兼容性;
…… 等部分更新。
安装 Mapn :
建议安装前运行 screen -S mapn
(当网络断线或者关闭电脑,运行 screen -r mapn 即可回到之前窗口。注:运行 screen 是在服务器运行的,也就是你运行 screen 运行安装 Mapn 后关闭窗口,Mapn 仍会继续安装,当你想退出 screen 窗口,在 screen 窗口输入 exit 即退出。如未安装 screen 服务,运行 yum -y install screen* 安装)
(安装可选自动版或手动版)

自动版:
下载自动程序:  wget http://files.ngro.org/mapn/mapn.sh  
备用下载链接:  wget http://mapn.googlecode.com/files/mapn.sh  
执行:  sh mapn.sh
选择 < 1 > 或者 < 2 > 下载 Mapn下载版 或者 Mapn完整版
待下载完成
输入想设置的 MySQL root 密码(留空则为默认 root ),即开始自动编译安装
手动版:
下载 Mapn(建议网络不好下载完整版):
下载版: wget -c http://files.ngro.org/mapn/Mapn_Ver_2_9.tar.gz
备用下载链接: wget -c http://mapn.googlecode.com/files/Mapn_Ver_2_9.tar.gz
完整版: wget -c http://files.ngro.org/mapn/Mapn_Full_Ver_2_9.tar.gz 
备用下载链接: wget -c http://mapn.googlecode.com/files/Mapn_Full_Ver_2_9.tar.gz 
解压:
下载版: tar zxvf Mapn_Ver_2_9.tar.gz
完整版: tar zxvf Mapn_Full_Ver_2_9.tar.gz
进入 Mapn 目录:
下载版: cd Mapn_Ver_2_9/
完整版: cd Mapn_Full_Ver_2_9/
执行安装:
 ./Installer.sh
输入想设置的 MySQL root 密码(留空则为默认 root ),即开始自动编译安装
待安装完成后即可开始您的网站之旅。
可选安装(PureFTPd):
进入 Mapn 目录:
下载版: cd Mapn_Ver_2_9/
完整版: cd Mapn_Full_Ver_2_9/
执行安装:
 ./PureftpdInstaller.sh
安装完成后用浏览器访问 http://您的IP或域名/ftp/install.php 安装 User manager for PureFTPd
请参考 http://www.ngro.org/mapn/mapn-install-pureftpd.html 安装
Mapn 状态管理: /root/mapn { start | stop | reload | restart | kill | status }
PureFTPd 状态管理: /root/pureftpd { start | stop | restart | kill | status }
虚拟主机管理: /root/mapn { 1 | 2 | 3 }
提示:  /root/mapn 1  =  /root/AddVirtualHost.sh  |  添加虚拟主机
提示:  /root/mapn 2  =  /root/AddVirtualHostWithSSL.sh  |  添加支持 SSL 的虚拟主机
提示:  /root/mapn 3  =  /root/RemoveVirtualHost.sh  |  删除虚拟主机
Mapn 相关目录:
MySQL :   /usr/local/mysql
Apache :   /usr/local/apache
PHP :     /usr/local/php
Nginx :   /usr/local/nginx
网站主目录 :    /home/wwwroot
注: /usr/local/src 是 Mapn 安装过程的临时目录,当安装完成时,目录是可以清空的,如需清空以加大可用空间, 请执行: rm -rf /usr/local/src/*
注:目前 Mapn Ver.2.9 仅对 CentOS/RedHat 32/64bit 支持,更多系统版本将陆续推出
官方网站: http://www.ngro.org

玩转Windows访问Linux下的共享文件

为了能够让windows下的用户通过以太网访问Linux下的共享文件,需要开启Samba服务器,Samba服务器详细配置步骤如下:
 
◆1.打开samba的配置文件
vim /etc/samba/smb.conf
 
◆2.其中存在如下几个域
 
[global](全局参数的设置,它对samba的功能具有很大的影响,主要用来设置整个系统规则。
 
workgroup= 这是你在windows中的域。
 
server string= 这是在windows中看到你的samba的解释。
 
netbios name =最好是你的机器名,如果把改句注消,默认的是你LINUX机器名,不过,最好还是自己填上
 
dos charset=cp936
 
unix charset=cp936 加上这二句就可以正确显示中文了。
 
hosts allow 允许登录的linux-samba的主机名单,用IP地址给出,多个IP地址用空格分开,不在名单中的主机将不能得到samba提供的服务,这也是网络安全的一个方面。
 
printcap name 指定printcap文件地址,通常为/etc/printcap,包含了linux打印机的配置信息。
 
load printers 允许使用共享打印机时,默认值为yes。
 
printing 如果使用的打印机是非标准的,那么应该指出打印机系统类型。
 
log file = /usr/local/samba/var/log.%m
max log size = 0
 
上面这两行则是Samba日志的相关定义。其记录文件的位置是放在/var/log/samba/%m.log,安装目录不一样,日志可不一样,后面的一条是定义日志记录文件的大小,单位是KB,如果是0的话就不限大小。
 
guest acount 来宾帐户,表示用哪一个Linux用户作为所要的客户连接,定义Samba缺省的用户账号,这个账号必须在/etc/passwd中。
 
security 指定安全模式。大多数用户使用user级的安全模式,samba用本地linux口令文件验证。
 
security = security_level
 
定义Samba的安全级别,按从低到高分为四级:share,user,server,domain。它们对应的验证方式如下:
 
share:没有安全性的级别,任何用户都可以不要用户名和口令访问服务器上的资源。
user:samba的默认配置,要求用户在访问共享资源之前资源必须先提供用户名和密码进行验证。
 
server:和user安全级别类似,但用户名和密码是递交到另外一个服务器去验证,比如递交给一台NT服务器。如果递交失败,就退到user安全级。
 
domain:这个安全级别要求网络上存在一台Windows的主域控制器,samba把用户名和密码递交给它去验证。
 
后面三种安全级都要求用户在本linux机器上也要系统帐户。否则是不能访问的。
主要修改和添加的域如下:
 
2.1列出允许访问的主机ip
 
hosts allow = 192.168.0.1 192.168.0.88
 
2.2安全模式
 
security = share
 
2.4指定共享文件名称和共享文件
 
[glx_linux]
 
comment = This is Glx Linux #备注说明
 
path = /mnt/e_win
 
guest ok = yes
 
writable = yes
 
2.4创建Samba专用用户
 
创建用户gliet_linux
 
addusr gliet_linux
 
passwd gliet_linux
 
之后将该用户添加到samba中
 
/etc/samba/smbpasswd -a gliet_linux
 
2.5清除ip链
 
service iptables stop
 
清除所有链: [ 确定 ]
 
删除用户定义的链: [ 确定 ]
 
将内建链重设为默认的“ACCEPT”策略: [ 确定 ]
 
2.6重启网卡
 
service network restart
 
正在关闭接口 eth0: [ 确定 ] 关闭环回接口: [ 确定 ] 设置网络参数: [ 确定 ] 弹出环回接口: [ 确定 ] 弹出界面 eth0: [ 确定 ]
 
◆3.重启Samba
 
/etc/rc.d/init.d/smb restart (重启samba)
 
◆4.好了,在win_xp下登录
 
//192.168.0.5
 
输入用户名:gliet_linux和密码后,就可以看到目录glx_linux,该目录是可以被windows用户修改的。
 
哈哈,windows可以对linux进行操作了,以下是我的一个配置文件:
security = user
[glx_linux_write_win_share]
comment = This is Write test
path = /home/gliet/win
guest ok = yes
writable = yes
[glx_linux_read_win_tar_share]
comment = This is Read test
path = /home/gliet/tar
guest ok = yes
read only = yes

2011年6月2日星期四

MySql中索引限制

  1. MyISAM存储引擎索引长度的总和不能超过1000字节;
  2. BLOB和TEXT类型的列只能创建前缀索引;
  3. MySql目前不支持函数索引;
  4. 使用不等于(!=或者<>)的时候,MySql无法使用索引;
  5. 过滤字段使用了函数运算(如abs(column))后,MySql无法使用索引;
  6. Join语句中Join条件字段类型不一致的时候,MySql无法使用索引;
  7. 使用LIKE操作的时候如果条件以通配符开始(如'%abc')时,MySql无法使用索引;
  8. 使用非等值查询的时候,MySql无法使用Hash索引。

2011年6月1日星期三

MySql InnoDB MyISAM锁定机制优化

InnoDB:行级锁定
        间隙锁 -- 通过在指向数据库记录的第一个索引键之前和最后一个索引键之后的空域空间标记锁定实现的

间隙锁隐患:

  • 当Query无法利用索引的时候,InnoDB会放弃使用行级别锁定而改用表级别锁定,造成并发性能降低;
  • 当Query使用索引并不包含所有过滤条件时,数据检索使用到的索引键中的数据可能有部分并不属于该Query的结果行列,但是也会被锁定,因为间隙锁锁定是一个范围,而不是一个具体的索引键;
  • 当Query在使用索引定位数据的时候,如果使用的索引键一样访问的数据行不同(索引只是过了条件的一部分),它们一样会被锁定。
行锁优化建议:
  • 尽可能让所有的数据检索都通过索引来完成,从而避免InnoDB因为无法通过索引键加锁而升级为表级锁定
  • 合理设计索引,让InnoDB在索引键上面加锁的时候尽可能准确,尽可能缩小锁定范围,避免造成不必要的锁定而影响其他的Query的执行;
  • 尽可能减少基于范围的数据检索过滤条件,避免因为任何间隙锁带来的负面影响而锁定了不该锁定的记录;
  • 尽量控制事物的大小,减少锁定的资源量和锁定的时间长度;
  • 在业务环境允许的情况下,尽量使用较低级别的事物隔离,以减少MySql因为实现事物隔离级别所带来的附加成本;

  • 类似业务模块中,尽可能按照相同的访问顺序来访问,防止产生死锁;
  • 在同一个事物中,尽可能做到一次锁定需要的所有资源,减少死锁产生的概率;
  • 对于非常容易产生死锁的业务部分,可以尝试使用升级锁定颗粒程度,通过表锁定来减少死锁产生的概率。

MyISAM:表级锁定

锁定优化建议:
  • 缩短锁定时间
     尽量减少大的复杂的Query,将复杂的Query拆分成几个小的Query分步进行;
     尽可能建立足够高效的索引,让数据检索更迅速;
     尽量让MyIASM存储引擎的表只存放必要的信息,控制字段类型;
     利用合适的机会优化MyISAM表数据文件。
  • 分离能并行的操作 (并发插入)
     concurrent_insert=2,无论MyISAM存储引擎的表数据文件的中间部分是否存在因为删除数据而留下的空闲空间,都允许在数据尾部进行Concurrent Insert;
     concurrent_insert=1,当MyISAM存储引擎的表数据文件的中间不存在空闲空间的时候,可以从尾部进行Concurrent Insert;
     concurrent_insert=0,无论MyISAM存储引擎的表数据文件的中间部分是否存在因为删除数据而留下的空闲空间,都不允许Concurrent Insert;
  • 合理利用读写优先级
     low_priority_updates=1,将写的优先级设置比读低,优先保证写入性能的话,则不设置low_priority_updates参数了;
     如果数据被删除的可能性很小,对暂时浪费的少量空间不是特别在乎,可以将concurrent_insert=2,如果删除量不是很小的话,还是建议将concurrent_insert=1。

MySql优化多方面总结

需求和架构及业务实现优化:55%
Query语句的优化:30%
数据库自身的优化:15%

Query优化基本原则之一:永远用小结果集驱动大结果集。

很多时候,大家看到了瓶颈出现在数据库方面,就希望通过数据库优化来解决问题,但不管DBA对数据库多么了解,对Query语句优化多么精通,最终还是很难解决整个系统的性能问题,原因就在于没找到根本的症结所在。

所以,数据库的优化,实际上是多方面的配合,多方面优化才能产生根本性能改善。简单来说,可以通过下面4句话来概括:
商业需求合理化
系统架构最优化
逻辑实现精简化
硬件实施理性化

MySQL存储引擎

    • MyISAM :使用最广泛的存储引擎,存取速度快,但不支持事务。
    • InnoDB :事务应用的首选存储引擎,并发性高,支持包括 ACID 事务在内的诸多事务特性。
    • Memory :将所有数据保存在内存中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问。
    • Merge :可以将多个 MyISAM 表透明地进行联合查询。
    • NDB Cluster :是在 MySQL 集群环境中使用的存储引擎,支持事务。
    • Archive :是在 mysql4.1.3 中新加的表类型,用很小的空间来存储不带索引的大量数据, Archive 引擎仅支持 INSERT 和 SELECT 操作,不支持 DELETE 、 UPDATE 操作。
    • BDB : 支持事务,允许 COMMIT 和 ROLLBACK 。在 MySQL 5.1.12 版本中, MySQL 将把 Berkeley DB(BDB) 存储引擎移出所支持的数据库引擎列表。
  • 其中最常用的一些存储引擎的更详细的特点,可以参考下表:
    特点
    MyISAM
    InnoDB
    MEMORY
    MERGE
    NDB
    存储限制
    64TB
    没有
    事务安全

    支持


    支持
    锁机制
    表锁
    行锁
    表锁
    表锁
    行锁
    B 树索引
    支持
    支持
    支持
    支持
    支持
    哈希索引


    支持

    支持
    全文索引
    支持




    集群索引

    支持



    数据缓存

    支持
    支持

    支持
    索引缓存
    支持
    支持
    支持
    支持
    支持
    数据可压缩
    支持




    空间使用
    N/A
    内存使用
    中等
    批量插入的速度
    支持外键

    支持



上海松善实业有限公司

    上海松善实业有限公司是一家集多品牌销售于一体的电线电缆骨干企业,公司成立于2016年。 公司拥有国内各大品牌:起帆、远东、上上、江南、胜华等。     主要产品有:高低压电力电缆、橡套电缆、控制电缆、架空绝缘电缆、塑胶电缆、电子计算机电缆、通讯电缆、...