1、配置主机名互解和ssh互信
[[email protected] ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' Generating public/private rsa key pair. Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 69:71:14:55:4c:48:b1:fc:a3:e5:6a:b2:4a:f2:94:64 [email protected] The key's randomart image is: +--[ RSA 2048]----+ | o++*o | | o++*o | | . .... | | . . o | | + . | | E + | | + . + . | | . + . . | | = . .. | | o..+. | +-----------------+ [[email protected] ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] The authenticity of host 'legion101.dwhd.org (172.16.6.101)' can't be established. RSA key fingerprint is 41:00:ad:6a:9d:50:77:c2:73:89:cb:ce:79:2a:87:2a. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'legion101.dwhd.org,172.16.6.101' (RSA) to the list of known hosts. [email protected]'s password: Now try logging into the machine, with "ssh '[email protected]'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting. [[email protected] ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] The authenticity of host 'legion102.dwhd.org (172.16.6.102)' can't be established. RSA key fingerprint is 68:70:b9:44:8b:c5:8f:1f:48:0d:fe:60:68:f1:19:22. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'legion102.dwhd.org,172.16.6.102' (RSA) to the list of known hosts. [email protected]'s password: Now try logging into the machine, with "ssh '[email protected]'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting. [[email protected] ~]# echo "172.16.6.100 Legion100.dwhd.org Legion100 node1" >> /etc/hosts && \ echo "172.16.6.101 Legion101.dwhd.org Legion101 node2" >> /etc/hosts && \ echo "172.16.6.102 Legion102.dwhd.org Legion102 node3" >> /etc/hosts && \ echo "172.16.6.103 Legion103.dwhd.org Legion103 node4" >> /etc/hosts [[email protected] ~]#
[[email protected] ~]# echo "172.16.6.100 Legion100.dwhd.org Legion100 node1" >> /etc/hosts && \ echo "172.16.6.101 Legion101.dwhd.org Legion101 node2" >> /etc/hosts && \ echo "172.16.6.102 Legion102.dwhd.org Legion102 node3" >> /etc/hosts && \ echo "172.16.6.103 Legion103.dwhd.org Legion103 node4" >> /etc/hosts [[email protected] ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' Generating public/private rsa key pair. Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: f0:09:7a:5d:a0:87:66:a1:93:86:43:a0:79:92:90:bc [email protected] The key's randomart image is: +--[ RSA 2048]----+ |+o. . . | |+= . o + . | |= = = B . . | | E o = * o | | . . S | | . | | | | | | | +-----------------+ [[email protected] ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] The authenticity of host 'legion100.dwhd.org (172.16.6.100)' can't be established. RSA key fingerprint is 27:4e:d4:ce:88:a2:21:42:32:c5:54:c5:00:d8:e9:d5. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'legion100.dwhd.org,172.16.6.100' (RSA) to the list of known hosts. [email protected]'s password: Now try logging into the machine, with "ssh '[email protected]'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting. [[email protected] ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] The authenticity of host 'legion102.dwhd.org (172.16.6.102)' can't be established. RSA key fingerprint is 68:70:b9:44:8b:c5:8f:1f:48:0d:fe:60:68:f1:19:22. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'legion102.dwhd.org,172.16.6.102' (RSA) to the list of known hosts. [email protected]'s password: Now try logging into the machine, with "ssh '[email protected]'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting. [[email protected] ~]#
[[email protected] ~]# echo "172.16.6.100 Legion100.dwhd.org Legion100 node1" >> /etc/hosts && \ echo "172.16.6.101 Legion101.dwhd.org Legion101 node2" >> /etc/hosts && \ echo "172.16.6.102 Legion102.dwhd.org Legion102 node3" >> /etc/hosts && \ echo "172.16.6.103 Legion103.dwhd.org Legion103 node4" >> /etc/hosts [[email protected] ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' Generating public/private rsa key pair. Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: de:89:d8:56:b1:73:ee:bf:80:49:6b:08:ea:2f:46:e9 [email protected] The key's randomart image is: +--[ RSA 2048]----+ | | | | | . | | o | | .. S = . | | o. = * O | | o. . * B o | | .E . . . . | | ..o. ..o. | +-----------------+ [[email protected] ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] The authenticity of host 'legion100.dwhd.org (172.16.6.100)' can't be established. RSA key fingerprint is 27:4e:d4:ce:88:a2:21:42:32:c5:54:c5:00:d8:e9:d5. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'legion100.dwhd.org,172.16.6.100' (RSA) to the list of known hosts. [email protected]'s password: Now try logging into the machine, with "ssh '[email protected]'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting. [[email protected] ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] The authenticity of host 'legion101.dwhd.org (172.16.6.101)' can't be established. RSA key fingerprint is 41:00:ad:6a:9d:50:77:c2:73:89:cb:ce:79:2a:87:2a. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'legion101.dwhd.org,172.16.6.101' (RSA) to the list of known hosts. [email protected]'s password: Now try logging into the machine, with "ssh '[email protected]'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting. [[email protected] ~]#
2、安装puppet master端
[[email protected] ~]# mkdir /tmp/puppetrpm && cd /tmp/puppetrpm wget -q http://www.dwhd.org/wp-content/uploads/2015/06/facter-1.7.6-1.el6_.x86_64.rpm && \ wget -q http://www.dwhd.org/wp-content/uploads/2015/06/facter-2.2.0-1.el6_.x86_64.rpm && \ wget -q http://www.dwhd.org/wp-content/uploads/2015/06/hiera-1.3.4-1.el6_.noarch.rpm && \ wget -q http://www.dwhd.org/wp-content/uploads/2015/06/mcollective-2.6.0-1.el6_.noarch.rpm && \ wget -q http://www.dwhd.org/wp-content/uploads/2015/06/mcollective-client-2.6.0-1.el6_.noarch.rpm && \ wget -q http://www.dwhd.org/wp-content/uploads/2015/06/mcollective-common-2.6.0-1.el6_.noarch.rpm && \ wget -q http://www.dwhd.org/wp-content/uploads/2015/06/puppet-3.7.1-1.el6_.noarch.rpm && \ wget -q http://www.dwhd.org/wp-content/uploads/2015/06/puppet-dashboard-1.2.23-1.el6_.noarch1.rpm && \ wget -q http://www.dwhd.org/wp-content/uploads/2015/06/puppet-server-3.7.1-1.el6_.noarch.rpm [[email protected] /tmp/puppetrpm]# yum install facter-1.7.6-1.el6_.x86_64.rpm puppet-3.7.1-1.el6_.noarch.rpm \ puppet-server-3.7.1-1.el6_.noarch.rpm -y [[email protected] /tmp/puppetrpm]# puppet master -v --no-daemonize #第一次启动master的是最好是这样放在前台执行 #等所有的配置信息什么的都正确后强制关闭再用系统启动脚本的方式启动放在后台运行。 Info: Creating a new SSL key for ca Info: Creating a new SSL certificate request for ca Info: Certificate Request fingerprint (SHA256): D9:C9:81:E2:9B:00:FC:43:DC:72:2D:A7:3A:4A:37:E9:CD:10:31:CC:88:F0:B4:C7:70:30:44: Notice: Signed certificate request for ca Info: Creating a new certificate revocation list Info: Creating a new SSL key for legion100.dwhd.org Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml Info: Creating a new SSL certificate request for legion100.dwhd.org Info: Certificate Request fingerprint (SHA256): 3B:CC:BB:70:D4:B6:14:C5:7C:3B:24:21:1E:87:B5:E1:59:A7:2B:0E:CF:DE:61:4C:57:2F:A8: Notice: legion100.dwhd.org has a waiting certificate request Notice: Signed certificate request for legion100.dwhd.org Notice: Removing file Puppet::SSL::CertificateRequest legion100.dwhd.org at '/var/lib/puppet/ssl/ca/requests/legion100.dwhd.org.p Notice: Removing file Puppet::SSL::CertificateRequest legion100.dwhd.org at '/var/lib/puppet/ssl/certificate_requests/legion100.d Notice: Starting Puppet master version 3.7.1 ^CNotice: Caught INT; calling stop [[email protected] /tmp/puppetrpm]# service puppetmaster start 启动 puppetmaster: [确定] [[email protected] /tmp/puppetrpm]# chkconfig puppetmaster on [[email protected] /tmp]# chkconfig --list puppetmaster puppetmaster 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 [[email protected] /tmp/puppetrpm]# ss -tnlp | grep puppet LISTEN 0 5 *:8140 *:* users:(("puppet",7928,5)) [[email protected] /tmp/puppetrpm]# service puppetmaster status puppet (pid 7928) 正在运行... [[email protected] /tmp/puppetrpm]#
[[email protected] /tmp]# scp -r puppetrpm [email protected]:/tmp hiera-1.3.4-1.el6_.noarch.rpm 100% 23KB 23.3KB/s 00:00 puppet-server-3.7.1-1.el6_.noarch.rpm 100% 24KB 24.1KB/s 00:00 puppet-dashboard-1.2.23-1.el6_.noarch1.rpm 100% 4403KB 4.3MB/s 00:00 mcollective-2.6.0-1.el6_.noarch.rpm 100% 11KB 10.9KB/s 00:00 mcollective-common-2.6.0-1.el6_.noarch.rpm 100% 774KB 774.0KB/s 00:00 facter-1.7.6-1.el6_.x86_64.rpm 100% 87KB 86.8KB/s 00:00 facter-2.2.0-1.el6_.x86_64.rpm 100% 96KB 96.1KB/s 00:00 puppet-3.7.1-1.el6_.noarch.rpm 100% 1597KB 1.6MB/s 00:00 mcollective-client-2.6.0-1.el6_.noarch.rpm 100% 27KB 27.0KB/s 00:00 [[email protected] /tmp]# scp -r puppetrpm [email protected]:/tmp hiera-1.3.4-1.el6_.noarch.rpm 100% 23KB 23.3KB/s 00:00 puppet-server-3.7.1-1.el6_.noarch.rpm 100% 24KB 24.1KB/s 00:00 puppet-dashboard-1.2.23-1.el6_.noarch1.rpm 100% 4403KB 4.3MB/s 00:00 mcollective-2.6.0-1.el6_.noarch.rpm 100% 11KB 10.9KB/s 00:00 mcollective-common-2.6.0-1.el6_.noarch.rpm 100% 774KB 774.0KB/s 00:00 facter-1.7.6-1.el6_.x86_64.rpm 100% 87KB 86.8KB/s 00:00 facter-2.2.0-1.el6_.x86_64.rpm 100% 96KB 96.1KB/s 00:00 puppet-3.7.1-1.el6_.noarch.rpm 100% 1597KB 1.6MB/s 00:00 mcollective-client-2.6.0-1.el6_.noarch.rpm 100% 27KB 27.0KB/s 00:00 [[email protected] /tmp]#
[[email protected] ~]# cd /tmp/puppetrpm/ [[email protected] /tmp/puppetrpm]# yum install facter-1.7.6-1.el6_.x86_64.rpm puppet-3.7.1-1.el6_.noarch.rpm -y
[[email protected] ~]# cd /tmp/puppetrpm/ [[email protected] /tmp/puppetrpm]# yum install facter-1.7.6-1.el6_.x86_64.rpm puppet-3.7.1-1.el6_.noarch.rpm -y
4、连接master端
[[email protected] /tmp/puppetrpm]# cd [[email protected] ~]# echo " server = Legion100.dwhd.org" >> /etc/puppet/puppet.conf [[email protected] ~]# puppet agent -v --no-daemonize Info: Creating a new SSL key for legion101.dwhd.org Info: Caching certificate for ca Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml Info: Creating a new SSL certificate request for legion101.dwhd.org Info: Certificate Request fingerprint (SHA256): E3:02:0E:92:36:C2:CE:47:1A:A9:E9:74:0F:40:CD:B3:9A:DA:4E:6B:BB:3A:D0:39:17:48:99:42:82:36:20:19 Info: Caching certificate for ca
[[email protected] /tmp/puppetrpm]# cd [[email protected] ~]# echo " server = Legion100.dwhd.org" >> /etc/puppet/puppet.conf [[email protected] ~]# puppet agent -v --no-daemonize Info: Creating a new SSL key for legion102.dwhd.org Info: Caching certificate for ca Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml Info: Creating a new SSL certificate request for legion102.dwhd.org Info: Certificate Request fingerprint (SHA256): C2:FA:83:C8:06:2B:F7:24:B7:D2:0A:01:45:9D:B6:46:BF:89:F2:CD:67:4D:E6:22:90:F8:A2:BC:3F:B4:CC:EC Info: Caching certificate for ca
5、在master上给agent端签署证书
[[email protected] /tmp]# puppet ca list #查询等待签署证书的额节点 legion101.dwhd.org (SHA256) E3:02:0E:92:36:C2:CE:47:1A:A9:E9:74:0F:40:CD:B3:9A:DA:4E:6B:BB:3A:D0:39:17:48:99:42:82:36:20:19 legion102.dwhd.org (SHA256) C2:FA:83:C8:06:2B:F7:24:B7:D2:0A:01:45:9D:B6:46:BF:89:F2:CD:67:4D:E6:22:90:F8:A2:BC:3F:B4:CC:EC [[email protected] /tmp]# puppet cert --sign --all #签署全部等待节点的证书 #puppet cert --sign Legion101.dwhd.org #指定签署Legion101.dwhd.org的证书 Notice: Signed certificate request for legion102.dwhd.org Notice: Removing file Puppet::SSL::CertificateRequest legion102.dwhd.org at '/var/lib/puppet/ssl/ca/requests/legion102.dwhd.org.pem' Notice: Signed certificate request for legion101.dwhd.org Notice: Removing file Puppet::SSL::CertificateRequest legion101.dwhd.org at '/var/lib/puppet/ssl/ca/requests/legion101.dwhd.org.pem' [[email protected] /tmp]# puppet ca list [[email protected] /tmp]#
这时候agent端就ok了
[[email protected] ~]# puppet agent -v --no-daemonize Info: Creating a new SSL key for legion101.dwhd.org Info: Caching certificate for ca Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml Info: Creating a new SSL certificate request for legion101.dwhd.org Info: Certificate Request fingerprint (SHA256): E3:02:0E:92:36:C2:CE:47:1A:A9:E9:74:0F:40:CD:B3:9A:DA:4E:6B:BB:3A:D0:39:17:48:99:42:82:36:20:19 Info: Caching certificate for ca Info: Caching certificate for legion101.dwhd.org Notice: Starting Puppet client version 3.7.1 Info: Caching certificate_revocation_list for ca Info: Retrieving plugin Info: Caching catalog for legion101.dwhd.org Info: Applying configuration version '1433931220' Info: Creating state file /var/lib/puppet/state/state.yaml Notice: Finished catalog run in 0.03 seconds #Ctrl+C键强制关闭 ^CNotice: Caught INT; calling stop
[[email protected] ~]# puppet agent -v --no-daemonize Info: Creating a new SSL key for legion102.dwhd.org Info: Caching certificate for ca Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml Info: Creating a new SSL certificate request for legion102.dwhd.org Info: Certificate Request fingerprint (SHA256): C2:FA:83:C8:06:2B:F7:24:B7:D2:0A:01:45:9D:B6:46:BF:89:F2:CD:67:4D:E6:22:90:F8:A2:BC:3F:B4:CC:EC Info: Caching certificate for ca Info: Caching certificate for legion102.dwhd.org Notice: Starting Puppet client version 3.7.1 Info: Caching certificate_revocation_list for ca Info: Retrieving plugin Info: Caching catalog for legion102.dwhd.org Info: Applying configuration version '1433931220' Info: Creating state file /var/lib/puppet/state/state.yaml Notice: Finished catalog run in 0.01 seconds #Ctrl+C键强制关闭 ^CNotice: Caught INT; calling stop
6、制作各节点上的站点清单
[[email protected] /etc/puppet]# mkdir -pv /etc/puppet/modules/nginx/{manifests,files,template} mkdir: 已创建目录 "/etc/puppet/modules/nginx" mkdir: 已创建目录 "/etc/puppet/modules/nginx/manifests" mkdir: 已创建目录 "/etc/puppet/modules/nginx/files" mkdir: 已创建目录 "/etc/puppet/modules/nginx/template" [[email protected] /etc/puppet]# mkdir -pv /etc/puppet/modules/mysql/{manifests,files,template} mkdir: 已创建目录 "/etc/puppet/modules/mysql" mkdir: 已创建目录 "/etc/puppet/modules/mysql/manifests" mkdir: 已创建目录 "/etc/puppet/modules/mysql/files" mkdir: 已创建目录 "/etc/puppet/modules/mysql/template" [[email protected] /etc/puppet]# cd /etc/puppet/modules/nginx/manifests/ [[email protected] /etc/puppet/modules/nginx/manifests]# cat init.pp class nginx { package {'nginx': ensure => installed, } file {'nginx.conf': ensure => file, source => 'puppet:///modules/nginx/nginx.conf', mode => 644, require => Package['nginx'], path => '/etc/nginx/nginx.conf', } service {'nginx': ensure => true, enable => true, require => Package['nginx'], subscribe => File['nginx.conf'], } } [[email protected] /etc/puppet/modules/nginx/manifests]# cat /etc/puppet/modules/nginx/files/nginx.conf # For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/ user nginx; worker_processes 2; error_log /var/log/nginx/error.log; #error_log /var/log/nginx/error.log notice; #error_log /var/log/nginx/error.log info; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; # Load config files from the /etc/nginx/conf.d directory # The default server is in conf.d/default.conf include /etc/nginx/conf.d/*.conf; } [[email protected] /etc/puppet/modules/nginx/manifests]# cd /etc/puppet/modules/mysql/manifests/ [[email protected] /etc/puppet/modules/mysql/manifests]# cat init.pp class mysql { package {"mysql-server": ensure => installed, } file {'my.cnf': ensure => file, source => 'puppet:///modules/mysql/my.cnf', mode => 644, path => '/etc/my.cnf', require => Package['mysql-server'], } service {'mysqld': ensure => true, enable => true, require => Package['mysql-server'], subscribe => File['my.cnf'], } } [[email protected] /etc/puppet/modules/mysql/manifests]# cat /etc/puppet/modules/mysql/files/my.cnf #This config file form puppet [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [[email protected] /etc/puppet/modules/mysql/manifests]# cd /etc/puppet/manifests/ [[email protected] /etc/puppet/manifests]# mkdir -pv {DB-servers,WEB-servers} [[email protected] /etc/puppet/manifests]# cat site.pp import "DB-servers/*.pp" import "WEB-servers/*.pp" #可以通过import 导入其他的pp文件 [[email protected] /etc/puppet/manifests]# cat DB-servers/mysql.pp node "Legion102.dwhd.org" { include mysql } [[email protected] /etc/puppet/manifests]# cat WEB-servers/nginx.pp node "Legion101.dwhd.org" { include nginx } [[email protected] /etc/puppet/manifests]#
7、在agent上做测试观察
[[email protected] ~]# puppet agent -v --no-daemonize --noop Notice: Starting Puppet client version 3.7.1 Info: Retrieving plugin Info: Caching catalog for legion101.dwhd.org Warning: The package type's allow_virtual parameter will be changing its default value from false to true in a future release. If you do not want to allow virtual packages, please explicitly set allow_virtual to false. (at /usr/lib/ruby/site_ruby/1.8/puppet/type/package.rb:430:in `default') Info: Applying configuration version '1433934020' Notice: /Stage[main]/Nginx/Package[nginx]/ensure: current_value absent, should be present (noop) Notice: /Stage[main]/Nginx/File[nginx.conf]/ensure: current_value absent, should be file (noop) Info: /Stage[main]/Nginx/File[nginx.conf]: Scheduling refresh of Service[nginx] Notice: /Stage[main]/Nginx/Service[nginx]/ensure: current_value stopped, should be running (noop) Info: /Stage[main]/Nginx/Service[nginx]: Unscheduling refresh on Service[nginx] Notice: Class[Nginx]: Would have triggered 'refresh' from 3 events Notice: Stage[main]: Would have triggered 'refresh' from 1 events Notice: Finished catalog run in 0.38 seconds
[[email protected] ~]# puppet agent -v --no-daemonize --noop Notice: Starting Puppet client version 3.7.1 Info: Retrieving plugin Info: Caching catalog for legion102.dwhd.org Warning: The package type's allow_virtual parameter will be changing its default value from false to true in a future release. If you do not want to allow virtual packages, please explicitly set allow_virtual to false. (at /usr/lib/ruby/site_ruby/1.8/puppet/type/package.rb:430:in `default') Info: Applying configuration version '1433934020' Notice: /Stage[main]/Mysql/Package[mysql_server]/ensure: current_value absent, should be present (noop) Notice: /Stage[main]/Mysql/File[my.cnf]/content: current_value {md5}8ace886bbe7e274448bc8bea16d3ead6, should be {md5}953171d28e419dcda98c43ba6ecb3daa (noop) Info: /Stage[main]/Mysql/File[my.cnf]: Scheduling refresh of Service[mysqld] Notice: /Stage[main]/Mysql/Service[mysqld]/ensure: current_value stopped, should be running (noop) Info: /Stage[main]/Mysql/Service[mysqld]: Unscheduling refresh on Service[mysqld] Notice: Class[Mysql]: Would have triggered 'refresh' from 3 events Notice: Stage[main]: Would have triggered 'refresh' from 1 events Notice: Finished catalog run in 0.38 seconds
[[email protected] ~]# service puppet start Starting puppet agent: [确定] [[email protected] ~]# service nginx status nginx (pid 43789) 正在运行... [[email protected] ~]#
[[email protected] ~]# service puppet start Starting puppet agent: [确定] [[email protected] ~]# service mysqld status mysqld (pid 38736) 正在运行... [[email protected] ~]#
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏