-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsearch.xml
2651 lines (2408 loc) · 480 KB
/
search.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title>Prometheus+node_exporter+Grafana部署系统监控</title>
<url>/posts/2047dd97/</url>
<content><![CDATA[<p>摘要:Prometheus+Grafana部署系统监控</p>
<p>更新内容</p>
<table>
<thead>
<tr>
<th align="center">日期</th>
<th align="center">内容</th>
</tr>
</thead>
<tbody><tr>
<td align="center">2022-04</td>
<td align="center">新建文档</td>
</tr>
<tr>
<td align="center">2023-05-22</td>
<td align="center">新增node_exporter在centos6中开机自启配置</td>
</tr>
</tbody></table>
<h1 id="prometheus-简单介绍"><a href="#prometheus-简单介绍" class="headerlink" title="prometheus 简单介绍"></a>prometheus 简单介绍</h1><ul>
<li>官网: <a href="https://prometheus.io/">prometheus.io</a></li>
</ul>
<h2 id="架构"><a href="#架构" class="headerlink" title="架构"></a>架构</h2><p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/202204191419769.png" alt="普罗米修斯架构"></p>
<p><strong>Prometheus Server:</strong> 用于收集和存储时间序列化数据</p>
<p><strong>Exporters:</strong>将监控数据采集的端点通过HTTP服务的形式暴露给Prometheus Server,Prometheus Server通过访问该Exporter提供的Endpoint端点,即可以获取到需要采集的监控数据</p>
<p><strong>Pushgateway:</strong>主要是实现接收由 Client push 过来的指标数据,在指定的时间间隔,由主程序来抓取。由于 Prometheus 数据采集基于 Pull 模型进行设计,因此在网络环境的配置上必须要让 Prometheus Server 能够直接与 Exporter 进行通信。当这种网络需求无法直接满足时,就可以利用 PushGateway 来进行中转。可以通过 PushGateway 将内部网络的监控数据主动 Push 到 Gateway 当中。而 Prometheus Server 则可以采用同样 Pull 的方式从 PushGateway 中获取到监控数据</p>
<p><strong>Altermanager:</strong> 在Prometheus Server中支持基于Prom QL创建告警规则,如果满足Prom QL定义的规则,则会产生一条告警。当AlertManager从 Prometheus server 端接收到 alerts后,会进行去重,分组,并路由到相应的接收方,发出报警。</p>
<span id="more"></span>
<h2 id="工作流程"><a href="#工作流程" class="headerlink" title="工作流程"></a>工作流程</h2><ol>
<li>Prometheus server 定期从配置好的 jobs 或者 exporters 中拉取 metrics,或者从Pushgateway 拉取metrics,或者从其他的 Prometheus server 中拉 metrics。</li>
<li>Prometheus server 在本地存储收集到的 metrics,并运行已定义好的 alert.rules,通过一定规则进行清理和整理数据,并把得到的结果存储到新的时间序列中。记录新的时间序列或者向 Alertmanager 推送警报。</li>
<li>Prometheus通过PromQL和其他API可视化地展示收集的数据。Prometheus支持很多方式的图表可视化,例如Grafana、自带的Promdash以及自身提供的模版引擎等等。Prometheus还提供HTTP API的查询方式,自定义所需要的输出。</li>
</ol>
<h1 id="prometheus-安装部署"><a href="#prometheus-安装部署" class="headerlink" title="prometheus 安装部署"></a>prometheus 安装部署</h1><h2 id="二进制包方式安装Prometheus"><a href="#二进制包方式安装Prometheus" class="headerlink" title="二进制包方式安装Prometheus"></a>二进制包方式安装Prometheus</h2><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">1. 创建Prometheus组和用户</span></span><br><span class="line">sudo groupadd -r prometheus </span><br><span class="line">sudo useradd -r -g prometheus -s /sbin/nologin -M -c "prometheus Daemons" prometheus</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">2. 下载prometheus</span></span><br><span class="line">wget https://github.com/prometheus/prometheus/releases/download/v2.35.0-rc0/prometheus-2.35.0-rc0.linux-amd64.tar.gz</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">3. 解压</span></span><br><span class="line">tar -zxvf prometheus-2.35.0-rc0.linux-amd64.tar.gz</span><br><span class="line">mkdir -p /data/app/prometheus && mv prometheus-2.35.0-rc0.linux-amd64 /data/app/prometheus</span><br><span class="line">chown prometheus.prometheus -R /data/app/prometheus</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">4. 使用systemctl管理进程</span></span><br><span class="line">vim /usr/lib/systemd/system/prometheus.service</span><br><span class="line"><span class="meta">#</span><span class="language-bash">添加以下内容 执行路径根据实际情况填写</span></span><br><span class="line">[Unit]</span><br><span class="line">Description=Prometheus</span><br><span class="line">Documentation=https://prometheus.io/</span><br><span class="line">After=network.target</span><br><span class="line"></span><br><span class="line">[Service]</span><br><span class="line">Type=simple</span><br><span class="line">Environment="GOMAXPROCS=4"</span><br><span class="line">User=prometheus</span><br><span class="line">Group=prometheus</span><br><span class="line">ExecReload=/bin/kill -HUP $MAINPID</span><br><span class="line">ExecStart=/data/app/prometheus/prometheus-2.35.0-rc0.linux-amd64/prometheus \</span><br><span class="line"> --config.file=/data/app/prometheus/prometheus-2.35.0-rc0.linux-amd64/prometheus.yml \</span><br><span class="line"> --storage.tsdb.path=/data/app/prometheus/prometheus-2.35.0-rc0.linux-amd64/data \</span><br><span class="line"> --storage.tsdb.retention=30d \</span><br><span class="line"> --web.console.libraries=/data/app/prometheus/prometheus-2.35.0-rc0.linux-amd64/console_libraries \</span><br><span class="line"> --web.console.templates=/data/app/prometheus/prometheus-2.35.0-rc0.linux-amd64/consoles \</span><br><span class="line"> --web.listen-address=0.0.0.0:8905 \</span><br><span class="line"> --web.read-timeout=5m \</span><br><span class="line"> --web.max-connections=30 \</span><br><span class="line"> --query.max-concurrency=50 \</span><br><span class="line"> --query.timeout=2m \</span><br><span class="line"> --web.enable-lifecycle </span><br><span class="line"> </span><br><span class="line">PrivateTmp=true</span><br><span class="line">PrivateDevices=true</span><br><span class="line">ProtectHome=true</span><br><span class="line">NoNewPrivileges=true</span><br><span class="line">LimitNOFILE=infinity</span><br><span class="line">ReadWriteDirectories=/data/app/prometheus/prometheus-2.35.0-rc0.linux-amd64</span><br><span class="line">ProtectSystem=full</span><br><span class="line"></span><br><span class="line">SyslogIdentifier=prometheus</span><br><span class="line">Restart=always</span><br><span class="line"></span><br><span class="line">[Install]</span><br><span class="line">WantedBy=multi-user.target</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">prometheus配置更改后可以进行热加载 curl -X POST http://localhost:9090/-/reload</span></span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">5. 启动</span></span><br><span class="line">systemctl daemon-reload</span><br><span class="line">systemctl start|reload||stop prometheus</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">6.可通过web访问</span></span><br><span class="line">http://ip:port</span><br></pre></td></tr></table></figure>
<h2 id="配置密码"><a href="#配置密码" class="headerlink" title="配置密码"></a>配置密码</h2><ul>
<li>默认情况下是可以直接访问prometheus的web UI的,这样是很不安全的,是可以配置TLS+密码验证的,这里只配置密码验证了。</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash"> 1.安装httpd-tools</span></span><br><span class="line">yum install -y httpd-tools</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash"> 2.生成密码</span></span><br><span class="line">htpasswd -nBC 10 "" | tr -d ':\n' # 回车后输入密码 例如输入6个1</span><br><span class="line"><span class="meta">$</span><span class="language-bash">2y$10<span class="variable">$SpFQBSWkvNboPXm</span>/YaxwZOUo1WDi86QGSpf1ZfXJHyZmrK9RVWXX6</span></span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">3.node_exporter安装目录下编辑web-config.yml文件</span></span><br><span class="line">basic_auth_users:</span><br><span class="line"><span class="meta"> # </span><span class="language-bash">用户名: 密码-上面加密生产的字符串</span> </span><br><span class="line"> mynode: $2y$10$SpFQBSWkvNboPXm/YaxwZOUo1WDi86QGSpf1ZfXJHyZmrK9RVWXX6</span><br><span class="line"><span class="meta"># </span><span class="language-bash">启动node_exporter中加上以下配置 /usr/lib/systemd/system/prometheus.service</span></span><br><span class="line">--web.config.file=/data/app/prometheus/prometheus-2.35.0-rc0.linux-amd64/web-config.yml</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">4. reload</span></span><br><span class="line">systemctl daemon-reload && systemctl restart prometheus</span><br></pre></td></tr></table></figure>
<h2 id="配置prometheus-yml"><a href="#配置prometheus-yml" class="headerlink" title="配置prometheus.yml"></a>配置prometheus.yml</h2><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">在prometheus安装目录中,配置prometheus.yml,增加basic_auth项</span></span><br><span class="line">scrape_configs:</span><br><span class="line"> - job_name: "prometheus"</span><br><span class="line"> basic_auth:</span><br><span class="line"> username: xxx</span><br><span class="line"> password: xxx</span><br><span class="line"> static_configs:</span><br><span class="line"> - targets: ["localhost:8905"]</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">reload prometheus</span></span><br><span class="line">systemctl reload prometheus</span><br></pre></td></tr></table></figure>
<h1 id="node-exporter安装配置"><a href="#node-exporter安装配置" class="headerlink" title="node_exporter安装配置"></a>node_exporter安装配置</h1><h2 id="二进制包方式安装node-exporter"><a href="#二进制包方式安装node-exporter" class="headerlink" title="二进制包方式安装node_exporter"></a>二进制包方式安装node_exporter</h2><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">1. 下载,解压</span></span><br><span class="line">wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz</span><br><span class="line">tar -zxvf node_exporter-1.3.1.linux-amd64.tar.gz</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">2. 修改默认端口,在启动参数中加以下配置</span></span><br><span class="line">--web.listen-address=:8009</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">3. 启动方式</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash"><span class="comment"># 前台启动</span></span></span><br><span class="line">node_exporter </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash"><span class="comment"># 后台启动方式1</span></span></span><br><span class="line">node_exporter &</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash"><span class="comment"># 后台启动方式2</span></span></span><br><span class="line">nohup node_exporter &> /var/log/node_exporter.log &</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash"><span class="comment"># 带参数后台启动</span></span></span><br><span class="line">nohup node_exporter --web.listen-address=0.0.0.0:8009 --web.telemetry-path=/metrics \ </span><br><span class="line">&> /var/log/node_exporter/node_exporter.log &</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">4.使用systemctl管理 新建node_exporter.service</span></span><br><span class="line">vim /usr/lib/systemd/system/node_exporter.service</span><br><span class="line"><span class="meta"># </span><span class="language-bash">添加以下内容 路径和端口根据实际情况配置</span></span><br><span class="line">[Unit]</span><br><span class="line">Description=Node_exporter</span><br><span class="line">After=network.target</span><br><span class="line"></span><br><span class="line">[Service]</span><br><span class="line">User=prometheus</span><br><span class="line">Group=prometheus</span><br><span class="line">ExecStart=/data/app/prometheus/node_exporter-1.3.1.linux-amd64/node_exporter \</span><br><span class="line"> --web.listen-address=0.0.0.0:8009 \</span><br><span class="line"> --web.telemetry-path=/metrics \</span><br><span class="line"> --web.config=/data/app/prometheus/node_exporter-1.3.1.linux-amd64/web-config.yml \</span><br><span class="line"> --log.level=info \</span><br><span class="line"> --log.format=logfmt</span><br><span class="line">ExecReload=/bin/kill -HUP $MAINPID</span><br><span class="line">ExecStop=/bin/kill -KILL $MAINPID</span><br><span class="line">Type=simple</span><br><span class="line">KillMode=control-group</span><br><span class="line">Restart=always</span><br><span class="line">RestartSec=15s</span><br><span class="line"></span><br><span class="line">[Install]</span><br><span class="line">WantedBy=multi-user.target</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">5.启动</span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">重载配置文件</span></span><br><span class="line">systemctl daemon-reload</span><br><span class="line"><span class="meta">#</span><span class="language-bash">启动node_exporter</span></span><br><span class="line">systemctl start node_exporter</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">6.在web中可以直接看到Metrics数据</span></span><br><span class="line">http://ip:port</span><br></pre></td></tr></table></figure>
<h2 id="在centos6中配置开机自启动"><a href="#在centos6中配置开机自启动" class="headerlink" title="在centos6中配置开机自启动"></a>在centos6中配置开机自启动</h2><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">1. 编辑/etc/init.d/node_exporter</span></span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">!/bin/bash</span></span><br><span class="line"><span class="meta"># </span><span class="language-bash"> /etc/rc.d/init.d/node_exporter</span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">chkconfig: 2345 80 80</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash"></span></span><br><span class="line"><span class="language-bash"><span class="comment"># config: /etc/prometheus/node_exporter.conf</span></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">pidfile: /var/run/prometheus/node_exporter.pid</span></span><br><span class="line"><span class="meta"> </span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">Source <span class="keyword">function</span> library.</span></span><br><span class="line">. /etc/init.d/functions</span><br><span class="line"> </span><br><span class="line">RETVAL=0</span><br><span class="line">PROG="node_exporter"</span><br><span class="line">DAEMON_SYSCONFIG=/etc/sysconfig/${PROG}</span><br><span class="line">DAEMON=/usr/bin/${PROG} #要把安装目录下/opt/node_exporter/node_exporter可执行文件拷贝到/usr/bin目录下</span><br><span class="line">PID_FILE=/var/run/${PROG}.pid</span><br><span class="line">LOCK_FILE=/var/lock/subsys/${PROG}</span><br><span class="line">LOG_FILE=/singlee/prometheus/node_exporter-1.5.0.linux-amd64/node_exporter.log</span><br><span class="line">DAEMON_USER="prometheus"</span><br><span class="line">FQDN=$(hostname)</span><br><span class="line">GOMAXPROCS=$(grep -c ^processor /proc/cpuinfo)</span><br><span class="line"> </span><br><span class="line">. ${DAEMON_SYSCONFIG}</span><br><span class="line"> </span><br><span class="line">start() {</span><br><span class="line"> if check_status > /dev/null; then</span><br><span class="line"> echo "node_exporter is already running"</span><br><span class="line"> exit 0</span><br><span class="line"> fi</span><br><span class="line"> </span><br><span class="line"> echo -n $"Starting node_exporter: "</span><br><span class="line"> daemonize -u ${DAEMON_USER} -p ${PID_FILE} -l ${LOCK_FILE} -a -e ${LOG_FILE} -o ${LOG_FILE} ${DAEMON} ${ARGS}</span><br><span class="line"> RETVAL=$?</span><br><span class="line"> echo ""</span><br><span class="line"> return $RETVAL</span><br><span class="line">}</span><br><span class="line"> </span><br><span class="line">stop() {</span><br><span class="line"> echo -n $"Stopping node_exporter: "</span><br><span class="line"> killproc -p ${PID_FILE} -d 10 ${DAEMON}</span><br><span class="line"> RETVAL=$?</span><br><span class="line"> echo</span><br><span class="line"> [ $RETVAL = 0 ] && rm -f ${LOCK_FILE} ${PID_FILE}</span><br><span class="line"> return $RETVAL</span><br><span class="line">}</span><br><span class="line"> </span><br><span class="line">check_status() {</span><br><span class="line"> status -p ${PID_FILE} ${DAEMON}</span><br><span class="line"> RETVAL=$?</span><br><span class="line"> return $RETVAL</span><br><span class="line">}</span><br><span class="line"> </span><br><span class="line">case "$1" in</span><br><span class="line"> start)</span><br><span class="line"> start</span><br><span class="line"> ;;</span><br><span class="line"> stop)</span><br><span class="line"> stop</span><br><span class="line"> ;;</span><br><span class="line"> status)</span><br><span class="line"> check_status</span><br><span class="line"> ;;</span><br><span class="line"> reload|force-reload)</span><br><span class="line"> reload</span><br><span class="line"> ;;</span><br><span class="line"> restart)</span><br><span class="line"> stop</span><br><span class="line"> start</span><br><span class="line"> ;;</span><br><span class="line"> *)</span><br><span class="line"> N=/etc/init.d/${NAME}</span><br><span class="line"> echo "Usage: $N {start|stop|status|restart|force-reload}" >&2</span><br><span class="line"> RETVAL=2</span><br><span class="line"> ;;</span><br><span class="line">esac</span><br><span class="line"> </span><br><span class="line">exit ${RETVAL}</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">2. 给脚本赋权</span></span><br><span class="line">chmod +x /etc/init.d/node_exporter</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">3. 配置args,在/etc/sysconfig/node_exporter</span></span><br><span class="line">args="--web.listen-address=0.0.0.0:8009 --web.telemetry-path=/metrics --log.level=info --log.format=logfmt"</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">4. 创建软连接,这里方便node_exporter命令执行</span></span><br><span class="line">ln -s /opt/node_exporter-1.3.1.linux-amd64/node_exporter /usr/bin/node_exporter</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">5. 测试</span></span><br><span class="line">/etc/init.d/node_exporter start|stop</span><br><span class="line">service node_exporter start|stop</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">6. 配置自启动</span></span><br><span class="line">chkconfig node_exporter on</span><br></pre></td></tr></table></figure>
<h2 id="配置密码-1"><a href="#配置密码-1" class="headerlink" title="配置密码"></a>配置密码</h2><ul>
<li><p>由于node_exporter是prometheus server 通过pull方式拉取数据,这就导致端口是对外开放的,考虑安全性,需要加上密码验证</p>
</li>
<li><p><a href="https://github.com/prometheus/exporter-toolkit/blob/v0.1.0/https/README.md">参考</a></p>
</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">1.生成密码</span></span><br><span class="line">htpasswd -nBC 10 "" | tr -d ':\n' # 回车后输入密码 例如输入6个1</span><br><span class="line"><span class="meta">$</span><span class="language-bash">2y$10<span class="variable">$97LYmcoS4nyeIkctGv4PyeqxeiNC2XsYWAhKgvlv</span>.dYIOkKEKUK5C</span></span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">2.node_exporter安装目录下编辑web-config.yml文件</span></span><br><span class="line">basic_auth_users:</span><br><span class="line"><span class="meta"> # </span><span class="language-bash">用户名: 密码-上面加密生产的字符串</span> </span><br><span class="line"> shizu: $2y$10$97LYmcoS4nyeIkctGv4PyeqxeiNC2XsYWAhKgvlv.dYIOkKEKUK5C</span><br><span class="line"><span class="meta"># </span><span class="language-bash">启动node_exporter中加上以下配置 /usr/lib/systemd/system/node_exporter.service</span></span><br><span class="line">--web.config=/data/app/prometheus/node_exporter-1.3.1.linux-amd64/web-config.yml </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">3. reload</span></span><br><span class="line">systemctl daemon-reload && systemctl restart node_exporter</span><br></pre></td></tr></table></figure>
<h2 id="配置prometheus-yml-1"><a href="#配置prometheus-yml-1" class="headerlink" title="配置prometheus.yml"></a>配置prometheus.yml</h2><figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="comment"># 在prometheus安装目录中,配置prometheus.yml中下面增加如下配置</span></span><br><span class="line"><span class="bullet">-</span> <span class="attr">job_name:</span> <span class="string">'nodes'</span></span><br><span class="line"> <span class="attr">basic_auth:</span> <span class="comment">#如果node_exporter中配置的用户密码增加此选项</span></span><br><span class="line"> <span class="attr">username:</span> <span class="string">xxx</span></span><br><span class="line"> <span class="attr">password:</span> <span class="string">xxx</span></span><br><span class="line"> <span class="attr">static_configs:</span></span><br><span class="line"> <span class="bullet">-</span> <span class="attr">targets:</span> [<span class="string">'127.0.0.1:8906'</span>,<span class="string">'127.0.0.1:8009'</span>]</span><br><span class="line"></span><br><span class="line"><span class="comment"># reload prometheus</span></span><br><span class="line"><span class="string">systemctl</span> <span class="string">reload</span> <span class="string">prometheus</span></span><br></pre></td></tr></table></figure>
<h1 id="安装Grafana,配置promrtheus数据源"><a href="#安装Grafana,配置promrtheus数据源" class="headerlink" title="安装Grafana,配置promrtheus数据源"></a>安装Grafana,配置promrtheus数据源</h1><ul>
<li>官网:<a href="https://grafana.com/grafana/download">Grafana</a></li>
<li>模板: <a href="https://grafana.com/grafana/dashboards">dashboards</a></li>
</ul>
<h2 id="下载安装Grafana"><a href="#下载安装Grafana" class="headerlink" title="下载安装Grafana"></a>下载安装Grafana</h2><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">1. 下载安装grafana</span></span><br><span class="line">wget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.4.6-1.x86_64.rpm</span><br><span class="line">sudo yum install grafana-enterprise-8.4.6-1.x86_64.rpm</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">2. 启动grafana</span></span><br><span class="line">systemctl start grafana-server</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">3.grafana默认端口是3000,如果需要修改默认端口,进入grafana配置文件路径,修改配置文件</span></span><br><span class="line">vim /etc/grafana/grafana.ini</span><br><span class="line"><span class="meta"># </span><span class="language-bash">修改http_port端口</span></span><br><span class="line">http_port = 8907</span><br><span class="line"><span class="meta"># </span><span class="language-bash">reload或restart grafana-server</span></span><br><span class="line">systemctl restart grafana-server</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">docker</span></span><br><span class="line">docker run -d -p 3000:3000 grafana/grafana-enterprise</span><br><span class="line"><span class="meta"># </span><span class="language-bash">配置文件修改</span></span><br><span class="line">docker exec -it grafana bash</span><br><span class="line">find / -type f -name "grafana.ini"</span><br></pre></td></tr></table></figure>
<h2 id="配置prometheus源"><a href="#配置prometheus源" class="headerlink" title="配置prometheus源"></a>配置prometheus源</h2><ul>
<li>配置数据源Data sources->Add data source -> Prometheus,输入prometheus数据源的信息,主要是输入name和url</li>
</ul>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/202204191750576.png" alt="image-20220419174959969"></p>
<img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/202204201334202.png" alt="image-20220420110248029" style="zoom:50%;" />
<img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/202204201101813.png" alt="image-20220419175114474" style="zoom:50%;" />
<ul>
<li>参考连接</li>
<li><a href="https://zhuanlan.zhihu.com/p/434353542">https://zhuanlan.zhihu.com/p/434353542</a></li>
<li><a href="https://blog.51cto.com/u_12082223/3241875">https://blog.51cto.com/u_12082223/3241875</a></li>
<li><a href="http://www.yunweipai.com/34713.html">http://www.yunweipai.com/34713.html</a></li>
<li><a href="https://www.modb.pro/db/45956">https://www.modb.pro/db/45956</a></li>
<li><a href="https://blog.51cto.com/u_15072918/3625574#219-alertmanager_config">https://blog.51cto.com/u_15072918/3625574#219-alertmanager_config</a></li>
<li><a href="https://www.prometheus.wang/">https://www.prometheus.wang/</a></li>
</ul>
]]></content>
<categories>
<category>Prometheus</category>
</categories>
<tags>
<tag>centos</tag>
<tag>Prometheus</tag>
<tag>Grafana</tag>
<tag>node_exporter</tag>
</tags>
</entry>
<entry>
<title>Docker学习笔记</title>
<url>/posts/4a3d459a/</url>
<content><![CDATA[<h3 id="摘要:Docker在linux下的安装和基本使用,docker-compos的安装和使用,自我搭建docker仓库(官方register,企业级Harbor),容器编排rancher搭建"><a href="#摘要:Docker在linux下的安装和基本使用,docker-compos的安装和使用,自我搭建docker仓库(官方register,企业级Harbor),容器编排rancher搭建" class="headerlink" title="摘要:Docker在linux下的安装和基本使用,docker-compos的安装和使用,自我搭建docker仓库(官方register,企业级Harbor),容器编排rancher搭建"></a>摘要:Docker在linux下的安装和基本使用,docker-compos的安装和使用,自我搭建docker仓库(官方register,企业级Harbor),容器编排rancher搭建</h3><h3 id="更新内容"><a href="#更新内容" class="headerlink" title="更新内容"></a>更新内容</h3><table>
<thead>
<tr>
<th align="center">日期</th>
<th align="center">内容</th>
</tr>
</thead>
<tbody><tr>
<td align="center">2022-02</td>
<td align="center">新建文档</td>
</tr>
</tbody></table>
<span id="more"></span>
<h1 id="Docker安装-centos7"><a href="#Docker安装-centos7" class="headerlink" title="Docker安装(centos7)"></a>Docker安装(centos7)</h1><h2 id="自动化脚本安装"><a href="#自动化脚本安装" class="headerlink" title="自动化脚本安装"></a>自动化脚本安装</h2><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">curl -sSL https://get.daocloud.io/docker | sh</span><br></pre></td></tr></table></figure>
<h2 id="手动安装"><a href="#手动安装" class="headerlink" title="手动安装"></a>手动安装</h2><h3 id="如果先前安装过就先卸载旧版本"><a href="#如果先前安装过就先卸载旧版本" class="headerlink" title="如果先前安装过就先卸载旧版本"></a>如果先前安装过就先卸载旧版本</h3><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">yum remove docker \</span><br><span class="line"> docker-client \</span><br><span class="line"> docker-client-latest \</span><br><span class="line"> docker-common \</span><br><span class="line"> docker-latest \</span><br><span class="line"> docker-latest-logrotate \</span><br><span class="line"> docker-logrotate \</span><br><span class="line"> docker-engine</span><br></pre></td></tr></table></figure>
<h3 id="使用Docker仓库安装(国内阿里镜像源)"><a href="#使用Docker仓库安装(国内阿里镜像源)" class="headerlink" title="使用Docker仓库安装(国内阿里镜像源)"></a>使用Docker仓库安装(国内阿里镜像源)</h3><ol>
<li><p>安装必要的软件包</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">yum-utils 提供了 yum-config-manager ,device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2</span></span><br><span class="line">yum install -y yum-utils device-mapper-persistent-data lvm2</span><br></pre></td></tr></table></figure></li>
<li><p>设置仓库(阿里云)</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo</span><br></pre></td></tr></table></figure></li>
<li><p>安装 Docker Engine-Community</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">安装最新版</span></span><br><span class="line">yum install -y docker-ce docker-ce-cli containerd.io</span><br></pre></td></tr></table></figure>
<ul>
<li><p>如果安装指定版本</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">1.先列出Docker-ce的版本</span></span><br><span class="line">yum list docker-ce --showduplicates | sort -r</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">2.指定版本安装</span></span><br><span class="line">yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io</span><br></pre></td></tr></table></figure></li>
</ul>
</li>
</ol>
<h3 id="Docker镜像加速"><a href="#Docker镜像加速" class="headerlink" title="Docker镜像加速"></a>Docker镜像加速</h3><ul>
<li><p>配置阿里云镜像,获取地址:<a href="https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors">https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors</a></p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">通过修改daemon配置文件/etc/docker/daemon.json来使用加速器</span></span><br><span class="line"></span><br><span class="line">mkdir -p /etc/docker</span><br><span class="line"></span><br><span class="line">tee /etc/docker/daemon.json <<-'EOF'</span><br><span class="line">{</span><br><span class="line"> "registry-mirrors": ["https://1z5vg1ea.mirror.aliyuncs.com"]</span><br><span class="line">}</span><br><span class="line">EOF</span><br><span class="line"></span><br><span class="line">systemctl daemon-reload</span><br><span class="line">systemctl restart docker</span><br></pre></td></tr></table></figure></li>
</ul>
<h3 id="启动Docker"><a href="#启动Docker" class="headerlink" title="启动Docker"></a>启动Docker</h3><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">启动 | 停止 | 状态检查</span></span><br><span class="line">systemctl start | stop | status docker</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">开机自启|关闭</span></span><br><span class="line">systemctl enable | disable docker</span><br></pre></td></tr></table></figure>
<h1 id="Docker-使用"><a href="#Docker-使用" class="headerlink" title="Docker 使用"></a>Docker 使用</h1><h2 id="容器使用"><a href="#容器使用" class="headerlink" title="容器使用"></a>容器使用</h2><ul>
<li><p>先获取一个镜像</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker pull centos</span><br></pre></td></tr></table></figure></li>
</ul>
<h3 id="启动容器"><a href="#启动容器" class="headerlink" title="启动容器"></a>启动容器</h3><ol>
<li>交互式</li>
</ol>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker run -it centos /bin/bash</span><br><span class="line"><span class="meta"># </span><span class="language-bash">-i 交互式操作</span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">-t 终端打开</span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">centos centos镜像</span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">/bin/bash 交互式shell操作</span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">如果要退出终端 直接使用<span class="built_in">exit</span></span></span><br></pre></td></tr></table></figure>
<ol start="2">
<li>后台运行</li>
</ol>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">如果需要后台运行则可以使用 -d 命令</span></span><br><span class="line">docker run -itd --name centos-test centos /bin/bash</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">-d 后台运行</span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">--name 给运行的容器定义一个名字</span></span><br></pre></td></tr></table></figure>
<ol start="3">
<li><p>查看所有的容器</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker ps -a</span><br></pre></td></tr></table></figure></li>
<li><p>在使用-d参数,容器进入后台运行后,如果想要进入容器,可以使用以下指令进入</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">1. 使用attach</span></span><br><span class="line">docker attach <container id/name></span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">2.使用<span class="built_in">exec</span></span></span><br><span class="line">docker exec -it <container id/name> /bin/bash</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">注:使用attach在使用<span class="built_in">exit</span>退出容器终端时,会导致容器停止,而<span class="built_in">exec</span>不会</span></span><br></pre></td></tr></table></figure></li>
</ol>
<h3 id="停止-重启-容器"><a href="#停止-重启-容器" class="headerlink" title="停止 | 重启 容器"></a>停止 | 重启 容器</h3><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker stop | restart <container id/name> </span><br><span class="line"><span class="meta">#</span><span class="language-bash">或 停止所有容器</span></span><br><span class="line">docker stop $(docker ps -qa)</span><br></pre></td></tr></table></figure>
<h3 id="导入、导出容器"><a href="#导入、导出容器" class="headerlink" title="导入、导出容器"></a>导入、导出容器</h3><ul>
<li>export-import save-load</li>
<li>区别:<ol>
<li>export命令导出的tar文件小于save导出的</li>
<li>export命令是从container中导出tar文件,而save是从images中导出,镜像导入是复制的过程,容器导入是将当前容器变成一个新的镜像</li>
<li>export导出的文件再import回去时,无法保留镜像每一层layer信息,不能进行回滚操作;而save是依据镜像来的,所以导入时可以完整保留下每一层layer信息。</li>
</ol>
</li>
<li>建议:<ol>
<li>若是只想备份images,使用save、load即可,保存镜像所有的信息包含历史</li>
<li>若是在启动容器后,容器内容有变化,需要备份,则使用export、import,只导出当前信息</li>
</ol>
</li>
</ul>
<ol>
<li><p>导出容器</p>
<figure class="highlight sh"><table><tr><td class="code"><pre><span class="line">docker <span class="built_in">export</span> <container <span class="built_in">id</span>/name> > test.tar</span><br><span class="line"><span class="comment"># 会将容器快照导出到本地文件</span></span><br><span class="line"><span class="comment"># 或</span></span><br><span class="line">docker save -o 导出路径 <container <span class="built_in">id</span>/name></span><br></pre></td></tr></table></figure></li>
<li><p>导入容器快照</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker import test.tar test/centos:v1 #或</span><br><span class="line">cat test.tar | docker import - test/centos:v1</span><br><span class="line"><span class="meta">#</span><span class="language-bash"><span class="built_in">test</span>/centos repository名 v1 tag</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">可以通过制定URL docker import http://example.com/exampleimage.tgz example/imagerepo</span></span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">或</span></span><br><span class="line">docker load -i <container id/name></span><br><span class="line"><span class="meta">#</span><span class="language-bash">此时load后镜像名和标签都是空的 此时可以使用</span></span><br><span class="line">docker tag <container id> newname:tag</span><br></pre></td></tr></table></figure></li>
</ol>
<h3 id="删除容器"><a href="#删除容器" class="headerlink" title="删除容器"></a>删除容器</h3><figure class="highlight sh"><table><tr><td class="code"><pre><span class="line"><span class="comment"># 删除指定容器,需要先停止容器 -f 强制</span></span><br><span class="line">docker <span class="built_in">rm</span> -f <container <span class="built_in">id</span>/name></span><br><span class="line"></span><br><span class="line"><span class="comment"># 删除所有处于终止状态的容器</span></span><br><span class="line">docker container prune</span><br><span class="line"></span><br><span class="line"><span class="comment">#删除全部容器</span></span><br><span class="line">docker <span class="built_in">rm</span> $(docker ps -qa)</span><br></pre></td></tr></table></figure>
<h3 id="复制文件到容器"><a href="#复制文件到容器" class="headerlink" title="复制文件到容器"></a>复制文件到容器</h3><blockquote>
<p>将宿主机的文件复制到容器内部的指定目录</p>
</blockquote>
<figure class="highlight sh"><table><tr><td class="code"><pre><span class="line">docker <span class="built_in">cp</span> filename <container <span class="built_in">id</span>/name>:<inner container path></span><br></pre></td></tr></table></figure>
<h3 id="数据卷"><a href="#数据卷" class="headerlink" title="数据卷"></a>数据卷</h3><blockquote>
<p>数据卷:将宿主机的一个目录映射到容器的一个目录中可以在宿主机中操作目录中的内容,那么容器内部映射的文件,也会跟着一起改变</p>
</blockquote>
<ol>
<li>创建数据卷</li>
</ol>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker volume create 数据卷名称</span><br><span class="line"><span class="meta"># </span><span class="language-bash">创建数据卷之后,默认会存放在 /var/lib/docker/volumes/数据卷名称/_data</span></span><br></pre></td></tr></table></figure>
<ol start="2">
<li><p>查看数据卷的信息信息</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker volume inspect 数据卷名称</span><br></pre></td></tr></table></figure></li>
<li><p>查看全部数据卷</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker volume ls</span><br></pre></td></tr></table></figure></li>
<li><p>删除数据卷</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker volume rm 数据卷名称</span><br></pre></td></tr></table></figure></li>
<li><p>应用数据卷</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="language-bash">当你映射数据卷时,如果数据卷不存在。Docker会帮你自动创建,会将容器内部自带的文件,存储在默认的存放路径中。</span> </span><br><span class="line">docker run -v 数据卷名称∶容器内部的路径 镜像id</span><br><span class="line"><span class="meta"># </span><span class="language-bash">直接指定一个路径作为数据卷的存放位置。这个路径下是空的。</span> </span><br><span class="line">docker run -v 路径∶容器内部的路径 镜像id</span><br></pre></td></tr></table></figure></li>
</ol>
<h3 id="使用容器启动一个web应用(端口映射)"><a href="#使用容器启动一个web应用(端口映射)" class="headerlink" title="使用容器启动一个web应用(端口映射)"></a>使用容器启动一个web应用(端口映射)</h3><ol>
<li><p>运行一个web应用</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">载入镜像</span></span><br><span class="line">docker pull training/webapp </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">后台运行</span></span><br><span class="line">docker run -d -P training/webapp python app.py</span><br><span class="line"><span class="meta"># </span><span class="language-bash">-P 将容器内部使用的网络端口随机映射到主机上</span></span><br></pre></td></tr></table></figure></li>
<li><p>查看web应用容器</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker ps -a #可以看到端口信息</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">或者使用docker port <container <span class="built_in">id</span>/name></span></span><br></pre></td></tr></table></figure></li>
<li><p>使用指定主机端口</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker run -d -p 3000:5000 training/webapp python app.py</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">-p 参数 将内部的5000端口映射到主机的3000端口上</span></span><br></pre></td></tr></table></figure></li>
<li><p>查看web应用程序日志</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker logs -f <container id/name></span><br><span class="line"><span class="meta"># </span><span class="language-bash">-f 可以像使用<span class="built_in">tail</span> -f 一样来输出容器内部的标准输出</span></span><br></pre></td></tr></table></figure></li>
<li><p>查看应用程序容器的进程</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker top <container id/name></span><br></pre></td></tr></table></figure></li>
<li><p>查看Docker 容器的配置和状态信息</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker inspect <container id/name></span><br><span class="line"><span class="meta"># </span><span class="language-bash">返回一个JSON文件</span></span><br></pre></td></tr></table></figure></li>
</ol>
<h3 id="docker容器自启动"><a href="#docker容器自启动" class="headerlink" title="docker容器自启动"></a>docker容器自启动</h3><h4 id="docker容器运行时自启动"><a href="#docker容器运行时自启动" class="headerlink" title="docker容器运行时自启动"></a>docker容器运行时自启动</h4><ul>
<li>建议在运行容器时就设置容器自启动,使用 run –restart=always 命令</li>
</ul>
<figure class="highlight sh"><table><tr><td class="code"><pre><span class="line">docker run --restart=always 容器名称或容器ID</span><br></pre></td></tr></table></figure>
<h4 id="docker容器运行后设置自启动"><a href="#docker容器运行后设置自启动" class="headerlink" title="docker容器运行后设置自启动"></a>docker容器运行后设置自启动</h4><ul>
<li> update –restart=always 命令</li>
</ul>
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">docker update --restart=always 容器名称或容器ID</span><br></pre></td></tr></table></figure>
<h2 id="镜像使用"><a href="#镜像使用" class="headerlink" title="镜像使用"></a>镜像使用</h2><ul>
<li>当运行容器时,使用的镜像如果在本地不存在,就默认自动从Docker Hub公共镜像源下载 </li>
</ul>
<h3 id="列出镜像列表"><a href="#列出镜像列表" class="headerlink" title="列出镜像列表"></a>列出镜像列表</h3><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker images</span><br><span class="line"><span class="meta"># </span><span class="language-bash">同一个仓库源可以有多个TAG,代表不同版本</span></span><br></pre></td></tr></table></figure>
<h3 id="获取新镜像"><a href="#获取新镜像" class="headerlink" title="获取新镜像"></a>获取新镜像</h3><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker pull ubuntu:13.10</span><br></pre></td></tr></table></figure>
<h3 id="查找镜像"><a href="#查找镜像" class="headerlink" title="查找镜像"></a>查找镜像</h3><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker search httpd</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">NAME: 镜像仓库源的名称</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">DESCRIPTION: 镜像的描述</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">OFFICIAL: 是否 docker 官方发布</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">stars: 类似 Github 里面的 star,</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">AUTOMATED: 自动构建。</span></span><br></pre></td></tr></table></figure>
<h3 id="删除镜像"><a href="#删除镜像" class="headerlink" title="删除镜像"></a>删除镜像</h3><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker rmi container-name/ID</span><br></pre></td></tr></table></figure>
<h3 id="创建镜像"><a href="#创建镜像" class="headerlink" title="创建镜像"></a>创建镜像</h3><ul>
<li>当我们从 docker 镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。<ul>
<li>1、从已经创建的容器中更新镜像,并且提交这个镜像</li>
<li>2、使用 Dockerfile 指令来创建一个新的镜像</li>
</ul>
</li>
</ul>
<h4 id="从已有容器中更新镜像,并提交"><a href="#从已有容器中更新镜像,并提交" class="headerlink" title="从已有容器中更新镜像,并提交"></a>从已有容器中更新镜像,并提交</h4><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">1.先创建一个容器</span></span><br><span class="line">docker run -it centos /bin/bash</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">2.在容器中按我们的需求更改容器,比如update</span></span><br><span class="line">yum -y update</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">3.使用docker commit提交</span></span><br><span class="line">docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2</span><br><span class="line"><span class="meta">#</span><span class="language-bash">-m: 提交的描述信息</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">-a: 指定镜像作者</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">e218edb10161:容器 ID</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">runoob/ubuntu:v2: 指定要创建的目标镜像名</span></span><br></pre></td></tr></table></figure>
<h4 id="使用Dockerfile构建镜像"><a href="#使用Dockerfile构建镜像" class="headerlink" title="使用Dockerfile构建镜像"></a>使用Dockerfile构建镜像</h4><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">1.创建一个Dockerfile,每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的</span></span><br><span class="line">vim Dockerfile</span><br><span class="line"></span><br><span class="line">FROM centos:6.7</span><br><span class="line">MAINTAINER Fisher "[email protected]"</span><br><span class="line"></span><br><span class="line">RUN /bin/echo 'root:123456' |chpasswd</span><br><span class="line">RUN useradd runoob</span><br><span class="line">RUN /bin/echo 'runoob:123456' |chpasswd</span><br><span class="line">RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local</span><br><span class="line">EXPOSE 22</span><br><span class="line">EXPOSE 80</span><br><span class="line">CMD /usr/sbin/sshd -D</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">2.使用docker build来构建一个镜像</span></span><br><span class="line">docker build -t runoob/centos:6.7 .</span><br><span class="line"><span class="meta">#</span><span class="language-bash">-t :指定要创建的目标镜像名</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">. :Dockerfile 文件所在上下文目录,指定Dockerfile 的绝对路径,里面最好就放Dockerfile文件</span></span><br></pre></td></tr></table></figure>
<h3 id="设置镜像标签"><a href="#设置镜像标签" class="headerlink" title="设置镜像标签"></a>设置镜像标签</h3><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker tag 860c279d2fec runoob/centos:dev</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">860c279d2fec 镜像ID</span> </span><br><span class="line"><span class="meta">#</span><span class="language-bash">runoob/centos:dev 用户名/镜像名称:tag名</span></span><br></pre></td></tr></table></figure>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">curl -L "https://github.com/docker/compose/releases/download/1.28.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose</span><br></pre></td></tr></table></figure>
<h2 id="容器连接"><a href="#容器连接" class="headerlink" title="容器连接"></a>容器连接</h2><h3 id="网络端口映射"><a href="#网络端口映射" class="headerlink" title="网络端口映射"></a>网络端口映射</h3><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">1. -P 随机端口映射</span></span><br><span class="line">docker run -d -P training/webapp python app.py</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">2. -p 指定端口绑定</span></span><br><span class="line">docker run -d -p 5000:5000 training/webapp python app.py</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">3.指定容器绑定网络地址</span></span><br><span class="line">docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">4. 绑定UDP端口,默认都是绑定tcp端口</span></span><br><span class="line">docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py</span><br></pre></td></tr></table></figure>
<h3 id="容器互联"><a href="#容器互联" class="headerlink" title="容器互联"></a>容器互联</h3><ul>
<li><p>查看容器网络</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker network ls</span><br></pre></td></tr></table></figure></li>
</ul>
<ol>
<li><p>新建网络</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker network create -d bridge test-net</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">-d 参数指定Docker网络类型,有bridge overlay(overlay 网络类型用于 Swarm mode)</span></span><br></pre></td></tr></table></figure></li>
<li><p>连接容器</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">1. 运行一个容器并连接到新建的test-net网络</span></span><br><span class="line">docker run -itd --name test1 --network test-net ubuntu /bin/bash</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">2. 再运行一个容器加入到test-net网络</span></span><br><span class="line">docker run -itd --name test2 --network test-net ubuntu /bin/bash</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">可以使用ping来验证test1和test2是否建立了互联关系</span></span><br><span class="line"><span class="meta">$ </span><span class="language-bash">docker <span class="built_in">exec</span> -it test1 /bin/bash</span></span><br><span class="line"><span class="meta">$ </span><span class="language-bash">ping test2</span></span><br></pre></td></tr></table></figure></li>
<li><p>全局DNS配置</p>
<ul>
<li>可在宿主机的/etc/docker/daemon.json文件中增加以下内容设置全部容器的DNS:</li>
</ul>
<figure class="highlight json"><table><tr><td class="code"><pre><span class="line"><span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"dns"</span> <span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line"> <span class="string">"114.114.114.114"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="string">"8.8.8.8"</span></span><br><span class="line"> <span class="punctuation">]</span></span><br><span class="line"><span class="punctuation">}</span></span><br></pre></td></tr></table></figure>
<ul>
<li><p>需要重启docker才能生效,可以进入容器查看DNS信息</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker run -it --rm ubuntu cat /etc/resolve.conf</span><br></pre></td></tr></table></figure></li>
</ul>
</li>
<li><p>手动指定容器配置</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker run -it --rm -h host_ubuntu --dns=114.114.114.114 --dns-search=test.com ubuntu</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">--<span class="built_in">rm</span>:容器退出时自动清理容器内部的文件系统</span></span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">-h HOSTNAME 或者 --hostname=HOSTNAME: 设定容器的主机名,它会被写到容器内的 /etc/hostname 和 /etc/hosts</span></span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">--dns=IP_ADDRESS: 添加 DNS 服务器到容器的 /etc/resolv.conf 中,让容器用这个服务器来解析所有不在 /etc/hosts 中的主机名</span></span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">--dns-search=DOMAIN: 设定容器的搜索域,当设定搜索域为 .example.com 时,在搜索一个名为 host 的主机时,DNS 不仅搜索 host,还会搜索 host.example.com。</span></span><br></pre></td></tr></table></figure></li>
</ol>
<h2 id="仓库管理"><a href="#仓库管理" class="headerlink" title="仓库管理"></a>仓库管理</h2><h3 id="注册"><a href="#注册" class="headerlink" title="注册"></a>注册</h3><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">https://hub.docker.com </span><br></pre></td></tr></table></figure>
<h3 id="登录-退出"><a href="#登录-退出" class="headerlink" title="登录/退出"></a>登录/退出</h3><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker login/logout</span><br></pre></td></tr></table></figure>
<h3 id="拉取-推送镜像"><a href="#拉取-推送镜像" class="headerlink" title="拉取/推送镜像"></a>拉取/推送镜像</h3><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">搜索所需的镜像源</span></span><br><span class="line">docker search image-name:tag</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">pull 所需的镜像源</span></span><br><span class="line">docker pull image-name:tag</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">push 镜像源到自己的hub上,先打一个tag</span></span><br><span class="line">docker tag image-name:tag username/image-name:tag</span><br><span class="line"><span class="meta">#</span><span class="language-bash">push</span></span><br><span class="line">docker push username/image-name:tag</span><br></pre></td></tr></table></figure>
<h3 id="搭建私服-docker官方的registry-—不推荐"><a href="#搭建私服-docker官方的registry-—不推荐" class="headerlink" title="搭建私服 (docker官方的registry)—不推荐"></a>搭建私服 (docker官方的registry)—不推荐</h3><h4 id="registry"><a href="#registry" class="headerlink" title="registry"></a>registry</h4><ol>
<li>pull registry镜像</li>
</ol>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker pull registry:2</span><br><span class="line"><span class="meta">#</span><span class="language-bash">最高版本就是2</span></span><br></pre></td></tr></table></figure>
<ol start="2">
<li><p>run registry</p>
<figure class="highlight sh"><table><tr><td class="code"><pre><span class="line">docker run -d \</span><br><span class="line"> -p 5000:5000 \</span><br><span class="line"> -v /usr/local/registry:/var/lib/registry \</span><br><span class="line"> --restart=always \</span><br><span class="line"> --name registry-srv \</span><br><span class="line">registry:2</span><br></pre></td></tr></table></figure></li>
<li><p>尝试pull/push</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker pull busybox </span><br><span class="line">docker tag busybox localhost:5000/busybox:v1.0</span><br><span class="line">docker push localhost:5000/busybox:v1.0</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">之后再使用busybox镜像,可以直接从本地拉取</span></span><br><span class="line">docker pull localhost:5000/busybox:v1.0</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">查看私服镜像</span></span><br><span class="line">curl http://localhost:5000/v2/_catalog</span><br></pre></td></tr></table></figure></li>
</ol>
<h4 id="基于SSL证书改造"><a href="#基于SSL证书改造" class="headerlink" title="基于SSL证书改造"></a>基于SSL证书改造</h4><ul>
<li><p>使用nginx代理</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">server {</span><br><span class="line"> #监听443端口。443为知名端口号,主要用于HTTPS协议</span><br><span class="line"> listen 443 ssl;</span><br><span class="line"></span><br><span class="line"> #定义使用www.xx.com访问</span><br><span class="line"> server_name registry.example.cn;</span><br><span class="line"></span><br><span class="line"> keepalive_timeout 100;</span><br><span class="line"></span><br><span class="line"> #ssl证书文件位置(常见证书文件格式为:crt/pem)</span><br><span class="line"> ssl_certificate /data/nginx/nginx/registry_keyfile/fullchain.cer;</span><br><span class="line"> #ssl证书key位置</span><br><span class="line"> ssl_certificate_key /data/nginx/nginx/registry_keyfile/registry.example.cn.key;</span><br><span class="line"></span><br><span class="line"> ssl_session_cache shared:SSL:10m;</span><br><span class="line"> ssl_session_timeout 30m;</span><br><span class="line"> #启用指定协议</span><br><span class="line"> ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;</span><br><span class="line"></span><br><span class="line"> ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;</span><br><span class="line"> ssl_prefer_server_ciphers off;</span><br><span class="line"></span><br><span class="line"> add_header Strict-Transport-Security "max-age=31536000";</span><br><span class="line"></span><br><span class="line"> index index.html index.htm;</span><br><span class="line"> location / {</span><br><span class="line"> proxy_pass_header Server;</span><br><span class="line"> proxy_set_header Host $http_host;</span><br><span class="line"> proxy_set_header X-Real-IP $remote_addr;</span><br><span class="line"> proxy_set_header X-Scheme $scheme;</span><br><span class="line"> proxy_pass http://localhost:5000;</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> error_page 500 502 503 504 /50x.html;</span><br><span class="line"> location = /50x.html {</span><br><span class="line"> root html;</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<ul>
<li><p>重启registry</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">我在指定证书位置时,启动一直处于restart,直接nginx代理https也是可以的</span></span><br><span class="line">docker run -d \</span><br><span class="line"> -p 5000:5000 \</span><br><span class="line"> -v /usr/local/registry:/var/lib/registry \</span><br><span class="line"><span class="meta"> #</span><span class="language-bash">-v /usr/local/certs:/certs \</span></span><br><span class="line"><span class="language-bash"> <span class="comment">#-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/server.crt \</span></span></span><br><span class="line"><span class="language-bash"> <span class="comment">#-e REGISTRY_HTTP_TLS_KEY=/certs/server.key \</span></span></span><br><span class="line"><span class="language-bash"> --restart=always \</span></span><br><span class="line"><span class="language-bash"> --name registry \</span></span><br><span class="line"><span class="language-bash"> registry:2</span></span><br></pre></td></tr></table></figure></li>
</ul>
</li>
<li><p>可以直接使用</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker pull busybox </span><br><span class="line">docker tag busybox registry.example.cn/busybox:v1.0</span><br><span class="line">docker push registry.wangzw.cn/busybox:v1.0</span><br></pre></td></tr></table></figure></li>
</ul>
<h4 id="Authentication加持"><a href="#Authentication加持" class="headerlink" title="Authentication加持"></a>Authentication加持</h4><ol>
<li><p>使用httpd-tools在/usr/local/auth/passwd文件中生成用户名和密码</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">htpasswd -Bbn admin 123456 > /usr/local/auth/passwd</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">如果没有httpd-tools,yum直接下载</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">yum install httpd-tools</span> </span><br><span class="line"><span class="meta"># </span><span class="language-bash">或者使用registry镜像内置的httpd</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">docker run --entrypoint htpasswd registry:2 -Bbn admin 123456 > /usr/local/auth/passwd</span></span><br></pre></td></tr></table></figure></li>
<li><p>启动容器</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker run -d \</span><br><span class="line"> -p 5000:5000 \</span><br><span class="line"> --restart=always \</span><br><span class="line"> --name registry \</span><br><span class="line"> -v /root/auth:/auth \</span><br><span class="line"> -e REGISTRY_AUTH=htpasswd \</span><br><span class="line"> -e REGISTRY_AUTH_HTPASSWD_REALM=Registry_Realm \</span><br><span class="line"> -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/passwd \</span><br><span class="line"> -e REGISTRY_STORAGE_DELETE_ENABLED=true \</span><br><span class="line"> -v /root/conf:/certs \</span><br><span class="line"> -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/auth.cert \</span><br><span class="line"> -e REGISTRY_HTTP_TLS_KEY=/certs/auth.key \</span><br><span class="line"> registry:2</span><br></pre></td></tr></table></figure></li>
<li><p>login | logout</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker login | logout https://registry.example.vip</span><br></pre></td></tr></table></figure></li>
</ol>
<h4 id="docker-registry-web"><a href="#docker-registry-web" class="headerlink" title="docker-registry-web"></a>docker-registry-web</h4><blockquote>
<p>github地址:<a href="https://github.com/mkuchin/docker-registry-web">https://github.com/mkuchin/docker-registry-web</a></p>
<p>本教程是基于身份验证的</p>
</blockquote>
<ol>
<li><p>快速拉取</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker pull hyper/docker-registry-web</span><br></pre></td></tr></table></figure></li>
<li><p>生成私钥和证书</p>
<ul>
<li>令牌身份验证需要使用PEM格式的RSA私钥,并需要与此密钥匹配的证书。</li>
</ul>
</li>
</ol>
<figure class="highlight sh"><table><tr><td class="code"><pre><span class="line"><span class="built_in">mkdir</span> conf</span><br><span class="line">openssl req -new -newkey rsa:4096 -days 365 -subj <span class="string">"/CN=localhost"</span> \</span><br><span class="line"> -nodes -x509 -keyout conf/auth.key -out conf/auth.cert</span><br></pre></td></tr></table></figure>
<ol start="3">
<li>创建注册表配置<code>conf/registry-srv.yml</code></li>
</ol>
<figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">version:</span> <span class="number">0.1</span> </span><br><span class="line"></span><br><span class="line"><span class="attr">storage:</span></span><br><span class="line"> <span class="attr">filesystem:</span></span><br><span class="line"> <span class="attr">rootdirectory:</span> <span class="string">/var/lib/registry</span></span><br><span class="line"> <span class="attr">delete:</span> </span><br><span class="line"> <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line"> </span><br><span class="line"><span class="attr">http:</span></span><br><span class="line"> <span class="attr">addr:</span> <span class="number">0.0</span><span class="number">.0</span><span class="number">.0</span><span class="string">:5000</span> </span><br><span class="line"> </span><br><span class="line"><span class="attr">auth:</span></span><br><span class="line"> <span class="attr">token:</span></span><br><span class="line"> <span class="comment"># external url to docker-web authentication endpoint</span></span><br><span class="line"> <span class="attr">realm:</span> <span class="string">http://localhost:8080/api/auth</span></span><br><span class="line"> <span class="comment"># should be same as registry.name of registry-web</span></span><br><span class="line"> <span class="attr">service:</span> <span class="string">localhost:5000</span></span><br><span class="line"> <span class="comment"># should be same as registry.auth.issuer of registry-web</span></span><br><span class="line"> <span class="attr">issuer:</span> <span class="string">'my issuer'</span></span><br><span class="line"> <span class="comment"># path to auth certificate</span></span><br><span class="line"> <span class="attr">rootcertbundle:</span> <span class="string">/etc/docker/registry/auth.cert</span></span><br></pre></td></tr></table></figure>
<ol start="4">
<li>启动docker registry</li>
</ol>
<figure class="highlight sh"><table><tr><td class="code"><pre><span class="line">docker run -v $(<span class="built_in">pwd</span>)/conf/registry-srv.yml:/etc/docker/registry/config.yml:ro \</span><br><span class="line"> -v $(<span class="built_in">pwd</span>)/conf/auth.cert:/etc/docker/registry/auth.cert:ro -p 5000:5000 --name registry-srv -d registry:2 </span><br></pre></td></tr></table></figure>
<ol start="5">
<li>创建配置文件<code>conf/registry-web.yml</code></li>
</ol>
<figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">registry:</span></span><br><span class="line"> <span class="comment"># Docker registry url</span></span><br><span class="line"> <span class="attr">url:</span> <span class="string">http://registry-srv:5000/v2</span></span><br><span class="line"> <span class="comment"># Docker registry fqdn</span></span><br><span class="line"> <span class="attr">name:</span> <span class="string">localhost:5000</span></span><br><span class="line"> <span class="comment"># To allow image delete, should be false</span></span><br><span class="line"> <span class="attr">readonly:</span> <span class="literal">false</span></span><br><span class="line"> <span class="attr">auth:</span></span><br><span class="line"> <span class="comment"># Enable authentication</span></span><br><span class="line"> <span class="attr">enabled:</span> <span class="literal">true</span></span><br><span class="line"> <span class="comment"># Token issuer</span></span><br><span class="line"> <span class="comment"># should equals to auth.token.issuer of docker registry</span></span><br><span class="line"> <span class="attr">issuer:</span> <span class="string">'my issuer'</span></span><br><span class="line"> <span class="comment"># Private key for token signing</span></span><br><span class="line"> <span class="comment"># certificate used on auth.token.rootcertbundle should signed by this key</span></span><br><span class="line"> <span class="attr">key:</span> <span class="string">/conf/auth.key</span></span><br></pre></td></tr></table></figure>
<ol start="6">
<li>启动docker-registry-web</li>
</ol>
<figure class="highlight sh"><table><tr><td class="code"><pre><span class="line">docker run -d -v $(<span class="built_in">pwd</span>)/conf/registry-web.yml:/conf/config.yml:ro \</span><br><span class="line"> -v $(<span class="built_in">pwd</span>)/conf/auth.key:/conf/auth.key -v $(<span class="built_in">pwd</span>)/db:/data \</span><br><span class="line"> -p 8080:8080 --<span class="built_in">link</span> registry-srv --name registry-web hyper/docker-registry-web</span><br><span class="line"><span class="comment"># </span></span><br><span class="line"><span class="comment"># docker run -it \</span></span><br><span class="line"><span class="comment"># -p 8080:8080 \</span></span><br><span class="line"><span class="comment"># --name registry-web \</span></span><br><span class="line"><span class="comment"># --link registry \</span></span><br><span class="line"><span class="comment"># -e REGISTRY_URL=https://registry:5000/v2 \</span></span><br><span class="line"><span class="comment"># -e REGISTRY_TRUST_ANY_SSL=true \</span></span><br><span class="line"><span class="comment"># -e REGISTRY_BASIC_AUTH="YWRtaW46MTIzNDU2" \</span></span><br><span class="line"><span class="comment"># -e REGISTRY_NAME=registry \</span></span><br><span class="line"><span class="comment"># -e REGISTRY_READONLY=false \</span></span><br><span class="line"><span class="comment">#hyper/docker-registry-web</span></span><br></pre></td></tr></table></figure>
<ol start="7">
<li>Web用户界面将在<code>http://localhost:8080</code>默认管理用户/密码<code>admin/admin</code>.</li>
</ol>
<h3 id="Harbor(企业级registry-–推荐)"><a href="#Harbor(企业级registry-–推荐)" class="headerlink" title="Harbor(企业级registry –推荐)"></a>Harbor(企业级registry –推荐)</h3><blockquote>
<p>Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。</p>
</blockquote>
<h4 id="先安装好docker、docker-compose"><a href="#先安装好docker、docker-compose" class="headerlink" title="先安装好docker、docker-compose"></a>先安装好docker、docker-compose</h4><h4 id="使用acme-sh-进行证书申请"><a href="#使用acme-sh-进行证书申请" class="headerlink" title="使用acme.sh 进行证书申请"></a>使用acme.sh 进行证书申请</h4><h4 id="harbor下载配置安装"><a href="#harbor下载配置安装" class="headerlink" title="harbor下载配置安装"></a>harbor下载配置安装</h4><blockquote>
<p>github地址:<a href="https://github.com/goharbor/harbor/releases/download/v2.1.3/harbor-online-installer-v2.1.3.tgz">https://github.com/goharbor/harbor/releases/download/v2.1.3/harbor-online-installer-v2.1.3.tgz</a></p>
<p>目前最新版2.1.3</p>
</blockquote>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">wget https://github.com/goharbor/harbor/releases/download/v2.1.3/harbor-online-installer-v2.1.3.tgz</span><br><span class="line">tar -zxvf harbor-online-installer-v2.1.3.tgz</span><br></pre></td></tr></table></figure>
<ol>
<li>配置harbor</li>
</ol>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">cd harbor</span><br><span class="line"><span class="meta"># </span><span class="language-bash">默认提供了一个配置模板,复制一份</span></span><br><span class="line">cp harbor.yml.tmpl harbor.yml</span><br><span class="line">vim harbor.yml</span><br></pre></td></tr></table></figure>
<figure class="highlight properties"><table><tr><td class="code"><pre><span class="line"><span class="comment">#更改以下内容,harbor自带nginx,我们只需在这里配置好映射到宿主机的端口就可以了</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment">#填写域名</span></span><br><span class="line"><span class="attr">hostname</span>: <span class="string">example.com</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment"># http related config</span></span><br><span class="line"><span class="attr">http</span>:<span class="string"></span></span><br><span class="line"><span class="comment"> # port for http, default is 80. If https enabled, this port will redirect to https port</span></span><br><span class="line"> <span class="attr">port</span>: <span class="string">8080</span></span><br><span class="line"><span class="comment"># https related config</span></span><br><span class="line"><span class="attr">https</span>:<span class="string"></span></span><br><span class="line"><span class="comment"> # https port for harbor, default is 443</span></span><br><span class="line"> <span class="attr">port</span>: <span class="string">8443</span></span><br><span class="line"><span class="comment"> # The path of cert and key files for nginx</span></span><br><span class="line"> <span class="attr">certificate</span>: <span class="string">/data/nginx/nginx/registry_keyfile/fullchain.cer</span></span><br><span class="line"> <span class="attr">private_key</span>: <span class="string">/data/nginx/nginx/registry_keyfile/example.key</span></span><br></pre></td></tr></table></figure>
<ol start="2">
<li>使用脚本开始构建容器</li>
</ol>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">./install.sh </span><br></pre></td></tr></table></figure>
<ol start="3">
<li>直接web管理台登录</li>
</ol>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">https://example.com:8443</span><br><span class="line"><span class="meta">#</span><span class="language-bash">账户:admin</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">密码默认是:Harbor12345</span></span><br></pre></td></tr></table></figure>
<h2 id="Dockerfile"><a href="#Dockerfile" class="headerlink" title="Dockerfile"></a>Dockerfile</h2><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">1. 创建一个Dockerfile文件,并且指定自定义镜像信息。</span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">Dockerfile文件中常用的内容</span> </span><br><span class="line">from∶ 指定当前自定义镜像依赖的环境</span><br><span class="line">copy∶ 将相对路径下的内容复制到自定义镜像中</span><br><span class="line">workdir∶ 声明镜像的默认工作目录</span><br><span class="line">cmd∶需要执行的命令(在workdir下执行的,cmd可以写多的,只以最后一个为准)</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">举个例子,自定义一个tomcat镜像,并且将ssmmanager.war部署到tomcat中</span> </span><br><span class="line">from daocloud.io/library/tomcat:8.5.15-jre8 </span><br><span class="line">copy ssmmanager.war /usr/local/tomcat/webapps</span><br><span class="line"></span><br><span class="line">docker build -t tomcat-ssm:v1 .</span><br></pre></td></tr></table></figure>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/202204011659639.png" alt="img"></p>
<h1 id="Docker-Compose"><a href="#Docker-Compose" class="headerlink" title="Docker Compose"></a>Docker Compose</h1><blockquote>
<p>之前运行一个镜像,需要添加大量的参数。可以通过Docker-Compose编写这些参数。Docker-Compose可以帮助我们批量的管理容器。只需要通过一个docker-compose.yml文件去维护即可。</p>
</blockquote>
<h2 id="下载并安装Docker-Compose"><a href="#下载并安装Docker-Compose" class="headerlink" title="下载并安装Docker-Compose"></a>下载并安装Docker-Compose</h2><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">1. 可以直接到github上下载然后上传(版本可替换)</span></span><br><span class="line">https://github.com/docker/compose/releases/download/1.24.1/docker-compose-Linux-x86_64</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">2. 下载后的为一个二进制文件,需要重命名并赋权</span></span><br><span class="line">mv docker-compose-Linux-x86_64 docker-compose</span><br><span class="line">chmod 777 docker-compose</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">3.为方便操作,将此可执行文件移动到/usr/local/bin 并创建软连接到/usr/bin下</span></span><br><span class="line">mv docker-compose /usr/local/bin</span><br><span class="line">ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">4.查看安装是否成功</span></span><br><span class="line">docker-compose -v</span><br></pre></td></tr></table></figure>
<h2 id="Docker-Compose-管理mysql和tomcat容器"><a href="#Docker-Compose-管理mysql和tomcat容器" class="headerlink" title="Docker-Compose 管理mysql和tomcat容器"></a>Docker-Compose 管理mysql和tomcat容器</h2><blockquote>
<p>yml文件以key∶ value方式来指定配置信息,多个配置信息以换行+缩进的方式来区分,在docker-compose.yml文件中,不要使用制表符</p>
</blockquote>
<figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">version:</span> <span class="string">'3.1'</span> <span class="comment"># 指定本yml依从的compose哪个版本定制的</span></span><br><span class="line"><span class="attr">services:</span></span><br><span class="line"> <span class="attr">mysql:</span> <span class="comment">#服务的名称</span></span><br><span class="line"> <span class="attr">restart:</span> <span class="string">always</span> <span class="comment"># 只要Docker启动,那么这个容器就一起启动</span></span><br><span class="line"> <span class="attr">image:</span> <span class="string">daocloud.io/library/mysql:5.7.4</span> <span class="comment">#指定镜像路径</span></span><br><span class="line"> <span class="attr">container_name:</span> <span class="string">mysql</span> <span class="comment">#指定容器名称</span></span><br><span class="line"> <span class="attr">ports:</span></span><br><span class="line"> <span class="bullet">-</span> <span class="number">3306</span><span class="string">:3306</span> <span class="comment">#指定端口号映射</span></span><br><span class="line"> <span class="attr">environment:</span></span><br><span class="line"> <span class="attr">MYSQL_ROOT_PASSWORD:</span> <span class="string">root</span> <span class="comment">#指定mysql的root用户密码</span></span><br><span class="line"> <span class="attr">TZ:</span> <span class="string">Asia/Shanghai</span> <span class="comment">#指定时区</span></span><br><span class="line"> <span class="attr">volumes:</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">/opt/docker_mysql-tomcat/mysql_data:/var/lib/mysql</span> <span class="comment">#映射数据卷</span></span><br><span class="line"> <span class="attr">tomcat:</span></span><br><span class="line"> <span class="attr">restart:</span> <span class="string">always</span></span><br><span class="line"> <span class="attr">image:</span> <span class="string">daocloud.io/library/tomcat:8.5.15-jre8</span></span><br><span class="line"> <span class="attr">container_name:</span> <span class="string">tomcat</span></span><br><span class="line"> <span class="attr">ports:</span></span><br><span class="line"> <span class="bullet">-</span> <span class="number">8080</span><span class="string">:8080</span></span><br><span class="line"> <span class="attr">environment:</span></span><br><span class="line"> <span class="attr">MYSQL_ROOT_PASSWORD:</span> <span class="string">root</span></span><br><span class="line"> <span class="attr">TZ:</span> <span class="string">Asia/Shanghai</span></span><br><span class="line"> <span class="attr">volumes:</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">/opt/docker_mysql_tomcat/tomcat_webapps:/usr/local/tomcat/webapps</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">/opt/docker_mysql_tomcat/tomcat_logs:/usr/local/tomcat/logs</span></span><br></pre></td></tr></table></figure>
<h2 id="使用Docker-compose命令管理容器"><a href="#使用Docker-compose命令管理容器" class="headerlink" title="使用Docker-compose命令管理容器"></a>使用Docker-compose命令管理容器</h2><blockquote>
<p>在使用docker-compose的命令时,默认会在当前目录下找docker-composeyml文件</p>
</blockquote>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">1. 基于docker-compose.yml 启动管理的容器</span></span><br><span class="line">docker-compose up -d</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">2.关闭并删除容器</span></span><br><span class="line">docker-compose down</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">3.开启 | 关闭 | 重启 已存在的有docker-compose维护的容器</span></span><br><span class="line">docker-compose start | stop | restart</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">4.查看docker-compose管理的容器</span></span><br><span class="line">docker-compose ps</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">5.查看日志</span></span><br><span class="line">docker-compose logs -f</span><br></pre></td></tr></table></figure>
<h2 id="docker-compose配合Dockerfile使用"><a href="#docker-compose配合Dockerfile使用" class="headerlink" title="docker-compose配合Dockerfile使用"></a>docker-compose配合Dockerfile使用</h2><blockquote>
<p> 使用docker-compose.yml文件以及Dockerfile文件在生成自定义镜像的同时启动当前镜像,并且由docker-compose去管理容器</p>
</blockquote>
<figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="comment">#docker-compose.yml</span></span><br><span class="line"><span class="attr">version:</span> <span class="string">'3.1'</span></span><br><span class="line"><span class="attr">services:</span></span><br><span class="line"> <span class="attr">ssm:</span></span><br><span class="line"> <span class="attr">restart:</span> <span class="string">always</span></span><br><span class="line"> <span class="attr">build:</span> <span class="comment">#构建自定义镜像</span></span><br><span class="line"> <span class="attr">context:</span> <span class="string">../</span> <span class="comment">#指定Dockerfile文件所在路径</span></span><br><span class="line"> <span class="attr">dockerfile:</span> <span class="string">Dockerfile</span> <span class="comment">#指定Dockerfile文件名称</span></span><br><span class="line"> <span class="attr">image:</span> <span class="string">ssm:1.0.1</span> <span class="comment">#指定通过Dockerfile构建出来的镜像名称</span></span><br><span class="line"> <span class="attr">container_name:</span> <span class="string">ssm</span> <span class="comment">#指定启动容器的名称 </span></span><br><span class="line"> <span class="attr">ports:</span></span><br><span class="line"> <span class="bullet">-</span> <span class="number">8081</span><span class="string">:8080</span></span><br><span class="line"> <span class="attr">environment:</span></span><br><span class="line"> <span class="attr">TZ:</span> <span class="string">Asia/Shanghai</span></span><br></pre></td></tr></table></figure>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="language-bash">Dockerfile</span></span><br><span class="line">from daocloud.io/library/tomcat:8.5.15-jre8</span><br><span class="line">copy ssmmanager.war /usr/local/tomcat/webapps</span><br></pre></td></tr></table></figure>
<blockquote>
<p>测试</p>
</blockquote>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker-compose up -d</span><br><span class="line"><span class="meta"># </span><span class="language-bash">启动后会提示以下内容</span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">WARNING: Image <span class="keyword">for</span> service ssm was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`</span></span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">如果自定义镜像不存在,会帮助构建出自定义镜像,如果自定义镜像已存在,会直接运行此镜像</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">如需重新构建自定义镜像</span></span><br><span class="line">docker-compose build</span><br><span class="line"><span class="meta">#</span><span class="language-bash">运行并重新构建</span></span><br><span class="line">docker-compose up -d --build</span><br></pre></td></tr></table></figure>
<h1 id="可视化管理容器"><a href="#可视化管理容器" class="headerlink" title="可视化管理容器"></a>可视化管理容器</h1><h2 id="rancher"><a href="#rancher" class="headerlink" title="rancher"></a>rancher</h2><blockquote>
<p> 使用Rancher可视化管理容器</p>
<p> 中文文档:<a href="https://docs.rancher.cn/rancher1/">https://docs.rancher.cn/rancher1/</a></p>
</blockquote>
<ol>
<li><p>拉取部署容器</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">docker run -d --restart=unless-stopped -p 8002:8080 rancher/server</span><br></pre></td></tr></table></figure></li>
<li><p>这里我们启用SSL</p>
<blockquote>
<p>这里可以用docker启动一个nginx容器做代理,如果宿主机已经有了nginx,则直接添加规则即可</p>
</blockquote>
<figure class="highlight properties"><table><tr><td class="code"><pre><span class="line"><span class="attr">map</span> <span class="string">$http_upgrade $connection_upgrade {</span></span><br><span class="line"> <span class="attr">default</span> <span class="string">Upgrade;</span></span><br><span class="line"> <span class="attr">''</span> <span class="string">close;</span></span><br><span class="line"><span class="attr">}</span></span><br><span class="line"><span class="attr">server</span> <span class="string">{</span></span><br><span class="line"> <span class="attr">listen</span> <span class="string">8682 ssl ;</span></span><br><span class="line"> <span class="attr">server_name</span> <span class="string">example.cn;</span></span><br><span class="line"> <span class="attr">ssl_certificate</span> <span class="string">/data/nginx/nginx/keyfile/fullchain.cer;</span></span><br><span class="line"> <span class="attr">ssl_certificate_key</span> <span class="string">/data/nginx/nginx/keyfile/vip.wangzw.cn.key;</span></span><br><span class="line"></span><br><span class="line"> <span class="attr">location</span> <span class="string">/ {</span></span><br><span class="line"> <span class="attr">proxy_set_header</span> <span class="string">Host $host;</span></span><br><span class="line"> <span class="attr">proxy_set_header</span> <span class="string">X-Forwarded-Proto $scheme;</span></span><br><span class="line"> <span class="attr">proxy_set_header</span> <span class="string">X-Forwarded-Port $server_port;</span></span><br><span class="line"> <span class="attr">proxy_set_header</span> <span class="string">X-Forwarded-For $proxy_add_x_forwarded_for;</span></span><br><span class="line"> <span class="attr">proxy_pass</span> <span class="string">http://localhost:8002;</span></span><br><span class="line"> <span class="attr">proxy_http_version</span> <span class="string">1.1;</span></span><br><span class="line"> <span class="attr">proxy_set_header</span> <span class="string">Upgrade $http_upgrade;</span></span><br><span class="line"> <span class="attr">proxy_set_header</span> <span class="string">Connection $connection_upgrade;</span></span><br><span class="line"> </span><br><span class="line"> <span class="attr">proxy_read_timeout</span> <span class="string">900s;</span></span><br><span class="line"> <span class="attr">}</span></span><br><span class="line"><span class="attr">}</span></span><br><span class="line"></span><br><span class="line"><span class="attr">server</span> <span class="string">{</span></span><br><span class="line"> <span class="attr">listen</span> <span class="string">80;</span></span><br><span class="line"> <span class="attr">server_name</span> <span class="string"><server>;</span></span><br><span class="line"> <span class="attr">return</span> <span class="string">301 https://$server_name$request_uri;</span></span><br><span class="line"><span class="attr">}</span></span><br></pre></td></tr></table></figure>
<ul>
<li><p>记得检查配置,并reload nginx</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">nginx -t</span><br><span class="line"></span><br><span class="line">systemctl reload nginx</span><br></pre></td></tr></table></figure></li>
</ul>
</li>
<li><p>配置好nginx后,可直接web登录</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">http://example.cn:port</span><br></pre></td></tr></table></figure></li>
<li><p>此时会提示添加主机,选择自定义</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/202204011659582.png" alt="image-20210126154927486"></p>
</li>
<li><p>根据提示,在主机中运行脚本</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">sudo docker run --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.11 https://example.cn:8684/v1/scripts/BCD3D38F5335851D33AC:1609372800000:kMOyuoBBiBNc2KD731u1lJY5wXw</span><br></pre></td></tr></table></figure></li>
<li><p>等待一会即可看到主机已经添加成功</p>
<img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/202204011700455.png" alt="image-20210126155200898" style="zoom:67%;" /></li>
</ol>
]]></content>
<categories>
<category>docker</category>
</categories>
<tags>
<tag>docker</tag>
<tag>Harbor</tag>
<tag>register</tag>
<tag>rancher</tag>
<tag>linux</tag>
</tags>
</entry>
<entry>
<title>Prometheus之Alertmanager</title>
<url>/posts/be093ac/</url>
<content><![CDATA[<p>摘要:Prometheus之Alertmanager安装配置</p>
<p>更新内容</p>
<table>
<thead>
<tr>
<th align="center">日期</th>
<th align="center">内容</th>
</tr>
</thead>
<tbody><tr>
<td align="center">2022-04</td>
<td align="center">新建文档</td>
</tr>
</tbody></table>
<span id="more"></span>
<h1 id="Alertmanager"><a href="#Alertmanager" class="headerlink" title="Alertmanager"></a>Alertmanager</h1><ul>
<li>Alertmanager 处理由 Prometheus 服务器等客户端应用程序发送的警报。 它负责对它们进行重复数据删除、分组并将它们路由到正确的接收器集成,例如电子邮件、PagerDuty 或 OpsGenie。 它还负责警报的<code>silencing</code> 和<code>inhibition</code>.</li>
</ul>
<h1 id="二进制方式下载安装alertmanager"><a href="#二进制方式下载安装alertmanager" class="headerlink" title="二进制方式下载安装alertmanager"></a>二进制方式下载安装alertmanager</h1><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">1. 下载解压</span></span><br><span class="line">wget https://github.com/prometheus/alertmanager/releases/download/v0.24.0/alertmanager-0.24.0.linux-amd64.tar.gz</span><br><span class="line">tar -zxvf alertmanager-0.24.0.linux-amd64.tar.gz</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">2. 配置web ui用户验证</span></span><br><span class="line">htpasswd -nBC 10 "" | tr -d ':\n' # 回车后输入密码</span><br><span class="line"><span class="meta">$</span><span class="language-bash">2y$10<span class="variable">$SpFQBSWkvNboPXm</span>/YaxwZOUo1WDi86QGSpf1ZfXJHyZmrK9RVWXX6</span></span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">3.安装目录下编辑web-config.yml文件</span></span><br><span class="line">basic_auth_users:</span><br><span class="line"><span class="meta"> # </span><span class="language-bash">用户名: 密码-上面加密生产的字符串</span> </span><br><span class="line"> mynode: $2y$10$SpFQBSWkvNboPXm/YaxwZOUo1WDi86QGSpf1ZfXJHyZmrK9RVWXX6</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">4. 配置系统管理 vim /usr/lib/systemd/system/alertmanager.service</span></span><br><span class="line">[Unit]</span><br><span class="line">Description=alertmanager</span><br><span class="line">After=network.target</span><br><span class="line"></span><br><span class="line">[Service]</span><br><span class="line">User=root</span><br><span class="line">ExecStart=/data/app/prometheus/alertmanager-0.24.0.linux-amd64/alertmanager \</span><br><span class="line"> --web.listen-address=:8908 \</span><br><span class="line"> --config.file=/data/app/prometheus/alertmanager-0.24.0.linux-amd64/alertmanager.yml \</span><br><span class="line"> --web.config.file=/data/app/prometheus/alertmanager-0.24.0.linux-amd64/web-config.yml \</span><br><span class="line"> --cluster.listen-address= # 这里是关闭了集群模式</span><br><span class="line">ExecReload=/bin/kill -HUP $MAINPID #reload不好用</span><br><span class="line">ExecStop=/bin/kill -KILL $MAINPID</span><br><span class="line">Type=simple</span><br><span class="line">KillMode=control-group</span><br><span class="line">Restart=on-failure</span><br><span class="line"></span><br><span class="line">[Install]</span><br><span class="line">WantedBy=multi-user.target</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">5.启动并设置自动启动</span></span><br><span class="line">systemctl start alertmanager && systemctl enable alertmanager</span><br></pre></td></tr></table></figure>
<h1 id="配置钉钉机器人通知"><a href="#配置钉钉机器人通知" class="headerlink" title="配置钉钉机器人通知"></a>配置钉钉机器人通知</h1><h2 id="下载安装prometheus-webhook-dingtalk"><a href="#下载安装prometheus-webhook-dingtalk" class="headerlink" title="下载安装prometheus-webhook-dingtalk"></a>下载安装prometheus-webhook-dingtalk</h2><ul>
<li><a href="https://github.com/timonwong/prometheus-webhook-dingtalk">https://github.com/timonwong/prometheus-webhook-dingtalk</a></li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">1. 下载解压</span></span><br><span class="line">wget https://github.com/timonwong/prometheus-webhook-dingtalk/releases/download/v2.1.0/prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz</span><br><span class="line">tar -zxvf prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">2. 配置webhook,将安装目录的config.template.yml 复制或重命名为config.yml</span></span><br><span class="line">targets:</span><br><span class="line"> webhook1: #钉钉需要的webhook和secret怎么获取这里就不写了</span><br><span class="line"> url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx</span><br><span class="line"> # secret for signature</span><br><span class="line"> secret: SEC000000000000000000000</span><br><span class="line"> webhook2:</span><br><span class="line"> url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx</span><br><span class="line"> webhook_legacy:</span><br><span class="line"> url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx</span><br><span class="line"> # Customize template content</span><br><span class="line"> message:</span><br><span class="line"> # Use legacy template</span><br><span class="line"> title: '{{ template "legacy.title" . }}'</span><br><span class="line"> text: '{{ template "legacy.content" . }}'</span><br><span class="line"> webhook_mention_all:</span><br><span class="line"> url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx</span><br><span class="line"> mention:</span><br><span class="line"> all: true</span><br><span class="line"> webhook_mention_users:</span><br><span class="line"> url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx</span><br><span class="line"> mention:</span><br><span class="line"> mobiles: ['156xxxx8827', '189xxxx8325']</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">3.配置系统管理 vim /usr/lib/systemd/system/prometheus-webhook-dingtalk.service</span></span><br><span class="line">[Unit]</span><br><span class="line">Description=prometheus-webhook-dingtalk</span><br><span class="line">After=network.target</span><br><span class="line"></span><br><span class="line">[Service]</span><br><span class="line">User=prometheus</span><br><span class="line">Group=prometheus</span><br><span class="line">ExecStart=/data/app/prometheus/prometheus-webhook-dingtalk-2.0.0.linux-amd64/prometheus-webhook-dingtalk \</span><br><span class="line"> --config.file=/data/app/prometheus/prometheus-webhook-dingtalk-2.0.0.linux-amd64/config.yml \</span><br><span class="line"> --web.listen-address=:8909 \</span><br><span class="line"> --web.enable-lifecycle \</span><br><span class="line"> --log.level=info \</span><br><span class="line"> --log.format=logfmt</span><br><span class="line">ExecReload=/bin/kill -HUP $MAINPID</span><br><span class="line">ExecStop=/bin/kill -KILL $MAINPID</span><br><span class="line">Type=simple</span><br><span class="line">KillMode=control-group</span><br><span class="line">Restart=always</span><br><span class="line">RestartSec=15s</span><br><span class="line"></span><br><span class="line">[Install]</span><br><span class="line">WantedBy=multi-user.target</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">5.启动并设置自动启动</span></span><br><span class="line">systemctl start prometheus-webhook-dingtalk && systemctl enable prometheus-webhook-dingtalk</span><br></pre></td></tr></table></figure>
<h2 id="配置alertmanager-yml"><a href="#配置alertmanager-yml" class="headerlink" title="配置alertmanager.yml"></a>配置alertmanager.yml</h2><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">1. 配置alertmanager,增加web.hook配置</span></span><br><span class="line">global:</span><br><span class="line"> resolve_timeout: 5m</span><br><span class="line">route:</span><br><span class="line"> group_by: ['alertname']</span><br><span class="line"> group_wait: 5s</span><br><span class="line"> group_interval: 5s</span><br><span class="line"> repeat_interval: 5m</span><br><span class="line"> receiver: 'web.hook'</span><br><span class="line">receivers:</span><br><span class="line">- name: 'web.hook'</span><br><span class="line"> webhook_configs:</span><br><span class="line"> - url: 'http://localhost:8060/dingtalk/webhook1/send' #这里就比较坑了 一定要加后缀路由</span><br><span class="line"> send_resolved: true</span><br><span class="line">inhibit_rules:</span><br><span class="line"> - source_match:</span><br><span class="line"> severity: 'critical'</span><br><span class="line"> target_match:</span><br><span class="line"> severity: 'warning'</span><br><span class="line"> equal: ['alertname', 'dev', 'instance']</span><br><span class="line"><span class="meta"># </span><span class="language-bash">2. 配置后重启alertmanager</span></span><br><span class="line">systemctl restart alertmanager</span><br></pre></td></tr></table></figure>
<h2 id="配置prometheus-yml"><a href="#配置prometheus-yml" class="headerlink" title="配置prometheus.yml"></a>配置prometheus.yml</h2><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">在prometheus中配置告警规则</span></span><br><span class="line">alerting:</span><br><span class="line"> alertmanagers:</span><br><span class="line"> - scheme: http</span><br><span class="line"> basic_auth:</span><br><span class="line"> username: xxx</span><br><span class="line"> password: '#{Singlee8848.}#'</span><br><span class="line"> static_configs:</span><br><span class="line"> - targets:</span><br><span class="line"> - '127.0.0.1:8908'</span><br><span class="line"> </span><br><span class="line">rule_files:</span><br><span class="line"> - "job/first_rules.yml"</span><br></pre></td></tr></table></figure>
<h1 id="通知测试"><a href="#通知测试" class="headerlink" title="通知测试"></a>通知测试</h1><h3 id="CPU测试"><a href="#CPU测试" class="headerlink" title="CPU测试"></a><strong>CPU测试</strong></h3><p>说明:下载stress软件,如果你Linux系统总的CPU线程有1个,那么设置测试的CPU一定要超过这个值。一般设置为2-3倍。</p>
<p>命令: stress –cpu 3 –timeout 6000</p>
<h3 id="内存测试"><a href="#内存测试" class="headerlink" title="内存测试"></a>内存测试</h3><p>说明:下载memtester软件,根据你实际的内存量设置合适的内存测试值,如你的主机有10G,那么按照设置告警的规则为90才告警,你可以设置测试内存为9.5G。测试单位有B K M G自选。</p>
<p>命令:memtester 900M</p>
<h3 id="磁盘测试"><a href="#磁盘测试" class="headerlink" title="磁盘测试"></a>磁盘测试</h3><p>说明:实验新挂一张小盘,使用dd命令创建一个大文件,文件一定要占用新盘的95%以上的存储空间。</p>
<p>命令:dd if=/dev/zero of=/tester/test11 bs=1024K count=1900</p>
<h3 id="主机up-down测试"><a href="#主机up-down测试" class="headerlink" title="主机up/down测试"></a>主机up/down测试</h3><p>说明:直接对一个监控节点进行关机操作,但是有一个问题prometheus监控是通过客户端的9100端口监控数据,一旦9100端口不通也会触发节点down告警。</p>
<p>命令:halt -p</p>
<ul>
<li>参考连接</li>
<li><a href="https://www.modb.pro/db/45956">https://www.modb.pro/db/45956</a></li>
<li><a href="https://blog.51cto.com/mageedu/2568334">https://blog.51cto.com/mageedu/2568334</a></li>
<li><a href="https://blog.51cto.com/u_15111052/3101859">https://blog.51cto.com/u_15111052/3101859</a></li>
</ul>
]]></content>
<categories>
<category>Prometheus</category>
</categories>
<tags>
<tag>Prometheus</tag>
<tag>Alertmanager</tag>
</tags>
</entry>
<entry>
<title>Prometheus之pushgateway</title>
<url>/posts/9ec87397/</url>
<content><![CDATA[]]></content>
</entry>
<entry>
<title>Prometheus之nginx-exporter</title>
<url>/posts/390e0286/</url>
<content><![CDATA[<p>摘要:Prometheus之nginx-vts-exporter安装配置</p>
<p>更新内容</p>
<table>
<thead>
<tr>
<th align="center">日期</th>
<th align="center">内容</th>
</tr>
</thead>
<tbody><tr>
<td align="center">2022-04</td>
<td align="center">新建文档</td>
</tr>
</tbody></table>
<span id="more"></span>
<h1 id="为nginx添加nginx-module-vts模块"><a href="#为nginx添加nginx-module-vts模块" class="headerlink" title="为nginx添加nginx-module-vts模块"></a>为nginx添加nginx-module-vts模块</h1><ul>
<li><a href="https://github.com/vozlt/nginx-module-vts">官方地址</a></li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">1. 下载nginx-module-vts,需要增加此模块到nginx中</span></span><br><span class="line">wget https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.10.3/nginx-vts-exporter-0.10.3.linux-amd64.tar.gz</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">2. 解压模块 并重新编译nginx</span></span><br><span class="line">tar -zxvf nginx-vts-exporter-0.10.3.linux-amd64.tar.gz</span><br><span class="line"><span class="meta"># </span><span class="language-bash">先获取nginx之前的安装模块命令 nginx -V 然后后面增加--add-module=/data/nginx/nginx-module-vts-0.1.18,在nginx源码包中执行</span></span><br><span class="line">./configure \</span><br><span class="line">…… \</span><br><span class="line">--add-module=/data/nginx/nginx-module-vts-0.1.18 </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">编译</span></span><br><span class="line">make</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">3. 备份原来nginx的可执行文件,替换新的nginx可执行文件</span></span><br><span class="line">cp /data/nginx/nginx/sbin/nginx /data/nginx/nginx/sbin/nginx.bak</span><br><span class="line">mv /data/nginx/nginx-1.18.0/objs/nginx /data/nginx/nginx/sbin/</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">4. nginx -V 检查模块是否增加好,reload nginx</span></span><br><span class="line">nginx -s reload</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">5. 配置nginx配置文件</span> </span><br><span class="line">http {</span><br><span class="line"> vhost_traffic_status_zone;</span><br><span class="line"></span><br><span class="line"> ...</span><br><span class="line"></span><br><span class="line"> server {</span><br><span class="line"></span><br><span class="line"> ...</span><br><span class="line"></span><br><span class="line"> location /status {</span><br><span class="line"> vhost_traffic_status_display;</span><br><span class="line"> vhost_traffic_status_display_format html;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line">}</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">6. reload nginx 并访问web</span></span><br><span class="line">nginx -s reload</span><br><span class="line">http://ip:port</span><br></pre></td></tr></table></figure>
<h1 id="安装部署nginx-vts-exporter"><a href="#安装部署nginx-vts-exporter" class="headerlink" title="安装部署nginx-vts-exporter"></a>安装部署nginx-vts-exporter</h1><ul>
<li><a href="https://github.com/hnlq715/nginx-vts-exporter">官方地址</a></li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">1. 下载二进制包并解压</span></span><br><span class="line">wget https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.10.3/nginx-vts-exporter-0.10.3.linux-amd64.tar.gz</span><br><span class="line">tar -zxvf nginx-vts-exporter-0.10.3.linux-amd64.tar.gz</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">2. 配置系统启动</span></span><br><span class="line">vim /usr/lib/systemd/system/nginx_exporter.service</span><br><span class="line"></span><br><span class="line">[Unit]</span><br><span class="line">Description=nginx_exporter</span><br><span class="line">After=network.target</span><br><span class="line"></span><br><span class="line">[Service]</span><br><span class="line">ExecStart=/data/wangzw/prometheus/nginx-vts-exporter-0.10.3.linux-amd64/nginx-vts-exporter \</span><br><span class="line"> -nginx.scrape_uri http://localhost/status/format/json \</span><br><span class="line"> -telemetry.address=:18010</span><br><span class="line"></span><br><span class="line">ExecStop=/bin/kill -KILL $MAINPID</span><br><span class="line">Type=simple</span><br><span class="line">KillMode=control-group</span><br><span class="line">Restart=always</span><br><span class="line">RestartSec=15s</span><br><span class="line"></span><br><span class="line">[Install]</span><br><span class="line">WantedBy=multi-user.target</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">3.启动并配置自动启动</span></span><br><span class="line">systemctl start nginx_exporter && systemctl enable nginx_exporter</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">4.基于nginx的auth_basic给nginx-vts-exporte的web增加身份验证</span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">使用以下命令生成秘钥文件</span></span><br><span class="line">htpasswd -bc /data/nginx/nginx/conf/conf.d/auth_passwd username password</span><br><span class="line"><span class="meta"># </span><span class="language-bash">配置一个nginx规则</span> </span><br><span class="line">server {</span><br><span class="line"></span><br><span class="line"> listen 8010;</span><br><span class="line"> server_name _;</span><br><span class="line"></span><br><span class="line"> location / {</span><br><span class="line"> auth_basic "authentication";</span><br><span class="line"> auth_basic_user_file /data/nginx/nginx/conf/conf.d/auth_passwd;</span><br><span class="line"> proxy_pass http://localhost:18010;</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line">}</span><br><span class="line"><span class="meta"># </span><span class="language-bash">检查并reload</span></span><br><span class="line">nginx -t</span><br><span class="line">nginx -s reload</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">5.配置prometheus.yml</span></span><br><span class="line">- job_name: 'nginx_exporter'</span><br><span class="line"> basic_auth: #这里加了身份认证,是基于nginx的auth_basic</span><br><span class="line"> username: xxx</span><br><span class="line"> password: xxx</span><br><span class="line"> static_configs:</span><br><span class="line"> - targets: ['ip:port']</span><br><span class="line"> relabel_configs:</span><br><span class="line"> - source_labels: [__address__]</span><br><span class="line"> regex: '.*'</span><br><span class="line"> target_label: instance</span><br><span class="line"> replacement: 'ip:port'</span><br><span class="line"> </span><br><span class="line"><span class="meta"># </span><span class="language-bash">5. 配置grafana模板,这里使用官方推荐2949</span></span><br></pre></td></tr></table></figure>
]]></content>
<categories>
<category>prometheus</category>
</categories>
<tags>
<tag>centos</tag>
<tag>prometheus</tag>
<tag>nginx-vts-exporter</tag>
</tags>
</entry>
<entry>
<title>Oracle11g数据库安装指南(centos)</title>
<url>/posts/4569b114/</url>
<content><![CDATA[<h3 id="摘要:oracle11g-在centos下的安装方法,三种方式(图形化,静默安装,远程图形化安装)"><a href="#摘要:oracle11g-在centos下的安装方法,三种方式(图形化,静默安装,远程图形化安装)" class="headerlink" title="摘要:oracle11g 在centos下的安装方法,三种方式(图形化,静默安装,远程图形化安装)"></a>摘要:oracle11g 在centos下的安装方法,三种方式(图形化,静默安装,远程图形化安装)</h3><h3 id="更新内容"><a href="#更新内容" class="headerlink" title="更新内容"></a>更新内容</h3><table>
<thead>
<tr>
<th align="center">日期</th>
<th align="center">内容</th>
</tr>
</thead>
<tbody><tr>
<td align="center">2022-02</td>
<td align="center">新建文档</td>
</tr>
</tbody></table>
<span id="more"></span>
<h2 id="1-Oracle11g数据库预安装任务"><a href="#1-Oracle11g数据库预安装任务" class="headerlink" title="1.Oracle11g数据库预安装任务"></a>1.Oracle11g数据库预安装任务</h2><figure class="highlight txt"><table><tr><td class="code"><pre><span class="line">本文档参考oracle官网教程:</span><br><span class="line">https://docs.oracle.com/cd/E11882_01/install.112/e47689/pre_install.htm#LADBI1085</span><br></pre></td></tr></table></figure>
<h3 id="1-1硬件要求"><a href="#1-1硬件要求" class="headerlink" title="1.1硬件要求"></a>1.1硬件要求</h3><ul>
<li>本文档使用centOS7(4GBRAM+30GB硬盘+50G硬盘)64位操作系统</li>
</ul>
<figure class="highlight txt"><table><tr><td class="code"><pre><span class="line">镜像下载地址:</span><br><span class="line">http://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2003.iso</span><br></pre></td></tr></table></figure>
<h4 id="1-1-1内存要求"><a href="#1-1-1内存要求" class="headerlink" title="1.1.1内存要求"></a>1.1.1内存要求</h4><ul>
<li><p> 最小:1GB RAM</p>
</li>
<li><p> 推荐:2GB RAM或者更多</p>
</li>
<li><p> 硬盘:20G(企业版安装所需4.29G和1.7G数据文件) </p>
</li>
<li><p>确定RAM大小,请输入:</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">cat /proc/meminfo</span><br></pre></td></tr></table></figure></li>
</ul>
<h4 id="1-1-2设置交换分区SWAP"><a href="#1-1-2设置交换分区SWAP" class="headerlink" title="1.1.2设置交换分区SWAP"></a>1.1.2设置交换分区SWAP</h4><ul>
<li><p>下表描述了已安装的RAM与配置的交换空间SWAP建议之间的关系: </p>
<table>
<thead>
<tr>
<th>内存</th>
<th>交换空间</th>
</tr>
</thead>
<tbody><tr>
<td>在1GB和2GB之间</td>
<td>RAM大小的1.5倍</td>
</tr>
<tr>
<td>2GB至16GB之间</td>
<td>与RAM大小相等</td>
</tr>
<tr>
<td>超过16GB</td>
<td>16GB</td>
</tr>
</tbody></table>
</li>
<li><p>目前云服务器(如阿里云)没有开启swap交换分区,可通过<code>free -m</code>查看是否设置交换分区,安装oracle比较占用内存,如果物理内存不够则可能会安装失败,此时可以设置交换分区。 </p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">1.#创建一个文件用于swap分区,下面命令可以创建一个4G的文件,时间会稍长,耐心等待一下</span><br><span class="line"> dd if=/dev/zero of=/var/swap bs=1M count=16384</span><br><span class="line">2.#将文件设置为swap分区</span><br><span class="line"> mkswap /var/swap</span><br><span class="line">3.#启用swap分区</span><br><span class="line"> swapon /var/swap</span><br><span class="line">4.#添加到指令到fstab文件中这样系统引导时会自动启动</span><br><span class="line"> echo "/var/swap/swap swap swap defaults 0 0" >> /etc/fstab</span><br><span class="line">5.#查看是否生效可用</span><br><span class="line"> free -m</span><br></pre></td></tr></table></figure></li>
</ul>
<h4 id="1-1-3-磁盘挂载"><a href="#1-1-3-磁盘挂载" class="headerlink" title="1.1.3 磁盘挂载"></a>1.1.3 磁盘挂载</h4><ul>
<li><p><strong>如果服务器新加硬盘,我们需要对此数据卷进行挂载 (此教程需要将oracle安装在此硬盘中)</strong></p>
<ol>
<li><p>使用以下命令查看未挂载的硬盘</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">fdisk -l</span><br></pre></td></tr></table></figure>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/202204011719151.png"></p>
</li>
<li><p>使用以下命令进行磁盘分区,此处只分了一个区</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">fdisk /dev/sdb</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">确认命令:m——> n ——>p ——>回车 ——>回车 ——>回车 ——>w</span></span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">n:添加一个分区</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">P:主分区</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">回车:只有一个分区</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">回车:开始扇区大小</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">回车:结束扇区大小</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">w:写入磁盘</span></span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">项目中该硬盘主要用于软件安装和存储数据用,所以全部用来做主分区。</span></span><br></pre></td></tr></table></figure>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/202204011702693.png"></p>
</li>
<li><p>格式化磁盘并写入文件系统</p>
<ul>
<li>可以使用以下命令,查看分区情况</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">lsblk</span><br></pre></td></tr></table></figure>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/202204011702596.png"></p>
<ul>
<li><p>使用以下命令格式化分区</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">mkfs.ext4 /dev/sdb1 #格式化为ext4格式</span><br></pre></td></tr></table></figure></li>
</ul>
</li>
<li><p>创建文件夹并挂载</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">mkdir /data</span><br><span class="line"></span><br><span class="line">mount /dev/sdb1 /data #挂载文件夹命令</span><br><span class="line"></span><br><span class="line">df -h #查看文件是否挂载成功</span><br></pre></td></tr></table></figure>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598755204749.png"></p>
</li>
<li><p>设置开机自动挂载</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">echo "/dev/vdb /data ext4 defaults 0 0" >> /etc/fstab</span><br></pre></td></tr></table></figure></li>
<li><p>检查 fstab是否有误,如果这个文件有错误可能造成系统不能正常启动,修改完成后务必使用mount命令测试是否有误.</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">mount -a #控制台没有报错,即为成功。</span><br></pre></td></tr></table></figure></li>
</ol>
</li>
</ul>
<h3 id="1-2软件要求"><a href="#1-2软件要求" class="headerlink" title="1.2软件要求"></a>1.2软件要求</h3><ul>
<li><p>安装依赖包,必须安装Oracle Database 11 <em>g</em>第2版(11.2)所需的软件包(64位):</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">yum -y install binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*i686 elfutils-libelf-devel compat-libstdc++-33*.devel gcc gcc-c++ glibc glibc*.i686 glibc-devel glibc-devel*.i686 libaio libaio*.i686 libaio-devel libaio-devel*.i686 libgcc libgcc*.i686 libstdc++ libstdc++*.i686 libstdc++-devel libstdc++-devel*.i686 libXi libXi*.i686 libXtst libXtst*.i686 make sysstat unixODBC unixODBC*.i686 unixODBC-devel unixODBC-devel*.i686</span><br></pre></td></tr></table></figure></li>
<li><p>如服务器使用的是centos6,在yum安装时会出问题,centos6官方已经停止支持,需要更换源</p>
<figure class="highlight sh"><table><tr><td class="code"><pre><span class="line">wget -O /etc/yum.repos.d/CentOS-Base.repo http://file.kangle.odata.cc/repo/Centos-6.repo</span><br><span class="line"></span><br><span class="line">wget -O /etc/yum.repos.d/epel.repo http://file.kangle.odata.cc/repo/epel-6.repo</span><br><span class="line"></span><br><span class="line">yum makecache</span><br></pre></td></tr></table></figure></li>
<li><p>由于centOS7中yum无法安装此包,只能单独下载此包,手动安装。</p>
</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="language-bash">下载pdksh包</span></span><br><span class="line">wget http://vault.centos.org/5.10/os/x86_64/CentOS/pdksh-5.2.14-37.el5_8.1.x86_64.rpm</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">如果提示wget未找到命令,可运行下面命令安装wget</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">yum install -y wget</span> </span><br><span class="line">rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm</span><br></pre></td></tr></table></figure>
<h3 id="1-3在-etc-hosts文件中增加主机名"><a href="#1-3在-etc-hosts文件中增加主机名" class="headerlink" title="1.3在/etc/hosts文件中增加主机名"></a>1.3在/etc/hosts文件中增加主机名</h3><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="language-bash">可通过hostname查看主机名</span></span><br><span class="line">vi /etc/hosts 在host文件尾部添加如下信息:</span><br><span class="line"></span><br><span class="line">192.168.85.106 xx xx #根据实际情况更改,查看主机名输入 hostname</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">如果想修改主机名,编辑/etc/hostname</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">vi /etc/hostname</span></span><br></pre></td></tr></table></figure>
<h3 id="1-4修改内核参数"><a href="#1-4修改内核参数" class="headerlink" title="1.4修改内核参数"></a>1.4修改内核参数</h3><ul>
<li>vi /etc/sysctl.conf 底部添加以下的内容 </li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="language-bash">指系统允许的最大的异步IO请求大小,默认即可</span></span><br><span class="line">fs.aio-max-nr = 1048576 </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">指系统能够打开最大的文件句柄数,默认即可</span></span><br><span class="line">fs.file-max = 6815744 </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">指表示系统任意时刻可以分配的所有共享内存段的总和的最大值,以页为单位,其值应不小于shmmax/page_size,缺省值就是2097152,如果服务器上运行的所有实例的SGA总和不超过8GB(通常系统可分配的共享内存的和最大值为8GB),通常不需要修改,如需更改,设置的一般规律</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">kernel.shmall =8G/4k= 2097152 ---内存8G</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">kernel.shmall = 16G/4k=16777216k/4k=4194304 ---内存16G</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">kernel.shmall = 32G/4k=33554432k/4k=8388608 ---内存32G</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">CentOs中页大小为4096即4K,实际环境以<span class="string">"getconf PAGE_SIZE"</span>结果为准)</span></span><br><span class="line">kernel.shmall = 2097152</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">表示单个共享内存的最大尺寸,以字节为单位,最低:536870912</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">32位Linux系统</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">最大值:小于4 GB的1个字节或4294967295的值</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">推荐:物理内存的一半以上</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">64位Linux系统</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">最大值:比物理内存少1个字节的值</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">推荐:物理内存的一半以上</span></span><br><span class="line">kernel.shmmax = 4294967295</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">指系统共享内存段的最大数量,默认即可</span></span><br><span class="line">kernel.shmmni = 4096 </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">kernel.sem是指 semmsl,semmns,semopm,semmni这4个参数</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">semmsl 指每个线号集的最大信号数,Oracle建议是设置为oracle的最大进程数+10</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">semmns 指整个系统的信号总数,也就是semmni*semmsl的结果</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">semopm 指每个semop系统调用可以执行的信号操作的最大数量</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">semmni 指整个系统的信号集的最大数量</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">例:我们的wxPaySvr需要设置最大的连接数为500,即在oracle ora.init文件参数中设置PROCESSES参数为500</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">则semmsl=510,semmns=semmsl* semmni=65280,semmni=128</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">另外semopm建议设置等于semmsl值即510</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">那么kernel.sem=510 65280 510 128</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">kernel.sem = 250 32000 100 128</span></span><br><span class="line">kernel.sem=510 65280 510 128</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">指本地的允许打开随机端口范围,默认即可</span></span><br><span class="line">net.ipv4.ip_local_port_range = 9000 65500 </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">指网络套接字的默认接收缓冲区的大小,默认即可</span></span><br><span class="line">net.core.rmem_default = 262144 </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">指网络套接字的最大接收缓冲区的大小,默认即可</span></span><br><span class="line">net.core.rmem_max = 4194304 </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">指网络套接字默认发送缓冲区的大小,默认即可</span></span><br><span class="line">net.core.wmem_default = 262144 </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">指网络套接字的最大发送缓冲区的大小,默认即可</span></span><br><span class="line">net.core.wmem_max = 1048576</span><br></pre></td></tr></table></figure>
<ul>
<li> 添加完成后执行命令sysctl使其自检并生效 </li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">sysctl -p </span><br></pre></td></tr></table></figure>
<h3 id="1-5添加oracle用户和用户组"><a href="#1-5添加oracle用户和用户组" class="headerlink" title="1.5添加oracle用户和用户组"></a>1.5添加oracle用户和用户组</h3><ul>
<li><u><em><strong>实际生产环境中,oracle用户密码设置一定要遵循实施规范</strong></em></u></li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">groupadd oinstall</span><br><span class="line">groupadd dba</span><br><span class="line">useradd -g oinstall -G dba oracle #-g 用户组 -G 用户附属组</span><br><span class="line">passwd oracle #此处在实际生产环境中,密码设置一定要遵循实施规范</span><br></pre></td></tr></table></figure>
<h3 id="1-6修改用户限制文件"><a href="#1-6修改用户限制文件" class="headerlink" title="1.6修改用户限制文件"></a>1.6修改用户限制文件</h3><h4 id="1-6-1修改系统资源限制"><a href="#1-6-1修改系统资源限制" class="headerlink" title="1.6.1修改系统资源限制"></a>1.6.1修改系统资源限制</h4><ul>
<li><code>vi /etc/security/limits.conf</code> 在文件底部添加以下的内容:</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">oracle soft nproc 2047</span><br><span class="line">oracle hard nproc 16384</span><br><span class="line">oracle soft nofile 1024</span><br><span class="line">oracle hard nofile 65536</span><br><span class="line"><span class="meta">#</span><span class="language-bash">第1行是设置进程数软限制;第2行是设置进程数硬限制;第3行是设置文件数软限制;第4行是设置文件数硬限制</span></span><br></pre></td></tr></table></figure>
<h4 id="1-6-2修改用户验证选项"><a href="#1-6-2修改用户验证选项" class="headerlink" title="1.6.2修改用户验证选项"></a>1.6.2修改用户验证选项</h4><ul>
<li><code>vi /etc/pam.d/login</code> 在文件底部添加以下的内容:</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">session required /lib64/security/pam_limits.so #64位操作系统</span><br><span class="line">session required pam_limits.so</span><br></pre></td></tr></table></figure>
<h4 id="1-6-3修改系统环境参数"><a href="#1-6-3修改系统环境参数" class="headerlink" title="1.6.3修改系统环境参数"></a>1.6.3修改系统环境参数</h4><ul>
<li><code>vi /etc/profile</code> 底部添加以下内容:</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">if [ $USER = "oracle" ]; then </span><br><span class="line"> if [$SHELL = "/bin/ksh" ]; then </span><br><span class="line"> ulimit -p 16384 </span><br><span class="line"> ulimit -n 65536 </span><br><span class="line"> else </span><br><span class="line"> ulimit -u 16384 -n 65536 </span><br><span class="line"> fi </span><br><span class="line">fi </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">添加完成后,刷新配置</span></span><br><span class="line">source /etc/profile</span><br></pre></td></tr></table></figure>
<h4 id="1-6-4创建安装目录和设置目录权限"><a href="#1-6-4创建安装目录和设置目录权限" class="headerlink" title="1.6.4创建安装目录和设置目录权限"></a>1.6.4创建安装目录和设置目录权限</h4><ul>
<li>oracle是数据库系统安装目录,oradata是数据库数据安装目录,oradata_back是数据备份目录,oraInventory是清单目录 </li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">mkdir -p /data/app/oracle11g/oracle</span><br><span class="line">mkdir -p /data/app/oracle11g/oradata</span><br><span class="line">mkdir -p /data/app/oracle11g/oradata_back</span><br><span class="line">mkdir -p /data/app/oracle11g/oraInventory</span><br><span class="line"></span><br><span class="line">chown -R oracle:oinstall /data/app/oracle11g</span><br><span class="line">chmod -R 775 /data/app/oracle11g </span><br></pre></td></tr></table></figure>
<h4 id="1-6-5配置oracle用户环境变量"><a href="#1-6-5配置oracle用户环境变量" class="headerlink" title="1.6.5配置oracle用户环境变量"></a>1.6.5配置oracle用户环境变量</h4><ul>
<li>用oracle用户,<code>vi ~/.bash_profile</code> 注释掉最后两行,在文件底部追加以下内容:</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">export ORACLE_BASE=/data/app/oracle11g/oracle</span><br><span class="line">export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1</span><br><span class="line">export ORACLE_SID=wxPaySvr #注意此处应按创建的实际实例名称填写 用于微信小程序&公众号wxPaySvr Upay前置的UpaySvr</span><br><span class="line">export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin</span><br></pre></td></tr></table></figure>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598756528862.png"></p>
<ul>
<li><p>刷新配置</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">source ~/.bash_profile</span><br></pre></td></tr></table></figure></li>
</ul>
<h3 id="1-7关闭Selinux"><a href="#1-7关闭Selinux" class="headerlink" title="1.7关闭Selinux"></a>1.7关闭Selinux</h3><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config </span><br><span class="line"></span><br><span class="line">setenforce 0</span><br></pre></td></tr></table></figure>
<hr>
<h2 id="2-安装oracle"><a href="#2-安装oracle" class="headerlink" title="2.安装oracle"></a>2.安装oracle</h2><ul>
<li><p><strong>根据oracle官网的的认证信息,centOS7与oracle11.2.0.4最适配,本文档涵盖oracle11.2.0.1和oracle11.2.0.4安装过程</strong></p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1599212792186.png"></p>
</li>
</ul>
<h3 id="2-1下载Oracle11g"><a href="#2-1下载Oracle11g" class="headerlink" title="2.1下载Oracle11g"></a>2.1下载Oracle11g</h3><figure class="highlight txt"><table><tr><td class="code"><pre><span class="line">oracle11.2.0.1:https://www.oracle.com/database/technologies/oracle-database-software-downloads.html</span><br><span class="line">oracle11.2.0.4:官网中没有免费下载,可通过其它渠道获取,目前生产中使用此版本</span><br></pre></td></tr></table></figure>
<h4 id="2-1-1上传并解压"><a href="#2-1-1上传并解压" class="headerlink" title="2.1.1上传并解压"></a>2.1.1上传并解压</h4><ul>
<li> 使用远程工具上传安装包至/home/oracle下</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">cd /home/oracle </span><br><span class="line"><span class="meta">#</span><span class="language-bash">安装oracle11.2.0.1时解压下面两个包</span></span><br><span class="line">unzip linux.x64_11gR2_database_1of2.zip</span><br><span class="line">unzip linux.x64_11gR2_database_2of2.zip</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">安装oracle11.2.0.4时解压下面两个包</span></span><br><span class="line">unzip p13390677_112040_Linux-x86-64_1of7.zip</span><br><span class="line">unzip p13390677_112040_Linux-x86-64_2of7.zip</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">如果你如法使用unzip命令解压.zip文件,可能是你没有安装unzip软件,下面是安装方法</span></span><br><span class="line">命令: yum list | grep zip/unzip #获取安装列表</span><br><span class="line">安装命令:yum install -y zip #提示输入时</span><br><span class="line">安装命令:yum install -y unzip #提示输入时</span><br></pre></td></tr></table></figure>
<h3 id="2-2安装的三种方式"><a href="#2-2安装的三种方式" class="headerlink" title="2.2安装的三种方式"></a>2.2安装的三种方式</h3><h4 id="2-2-1方式一:静默安装-编辑静默安装响应文件"><a href="#2-2-1方式一:静默安装-编辑静默安装响应文件" class="headerlink" title="2.2.1方式一:静默安装(编辑静默安装响应文件)"></a>2.2.1方式一:静默安装(编辑静默安装响应文件)</h4><ul>
<li> 此模式适用于在没有GUI界面的服务器上安装软件</li>
</ul>
<h5 id="2-2-1-1复制一份模板-该文件在解压的安装包里"><a href="#2-2-1-1复制一份模板-该文件在解压的安装包里" class="headerlink" title="2.2.1.1复制一份模板 ,该文件在解压的安装包里"></a>2.2.1.1复制一份模板 ,该文件在解压的安装包里</h5><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">cp -R /home/oracle/database/response/ /data/app/oracle11g/oracle</span><br></pre></td></tr></table></figure>
<h5 id="2-2-1-2修改安装所需的所有响应文件的所属组及权限"><a href="#2-2-1-2修改安装所需的所有响应文件的所属组及权限" class="headerlink" title="2.2.1.2修改安装所需的所有响应文件的所属组及权限"></a>2.2.1.2修改安装所需的所有响应文件的所属组及权限</h5><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">cd /data/app/oracle11g/oracle/response</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">使用root用户执行以下命令</span></span><br><span class="line">chown oracle:oinstall /data/app/oracle11g/oracle/response/*.rsp</span><br><span class="line">chmod 755 /data/app/oracle11g/oracle/response/*.rsp</span><br></pre></td></tr></table></figure>
<h5 id="2-2-1-3配置db-install-rsp文件"><a href="#2-2-1-3配置db-install-rsp文件" class="headerlink" title="2.2.1.3配置db_install.rsp文件"></a>2.2.1.3配置db_install.rsp文件</h5><ul>
<li> <code>vi /data/app/oracle11g/oracle/response/db_install.rsp </code> 更改以下内容:</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="language-bash">安装类型,只装数据库软件</span></span><br><span class="line">oracle.install.option=INSTALL_DB_SWONLY </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">主机名称(命令hostname查询)</span></span><br><span class="line">ORACLE_HOSTNAME=xx </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">指定oracleinventory目录的所有者</span></span><br><span class="line">UNIX_GROUP_NAME=oinstall </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">INVENTORY目录(不填就是默认值,本例此处需修改,因个人创建安装目录而定)</span> </span><br><span class="line">INVENTORY_LOCATION=/data/app/oracle11g/oraInventory </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">选择语言</span></span><br><span class="line">SELECTED_LANGUAGES=en,zh_CN </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">设置ORALCE_HOME的路径, 路径根据实际情况修改</span></span><br><span class="line">ORACLE_HOME=/data/app/oracle11g/oracle/product/11.2.0/db_1 </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">设置ORALCE_BASE的路径</span></span><br><span class="line">ORACLE_BASE=/data/app/oracle11g/oracle </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">选择Oracle安装数据库软件的版本 EE为企业版</span></span><br><span class="line">oracle.install.db.InstallEdition=EE </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">dba用户组</span> </span><br><span class="line">oracle.install.db.DBA_GROUP=dba </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">OSOPER权限的用户组</span></span><br><span class="line">oracle.install.db.OPER_GROUP=oinstall </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">是否需要安全更新</span></span><br><span class="line">DECLINE_SECURITY_UPDATES=true </span><br></pre></td></tr></table></figure>
<h5 id="2-2-1-4根据响应文件安装oracle"><a href="#2-2-1-4根据响应文件安装oracle" class="headerlink" title="2.2.1.4根据响应文件安装oracle"></a>2.2.1.4根据响应文件安装oracle</h5><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">cd /home/oracle/database/</span><br><span class="line"></span><br><span class="line">su oracle #切换Oracle用户</span><br><span class="line"></span><br><span class="line">./runInstaller -silent -force -responseFile /data/app/oracle11g/oracle/response/db_install.rsp </span><br><span class="line"> </span><br><span class="line"><span class="meta">#</span><span class="language-bash">参数说明:</span> </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">/home/oracle/database/是安装包解压后的路径</span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">runInstaller 是主要安装脚本</span> </span><br><span class="line"><span class="meta">#</span><span class="language-bash">-silent 静默模式</span> </span><br><span class="line"><span class="meta">#</span><span class="language-bash">-force 强制安装</span> </span><br><span class="line"><span class="meta">#</span><span class="language-bash">-ignorePrereq忽略warning直接安装。</span> </span><br><span class="line"><span class="meta">#</span><span class="language-bash">-responseFile读取安装应答文件。</span></span><br></pre></td></tr></table></figure>
<ul>
<li>安装需要一会儿,如果想看安装进度,可以再打开一个窗口,输出会话日志</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">tail -f 日志文件路径</span><br></pre></td></tr></table></figure>
<ul>
<li><p>对于静默安装,日志中会报下面这个错误,但是静默安装中会自动跳过,这个地方对于em有影响,可以选择安装完成后去处理。</p>
<figure class="highlight verilog"><table><tr><td class="code"><pre><span class="line">silentInstall2020-<span class="number">09</span>-<span class="number">08_01</span>-<span class="number">05</span>-<span class="number">44</span>PM<span class="variable">.log</span></span><br><span class="line">调用 makefile '/data/app/oracle11g/oracle/product/<span class="number">11</span><span class="variable">.2</span><span class="variable">.0</span>/db_1/sysman/lib/ins_emagent<span class="variable">.mk</span>' 的目标 'agent nmhs' 时出错。有关详细信息, 请参阅 '/data/app/oracle11g/oraInventory/logs/installActions2020-<span class="number">09</span>-<span class="number">08_01</span>-<span class="number">05</span>-<span class="number">44</span>PM<span class="variable">.log</span>'。</span><br><span class="line">Oracle Database <span class="number">11</span>g 的 安装 已成功。</span><br></pre></td></tr></table></figure></li>
<li><p>解决办法:手动指定库</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="language-bash">使用oracle用户,修改<span class="variable">$ORACLE_HOME</span>/sysman/lib/ins_emagent.mk</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">建议修改前备份原始文件</span></span><br><span class="line">cd $ORACLE_HOME/sysman/lib</span><br><span class="line">cp ins_emagent.mk ins_emagent.mk.bak</span><br><span class="line"></span><br><span class="line">vi $ORACLE_HOME/sysman/lib/ins_emagent.mk</span><br><span class="line"><span class="meta">#</span><span class="language-bash">进入vi编辑器后 命令模式输入/NMECTL 进行查找,快速定位要修改的行</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">在后面追加参数-lnnz11 第一个是字母l 后面两个是数字1</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">在176行位置,将$(MK_EMAGENT_NMECTL)修改为:</span></span><br><span class="line"><span class="meta">$</span><span class="language-bash">(MK_EMAGENT_NMECTL) -lnnz11</span></span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">然后手动进行编译</span></span><br><span class="line">make -f /data/app/oracle11g/oracle/product/11.2.0/db_1/sysman/lib/ins_emagent.mk relink_exe EXENAME=emdctl</span><br></pre></td></tr></table></figure></li>
<li><p>当出现 Successfully Setup Software. 证明已经安装成功,然后根据提示以 root 用户执行脚本</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598775511559.png"></p>
</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="language-bash">1.执行./orainstRoot.sh</span></span><br><span class="line">cd /data/app/oracle11g/oraInventory/</span><br><span class="line">./orainstRoot.sh</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">2.执行./root.sh</span></span><br><span class="line">cd /data/app/oracle11g/oracle/product/11.2.0/db_1</span><br><span class="line">./root.sh</span><br></pre></td></tr></table></figure>
<h5 id="2-2-1-5配置监听"><a href="#2-2-1-5配置监听" class="headerlink" title="2.2.1.5配置监听"></a>2.2.1.5配置监听</h5><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">netca /silent /responseFile /data/app/oracle11g/oracle/response/netca.rsp</span><br></pre></td></tr></table></figure>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1599446056100.png"></p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">lsnrctl status #查看监听状态 </span><br><span class="line"></span><br><span class="line">netstat -tlnp #通过此命令可以看到orcl的1521端口已经启动</span><br></pre></td></tr></table></figure>
<h5 id="2-2-1-6静默建库"><a href="#2-2-1-6静默建库" class="headerlink" title="2.2.1.6静默建库"></a>2.2.1.6静默建库</h5><ul>
<li> 编辑静默响应文件,把dbca.rsp复制一份,改名为dbca_实例名.rsp </li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">cd /data/app/oracle11g/oracle/response</span><br><span class="line">cp dbca.rsp dbca_wxPaySvr.rsp</span><br></pre></td></tr></table></figure>
<ul>
<li><p><code>vi /data/app/oracle11g/oracle/response/dbca_wxPaySvr.rsp</code> 更改以下配置:</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="language-bash">全局数据库的名字,根据实际需求---微信小程序&公众号wxPaySvr Upay前置的UpaySvr</span></span><br><span class="line">GDBNAME="Svr" </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">SID对应的实例名字,根据实际需求---微信小程序&公众号wxPaySvr Upay前置的UpaySvr</span></span><br><span class="line">SID="Svr" </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">SYS管理员密码 实际生产环境中,数据库用户密码设置一定要遵循实施规范</span></span><br><span class="line">SYSPASSWORD="123456" </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">SYSTEM管理员密码 实际生产环境中,数据库用户密码设置一定要遵循实施规范</span></span><br><span class="line">SYSTEMPASSWORD="123456" </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">数据文件存放目录</span></span><br><span class="line">DATAFILEDESTINATION=/data/app/oracle11g/oradata </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">恢复数据存放目录</span></span><br><span class="line">RECOVERYAREADESTINATION=/data/app/oracle11g/oradata_back </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">指定要创建的数据库的存储类型,有文件系统和自动存储管理</span></span><br><span class="line">STORAGETYPE=FS</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">字符集设置,根据实际需求---微信小程序&公众号=AL32UTF8 Upay前置的UpaySvr=ZHS16GBK</span></span><br><span class="line">CHARACTERSET="AL32UTF8"</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">数据库类型,多用途|数据仓库|一般事务型</span></span><br><span class="line">DATABASETYPE = "OLTP"</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">是否启用自动内存管理</span></span><br><span class="line">AUTOMATICMEMORYMANAGEMENT = "TRUE"</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">oracle内存3482MB,建议为物理内存70%~85%</span></span><br><span class="line">TOTALMEMORY= "3482" </span><br></pre></td></tr></table></figure></li>
<li><p>配置最大连接数</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="language-bash">此处需要修改数据库模板General_Purpose.dbc</span> </span><br><span class="line">cd /data/app/oracle11g/oracle/product/11.2.0/db_1/assistants/dbca/templates</span><br><span class="line">vi ./General_Purpose.dbc</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">修改第34行将<initParam name=<span class="string">"processes"</span> value=<span class="string">"150"</span>/>改为</span></span><br><span class="line"><initParam name="processes" value="500"/> #根据实际项目要求更改</span><br></pre></td></tr></table></figure></li>
<li><p>静默建库命令</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">su oracle #切换Oracle用户</span><br><span class="line"></span><br><span class="line">dbca -silent -responseFile /data/app/oracle11g/oracle/response/dbca_UPaySvr.rsp</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">可以选择查看安装日志</span></span><br><span class="line">cat /data/app/oracle11g/oracle/cfgtoollogs/dbca/wxPaySvr/wxPaySvr.log</span><br></pre></td></tr></table></figure></li>
</ul>
<ul>
<li><p>静默建库后,查看监听</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">lsnrctl status #查看是否监听到实例</span><br></pre></td></tr></table></figure></li>
</ul>
<h4 id="2-2-2-方式二:使用Oracle-Universal-Installer提供的图形用户界面(GUI)来安装Oracle数据库-,服务器需安装X-Window-System"><a href="#2-2-2-方式二:使用Oracle-Universal-Installer提供的图形用户界面(GUI)来安装Oracle数据库-,服务器需安装X-Window-System" class="headerlink" title="2.2.2 方式二:使用Oracle Universal Installer提供的图形用户界面(GUI)来安装Oracle数据库 ,服务器需安装X Window System"></a>2.2.2 方式二:使用Oracle Universal Installer提供的图形用户界面(GUI)来安装Oracle数据库 ,服务器需安装X Window System</h4><ul>
<li><strong>此方法较静默方式安装简便快捷</strong></li>
</ul>
<h5 id="2-2-2-1安装X-Window-System"><a href="#2-2-2-1安装X-Window-System" class="headerlink" title="2.2.2.1安装X Window System"></a>2.2.2.1安装X Window System</h5><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">yum groupinstall -y "X Window System" #仅为 GUI 环境构建提供了基本的框架,在屏幕上绘图和移动窗口</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">yum groupinstall <span class="string">"GNOMEDesktop"</span> -y <span class="comment">#安装GNOME桌面,这一步可选择不安装。</span></span></span><br></pre></td></tr></table></figure>
<h5 id="2-2-2-2-使用Xmanager的xstart远程服务器"><a href="#2-2-2-2-使用Xmanager的xstart远程服务器" class="headerlink" title="2.2.2.2 使用Xmanager的xstart远程服务器"></a>2.2.2.2 使用Xmanager的xstart远程服务器</h5><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="language-bash">服务器中需要安装xterm,xTerm是一个X Window System上的终端模拟器</span></span><br><span class="line">yum install -y xterm</span><br></pre></td></tr></table></figure>
<p>xstart配置:点击运行即可</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598605889016.png"></p>
<h5 id="2-2-2-3-oracle软件安装过程"><a href="#2-2-2-3-oracle软件安装过程" class="headerlink" title="2.2.2.3 oracle软件安装过程"></a>2.2.2.3 oracle软件安装过程</h5><ul>
<li><p>输入以下命令,进入安装界面</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">cd database/ #进入到oracle安装目录中</span><br><span class="line">./runInstaller</span><br></pre></td></tr></table></figure></li>
</ul>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598606095951.png"></p>
<ul>
<li><p>如果在xstart执行./runInstaller之后,弹出来的oracle安装界面乱码,是由于系统字符集不统一造成的,我们可以在安装oracle的时候临时设置一下字符集</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="language-bash">在每次调用图形界面以前,我们使用<span class="built_in">export</span>临时设置LANG(ORACLE 用户)</span></span><br><span class="line">export LANG=en_US.UTF-8</span><br></pre></td></tr></table></figure></li>
</ul>
<ol>
<li><p>邮箱可以不用填写,取消下面的“我希望通过My Oracle Support接受安全更新(W)”。 如图: </p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598263192400.png"></p>
</li>
<li><p>在oracle11.2.0.4安装过程中有此选项。</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1599211406486.png"></p>
</li>
<li><p>选择仅安装oracle软件: </p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598606147254.png"></p>
</li>
<li><p>选择单实例数据库安装</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1599447993195.png"></p>
</li>
<li><p>选择语言</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598422051351.png"></p>
</li>
<li><p>选择企业级</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598422067269.png"></p>
</li>
<li><p>安装目录,检查是否正确</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598606321237.png"></p>
</li>
<li><p>指定安装文件目录 安装oracle软件或者使用dbca创建数据库时,所有的日志都会放在oraInventory这个目录下。</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598606404071.png"></p>
</li>
<li><p>指定用户组</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598606666130.png"></p>
</li>
<li><p>执行先决条件检查,可忽略,此处是由于下载的依赖包版本过高造成的,在***<u>oracle11.2.0.4不会出现此问题</u>***</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598923080712.png"></p>
</li>
<li><p>是否保存响应文件,保不保存都可以</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598607147730.png"></p>
</li>
<li><p>开始安装</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598607230273.png"></p>
<ul>
<li><strong>注:安装过程中(大约%86左右)可能会弹出两个错误 ,处理方法如下:</strong></li>
</ul>
<ol>
<li><p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598607433242.png"></p>
<ul>
<li><p>解决方案:</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="language-bash">先查看 /usr/lib64/libc.a是否存在:</span></span><br><span class="line">ls /usr/lib64 | grep libc.a</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">如果查找不到先安装:glibc-static,如果有则略过此步</span></span><br><span class="line">yum -y install glibc-static</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">使用oracle用户,修改oracle安装目录下 <span class="variable">$ORACLE_HOME</span>/ctx/lib/ins_ctx.mk</span></span><br><span class="line">vi $ORACLE_HOME/ctx/lib/ins_ctx.mk</span><br><span class="line"><span class="meta"> #</span><span class="language-bash">将</span> </span><br><span class="line"> #ctxhx: $(CTXHXOBJ)</span><br><span class="line"> #$(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK)</span><br><span class="line"><span class="meta"> #</span><span class="language-bash">修改为:</span> </span><br><span class="line"> ctxhx: $(CTXHXOBJ)</span><br><span class="line"> -static $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK) /usr/lib64/libc.a</span><br><span class="line"><span class="meta"> #</span><span class="language-bash">改完后在oracle安装界面点Retry就可以了。</span></span><br></pre></td></tr></table></figure></li>
</ul>
</li>
<li><p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598607604995.png"></p>
<ul>
<li><p>解决方式:</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="language-bash">使用oracle用户,修改<span class="variable">$ORACLE_HOME</span>/sysman/lib/ins_emagent.mk</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">建议修改前备份原始文件</span></span><br><span class="line">cd $ORACLE_HOME/sysman/lib</span><br><span class="line">cp ins_emagent.mk ins_emagent.mk.bak</span><br><span class="line"></span><br><span class="line">vi $ORACLE_HOME/sysman/lib/ins_emagent.mk</span><br><span class="line"><span class="meta">#</span><span class="language-bash">进入vi编辑器后 命令模式输入/NMECTL 进行查找,快速定位要修改的行</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">在后面追加参数-lnnz11 第一个是字母l 后面两个是数字1</span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">在176行位置,将$(MK_EMAGENT_NMECTL)修改为:</span></span><br><span class="line"><span class="meta">$</span><span class="language-bash">(MK_EMAGENT_NMECTL) -lnnz11</span></span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">改完后在oracle安装界面点Retry就可以了。</span></span><br></pre></td></tr></table></figure></li>
</ul>
</li>
</ol>
</li>
<li><p>用root用户执行提示中的两个脚本,然后点击”OK”</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598608596167.png"></p>
<ul>
<li><p>执行./orainstRoot.sh</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598609223915.png"></p>
</li>
<li><p>执行./root.sh</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598609262045.png"></p>
</li>
</ul>
</li>
<li><p>至此软件安装完成</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598609291311.png"></p>
</li>
</ol>
<h5 id="2-2-2-4-创建oracle实例"><a href="#2-2-2-4-创建oracle实例" class="headerlink" title="2.2.2.4 创建oracle实例"></a>2.2.2.4 创建oracle实例</h5><ol>
<li><p>运行<code>dbca</code></p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598676142942.png"></p>
</li>
<li><p>选择创建一个实例</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598676203217.png"></p>
</li>
<li><p>选择一般用途或事物处理</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598925320580.png"></p>
</li>
<li><p>输入实例名和SID</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598676304407.png"></p>
</li>
<li><p>取消配置企业管理</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598676413852.png"></p>
</li>
<li><p>可以为每个账户设置不同的口令,也可以为所有账户设置一个相同的口令,这里选择的第二项:所有账户使用同一管理口令 </p>
<ul>
<li><em><strong><u>实际生产环境中,数据库用户密码设置一定要遵循实施规范</u></strong></em></li>
</ul>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598676516835.png"></p>
</li>
<li><p>指定数据库文件的存储类型和位置</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598677318245.png"></p>
</li>
<li><p>配置恢复选择</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598677409100.png"></p>
</li>
<li><p>是否要将示例方案添加到数据库中,next即可</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598925702937.png"></p>
</li>
<li><p>设置SGA PGA、 Processes 、数据库编码格式</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598677563712.png"></p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598677623272.png"></p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598677676169.png"></p>
</li>
<li><p>出现“数据库存储”窗口 ,直接下一步即可</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598926263374.png"></p>
</li>
<li><p>创建数据库</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598678587667.png"></p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598678694652.png"></p>
</li>
<li><p>至此实例创建完成,如果需要解锁其它用户,点击Password Management配置即可。</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598683619304.png"></p>
</li>
</ol>
<h5 id="2-2-2-5-配置监听(默认为动态注册)"><a href="#2-2-2-5-配置监听(默认为动态注册)" class="headerlink" title="2.2.2.5 配置监听(默认为动态注册)"></a>2.2.2.5 配置监听(默认为动态注册)</h5><ol>
<li><p>运行 <code>netca</code></p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598683782437.png"></p>
</li>
<li><p>一直下一步即可</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598683877580.png"></p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598683895805.png"></p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598684312055.png"></p>
</li>
<li><p>如需不使用默认1521端口,请在此处配置</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598683971875.png"></p>
</li>
<li><p>是否配置另一个监听</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598684153669.png"></p>
</li>
<li><p>配置完成,finish</p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598684371952.png"></p>
<p><img src="https://ziveni.oss-cn-beijing.aliyuncs.com/img/1598684387312.png"></p>
</li>
</ol>
<h3 id="2-3-方式三:服务器带GUI界面"><a href="#2-3-方式三:服务器带GUI界面" class="headerlink" title="2.3 方式三:服务器带GUI界面"></a>2.3 方式三:服务器带GUI界面</h3><ul>
<li>适用于拿到一台物理机,安装操作系统的时候选择带GNOME的服务器,上传oracle安装包,直接本地安装</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">cd /data/app/oracle11g/database #放置安装包的目录</span><br><span class="line"></span><br><span class="line">./runInstaller </span><br></pre></td></tr></table></figure>
<ul>
<li><strong>在完成预安装之后,按照2.2.2.3 2.2.2.4 2.2.2.5中的步骤继续安装即可</strong></li>
</ul>
<h2 id="3-配置快速启动-关闭数据库实例,配置监听-取消数据库密码期限限制-关闭审计功能"><a href="#3-配置快速启动-关闭数据库实例,配置监听-取消数据库密码期限限制-关闭审计功能" class="headerlink" title="3. 配置快速启动/关闭数据库实例,配置监听, 取消数据库密码期限限制, 关闭审计功能"></a>3. 配置快速启动/关闭数据库实例,配置监听, 取消数据库密码期限限制, 关闭审计功能</h2><h3 id="3-1配置dbstart-dbshut-主要用于开机自启"><a href="#3-1配置dbstart-dbshut-主要用于开机自启" class="headerlink" title="3.1配置dbstart/dbshut 主要用于开机自启"></a>3.1配置dbstart/dbshut 主要用于开机自启</h3><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta"># </span><span class="language-bash">1.查看SID是否正确wxPaySvr, 将N改为Y</span></span><br><span class="line">vi /etc/oratab </span><br><span class="line">wxPaySvr:/data/app/oracle11g/oracle/product/11.2.0/db_1:Y #Y(必须大写)</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">2.更改dbstart脚本</span></span><br><span class="line">vi $ORACLE_HOME/bin/dbstart </span><br><span class="line"><span class="meta"># </span><span class="language-bash">第80行 将ORACLE_HOME_LISTNER=<span class="variable">$1</span> 更改为</span></span><br><span class="line">ORACLE_HOME_LISTNER=$ORACLE_HOME</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">3.更改dbshut脚本</span></span><br><span class="line">vi $ORACLE_HOME/bin/dbshut</span><br><span class="line"><span class="meta"># </span><span class="language-bash">第50行 将ORACLE_HOME_LISTNER=<span class="variable">$1</span> 更改为</span></span><br><span class="line">ORACLE_HOME_LISTNER=$ORACLE_HOME</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">开启实例/关闭实例</span></span><br><span class="line">dbstart/dbshut</span><br></pre></td></tr></table></figure>
<h3 id="3-2配置监听(设置静态注册)"><a href="#3-2配置监听(设置静态注册)" class="headerlink" title="3.2配置监听(设置静态注册)"></a>3.2配置监听(设置静态注册)</h3><ul>
<li><p>Listener有两种注册模式 :动态注册(默认方式) 与 静态注册 。两者差异参考如下: </p>
<table>
<thead>
<tr>
<th>动态注册</th>
<th>静态注册</th>
</tr>
</thead>
<tbody><tr>
<td>状态=READY ,listener实时的都知道实例的状态,数据库在关闭的时候会动态的从listener中注销</td>
<td>状态=UNKNOWN,不知道实例的状态</td>
</tr>
<tr>
<td>不需要修改配置文件</td>
<td>需要配置listener.ora</td>
</tr>
<tr>
<td>PMON每60秒将服务(service_names和instance_name)注册到监听中</td>
<td>是将服务(global_name/sid_name)写入到listener.ora文件中</td>
</tr>
<tr>
<td>修改不需要重启</td>
<td>每次修改都要重启监听</td>
</tr>
<tr>
<td>重启不能马上注册服务</td>
<td>重启马上注册服务</td>
</tr>
</tbody></table>
<figure class="highlight txt"><table><tr><td class="code"><pre><span class="line">Oracle数据库实例的动态监听注册细节。有如下这样一个规律:</span><br><span class="line">1.如果是先启动监听,后启动数据库实例,则动态监听会自动识别到启动的数据库实例;</span><br><span class="line">2.在数据库实例正常运行的情况下重启监听,则数据库实例会等很长时间才能在动态监听中注册成功,大约需要1分钟的等待时间;</span><br><span class="line">3. 如果是先启动数据库实例,后启动监听,效果和2一样;</span><br><span class="line">4.如果不希望长时间等待动态监听注册的过程,可以使用“alter system register;”</span><br><span class="line">5.动态注册默认只注册到默认的监听器上(名称是LISTENER、端口是1521、协议是TCP),如果需要向非默认监听注册,则需要配置local_listener参数,此处不做讨论。</span><br></pre></td></tr></table></figure>
<ul>
<li><p>本教程使用静态+动态,原因:</p>
<figure class="highlight sql"><table><tr><td class="code"><pre><span class="line"><span class="comment">--如果监听器不是早于oracle实例启动或者监听器重启,则需要等待PMON自动注册(事件大约1分钟),如若此时不希望因为等待造成无法使用则:</span></span><br><span class="line"><span class="comment">--动态注册:需要使用以下命令快速注册,</span></span><br><span class="line">sqlplus <span class="operator">/</span> <span class="keyword">as</span> sysdba</span><br><span class="line"><span class="keyword">alter</span> <span class="keyword">system</span> register;</span><br><span class="line"><span class="comment">--静态+动态的模式则无需做任何操作,即可连接。</span></span><br></pre></td></tr></table></figure></li>
</ul>
</li>
</ul>
<h4 id="3-2-1-静态注册配置listener-ora"><a href="#3-2-1-静态注册配置listener-ora" class="headerlink" title="3.2.1 静态注册配置listener.ora"></a>3.2.1 静态注册配置listener.ora</h4><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="language-bash">进入到listener.ora增加以下内容</span></span><br><span class="line"></span><br><span class="line">vi $ORACLE_HOME/network/admin/listener.ora</span><br><span class="line"></span><br><span class="line">SID_LIST_LISTENER =</span><br><span class="line"> (SID_LIST =</span><br><span class="line"> (SID_DESC =</span><br><span class="line"> (SID_NAME = wxPaySvr)</span><br><span class="line"> (ORACLE_HOME = /data/app/oracle11g/oracle/product/11.2.0/db_1)</span><br><span class="line"> (GLOBAL_DBNAME = wxPaySvr)</span><br><span class="line"> )</span><br><span class="line"> )</span><br><span class="line"> </span><br><span class="line"><span class="meta"> #</span><span class="language-bash">保存后需重启监听 lsnrctl reload</span></span><br></pre></td></tr></table></figure>
<h3 id="3-3-取消密码期限限制"><a href="#3-3-取消密码期限限制" class="headerlink" title="3.3 取消密码期限限制"></a>3.3 取消密码期限限制</h3><ul>
<li>默认的180天,这里我们修改为无限制</li>
</ul>
<figure class="highlight sql"><table><tr><td class="code"><pre><span class="line"><span class="comment">--1.以 DBA 的身份登陆SQL plus</span></span><br><span class="line"> sqlplus <span class="operator">/</span> <span class="keyword">as</span> sysdba;</span><br><span class="line"> </span><br><span class="line"><span class="comment">--2.查看用户的proifle是哪个,一般是default:</span></span><br><span class="line"> <span class="keyword">SELECT</span> username,PROFILE <span class="keyword">FROM</span> dba_users;</span><br><span class="line"> </span><br><span class="line"><span class="comment">--3.查看指定概要文件(如default)的密码有效期设置:</span></span><br><span class="line"> <span class="keyword">SELECT</span> <span class="operator">*</span> <span class="keyword">FROM</span> dba_profiles s <span class="keyword">WHERE</span> s.profile<span class="operator">=</span><span class="string">'DEFAULT'</span> <span class="keyword">AND</span> resource_name<span class="operator">=</span><span class="string">'PASSWORD_LIFE_TIME'</span>;</span><br><span class="line"> </span><br><span class="line"><span class="comment">--4.将密码有效期由默认的180天修改成“无限制”:</span></span><br><span class="line"> <span class="keyword">ALTER</span> PROFILE <span class="keyword">DEFAULT</span> LIMIT PASSWORD_LIFE_TIME UNLIMITED;</span><br><span class="line"><span class="comment">--修改之后不需要重启动数据库,会立即生效。 </span></span><br></pre></td></tr></table></figure>
<h3 id="3-4-关闭审计功能"><a href="#3-4-关闭审计功能" class="headerlink" title="3.4 关闭审计功能"></a>3.4 关闭审计功能</h3><ul>
<li> Oracle 11g 安装后会默认开启数据库审计功能,并且日志保存在 SYSTEM 表空间中。导致SYSTEM 空间越来越大。当表空间已满时,会导致无法连接数据库。 </li>
</ul>
<figure class="highlight sql"><table><tr><td class="code"><pre><span class="line"><span class="comment">--查看审计是否开启,如果为DB就是代表为开启状态。</span></span><br><span class="line"><span class="keyword">SQL</span><span class="operator">></span> <span class="keyword">show</span> <span class="keyword">parameter</span> audit_trail;</span><br><span class="line"></span><br><span class="line">NAME TYPE <span class="keyword">VALUE</span></span><br><span class="line"><span class="comment">------------------------------------ ----------- ------------------------------</span></span><br><span class="line">audit_trail string DB</span><br><span class="line"></span><br><span class="line"><span class="comment">--修改审计为关闭状态。</span></span><br><span class="line"><span class="keyword">SQL</span><span class="operator">></span> <span class="keyword">alter</span> <span class="keyword">system</span> <span class="keyword">set</span> audit_trail<span class="operator">=</span><span class="literal">FALSE</span> <span class="keyword">scope</span><span class="operator">=</span>spfile;</span><br><span class="line"></span><br><span class="line"><span class="keyword">System</span> altered.</span><br><span class="line"></span><br><span class="line"><span class="comment">--关闭数据库</span></span><br><span class="line"><span class="keyword">SQL</span><span class="operator">></span> shutdown immediate;</span><br><span class="line">Database closed.</span><br><span class="line">Database dismounted.</span><br><span class="line">ORACLE instance shut down.</span><br><span class="line"></span><br><span class="line"><span class="comment">--重启数据库</span></span><br><span class="line"><span class="keyword">SQL</span><span class="operator">></span> startup;</span><br><span class="line">ORACLE instance started.</span><br><span class="line"></span><br><span class="line">Total <span class="keyword">System</span> <span class="keyword">Global</span> Area <span class="number">2137886720</span> bytes</span><br><span class="line">Fixed Size <span class="number">2230072</span> bytes</span><br><span class="line">Variable Size <span class="number">1325402312</span> bytes</span><br><span class="line">Database Buffers <span class="number">805306368</span> bytes</span><br><span class="line">Redo Buffers <span class="number">4947968</span> bytes</span><br><span class="line">Database mounted.</span><br><span class="line">Database opened.</span><br><span class="line"></span><br><span class="line"><span class="comment">--查看审计是否关闭</span></span><br><span class="line"><span class="keyword">SQL</span><span class="operator">></span> <span class="keyword">show</span> <span class="keyword">parameter</span> audit_trail;</span><br><span class="line"></span><br><span class="line">NAME TYPE <span class="keyword">VALUE</span></span><br><span class="line"><span class="comment">------------------------------------ ----------- ------------------------------</span></span><br><span class="line">audit_trail string <span class="literal">FALSE</span></span><br></pre></td></tr></table></figure>
<h2 id="4-开放端口,设置开机自启"><a href="#4-开放端口,设置开机自启" class="headerlink" title="4.开放端口,设置开机自启"></a>4.开放端口,设置开机自启</h2><h3 id="4-1开放1521端口"><a href="#4-1开放1521端口" class="headerlink" title="4.1开放1521端口"></a>4.1开放1521端口</h3><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">firewall-cmd --query-port=1521/tcp #查看端口是否开放</span><br><span class="line"></span><br><span class="line">firewall-cmd --permanent --zone=public --add-port=1521/tcp #永久开放1521端口号</span><br><span class="line"></span><br><span class="line">systemctl restart firewalld.service #重启防火墙</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">systemctl status firewalld.service #查看防火墙状态</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"> </span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">备注:启动 | 关闭 | 重启 防火墙</span></span><br><span class="line">systemctl [start | stop | restart] firewalld.service</span><br></pre></td></tr></table></figure>
<h3 id="4-2设置开机自启(两种方式)"><a href="#4-2设置开机自启(两种方式)" class="headerlink" title="4.2设置开机自启(两种方式)"></a>4.2设置开机自启(两种方式)</h3><ol>
<li>在rc.local文件中添加oracle自启脚本</li>
</ol>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">vi /etc/rc.local # 编辑,在文件末尾增加如下内容</span><br><span class="line">su - oracle -c 'lsnrctl start'</span><br><span class="line">su - oracle -c 'dbstart'</span><br><span class="line"><span class="meta">#</span><span class="language-bash">保存并退出</span></span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta"># </span><span class="language-bash">配置文件权限 /etc/rc.local的开机自动启动的权限默认是关闭的。Centos为了兼容性,设置了这个,但是并不默认启动。执行以下代码赋予该文件执行权限后才能启用:</span></span><br><span class="line">chmod +x /etc/rc.local </span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="language-bash">开机自动以 oracle 用户执行上面两个命令啦</span></span><br></pre></td></tr></table></figure>
<ul>
<li>如果此方式不生效,或造成服务器出现其它问题,可使用下面第2种方式。</li>
</ul>
<ol start="2">
<li>通过将oracle注册为服务的形式</li>
</ol>
<ul>
<li><p>在<code> /etc/rc.d/init.d/</code>中建立自启脚本</p>