阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

正式生产环境下Hadoop集群的DNS+NFS+SSH免密码登陆配置

109次阅读
没有评论

共计 13383 个字符,预计需要花费 34 分钟才能阅读完成。

环境虚拟机 CentOS6.5

主机名 h1 IP 192.168.137.11 作为 DNS FNS 的服务器

主机名 h2 IP 192.168.137.12

主机名 h3 IP 192.168.137.13

 

建立 DNS(为了取代集群修改 hosts 带来的大量重复工作)

————————————– 分割线 ————————————–

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

Hadoop LZO 安装教程 http://www.linuxidc.com/Linux/2013-01/78397.htm

Hadoop 集群上使用 Lzo 压缩 http://www.linuxidc.com/Linux/2012-05/60554.htm

————————————– 分割线 ————————————–

1. 安装 DNS 在 h1 上面

检查命令:

rpm –q bind

rpm -q bind-chroot

安装命令:

yum -y install bind bind-chroot

2. 修改 /etc/named.conf

主要修改这两个地方注意红色修改的部分

listen-on port 53 {any;};

allow-query {any; };

文件全内容:

 

//

// named.conf

//

// Provided by Red Hat bind package to configure the ISCBIND named(8) DNS

// server as a caching only nameserver (as a localhostDNS resolver only).

//

// See /usr/share/doc/bind*/sample/ for example namedconfiguration files.

//

 

options {

listen-onport 53 {any; };

listen-on-v6port 53 {::1;};

directory “/var/named”;

dump-file “/var/named/data/cache_dump.db”;

statistics-file “/var/named/data/named_stats.txt”;

memstatistics-file “/var/named/data/named_mem_stats.txt”;

allow-query {any; };

recursionyes;

 

dnssec-enableyes;

dnssec-validationyes;

dnssec-lookasideauto;

 

/* Path toISC DLV key */

bindkeys-file”/etc/named.iscdlv.key”;

 

managed-keys-directory”/var/named/dynamic”;

};

 

logging {

channeldefault_debug {

file “data/named.run”;

severity dynamic;

};

};

 

zone “.” IN {

type hint;

file”named.ca”;

};

 

include “/etc/named.rfc1912.zones”;

include “/etc/named.root.key”;

3. 修改 /etc/named.rfc1912.zones

正反配置红色部分

// named.rfc1912.zones:

//

// Provided by Red Hat caching-nameserver package

//

// ISC BIND named zone configuration for zonesrecommended by

// RFC 1912 section 4.1 : localhost TLDs and addresszones

// andhttp://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt

// (c)2007 R W Franks

//

// See /usr/share/doc/bind*/sample/ for example namedconfiguration files.

//

 

zone “localhost.localdomain” IN {

type master;

file”named.localhost”;

allow-update{none;};

};

 

zone “localhost” IN {

type master;

file”named.localhost”;

allow-update{none;};

};

 

zone”1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa”IN {

type master;

file”named.loopback”;

allow-update{none;};

};

 

zone “1.0.0.127.in-addr.arpa” IN {

type master;

file”named.loopback”;

allow-update{none;};

};

 

zone “0.in-addr.arpa” IN {

type master;

file”named.empty”;

allow-update{none;};

};

zone “linuxidc.com” IN {

type master;

file “linuxidc.com.zone”;

allow-update {none;};

};

zone “137.168.192.in-addr.arpa” IN {

type master;

file”137.168.192.in-addr.zone”;

allow-update{none;};

};

4. 在 /var/named 目录下创建 linuxidc.com.zone137.168.192.in-addr.zon文件(这里很重要每个地方都要看清楚怎么设置)

这里是将 named.localhost 拷贝之后做的修改

cp -p named.localhost linuxidc.com.zone

cp -p named.localhost 137.168.192.in-addr.zone

 

linuxidc.com.zone 文件内容:

$TTL 86400

@ IN SOA h1.linuxidc.com. chizk.www.linuxidc.com. (

0 ; serial (d.adams)

1D ; refresh

1H ; retry

1W ; expiry

3H ) ; minimum

@ IN NS h1.linuxidc.com.

h1.linuxidc.com. IN A 192.168.137.11

h2.linuxidc.com. IN A 192.168.137.12

h3.linuxidc.com. IN A 192.168.137.13

h4.linuxidc.com. IN A 192.168.137.14

h5.linuxidc.com. IN A 192.168.137.15

h6.linuxidc.com. IN A 192.168.137.16

 

137.168.192.in-addr.zone 文件内容:

 

$TTL 86400

@ IN SOA h1.linuxidc.com. chizk.www.linuxidc.com. (

0 ; serial (d.adams)

1D ; refresh

1H ; retry

1W ; expiry

3H ) ; minimum

@ IN NS h1.linuxidc.com.

11 IN PTR h1.linuxidc.com.

12 IN PTR h2.linuxidc.com.

13 IN PTR h3.linuxidc.com.

14 IN PTR h4.linuxidc.com.

15 IN PTR h5.linuxidc.com.

16 IN PTR h6.linuxidc.com.

修改正向文件和反向文件属组

[root@h1 named]# chgrp named linuxidc.com.rev

[root@h1 named]# chgrp named linuxidc.com.zone

5. 添加 DNS 域名服务器 ip(这里注意修改 /etc/resolv.conf 是没用的,重启电脑就失效了)

先说 h1 电脑,因为是 DNS 服务器所以我没有配置这一项,这里可能与我的网络连接有关系

下面说其他节点都如下配置:

这里需要找到/etc/sysconfig/network-scripts/ifcfg-eth0

主要是加入DNS1=192.168.137.11

完整内容:

 

DEVICE=eth0

TYPE=Ethernet

UUID=5a32d5ab-af65-44bc-9d21-c757fb44add3

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=none

IPADDR=192.168.137.12

PREFIX=16

GATEWAY=192.168.137.1

DEFROUTE=yes

IPV4_FAILURE_FATAL=yes

IPV6INIT=no

NAME=”System eth0″

 

 

HWADDR=08:00:27:17:25:7F

LAST_CONNECT=1402057925

 

DNS1=192.168.137.11

 

6. 启动 DNS(防火墙关闭)

service named start

自动开启:

查看:chkconfig –listnamed

设置启动级别:chkconfig –level 123456 named on

 

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-06/102820p2.htm 

7. 测试:

nslookup h1.linuxidc.com

nslookup 192.168.137.12

 

host h1.linuxidc.com

host 192.168.137.12

至此 DNS 配置完成。

 

 

配置 NFS

rw

允许 NFS 卷上的读和写请求,默认是不允许任何请求,还可以使用 ro 选项

sync

仅在修改被提交到稳定的存储器后响应请求,在这个版本及将来的版本中,sync 是默认的,如果需要 async 的话必须明确地指出,为了帮助系统管理员察觉到这个改变,如果既没有指定 sync 也没有指定 async 的话,“exportfs”将会给出一个警告信息

no_wdelay

如果设置了 async 这个选项就不起作用,正常情况下,如果 NFS 服务器怀疑有另一个相关的写请求正在处理或马上就要达到,NFS 服务器将稍微延迟提交写请求到磁盘,这就允许使用一个操作提交多个写请求到磁盘,这样可以改善性能,如果 NFS 服务器接收到的主要是些独立的小请求,这个行为的确会降低性能,因此可将 no_wdelay 关闭,默认可以是使用 wdelay 选项进行明确地请求

no_root_squash

从 uid/gid 0 到匿名的 uid/gid 的 root_squash 映射请求,no_root_squash 关闭了 root squashing

insecure

insecure 选项允许 NFS 客户端不使用 NFS 保留的端口

no_subtree_check

这个选项启用了 subtree 检查,这样就再添加了一层安全系数,但是在某些环境下不可靠。

如果文件系统的子目录被导出了,但是整个文件系统是不行的,服务器不但必须检查访问的是适当的文件系统中的文件(很简单)而且还要检查导出树中的文件(比较困难),这个检查就叫做 subtree_check。

为了执行这个检查,服务器必须提供一些关于文件位置的信息,在访问的文件被重命名且被一个客户端打开时可能引起问题。(在许多简单的实例中它仍然可以工作)

如果文件系统导出时使用了 no_root_squash 选项(参考下面的内容),subtree 检查还可用于确保目录内的文件只有 root 有权访问,即使文件本身允许更多的人访问。

 

 

 

1. 安装 NFS

检查:

rpm -qa | grep nfs

rpm -qa | grep rpcbind

没有安装:

yum install nfs-utils rpcbind

2. 启动 NFS

检查:

service nfs status

servicerpcbind status

启动:

service nfs start

开机自启动:

chkconfig –level 123456 nfs on

chkconfig –level 123456 rpcbindon

 

 

3. 设置共享目录

这里随意,例如:/home/gx

在 /etc/exports 里面添加:

/home/gx *(insecure,sync,rw,no_root_squash)

重启 rpcbind 和 nfs

service rpcbind restart

service nfs restart

查看一下:

showmount -elocalhost

4. 其他节点(客户端)

建立挂载点。比如在根目录下 mkdir/nfs_share

命令:mount -t nfs 192.168.137.11:/home/gx /nfs_share/

测试:在 h1 上的目录下创建文件在其他节点是否看得到

5 开机自动挂载 nfs 共享目录

修改 /etc/fstab 文件

在最后加入:

192.168.137.11:/home/gx /nfs_share nfs defaults 1 1

 

 

#

# /etc/fstab

# Created by anaconda on Tue May 27 12:29:32 2014

#

# Accessible filesystems, by reference, are maintainedunder ‘/dev/disk’

# See man pages fstab(5), findfs(8), mount(8) and/orblkid(8) for more info

#

/dev/mapper/vg_linuxidc-lv_root / ext4 defaults 1 1

UUID=4ea6963a-f2cd-4391-8808-d6bd76ee1125 /boot ext4 defaults 1 2

/dev/mapper/vg_linuxidc-lv_swap swap swap defaults 0 0

tmpfs /dev/shm tmpfs defaults 0 0

devpts /dev/pts devpts gid=5,mode=620 0 0

sysfs /sys sysfs defaults 0 0

proc /proc proc defaults 0 0

 

192.168.137.11:/home/gx /nfs_share nfs defaults 1 1

 

 

至此 NFS 配置完成。

 

 

6. 实现 nfs 共享 ssh 密钥

这里需要了解 ssh 免密码登陆的原理。

我大致简单说一下:

ssh-keygen -t rsa 产生私钥和公钥,id_rsa(私钥)和 id_rsa.pub(公钥)

比如:h1 电脑需要免密码登陆到 h2 电脑,需要在 h1 上面的~/.ssh/ 里面产生私钥和公钥 将公钥拷贝到 h2 的~/.ssh/ 里面并且修改名字为 authorized_keys。

这样就可以用 ssh 192.168.137.12 登录到 h2 电脑里面 第一次会提示输入密码,之后就不会了。

如果想实现相互免密码登陆那就是在 h2 上面产生公钥私钥,把公钥拷贝到 h1 上面

如果想实现 h1 到 h1 的免密码登陆就直接拷贝公钥在自己的~/.ssh/ 下并取名为 authorized_keys。

那么我们怎么实现 nfs 共享目录的办法来实现 ssh 免密码登陆呢?

其实就是把各自的公钥放在共享目录里面,然后让不同的机器节点来共享目录

里面拿公钥到自己的~/.ssh/ 目录下面就可以做到了。这样可以省去一些重复的操作。

这里有一种方式叫做链接文件命令:ln 有软连接和硬链接之分

 

这里最方便的做法是在 h1 的共享目录里面建立 authorized_keys 文件把所有节点的公钥信息都放在这里,不断累加,只要有一台电脑连进来就增加这个公钥文件和新电脑的软连接设置,其他节点都不需要去配置为可以实现所有节点的 ssh 免密码登陆。

 

我想分析到这里大家已经可以自己完成了。

需要做的是:

1. 软连接建立

2. 把新加电脑产生的公钥追加给共享目录的 authorized_keys 文件中即可

目前问题点:

软连接 ssh 免密码登陆不成功,仍然要求输入密码,不知道是我配置问题,还是什么问题,我的做法是:

 

将 h2,h3 上面的公钥加到 h1de 的~/.ssh/authorized_keys 上面

ssh h2.linuxidc.com cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

ssh h3.linuxidc.com cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

内容为:

 

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwkLRj4s+OXY7y8W9/3MOaMGMxE3M37/ySm28gwSpxs4AibAPjZY9rXvld5fJWl99iVeLMTRn39cryXknqf7gqy32EZ6kledh5Au7kv96XX3Cbwr5YIWoTggo9q9tG8E7J268QpV/2Zi1lOM6EEnLPUfpU6UWW2l8Ay4a2AyrWoIs2s6ffqPc/5xOnOnvAAmc285P75UmG0Cr/BVapdMi7z5WUUioPb3qGdXmirNy4EFUPtFMyXO3SwZIea61UpPLN6hcPDliluU+SwyVjkpicPUZcN/wweXkhQN/rexsbvNJ1qlD1DC1qT9eryj5b/i8RCWHGhxhlxvqlTxxmUpGMQ== root@h1
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAufPOnaaBhOgLepshNFTsUROGv0BZFCyqOK3rl+nr02YC5bk/I0K4kfnrJcTMgtE7CPYnjzPzpQLTKDYpu9Qv2XQkxadKe3FsWoihnRz4+ZLaL5QdlKwM8CNNDvYXnULwUh7ZyyEAxT+50WkIzVL+aVz4nbynOw6oJHyg492tU/lkytRPSTn0ogAH10QGqOGzKMLoFSiE5ce6acNrck79ya4R13k6y6XiJYjlfkfU+QbKw9vtZcVWN9LpygfYeQWZOv6vYA/XRk2ZZspwYs+lGQq7vdJTIxLW/SbS9qV5nJUYzVMDeG34rYJpZaM6FQ7TPxrQt00oPXBOL45Lf5fadQ== root@h2
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtND3Kbx2fVg3dZfwQFxBdC1xmVX+gv9mfbUW5C2g+NYwxYR+yGSQQo43AjWcCz+HR2IyP4zijPpuY6x/9EObi5GUjQ5GvZiO/dWMUajMv2TbV92Y0/utgEaT301hQY2/UjlY9pheATZSBDk3X66pXq/kf0aYu7Wf2JULpBdilq711KHHgCRuHwNfduCwxhmw0mqx8i2SbCvbgHaEEmD8liqOQB0VOD2RWvUCSqaT4pnBhH0XWULUkO+VepzL4bup0LlCl88T2LF3Rso+g7k6rRBwoVoHGG8KQtVXPy33pcM7BIXxqFsQVrn7QYe09uBZS/BZj0e7bzCos1nBAb0+Gw== root@linuxidc
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtZN3yCKaxw7ysWqU5KjgjVfn+YqA4rP80rWwc5d2GLPBA7Kj2JuxUIuRBVTEAO4sir2TU4tDNrX5EVu7WZPmv3Z5w2hj4nnJhusHZo477qAwufE9G9cqJkc2Wuci+tiMp7beal1fDvE8guqy8IJCJuLInGWbvSuVToDcZiCazYg4vlMaB5J8xuNhcNpt7w665+YA2f7Bms9qylbQJnsmU95CSqnRKZag9OioOWrgPn/WjS93n/qMBIz3jWJeOiCi9jeg5zsYTxljfMQF+05NTg8tNZGGxweuR5dVFm7yHNfp4Gosj4Jhz7ZlFASRQe/q4cGc5EEQUzire4Qy7XQoGQ== root@h3

 

同时将 h2,h3 上面的公钥加到 h1de 的共享目录 /home/gx/.ssh/authorized_keys 上面

ssh h2.linuxidc.com cat ~/.ssh/id_rsa.pub >> /home/gx/.ssh/authorized_keys

ssh h3.linuxidc.com cat ~/.ssh/id_rsa.pub >> /home/gx/.ssh/authorized_keys

内容当面是一样的。

接下来操作 h2,h3

 

软连接 h2,h3(首先先删除~/.ssh/authorized_keys)

ln -s /nfs_share/.ssh/authorized_keys ~/.ssh/authorized_keys

 

到此就完成了。

测试结果是 可以免密码从 h2,h3 登录到 h1

而不能 从 h1 免密码登录到 h2,h3

这让人不解

更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

环境虚拟机 CentOS6.5

主机名 h1 IP 192.168.137.11 作为 DNS FNS 的服务器

主机名 h2 IP 192.168.137.12

主机名 h3 IP 192.168.137.13

 

建立 DNS(为了取代集群修改 hosts 带来的大量重复工作)

————————————– 分割线 ————————————–

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

Hadoop LZO 安装教程 http://www.linuxidc.com/Linux/2013-01/78397.htm

Hadoop 集群上使用 Lzo 压缩 http://www.linuxidc.com/Linux/2012-05/60554.htm

————————————– 分割线 ————————————–

1. 安装 DNS 在 h1 上面

检查命令:

rpm –q bind

rpm -q bind-chroot

安装命令:

yum -y install bind bind-chroot

2. 修改 /etc/named.conf

主要修改这两个地方注意红色修改的部分

listen-on port 53 {any;};

allow-query {any; };

文件全内容:

 

//

// named.conf

//

// Provided by Red Hat bind package to configure the ISCBIND named(8) DNS

// server as a caching only nameserver (as a localhostDNS resolver only).

//

// See /usr/share/doc/bind*/sample/ for example namedconfiguration files.

//

 

options {

listen-onport 53 {any; };

listen-on-v6port 53 {::1;};

directory “/var/named”;

dump-file “/var/named/data/cache_dump.db”;

statistics-file “/var/named/data/named_stats.txt”;

memstatistics-file “/var/named/data/named_mem_stats.txt”;

allow-query {any; };

recursionyes;

 

dnssec-enableyes;

dnssec-validationyes;

dnssec-lookasideauto;

 

/* Path toISC DLV key */

bindkeys-file”/etc/named.iscdlv.key”;

 

managed-keys-directory”/var/named/dynamic”;

};

 

logging {

channeldefault_debug {

file “data/named.run”;

severity dynamic;

};

};

 

zone “.” IN {

type hint;

file”named.ca”;

};

 

include “/etc/named.rfc1912.zones”;

include “/etc/named.root.key”;

3. 修改 /etc/named.rfc1912.zones

正反配置红色部分

// named.rfc1912.zones:

//

// Provided by Red Hat caching-nameserver package

//

// ISC BIND named zone configuration for zonesrecommended by

// RFC 1912 section 4.1 : localhost TLDs and addresszones

// andhttp://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt

// (c)2007 R W Franks

//

// See /usr/share/doc/bind*/sample/ for example namedconfiguration files.

//

 

zone “localhost.localdomain” IN {

type master;

file”named.localhost”;

allow-update{none;};

};

 

zone “localhost” IN {

type master;

file”named.localhost”;

allow-update{none;};

};

 

zone”1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa”IN {

type master;

file”named.loopback”;

allow-update{none;};

};

 

zone “1.0.0.127.in-addr.arpa” IN {

type master;

file”named.loopback”;

allow-update{none;};

};

 

zone “0.in-addr.arpa” IN {

type master;

file”named.empty”;

allow-update{none;};

};

zone “linuxidc.com” IN {

type master;

file “linuxidc.com.zone”;

allow-update {none;};

};

zone “137.168.192.in-addr.arpa” IN {

type master;

file”137.168.192.in-addr.zone”;

allow-update{none;};

};

4. 在 /var/named 目录下创建 linuxidc.com.zone137.168.192.in-addr.zon文件(这里很重要每个地方都要看清楚怎么设置)

这里是将 named.localhost 拷贝之后做的修改

cp -p named.localhost linuxidc.com.zone

cp -p named.localhost 137.168.192.in-addr.zone

 

linuxidc.com.zone 文件内容:

$TTL 86400

@ IN SOA h1.linuxidc.com. chizk.www.linuxidc.com. (

0 ; serial (d.adams)

1D ; refresh

1H ; retry

1W ; expiry

3H ) ; minimum

@ IN NS h1.linuxidc.com.

h1.linuxidc.com. IN A 192.168.137.11

h2.linuxidc.com. IN A 192.168.137.12

h3.linuxidc.com. IN A 192.168.137.13

h4.linuxidc.com. IN A 192.168.137.14

h5.linuxidc.com. IN A 192.168.137.15

h6.linuxidc.com. IN A 192.168.137.16

 

137.168.192.in-addr.zone 文件内容:

 

$TTL 86400

@ IN SOA h1.linuxidc.com. chizk.www.linuxidc.com. (

0 ; serial (d.adams)

1D ; refresh

1H ; retry

1W ; expiry

3H ) ; minimum

@ IN NS h1.linuxidc.com.

11 IN PTR h1.linuxidc.com.

12 IN PTR h2.linuxidc.com.

13 IN PTR h3.linuxidc.com.

14 IN PTR h4.linuxidc.com.

15 IN PTR h5.linuxidc.com.

16 IN PTR h6.linuxidc.com.

修改正向文件和反向文件属组

[root@h1 named]# chgrp named linuxidc.com.rev

[root@h1 named]# chgrp named linuxidc.com.zone

5. 添加 DNS 域名服务器 ip(这里注意修改 /etc/resolv.conf 是没用的,重启电脑就失效了)

先说 h1 电脑,因为是 DNS 服务器所以我没有配置这一项,这里可能与我的网络连接有关系

下面说其他节点都如下配置:

这里需要找到/etc/sysconfig/network-scripts/ifcfg-eth0

主要是加入DNS1=192.168.137.11

完整内容:

 

DEVICE=eth0

TYPE=Ethernet

UUID=5a32d5ab-af65-44bc-9d21-c757fb44add3

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=none

IPADDR=192.168.137.12

PREFIX=16

GATEWAY=192.168.137.1

DEFROUTE=yes

IPV4_FAILURE_FATAL=yes

IPV6INIT=no

NAME=”System eth0″

 

 

HWADDR=08:00:27:17:25:7F

LAST_CONNECT=1402057925

 

DNS1=192.168.137.11

 

6. 启动 DNS(防火墙关闭)

service named start

自动开启:

查看:chkconfig –listnamed

设置启动级别:chkconfig –level 123456 named on

 

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-06/102820p2.htm 

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计13383字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中