﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-SA Blog --系统管理员的博客生涯</title><link>http://www.cnitblog.com/201/</link><description>书写自己的系统管理博客生涯</description><language>zh-cn</language><lastBuildDate>Wed, 29 Apr 2026 05:59:55 GMT</lastBuildDate><pubDate>Wed, 29 Apr 2026 05:59:55 GMT</pubDate><ttl>60</ttl><item><title>关于 SSHH_config 配置文件中GSSAPIAuthentication选项的作用</title><link>http://www.cnitblog.com/201/archive/2020/09/02/92336.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Wed, 02 Sep 2020 01:16:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2020/09/02/92336.html</guid><description><![CDATA[<p style="font: 13.92px/19.88px Verdana, Arial, Helvetica, sans-serif; margin: 10px auto; padding: 0px; color: #000000; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; widows: 1; background-color: #ffffff; -webkit-text-stroke-width: 0px;"><span style="margin: 0px; padding: 0px;">基本上解决办法就：</span><br style="margin: 0px; padding: 0px;" /><span style="margin: 0px; padding: 0px;">1，禁用DNS反向解析</span></p><p style="font: 13.92px/19.88px Verdana, Arial, Helvetica, sans-serif; margin: 10px auto; padding: 0px; color: #000000; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; widows: 1; background-color: #ffffff; -webkit-text-stroke-width: 0px;"><span style="margin: 0px; padding: 0px; font-size: 14pt;">&nbsp;UseDNS no</span></p><p style="font: 13.92px/19.88px Verdana, Arial, Helvetica, sans-serif; margin: 10px auto; padding: 0px; color: #000000; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; widows: 1; background-color: #ffffff; -webkit-text-stroke-width: 0px;"><span style="margin: 0px; padding: 0px; font-size: 14pt;">2，还有系统默认有个忽略以前登录过主机的记录，将这个打开基本上就会解析登录慢的问题</span></p><p style="font: 13.92px/19.88px Verdana, Arial, Helvetica, sans-serif; margin: 10px auto; padding: 0px; color: #000000; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; widows: 1; background-color: #ffffff; -webkit-text-stroke-width: 0px;"><span style="margin: 0px; padding: 0px; font-size: 14pt;">&nbsp;IgnoreRhosts yes</span></p><p style="font: 13.92px/19.88px Verdana, Arial, Helvetica, sans-serif; margin: 10px auto; padding: 0px; color: #000000; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; widows: 1; background-color: #ffffff; -webkit-text-stroke-width: 0px;"><span style="margin: 0px; padding: 0px; font-size: 14pt;">重启SSH服务</span></p><p style="font: 13.92px/19.88px Verdana, Arial, Helvetica, sans-serif; margin: 10px auto; padding: 0px; color: #000000; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; widows: 1; background-color: #ffffff; -webkit-text-stroke-width: 0px;"><span style="margin: 0px; padding: 0px;">&nbsp;service sshd reload&nbsp;</span><br style="margin: 0px; padding: 0px;" /></p><p style="font: 13.92px/19.88px Verdana, Arial, Helvetica, sans-serif; margin: 10px auto; padding: 0px; color: #000000; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; widows: 1; background-color: #ffffff; -webkit-text-stroke-width: 0px;">3、修改&#8220;GSSAPIAuthentication&#8221;的值为&#8220;no&#8221;（没有的添加该配置选项，注释掉的放开即可）；<br style="margin: 0px; padding: 0px;" /><span style="margin: 0px; padding: 0px;">其实用户可以自己运行&#8220;ssh  -v host&#8221;进行debug的，通过debug信息就可以看到连接到什么地方被耽搁了；我的测试就是在"debug1: Unspecified  GSS failure. Minor code may provide more information"  这里停顿了一会儿，所以感觉修改&#8220;GSSAPIAuthentication&#8221;的值应该会有效果，但实践证明，如果不改上面几项，该处更改在我的系统依然不起作用！</span><br /></p><div><br />&nbsp;</div><div># 1. 关于 SSH Server 的整体设定，包含使用的 port 啦，以及使用的密码演算方式<br />Port 22　　　　　　　　　　# SSH 预设使用 22 这个 port，您也可以使用多的 port ！<br />　　　　　　　　　　　　　 # 亦即重复使用 port 这个设定项目即可！<br />Protocol 2,1　　　　　　　 # 选择的 SSH 协议版本，可以是 1 也可以是 2 ，<br />　　　　　　　　　　　　　 # 如果要同时支持两者，就必须要使用 2,1 这个分隔了！<br />#ListenAddress 0.0.0.0　　 # 监听的主机适配卡！举个例子来说，如果您有两个 IP，<br />　　　　　　　　　　　　　 # 分别是 192.168.0.100 及 192.168.2.20 ，那么只想要<br />　　　　　　　　　　　　　 # 开放 192.168.0.100 时，就可以写如同下面的样式：<br />ListenAddress 192.168.0.100&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # 只监听来自 192.168.0.100 这个 IP 的SSH联机。<br />　　　　　　　　　　　　　　　　　　 # 如果不使用设定的话，则预设所有接口均接受 SSH<br />PidFile /var/run/sshd.pid　　　　　　# 可以放置 SSHD 这个 PID 的档案！左列为默认值<br />LoginGraceTime 600　　　　 # 当使用者连上 SSH server 之后，会出现输入密码的画面，<br />　　　　　　　　　　　　　 # 在该画面中，在多久时间内没有成功连上 SSH server ，<br />　　　　　　　　　　　　　 # 就断线！时间为秒！<br />Compression yes　　　　　　# 是否可以使用压缩指令？当然可以?！<br />　<br /># 2. 说明主机的 Private Key 放置的档案，预设使用下面的档案即可！<br />HostKey /etc/ssh/ssh_host_key　　　　# SSH version 1 使用的私钥<br />HostKey /etc/ssh/ssh_host_rsa_key　　# SSH version 2 使用的 RSA 私钥<br />HostKey /etc/ssh/ssh_host_dsa_key　　# SSH version 2 使用的 DSA 私钥</div><p># 2.1 关于 version 1 的一些设定！<br />KeyRegenerationInterval 3600　 　　　# 由前面联机的说明可以知道， version 1 会使用 <br />　　　　　　　　　　　　　　　　　　 # server 的 Public Key ，那么如果这个 Public <br />　　　　　　　　　　　　　　　　　　 # Key 被偷的话，岂不完蛋？所以需要每隔一段时间<br />　　　　　　　　　　　　　　　　　　 # 来重新建立一次！这里的时间为秒！<br />ServerKeyBits 768 　　　　　　　　　 # 没错！这个就是 Server key 的长度！<br /># 3. 关于登录文件的讯息数据放置与 daemon 的名称！<br />SyslogFacility AUTH　　　　　　　　　# 当有人使用 SSH 登入系统的时候，SSH会记录资<br />　　　　　　　　　　　　　　　　　　 # 讯，这个信息要记录在什么 daemon name 底下？<br />　　　　　　　　　　　　　　　　　　 # 预设是以 AUTH 来设定的，即是 /var/log/secure<br />　　　　　　　　　　　　　　　　　　 # 里面！什么？忘记了！回到 Linux 基础去翻一下<br />　　　　　　　　　　　　　　　　　　 # 其它可用的 daemon name 为：DAEMON,USER,AUTH,<br />　　　　　　　　　　　　　　　　　　 # LOCAL0,LOCAL1,LOCAL2,LOCAL3,LOCAL4,LOCAL5,<br />LogLevel INFO　　　　　　　　　　　　# 登录记录的等级！嘿嘿！任何讯息！<br />　　　　　　　　　　　　　　　　　　 # 同样的，忘记了就回去参考！<br /># 4. 安全设定项目！极重要！<br /># 4.1 登入设定部分<br />PermitRootLogin no　　 　　# 是否允许 root 登入！预设是允许的，但是建议设定成 no！<br />UserLogin no　　　　　　　 # 在 SSH 底下本来就不接受 login 这个程序的登入！<br />StrictModes yes　　　　　　# 当使用者的 host key 改变之后，Server 就不接受联机，<br />　　　　　　　　　　　　　 # 可以抵挡部分的木马程序！<br />#RSAAuthentication yes　　 # 是否使用纯的 RSA 认证！？仅针对 version 1 ！<br />PubkeyAuthentication yes　 # 是否允许 Public Key ？当然允许啦！只有 version 2<br />AuthorizedKeysFile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .ssh/authorized_keys<br />　　　　　　　　　　　　　 # 上面这个在设定若要使用不需要密码登入的账号时，那么那个<br />　　　　　　　　　　　　　 # 账号的存放档案所在档名！<br /># 4.2 认证部分<br />RhostsAuthentication no　　# 本机系统不止使用 .rhosts ，因为仅使用 .rhosts 太<br />　　　　　　　　　　　　　 # 不安全了，所以这里一定要设定为 no ！<br />IgnoreRhosts yes　　　　　 # 是否取消使用 ~/.ssh/.rhosts 来做为认证！当然是！<br />RhostsRSAAuthentication no # 这个选项是专门给 version 1 用的，使用 rhosts 档案在<br />　　　　　　　　　　　　　 # /etc/hosts.equiv配合 RSA 演算方式来进行认证！不要使用<br />HostbasedAuthentication no # 这个项目与上面的项目类似，不过是给 version 2 使用的！<br />IgnoreUserKnownHosts no　　# 是否忽略家目录内的 ~/.ssh/known_hosts 这个档案所记录<br />　　　　　　　　　　　　　 # 的主机内容？当然不要忽略，所以这里就是 no 啦！<br />PasswordAuthentication yes # 密码验证当然是需要的！所以这里写 yes ?！<br />PermitEmptyPasswords no　　# 若上面那一项如果设定为 yes 的话，这一项就最好设定<br />　　　　　　　　　　　　　 # 为 no ，这个项目在是否允许以空的密码登入！当然不许！<br />ChallengeResponseAuthentication yes&nbsp; # 挑战任何的密码认证！所以，任何 login.conf <br />　　　　　　　　　　　　　　　　　　 # 规定的认证方式，均可适用！<br />#PAMAuthenticationViaKbdInt yes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # 是否启用其它的 PAM 模块！启用这个模块将会<br />　　　　　　　　　　　　　　　　　　 # 导致 PasswordAuthentication 设定失效！<br />　<br /># 4.3 与 Kerberos 有关的参数设定！因为我们没有 Kerberos 主机，所以底下不用设定！<br />#KerberosAuthentication no<br />#KerberosOrLocalPasswd yes<br />#KerberosTicketCleanup yes<br />#KerberosTgtPassing no<br />　<br /># 4.4 底下是有关在 X-Window 底下使用的相关设定！<br />X11Forwarding yes<br />#X11DisplayOffset 10<br />#X11UseLocalhost yes<br /># 4.5 登入后的项目：<br />PrintMotd no&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # 登入后是否显示出一些信息呢？例如上次登入的时间、地点等<br />　　　　　　　　　　　　　# 等，预设是 yes ，但是，如果为了安全，可以考虑改为 no ！<br />PrintLastLog yes　　　　　# 显示上次登入的信息！可以啊！预设也是 yes ！<br />KeepAlive yes　　　　　　 # 一般而言，如果设定这项目的话，那么 SSH Server 会传送<br />　　　　　　　　　　　　　# KeepAlive 的讯息给 Client 端，以确保两者的联机正常！<br />　　　　　　　　　　　　　# 在这个情况下，任何一端死掉后， SSH 可以立刻知道！而不会<br />　　　　　　　　　　　　　# 有僵尸程序的发生！<br />UsePrivilegeSeparation yes # 使用者的权限设定项目！就设定为 yes 吧！<br />MaxStartups 10　　　　　　# 同时允许几个尚未登入的联机画面？当我们连上 SSH ，<br />　　　　　　　　　　　　　# 但是尚未输入密码时，这个时候就是我们所谓的联机画面啦！<br />　　　　　　　　　　　　　# 在这个联机画面中，为了保护主机，所以需要设定最大值，<br />　　　　　　　　　　　　　# 预设最多十个联机画面，而已经建立联机的不计算在这十个当中<br /># 4.6 关于使用者抵挡的设定项目：<br />DenyUsers *　　　　　　　 # 设定受抵挡的使用者名称，如果是全部的使用者，那就是全部<br />　　　　　　　　　　　　　# 挡吧！若是部分使用者，可以将该账号填入！例如下列！<br />DenyUsers test<br />DenyGroups test　　　　　 # 与 DenyUsers 相同！仅抵挡几个群组而已！<br /># 5. 关于 SFTP 服务的设定项目！<br />Subsystem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sftp&nbsp;&nbsp;&nbsp; /usr/lib/ssh/sftp-server</p><img src ="http://www.cnitblog.com/201/aggbug/92336.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2020-09-02 09:16 <a href="http://www.cnitblog.com/201/archive/2020/09/02/92336.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>吐槽一下阿里系软件，就是天天的升级？？？</title><link>http://www.cnitblog.com/201/archive/2020/08/10/92311.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Mon, 10 Aug 2020 06:15:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2020/08/10/92311.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/92311.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2020/08/10/92311.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/92311.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/92311.html</trackback:ping><description><![CDATA[<div> 不是说你软件不好，</div><div>阿里的软件就是天天的升级， 比如钉钉，淘宝，天猫，反正就是没事就给你推送一个更新，你不升级它会提醒死你。<br /><br />好像他们的目标就是天天升级，好奇怪，你到底想要大家手机里面的什么信息？？？ 实质上没人喜欢你的新功能，特讨厌你这更新，你知道吗？<br /><br />这点阿里系软件真不如憨鹅。</div><img src ="http://www.cnitblog.com/201/aggbug/92311.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2020-08-10 14:15 <a href="http://www.cnitblog.com/201/archive/2020/08/10/92311.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CentOS 7 安装 MySQL</title><link>http://www.cnitblog.com/201/archive/2020/07/24/92295.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Fri, 24 Jul 2020 04:07:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2020/07/24/92295.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/92295.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2020/07/24/92295.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/92295.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/92295.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 简介：                                            环境 CentOS 7.1 (64-bit system)MySQL 5.6.24 CentOS 安装 参考：http://www.waylau.com/centos-7-installation-and-configuration/ 依赖 MySQL 依赖 libaio，所以先要安装 libaio yu...&nbsp;&nbsp;<a href='http://www.cnitblog.com/201/archive/2020/07/24/92295.html'>阅读全文</a><img src ="http://www.cnitblog.com/201/aggbug/92295.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2020-07-24 12:07 <a href="http://www.cnitblog.com/201/archive/2020/07/24/92295.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GitLab常用命令整理</title><link>http://www.cnitblog.com/201/archive/2020/07/12/92272.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Sun, 12 Jul 2020 13:13:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2020/07/12/92272.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/92272.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2020/07/12/92272.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/92272.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/92272.html</trackback:ping><description><![CDATA[<h1>                  <a id="cb_post_title_url"  vertical-middle"="" href="https://www.cnblogs.com/luweiwei/p/4866930.html">     GitLab常用命令整理        </a>              </h1>                                            <div id="cnblogs_post_body"  "="">     <div>进入本地仓库访问位置之后执行命令</div> <div><a data-title="" data-alt="" data-lightbox="roadtrip"><img src="file:///D:/Documents/%E6%88%91%E7%9A%84%E6%96%87%E6%A1%A3/Tencent%20Files/745189042/MyCollection/Image/606F8778-F359-4D26-B57E-3F013C655522.png" alt="" /></a></div> <div> <div><strong>1) 远程仓库相关命令</strong></div> <div>检出仓库：$&nbsp;<strong>git</strong>&nbsp;clone&nbsp;<strong>git</strong>://github.com/jquery/jquery.<strong>git</strong></div> <div>查看远程仓库：$&nbsp;<strong>git</strong>&nbsp;remote -v</div> <div>添加远程仓库：$&nbsp;<strong>git</strong>&nbsp;remote add [name] [url]</div> <div>删除远程仓库：$&nbsp;<strong>git</strong>&nbsp;remote rm [name]</div> <div>修改远程仓库：$&nbsp;<strong>git</strong>&nbsp;remote set-url --<strong>push</strong>[name][newUrl]</div> <div>拉取远程仓库：$&nbsp;<strong>git</strong>&nbsp;pull [remoteName] [localBranchName]</div> <div>推送远程仓库：$&nbsp;<strong>git push</strong>&nbsp;[remoteName] [localBranchName]</div> <div>&nbsp;</div> <div><strong>2）分支(branch)操作相关命令</strong></div> <div>查看本地分支：$&nbsp;<strong>git</strong>&nbsp;branch</div> <div>查看远程分支：$&nbsp;<strong>git</strong>&nbsp;branch -r</div> <div>创建本地分支：$&nbsp;<strong>git</strong>&nbsp;branch [name] ----注意新分支创建后不会自动切换为当前分支</div> <div>切换分支：$&nbsp;<strong>git</strong>&nbsp;checkout [name]</div> <div>创建新分支并立即切换到新分支：$&nbsp;<strong>git</strong>&nbsp;checkout -b [name]</div> <div>删除分支：$&nbsp;<strong>git</strong>&nbsp;branch -d [name] ---- -d选项只能删除已经参与了合并的分支，对于未有合并的分支是无法删除的。如果想强制删除一个分支，可以使用-D选项</div> <div>合并分支：$&nbsp;<strong>git</strong>&nbsp;merge [name] ----将名称为[name]的分支与当前分支合并</div> <div>创建远程分支(本地分支<strong>push</strong>到远程)：$&nbsp;<strong>git push</strong>&nbsp;origin [name]</div> <div>删除远程分支：$&nbsp;<strong>git push</strong>&nbsp;origin :heads/[name]</div> <div> <p>我从master分支创建了一个issue5560分支，做了一些修改后，使用<strong>git push</strong>&nbsp;origin master提交，但是显示的结果却是'Everything up-to-date'，发生问题的原因是<strong>git push</strong>&nbsp;origin master 在没有track远程分支的本地分支中默认提交的master分支，因为master分支默认指向了origin master 分支，这里要使用<strong>git push</strong>&nbsp;origin issue5560：master 就可以把issue5560推送到远程的master分支了。</p> &nbsp;&nbsp;&nbsp; 如果想把本地的某个分支test提交到远程仓库，并作为远程仓库的master分支，或者作为另外一个名叫test的分支，那么可以这么做。<br /><br />$&nbsp;<strong>git push</strong>&nbsp;origin test:master&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 提交本地test分支作为远程的master分支&nbsp;//好像只写这一句，远程的github就会自动创建一个test分支<br />$&nbsp;<strong>git push</strong>&nbsp;origin test:test&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 提交本地test分支作为远程的test分支<br /><br />如果想删除远程的分支呢？类似于上面，如果:左边的分支为空，那么将删除:右边的远程的分支。<br /><br />$&nbsp;<strong>git push</strong>&nbsp;origin :test&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 刚提交到远程的test将被删除，但是本地还会保存的，不用担心</div> <div><strong>3）版本(tag)操作相关命令</strong></div> <div>查看版本：$&nbsp;<strong>git</strong>&nbsp;tag</div> <div>创建版本：$&nbsp;<strong>git</strong>&nbsp;tag [name]</div> <div>删除版本：$&nbsp;<strong>git</strong>&nbsp;tag -d [name]</div> <div>查看远程版本：$&nbsp;<strong>git</strong>&nbsp;tag -r</div> <div>创建远程版本(本地版本<strong>push</strong>到远程)：$&nbsp;<strong>git push</strong>&nbsp;origin [name]</div> <div>删除远程版本：$&nbsp;<strong>git push</strong>&nbsp;origin :refs/tags/[name]</div> <div>&nbsp;</div> <div><strong>4) 子模块(submodule)相关操作命令</strong></div> <div>添加子模块：$&nbsp;<strong>git</strong>&nbsp;submodule add [url] [path]</div> <div>如：$&nbsp;<strong>git</strong>&nbsp;submodule add&nbsp;<strong>git</strong>://github.com/soberh/ui-libs.<strong>git</strong>&nbsp;src/main/webapp/ui-libs</div> <div>初始化子模块：$&nbsp;<strong>git</strong>&nbsp;submodule init ----只在首次检出仓库时运行一次就行</div> <div>更新子模块：$&nbsp;<strong>git</strong>&nbsp;submodule update ----每次更新或切换分支后都需要运行一下</div> <div>删除子模块：（分4步走哦）</div> <div>1)$&nbsp;<strong>git</strong>&nbsp;rm --cached [path]</div> <div>2) 编辑&#8220;.gitmodules&#8221;文件，将子模块的相关配置节点删除掉</div> <div>3) 编辑&#8220;.<strong>git</strong>/config&#8221;文件，将子模块的相关配置节点删除掉</div> <div>4) 手动删除子模块残留的目录</div> <div>&nbsp;</div> <div><strong>5）忽略一些文件、文件夹不提交</strong></div> <div>在仓库根目录下创建名称为&#8220;.gitignore&#8221;的文件，写入不需要的文件夹名或文件，每个元素占一行即可，如</div> <div>target</div> <div>bin</div> <div>*.db</div> <div>&nbsp;</div> <div>2.&nbsp;git pull：相当于是从远程获取最新版本并merge到本地<br /> <p>git pull origin master</p>  </div>  </div> </div><img src ="http://www.cnitblog.com/201/aggbug/92272.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2020-07-12 21:13 <a href="http://www.cnitblog.com/201/archive/2020/07/12/92272.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>centos7 firewall指定IP与端口访问（常用）</title><link>http://www.cnitblog.com/201/archive/2020/07/12/92271.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Sun, 12 Jul 2020 10:35:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2020/07/12/92271.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/92271.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2020/07/12/92271.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/92271.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/92271.html</trackback:ping><description><![CDATA[<p>基本使用</p> <p>启动：<code>systemctl start firewalld</code></p> <p>关闭：<code>systemctl stop firewalld</code></p> <p>查看状态：<code>systemctl status firewalld</code></p> <p>开机禁用：<code>systemctl disable firewalld</code></p> <p>开机启用：<code>systemctl enable firewalld</code></p> <p>配置firewalld-cmd</p> <p>查看版本：<code>firewall-cmd --version</code></p> <p>查看帮助：<code>firewall-cmd --help</code></p> <p>显示状态：<code>firewall-cmd --state</code></p> <p>查看所有打开的端口：<code>firewall-cmd --zone=public --list-ports</code></p> <p>更新防火墙规则：<code>firewall-cmd --reload</code></p> <p>端口开放</p> <p>添加：<code>firewall-cmd --zone=public --add-port=80/tcp --permanent</code></p> <p>重新载入：<code>firewall-cmd --reload</code></p> <p>删除：<code>firewall-cmd --zone= public --remove-port=80/tcp --permanent</code></p> <p>端口转发</p> <p>添加（例如3306 -&gt; 3336）：</p> <p ruby"=""><code>firewall-cmd --permanent --zone=public --add-forward-port=port=3336<span>:proto=tcp<span>:toport=<span>3306<span>:toaddr= </span></span></span></span></code></p> <p>删除：</p> <p ruby"=""><code>firewall-cmd --permanent --remove-forward-port=port=3306<span>:proto=tcp<span>:toport=<span>3336<span>:toaddr= </span></span></span></span></code></p> <p>查看转发的端口：<code>firewall-cmd --list-forward-ports</code></p> <p>查看当前开了哪些端口</p> <p>其实一个服务对应一个端口，每个服务对应/usr/lib/firewalld/services下面一个xml文件。</p> <p>firewall-cmd --list-services</p> <p>查看还有哪些服务可以打开</p> <p>firewall-cmd --get-services</p> <p>查看所有打开的端口：&nbsp;</p> <p>firewall-cmd --zone=public --list-ports</p> <p>更新防火墙规则：&nbsp;</p> <p>firewall-cmd --reload</p> <p>&nbsp;</p> <div sh-gutter"=""> <div><div id="highlighter_741429"  bash"=""><table cellspacing="0" cellpadding="0" border="0"><tbody><tr><td><div number1="" index0=""  alt2"="">1</div><div number2="" index1=""  alt1"="">2</div><div number3="" index2=""  alt2"="">3</div><div number4="" index3=""  alt1"="">4</div><div number5="" index4=""  alt2"="">5</div><div number6="" index5=""  alt1"="">6</div><div number7="" index6=""  alt2"="">7</div><div number8="" index7=""  alt1"="">8</div><div number9="" index8=""  alt2"="">9</div><div number10="" index9=""  alt1"="">10</div><div number11="" index10=""  alt2"="">11</div><div number12="" index11=""  alt1"="">12</div><div number13="" index12=""  alt2"="">13</div><div number14="" index13=""  alt1"="">14</div><div number15="" index14=""  alt2"="">15</div><div number16="" index15=""  alt1"="">16</div><div number17="" index16=""  alt2"="">17</div><div number18="" index17=""  alt1"="">18</div><div number19="" index18=""  alt2"="">19</div></td><td><div><div number1="" index0=""  alt2"=""><code comments"=""># 添加多个端口</code></div><div number2="" index1=""  alt1"=""><code plain"="">firewall-cmd --permanent --zone=public --add-port=8080-8083</code><code plain"="">/tcp</code></div><div number3="" index2=""  alt2"="">&nbsp;</div><div number4="" index3=""  alt1"=""><code comments"=""># 删除某个端口</code></div><div number5="" index4=""  alt2"=""><code plain"="">firewall-cmd --permanent --zone=public --remove-port=81</code><code plain"="">/tcp</code></div><div number6="" index5=""  alt1"="">&nbsp;</div><div number7="" index6=""  alt2"=""><code comments"=""># 针对某个 IP开放端口</code></div><div number8="" index7=""  alt1"=""><code plain"="">firewall-cmd --permanent --add-rich-rule=</code><code string"="">"rule family="</code><code plain"="">ipv4</code><code string"="">" source address="</code><code plain"="">192.168.142.166</code><code string"="">" port protocol="</code><code plain"="">tcp</code><code string"="">" port="</code><code plain"="">6379</code><code string"="">" accept"</code></div><div number9="" index8=""  alt2"=""><code plain"="">firewall-cmd --permanent --add-rich-rule=</code><code string"="">"rule family="</code><code plain"="">ipv4</code><code string"="">" source address="</code><code plain"="">192.168.0.233</code><code string"="">" accept"</code></div><div number10="" index9=""  alt1"="">&nbsp;</div><div number11="" index10=""  alt2"=""><code comments"=""># 删除某个IP</code></div><div number12="" index11=""  alt1"=""><code plain"="">firewall-cmd --permanent --remove-rich-rule=</code><code string"="">"rule family="</code><code plain"="">ipv4</code><code string"="">" source address="</code><code plain"="">192.168.1.51</code><code string"="">" accept"</code></div><div number13="" index12=""  alt2"="">&nbsp;</div><div number14="" index13=""  alt1"=""><code comments"=""># 针对一个ip段访问</code></div><div number15="" index14=""  alt2"=""><code plain"="">firewall-cmd --permanent --add-rich-rule=</code><code string"="">"rule family="</code><code plain"="">ipv4</code><code string"="">" source address="</code><code plain"="">192.168.0.0</code><code plain"="">/16</code><code string"="">" accept"</code></div><div number16="" index15=""  alt1"=""><code plain"="">firewall-cmd --permanent --add-rich-rule=</code><code string"="">"rule family="</code><code plain"="">ipv4</code><code string"="">" source address="</code><code plain"="">192.168.1.0</code><code plain"="">/24</code><code string"="">" port protocol="</code><code plain"="">tcp</code><code string"="">" port="</code><code plain"="">9200</code><code string"="">" accept"</code></div><div number17="" index16=""  alt2"="">&nbsp;</div><div number18="" index17=""  alt1"=""><code comments"=""># 添加操作后别忘了执行重载</code></div><div number19="" index18=""  alt2"=""><code plain"="">firewall-cmd --reload</code></div></div></td></tr></tbody></table></div></div> </div> <p>　　</p><img src ="http://www.cnitblog.com/201/aggbug/92271.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2020-07-12 18:35 <a href="http://www.cnitblog.com/201/archive/2020/07/12/92271.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>centos7 firewall-cmd 详解</title><link>http://www.cnitblog.com/201/archive/2020/07/12/92270.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Sun, 12 Jul 2020 10:23:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2020/07/12/92270.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/92270.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2020/07/12/92270.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/92270.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/92270.html</trackback:ping><description><![CDATA[<h1><a id="cb_post_title_url"  vertical-middle"="" href="https://www.cnblogs.com/jiangyatao/p/11094060.html">        </a>              </h1>                          <div>                       <div id="cnblogs_post_body"  cnblogs-markdown"="">     <h1>防火墙</h1> <h6>查看防火墙状态</h6> <pre><code dockerfile"="">firewall-cmd<span> --state </span></code></pre> <h6>停止firewall</h6> <pre><code r"="">systemctl stop firewalld.service </code></pre> <h6>开启</h6> <pre><code dos"="">systemctl start firewalld.service </code></pre> <h6>禁止firewall开机启动</h6> <pre><code nginx"="">systemctl disable firewalld.service  </code></pre> <h1>端口</h1> <h6>查看对外开放的端口状态</h6> <pre><code nginx"="">netstat -anp </code></pre> <h5>对外开发端口</h5> <h6>查看想开的端口是否已开：</h6> <pre><code dockerfile"="">firewall-cmd<span> --query-port=80/tcp </span></code></pre> <h6>添加指定需要开放的端口：</h6> <pre><code dockerfile"="">firewall-cmd<span> --add-port=80/tcp --permanent </span></code></pre> <h6>重载入添加的端口：</h6> <pre><code dockerfile"="">firewall-cmd<span> --reload </span></code></pre> <h6>查询指定端口是否开启成功：</h6> <pre><code dockerfile"="">firewall-cmd<span> --query-port=80/tcp </span></code></pre> <h6>只允许某个特定的的ip访问80端口</h6> <pre><code css"="">Linux防火墙Iptable如何设置只允许某个ip访问80端口，只允许特定ip访问某端口？参考下面命令，只允许46.166.150.22访问本机的80端口。如果要设置其他ip或端口，改改即可。 iptables -I INPUT -p TCP --dport 80 -j DROP iptables -I INPUT -s 46.166.150.22 -p TCP --dport 80 -j ACCEPT 在root用户下执行上面2行命令后，重启iptables， service iptables restart </code></pre> <h6>在centos7中使用firewall-cmd指定只允许192.168.0.1的ip访问80端口</h6> <pre><code dockerfile"="">firewall-cmd --permanent --add-rich-rule <span>'rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept' </span></code></pre> <h6>查看iptables是否生效：</h6> <pre><code less"="">[root@www.ctohome.com]# iptables -L Chain INPUT (policy ACCEPT) target           prot opt source               destination          ACCEPT     tcp  --  46.166.150.22    anywhere            tcp dpt:http  DROP         tcp  --  anywhere             anywhere            tcp dpt:http   Chain FORWARD (policy ACCEPT) target     prot opt source               destination           Chain OUTPUT (policy ACCEPT) target     prot opt source               destination         </code></pre> <h6>上面命令是针对整个服务器（全部ip）禁止80端口，如果只是需要禁止服务器上某个ip地址的80端口，怎么办？</h6> <h6>下面的命令是只允许来自174.140.3.190的ip访问服务器上216.99.1.216的80端口</h6> <pre><code css"="">iptables -A FORWARD -s 174.140.3.190 -d 216.99.1.216 -p tcp -m tcp --dport 80 -j ACCEPT  iptables -A FORWARD -d 216.99.1.216 -p tcp -m tcp --dport 80 -j DROP </code></pre> <h1>禁止ip登录</h1> <h5>centos7用的是firewall 添加单个黑名单只需要把ip添加到 /etc/hosts.deny</h5> <pre><code groovy"="">格式  sshd:$IP:deny vim /etc/hosts.deny   添加你要禁止的ip就可以了 sshd:192.168.1.147:deny </code></pre> <h6>这是允许的 /etc/hosts.allow</h6> <pre><code css"="">sshd:19.16.18.1:allow sshd:19.16.18.2:allow </code></pre> <ul><li>多次失败登录即封掉IP,防止暴力破解的脚本 超过5次的就加到黑名单</li></ul> <h5>1、防爆破脚本</h5> <h6>vim /usr/local/bin/secure_ssh.sh</h6> <pre><code bash"="">#! /bin/bash cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' &gt; /usr/local/bin/black.txt for i in `cat  /usr/local/bin/black.txt` do     IP=`echo $i |awk -F= '{print $1}'`     NUM=`echo $i|awk -F= '{print $2}'`     if [ $NUM -gt 5 ]     then         grep $IP /etc/hosts.deny &gt; /dev/null         if [ $? -gt 0 ]         then              echo "sshd:<span>$IP:deny"</span> &gt;&gt; /etc/hosts.deny         fi     fi done </code></pre> <h6>2、创建记录登录失败次数的文件</h6> <pre><code groovy"="">touch /usr/local/bin/black.txt </code></pre> <h6>3、添加定时 5分钟执行一次</h6> <pre><code markdown"="">*/5 * * * *  sh /usr/local/bin/secure_ssh.sh </code></pre> <h6>4、测试 ssh登录147</h6> <pre><code css"="">ssh 192.168.1.147 </code></pre> <p>5、查看黑名单列表是否记录</p> <h6>cat /usr/local/bin/black.txt</h6> <p>6、查看黑名单列表看是否添加进去了<br /> cat /etc/hosts.deny</p>  </div></div><img src ="http://www.cnitblog.com/201/aggbug/92270.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2020-07-12 18:23 <a href="http://www.cnitblog.com/201/archive/2020/07/12/92270.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Gitlab日常备份及迁移</title><link>http://www.cnitblog.com/201/archive/2020/07/11/92269.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Sat, 11 Jul 2020 09:27:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2020/07/11/92269.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/92269.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2020/07/11/92269.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/92269.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/92269.html</trackback:ping><description><![CDATA[<p><a href="https://blog.winsky.wang/Git/gitlab/Gitlab安装体验/">Gitlab安装体验</a>一文介绍了如何在阿里云上安装Gitlab，安装是很简单方便，但是出于数据安全的考虑，我们需要做一些备份，以防万一。</p> <p>本文重点介绍Gitlab的日常备份及迁移恢复</p>  <h1>Gitlab创建备份</h1><p>使用Gitlab一键安装包安装Gitlab非常简单, 同样的备份恢复与迁移也非常简单. 使用一条命令即可创建完整的Gitlab备份:</p> <figure shell"=""><table><tbody><tr></tr></tbody></table></figure><figure shell"=""><table><tbody><tr><td><pre>gitlab-rake gitlab:backup:create<br /></pre></td></tr></tbody></table></figure> <p>使用以上命令会在<code>/var/opt/gitlab/backups</code>目录下创建一个名称类似为<code>1393513186_gitlab_backup.tar</code>的压缩包, 这个压缩包就是Gitlab整个的完整部分, 其中开头的<code>1393513186</code>是备份创建的日期。</p> <h1>Gitlab修改备份文件默认目录</h1><p>你也可以通过修改<code>/etc/gitlab/gitlab.rb</code>来修改默认存放备份文件的目录</p> <figure shell"=""><table><tbody><tr></tr></tbody></table></figure><figure shell"=""><table><tbody><tr><td><pre>gitlab_rails['backup_path'] = '/mnt/backups'<br /></pre></td></tr></tbody></table></figure> <p><code>/mnt/backups</code>修改为你想存放备份的目录即可，修改完成之后使用<code>gitlab-ctl reconfigure</code>命令重载配置文件即可。</p> <h1>Gitlab恢复备份</h1><p>同样, Gitlab的从备份恢复也非常简单</p> <figure shell"=""><table><tbody><tr></tr></tbody></table></figure><figure shell"=""><table><tbody><tr><td><pre><span># 停止相关数据连接服务</span><br />gitlab-ctl stop unicorn<br />gitlab-ctl stop sidekiq<br /><br /><span># 从1393513186编号备份中恢复</span><br />gitlab-rake gitlab:backup:restore BACKUP=1393513186_gitlab_backup<br /><br /><span># 启动Gitlab</span><br />sudo gitlab-ctl start<br /></pre></td></tr></tbody></table></figure> <h1>Gitlab迁移</h1><p>迁移如同备份与恢复的步骤一样，只需要将老服务器<code>/var/opt/gitlab/backups</code>目录下的备份文件拷贝到新服务器上的<code>/var/opt/gitlab/backups</code>即可(如果你没修改过默认备份目录的话)。</p> <p>但是需要注意的是新服务器上的Gitlab的版本必须与创建备份时的Gitlab版本号相同。</p> <p>比如新服务器安装的是最新的7.60版本的Gitlab，那么迁移之前，最好将老服务器的Gitlab升级为7.60在进行备份。</p> <h1>Gitlab定时自动异地备份</h1><p>由于Gitlab部署在了阿里云上，把Gitlab再备份在本地意义不是特别大，所以这里利用了家里的NAS做了一个简单的异地备份。</p> <h2>服务器备份脚本</h2><p>在阿里云服务器上创建如下脚本，存储在<code>/home/scripts/gitlab_backup.sh</code>文件中</p> <figure shell"=""><table><tbody><tr></tr></tbody></table></figure><figure shell"=""><table><tbody><tr><td><pre><span>#!/bin/bash</span><br /><br /><span># Gitlab自动备份脚本</span><br /><br /><br /><span>#Gitlab 备份地址</span><br />LocalBackDir=/var/opt/gitlab/backups<br /><br /><span>#备份日志文件</span><br />LogFile=$LocalBackDir/remote_backup.log<br /><br /><span>#新建备份日志文件</span><br />touch $LogFile<br /><br />echo "-------------------------------------------------------------------------" &gt;&gt; $LogFile<br /><br /><span>#记录本地生成gitlab备份日志</span><br />echo "Gitlab auto backup at local server, start at $(date +"%Y-%m-%d %H:%M:%S")" &gt;&gt;  $LogFile<br /><br /><span>#执行gitlab本地备份</span><br />gitlab-rake gitlab:backup:create &gt;&gt; $LogFile 2&gt;&amp;1<br /><br /><span># $?符号显示上一条命令的返回值，如果为0则代表执行成功，其他表示失败</span><br />if [ $? -eq 0 ];then<br /><span>   #追加日志到日志文件</span><br />   echo "Gitlab auto backup at local server successed at $(date +"%Y-%m-%d %H:%M:%S")" &gt;&gt; $LogFile<br />else<br /><span>   #追加日志到日志文件</span><br />   echo "Gitlab auto backup at local server failed at $(date +"%Y-%m-%d %H:%M:%S")" &gt;&gt; $LogFile<br />fi<br /><br /><span>#查找本地备份目录修改时间为10分钟以内且后缀为.tar的Gitlab备份文件</span><br />Backfile_Send_To_Remote=`find $LocalBackDir -type f  -mmin -10 -name '*.tar' | tail -1` &gt;&gt; $LogFile 2&gt;&amp;1<br /><br />echo $Backfile_Send_To_Remote<br /></pre></td></tr></tbody></table></figure> <h2>NAS免密登录阿里云</h2><p>异地备份思路需要在NAS上登录到阿里云服务器上执行对应的备份命令并下载文件，所以需要让NAS可以免密登录阿里云服务器，以定时自动执行这个任务。</p> <p>免密登录的配置，可以参考<a href="https://blog.winsky.wang/Linux/SSH免密登录/">SSH免密登录配置</a></p> <h2>NAS服务器脚本</h2><p>SSH进入NAS，然后创建脚本，自动在服务器上执行备份，并下载到NAS本地来。脚本存储在<code>/volume1/homes/gitlab_back/scripts/gitlab_backup_download.sh</code>文件中。</p> <figure shell"=""><table><tbody><tr></tr></tbody></table></figure><figure shell"=""><table><tbody><tr><td><pre><span>#!/bin/bash</span><br /><br /><span># 远程登录gitlab服务器，执行自动备份脚本，然后传输至本地</span><br /><br /><span>#Gitlab服务器</span><br />RemoteServer=git.ufeng.top<br />RemoteServerUser=root<br /><br /><span>#Gitlab服务器备份地址</span><br />RemoteBackDir=/var/opt/gitlab/backups<br /><br /><span>#NAS本地备份地址</span><br />LocalBackDir=/volume1/homes/gitlab_back<br /><br /><span>#备份日志文件</span><br />LogFile=$LocalBackDir/remote_backup.log<br /><br /><span>#新建备份日志文件</span><br />touch $LogFile<br /><br />echo "-------------------------------------------------------------------------" &gt;&gt; $LogFile<br /><span>#记录NAS下载gitlab备份日志</span><br />echo "Gitlab backup auto download at NAS, start at $(date +"%Y-%m-%d %H:%M:%S")" &gt;&gt;  $LogFile<br /><br /><span>#远程登录gitlab服务器并执行备份脚本，获取备份文件的名字</span><br />result=`ssh $RemoteServerUser@$RemoteServer "sh /home/scripts/gitlab_backup.sh"`<br /><br /><span>#远程下载备份文件到本地</span><br />scp $RemoteServerUser@$RemoteServer:$result $LocalBackDir<br /><br />echo "Gitlab remote backup file is ${result}" &gt;&gt; $LogFile<br /><br /><span># 备份结果追加到备份日志</span><br />if [ $? -eq 0 ];then<br />	echo ""<br />	echo "$(date +"%Y-%m-%d %H:%M:%S") Gitlab Remote download Succeed!" &gt;&gt; $LogFile<br />else<br />	echo "$(date +"%Y-%m-%d %H:%M:%S") Gitlab Remote download Failed!" &gt;&gt; $LogFile<br />fi<br /></pre></td></tr></tbody></table></figure> <p>然后配置群晖的定时任务，每天自动执行。</p> <p><img src="https://pic.winsky.wang/images/2019/06/11/62bc4f425938329c.png" alt="群晖计划任务.png" /></p> <h2>自动清理历史备份文件</h2><p>由于阿里云的存储空间有限，所以对Gitlab的历史备份文件需要定期删除，释放磁盘空间。</p> <p>同样在<code>/home/scripts/gitlab_auto_del_backup.sh</code>文件中存储自动清理历史备份的脚本内容。<br /></p><figure shell"=""><table><tbody><tr></tr></tbody></table></figure><figure shell"=""><table><tbody><tr><td><pre><span>#!/bin/bash</span><br /><br /><span>#清理多余的历史备份</span><br /><br /><span>#Gitlab 备份地址</span><br />LocalBackDir=/var/opt/gitlab/backups<br /><br /><span>#备份日志文件</span><br />LogFile=$LocalBackDir/remote_clean.log<br /><br /><span>#新建备份日志文件</span><br />touch $LogFile<br /><br />echo "--------------------------------------------------------------------- " &gt;&gt; $LogFile<br />echo "Gitlab auto clean local backup, start at  $(date +"%Y-%m-%d %H:%M:%S")" &gt;&gt;  $LogFile<br /><br /><span># 找到3*24*60分钟前，以tar结尾的文件并删除</span><br />find $LocalBackDir -type f -mmin +4320  -name "*.tar" -exec rm -rf {} \;<br /><br /><span># $?符号显示上一条命令的返回值，如果为0则代表执行成功，其他表示失败</span><br />if [ $? -eq 0 ];then<br /><span>   #追加日志到日志文件</span><br />   echo "Gitlab auto clean local backup success at $(date +"%Y-%m-%d %H:%M:%S")" &gt;&gt; $LogFile<br />else<br /><span>   #追加日志到日志文件</span><br />   echo "Gitlab auto clean local backup failed at $(date +"%Y-%m-%d %H:%M:%S")" &gt;&gt; $LogFile<br />fi<br /></pre></td></tr></tbody></table></figure> <p>然后赋予执行权限<br /></p><figure shell"=""><table><tbody><tr></tr></tbody></table></figure><figure shell"=""><table><tbody><tr><td><pre>chmod u+x /home/scripts/gitlab_auto_del_backup.sh<br /></pre></td></tr></tbody></table></figure> <p>配置定时任务<br /></p><figure shell"=""><table><tbody><tr></tr></tbody></table></figure><div itemprop="articleBody" style="opacity: 1; display: block; transform: translateY(0px);"><figure shell"=""><table><tbody><tr><td><pre>crontab -e<br /><br />0 3 * * * /home/scripts/gitlab_auto_del_backup.sh<br /></pre></td></tr></tbody></table></figure>             </div><img src ="http://www.cnitblog.com/201/aggbug/92269.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2020-07-11 17:27 <a href="http://www.cnitblog.com/201/archive/2020/07/11/92269.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CentOS7下yum安装GitLab-CE</title><link>http://www.cnitblog.com/201/archive/2020/07/11/92268.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Sat, 11 Jul 2020 06:48:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2020/07/11/92268.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/92268.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2020/07/11/92268.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/92268.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/92268.html</trackback:ping><description><![CDATA[<div id="cnblogs_post_body"  cnblogs-markdown"="">     <h1>前提准备</h1> <h2>建立git用户</h2> <pre><code nginx"="">useradd git passwd git  </code></pre> <h2>关闭防火墙</h2> <pre><code r"="">systemctl stop firewalld systemctl disabled firewalld </code></pre> <h2>安装依赖库</h2> <pre><code sql"="">yum install curl openssh-server postfix cronie service postfix start chkconfig postfix on </code></pre> <h1>配置yum源进行安装</h1> <blockquote> <p>注意: gitlab-ce 镜像仅支持 x86-64 架构</p> </blockquote> <p>centos中可以直接通过配置yum源然后使用yum进行一键安装<br /> 国内可以使用的清华大学的镜像源安装GitLab，相关配置及安装参照：<a href="https://mirror.tuna.tsinghua.edu.cn/help/gitlab-ce/">https://mirror.tuna.tsinghua.edu.cn/help/gitlab-ce/</a><br /> 以下内容写入yum源配置文件：/etc/yum.repos.d/gitlab-ce.repo</p> <pre><code ini"=""># vim /etc/yum.repos.d/gitlab-ce.repo [gitlab-ce] name=Gitlab CE Repository baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/ gpgcheck=0 enabled=1 </code></pre> <pre><code cmake"="">yum makecache yum install gitlab-ce #自动安装最新版 # yum install gitlab-ce-x.x.x    #安装指定版本 </code></pre> <pre><code vbnet"=""># 安装成功后的提示： Thank you for installing GitLab! GitLab was unable to detect a valid hostname for your instance. Please configure a URL for your GitLab instance by setting `external_url` configuration in /etc/gitlab/gitlab.rb file. Then, you can start your GitLab instance by running the following command:   sudo gitlab-ctl reconfigure </code></pre> <h1>默认路径</h1> <p>一键安装后可以利用rpm -ql gitlab-ce查询其文件安装路径及相关文件路径，其默认安装路径为/opt/gitlab/、程序数据及配置文件保存路径为/var/opt/gitlab下。<br /> 代码仓库保存位置：/var/opt/gitlab/git-data/repositories/<br /> 代码仓库备份位置：/var/opt/gitlab/backups/<br /> postgresql数据及配置目录：/var/opt/gitlab/postgresql/data/<br /> redis默认配置目录：/var/opt/gitlab/redis<br /> gitlab主要配置文件：/etc/gitlab/gitlab.rb</p> <h1>常见配置</h1> <p>修改gitlab运行外部URL默认的访问地址<br /> 编辑/etc/gitlab/gitlab.rb</p> <pre><code nginx"=""># 未修gitlab.rb配置文件中nginx配置时这个配置默认配置gitlab自带的nginx端口 external_url 'http://172.17.17.10:81'   </code></pre> <p>修改之后使用如下命令重新加载配置且同时启动gitlab所有服务：</p> <pre><code>gitlab-ctl reconfigure  </code></pre> <p>浏览器访问：<a href="http://172.17.17.10:81">http://172.17.17.10:81</a>,被重定向到密码修改界面，修改密码为root的管理员账户,修改密码后自动跳转到登录页面，用root和修改后密码登录就可以</p> <h1>GitLab常用命令</h1> <pre><code bash"="">gitlab-ctl start    # 启动所有 gitlab 组件 gitlab-ctl stop        # 停止所有 gitlab 组件 gitlab-ctl restart        # 重启所有 gitlab 组件 gitlab-ctl status        # 查看服务状态 gitlab-ctl reconfigure        # 启动服务 vim /etc/gitlab/gitlab.rb        # 修改默认的配置文件 gitlab-rake gitlab:check SANITIZE=true --trace    # 检查gitlab sudo gitlab-ctl tail        # 查看日志 gitlab-ctl --help #查看更多命令 </code></pre> <h1>发送邮件配置</h1> <pre><code bash"="">gitlab_rails['smtp_enable'] = true  #启用smtp服务 gitlab_rails['smtp_address'] = "mail.ultrapower.com.cn" #smtp发送服务器 gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "xueming@ultrapower.com.cn" gitlab_rails['smtp_password'] = "12333lzxcl" gitlab_rails['smtp_domain'] = "ultrapower.com.cn" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = false gitlab_rails['gitlab_email_from'] = 'xueming@ultrapower.com.cn'#与smtp_user_name一定要一样 gitlab_rails['gitlab_email_reply_to'] = 'xueming@ultrapower.com.cn' </code></pre> <p>命令测试：gitlab-rails console</p> <h1>防火墙开放端口</h1> <pre><code dockerfile"="">firewall-cmd --zone=public --list-ports <span>#查看开放端口 </span>firewall-cmd --zone=public --add-port=8081/tcp --permanent <span>#开放8081端口 </span>firewall-cmd --reload   <span>#重新加载配置 </span>#如果不需要，也可以直接关闭防火墙 systemctl stop firewalld.service </code></pre> <h1>设置中文界面</h1> <p><img src="https://img2020.cnblogs.com/blog/794174/202006/794174-20200601112902431-1031975438.png" alt="" /><br /> <img src="https://img2020.cnblogs.com/blog/794174/202006/794174-20200601112944744-1538323533.png" alt="" /><br /> <img src="https://img2020.cnblogs.com/blog/794174/202006/794174-20200601113001642-495069330.png" alt="" /></p> <p>刷新界面，就是中文的了</p>  </div><img src ="http://www.cnitblog.com/201/aggbug/92268.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2020-07-11 14:48 <a href="http://www.cnitblog.com/201/archive/2020/07/11/92268.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>gitlab的安装与管理</title><link>http://www.cnitblog.com/201/archive/2020/07/11/92267.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Sat, 11 Jul 2020 05:35:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2020/07/11/92267.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/92267.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2020/07/11/92267.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/92267.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/92267.html</trackback:ping><description><![CDATA[一、git的使用<br /><br />1、git介绍<br /><br />&nbsp;&nbsp;&nbsp; git是一个分布式的版本管理系统，由linux系统的创造者Linus 于2005年开发，相对于svn git有速度快，适合大规模，跨地区多人协同开发的特点。<br /><br />2、git安装<br /><br />（1）yum安装<br /><br />&nbsp;&nbsp;&nbsp;&nbsp; 通过yum安装的软件版本较低。<br /><br />&nbsp;&nbsp;&nbsp; #使用yum安装git<br />&nbsp;&nbsp;&nbsp; ]# yum install git<br /><br />（2）编译安装<br /><br />&nbsp;&nbsp;&nbsp; 编译安装可以安装较新饿版本，新版本可以在&#8221; https://github.com/git/git/&#8221;查看<br /><br />&nbsp;&nbsp;&nbsp; #安装依赖软件<br />&nbsp;&nbsp;&nbsp; ]# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker<br />&nbsp;&nbsp;&nbsp; # 下载解压git源码包<br />&nbsp;&nbsp;&nbsp; ]# wget https://github.com/git/git/archive/v2.18.0.zip<br />&nbsp;&nbsp;&nbsp; ]# unzip v2.18.0.zip<br />&nbsp;&nbsp;&nbsp; ]# cd git-2.18.0/<br />&nbsp;&nbsp;&nbsp; # 编译安装git<br />&nbsp;&nbsp;&nbsp; ]# make prefix=/usr/local/git all<br />&nbsp;&nbsp;&nbsp; ]# make prefix=/usr/local/git install<br />&nbsp;&nbsp;&nbsp; # 安装后查看git版本<br />&nbsp;&nbsp;&nbsp; ]# git --version<br />&nbsp;&nbsp;&nbsp; ]# git version 2.18.0<br /><br />3、初始化git<br /><br />&nbsp;&nbsp;&nbsp; Git下载安装完成后，在使用git前需要先创建工作目录并初始化git。<br /><br />&nbsp;&nbsp;&nbsp; # 创建工作目录<br />&nbsp;&nbsp;&nbsp; ]$ mkdir data<br />&nbsp;&nbsp;&nbsp; ]$ cd data<br />&nbsp;&nbsp;&nbsp; # 初始化工作目录<br />&nbsp;&nbsp;&nbsp; ]$ git init<br />&nbsp;&nbsp;&nbsp; Initialized empty Git repository in /home/dayi123/data/.git/<br />&nbsp;&nbsp;&nbsp; ]$ git config --global user.name "dayi123"<br />&nbsp;&nbsp;&nbsp; ]$ git config --global user.email dayi_123@126.com<br />&nbsp;&nbsp;&nbsp; # 查看初始化后相关信息<br />&nbsp;&nbsp;&nbsp; ]$ git config --list<br />&nbsp;&nbsp;&nbsp; user.name=dayi123<br />&nbsp;&nbsp;&nbsp; user.email=dayi_123@126.com<br />&nbsp;&nbsp;&nbsp; core.repositoryformatversion=0<br />&nbsp;&nbsp;&nbsp; core.filemode=true<br />&nbsp;&nbsp;&nbsp; core.bare=false<br />&nbsp;&nbsp;&nbsp; core.logallrefupdates=true<br /><br />4、git工作原理与基本操作<br /><br />（1）git工作原理<br /><br />&nbsp;&nbsp;&nbsp; 对git的操作就是将本地工作目录的文件同步到索引区，再从索引去上传到本地仓库，再从本地仓库上传到远程仓库，同时还可以将远程仓库及本地仓库的文件下载到本地工作目录。<br /><br />（2）git基本操作<br /><br />&nbsp;操作命令：<br /><br />&nbsp;&nbsp;&nbsp; git add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 加入暂存区（index区域）<br /><br />&nbsp;&nbsp;&nbsp; git status&nbsp;&nbsp;&nbsp; 查看状态<br /><br />&nbsp;&nbsp;&nbsp; git status -s 状态概览<br /><br />&nbsp;&nbsp;&nbsp; git diff&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 尚未暂存的文件<br /><br />&nbsp;&nbsp;&nbsp; git diff --staged&nbsp;&nbsp;&nbsp; 暂存区文件<br /><br />&nbsp;&nbsp;&nbsp; git commit&nbsp;&nbsp;&nbsp; 提交更新，试用&#8221;-m&#8221;参数可以直接在后面输入&#8220;message&#8221;，后跟-a参数可以将所有已跟踪文件中的执行修改或删除操作的文件都提交到本地仓库，即使它们没有经过git add添加到暂存区。<br /><br />&nbsp;&nbsp;&nbsp; git reset&nbsp;&nbsp;&nbsp;&nbsp; 回滚<br /><br />&nbsp;&nbsp;&nbsp; git rm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从版本库中移除<br /><br />&nbsp;&nbsp;&nbsp; git rm --cached README 从暂存区中移除<br /><br />&nbsp;&nbsp;&nbsp; git mv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 相当于&#8221;mv&#8221;、&#8221;git rm&#8221;、&#8221;git add&#8221;三个命令<br /><br />&nbsp;&nbsp;&nbsp; git log&nbsp; 查看提交日志<br /><br />&nbsp;&nbsp;&nbsp; # 创建一个文件<br />&nbsp;&nbsp;&nbsp; ]# echo 1213456 &gt; git.test<br />&nbsp;&nbsp;&nbsp; # 将文件追加到索引区<br />&nbsp;&nbsp;&nbsp; ]# git add git.test<br />&nbsp;&nbsp;&nbsp; # 将文件提交到本地仓库<br />&nbsp;&nbsp;&nbsp; ]# git commit -m git.test<br />&nbsp;&nbsp;&nbsp; # 查看当前文件操作记录，id为文件提交id<br />&nbsp;&nbsp;&nbsp; ]# git log<br />&nbsp;&nbsp;&nbsp; commit 43e7aa5963db3b04691a6e4ec271b7199ab14d8b (HEAD -&gt; master)<br />&nbsp;&nbsp;&nbsp; Author: dayi123 &lt;dayi_123@126.com&gt;<br />&nbsp;&nbsp;&nbsp; Date:&nbsp;&nbsp; Fri Aug 10 09:06:25 2018 -0400<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; git.test<br /><br />5、分支管理<br /><br />&nbsp;&nbsp;&nbsp; Git的默认所有的操作都在主分支上面，为了防止开发混乱，可以创建分支，在分支上操作，在分支上操纵执行的命令都是基于当前分支的。<br /><br />&nbsp;&nbsp;&nbsp; git branch&nbsp; 创建分支<br /><br />&nbsp;&nbsp;&nbsp; git branch &#8211;v&nbsp; 查看分支信息<br /><br />&nbsp;&nbsp;&nbsp; git branch &#8211;merged&nbsp; 查看哪些分支已经被merged到主分支<br /><br />&nbsp;&nbsp;&nbsp; git branch --no-merged 查看哪些分支没有被merged到主分支<br /><br />&nbsp;&nbsp;&nbsp; git branch -d testing&nbsp; 删除分支<br /><br />&nbsp;&nbsp;&nbsp; git checkout&nbsp; 分支名称&nbsp; 切换指针<br /><br />&nbsp;&nbsp;&nbsp; git checkout --filename&nbsp;&nbsp; 撤销对文件的修改<br /><br />&nbsp;&nbsp;&nbsp; git merge 分支名称&nbsp; 融合分支，将分支融合到主干<br /><br />&nbsp;&nbsp;&nbsp; git stash<br /><br />&nbsp;&nbsp;&nbsp; git tag&nbsp;&nbsp; 查看标签<br /><br />&nbsp;&nbsp;&nbsp; git rebase 变基，<br /><br />&nbsp;&nbsp;&nbsp; # 创建一个分支datatest1<br />&nbsp;&nbsp;&nbsp; ]# git branch datatest1<br />&nbsp;&nbsp;&nbsp; # 查看当前的分支状态<br />&nbsp;&nbsp;&nbsp; ]# git status<br />&nbsp;&nbsp;&nbsp; On branch master<br />&nbsp;&nbsp;&nbsp; nothing to commit, working tree clean<br />&nbsp;&nbsp;&nbsp; # 切换到datatest1分支<br />&nbsp;&nbsp;&nbsp; ]# git checkout datatest1<br />&nbsp;&nbsp;&nbsp; Switched to branch 'datatest1'<br />&nbsp;&nbsp;&nbsp; # 查看当前分支时已经在datatest1分支<br />&nbsp;&nbsp;&nbsp; ]# git status<br />&nbsp;&nbsp;&nbsp; On branch datatest1<br />&nbsp;&nbsp;&nbsp; nothing to commit, working tree clean<br />&nbsp;&nbsp;&nbsp; #在当前分支创建一个文件并提交到暂存区<br />&nbsp;&nbsp;&nbsp; ]# echo datatest1 &gt; branch2.html<br />&nbsp;&nbsp;&nbsp; ]# git add branch2.html<br />&nbsp;&nbsp;&nbsp; # 将当前分支merged到主分支<br />&nbsp;&nbsp;&nbsp; ]# git merge datatest1<br />&nbsp;&nbsp;&nbsp; Already up to date.<br />&nbsp;&nbsp;&nbsp; # 切换到主分支查看<br />&nbsp;&nbsp;&nbsp; ]# git checkout master<br />&nbsp;&nbsp;&nbsp; ]# git status<br />&nbsp;&nbsp;&nbsp; On branch master<br />&nbsp;&nbsp;&nbsp; Changes to be committed:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (use "git reset HEAD &lt;file&gt;..." to unstage)<br />&nbsp;&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new file:&nbsp;&nbsp; branch2.html<br />&nbsp;&nbsp;&nbsp; # 查看单前那些分区被merged到主分区<br />&nbsp;&nbsp;&nbsp; ]# git branch &#8211;merged<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; datatest1<br />&nbsp;&nbsp;&nbsp; * master<br />&nbsp;&nbsp;&nbsp; #给当前库打标签<br />&nbsp;&nbsp;&nbsp; [root@localhost data]# git tag -a v1.0 -m &#8216;abc&#8217;<br />&nbsp;&nbsp;&nbsp; [root@localhost data]# git tag<br />&nbsp;&nbsp;&nbsp; v1.0<br /><br />6、git回滚<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 回滚命令：git reset [option] [commitid]<br /><br />&nbsp;&nbsp;&nbsp; 选项<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --soft 缓存区和工作目录都不会被改变<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --mixed 默认选项。缓存区和制定的提交同步，但工作目录不受影响<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --hard 缓存区和工作目录都同步到指定的提交<br /><br />&nbsp;&nbsp;&nbsp; # 修改提交的文件并在此提交<br />&nbsp;&nbsp;&nbsp; ]# echo `date` &gt;&gt; git.test <br />&nbsp;&nbsp;&nbsp; ]# git commit -m "2"<br />&nbsp;&nbsp;&nbsp; # 获取commitid<br />&nbsp;&nbsp;&nbsp; ]# git log<br />&nbsp;&nbsp;&nbsp; commit 24867009ea7f916dc62b3fde3d4d15582fa6258b (HEAD -&gt; master)<br />&nbsp;&nbsp;&nbsp; Author: dayi123 &lt;dayi_123@126.com&gt;<br />&nbsp;&nbsp;&nbsp; Date:&nbsp;&nbsp; Fri Aug 10 09:39:55 2018 -0400<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2<br />&nbsp;&nbsp;&nbsp; commit 43e7aa5963db3b04691a6e4ec271b7199ab14d8b (&#8211;merged, datatest1)<br />&nbsp;&nbsp;&nbsp; Author: dayi123 &lt;dayi_123@126.com&gt;<br />&nbsp;&nbsp;&nbsp; Date:&nbsp;&nbsp; Fri Aug 10 09:06:25 2018 -0400<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; git.test<br />&nbsp;&nbsp;&nbsp; # 恢复到提交前<br />&nbsp;&nbsp;&nbsp; ]# git reset --hard 43e7aa596<br />&nbsp;&nbsp;&nbsp; HEAD is now at 43e7aa5 git.test<br />&nbsp;&nbsp;&nbsp; #查看提交后的状态<br />&nbsp;&nbsp;&nbsp; ]# git log<br />&nbsp;&nbsp;&nbsp; commit 43e7aa5963db3b04691a6e4ec271b7199ab14d8b (HEAD -&gt; master, &#8211;merged, datatest1)<br />&nbsp;&nbsp;&nbsp; Author: dayi123 &lt;dayi_123@126.com&gt;<br />&nbsp;&nbsp;&nbsp; Date:&nbsp;&nbsp; Fri Aug 10 09:06:25 2018 -0400<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; git.test<br /><br />7、使用git对远程仓库管理<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用git最终要将本地文件提交到远程git仓库中或者将远程仓库中的文件下载本地进行操作，常用的操作命令有：<br /><br />&nbsp;&nbsp;&nbsp; git clone 仓库地址&nbsp; 将远程主机文件拉到本地<br /><br />&nbsp;&nbsp;&nbsp; git pull&nbsp;&nbsp; 认证后更新代码，合并到之前代码中去<br /><br />&nbsp;&nbsp;&nbsp; git fetch&nbsp; 认证后更新代码，不会合并到之前的代码中<br /><br />&nbsp;&nbsp;&nbsp; git push origin master<br /><br />&nbsp;&nbsp;&nbsp; git remote&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 获取远程库的信息<br /><br />&nbsp;&nbsp;&nbsp; git remote &#8211;v&nbsp;&nbsp; 获取远程库的详细名称信息<br /><br />&nbsp;&nbsp;&nbsp; git remote add xxx http://xxx&nbsp;&nbsp; 添加地址。默认第一个名程都为origin<br /><br />&nbsp;&nbsp;&nbsp; git remote show origin<br /><br />&nbsp;&nbsp;&nbsp; git remote rename pb paul&nbsp; #变更远程地址名称<br />二、搭建与管理git远程仓库gitlab<br /><br />&nbsp;&nbsp;&nbsp; Gitlab是一个基于Ruby on rails开发的源代码托管结局按方案，gitlab分为企业版和社区版两个版本。<br /><br />&nbsp;&nbsp;&nbsp; Gitlab集成了nginx postgreSQL redis sidekiq等组件，在安装gitlab时会自动安装配置。<br /><br />1、gitlab的安装与配置<br /><br />（1）安装gitlab<br /><br />&nbsp;&nbsp;&nbsp; # 配置gitlabyum源为国内源以方便安装<br />&nbsp;&nbsp;&nbsp; ]# vim /etc/yum.repos.d/gitlab-ce.repo<br />&nbsp;&nbsp;&nbsp; [gitlab-ce]<br />&nbsp;&nbsp;&nbsp; name=Gitlab CE Repository<br />&nbsp;&nbsp;&nbsp; baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/<br />&nbsp;&nbsp;&nbsp; gpgcheck=0<br />&nbsp;&nbsp;&nbsp; enabled=1<br />&nbsp;&nbsp;&nbsp; # 清除并更新yum缓存<br />&nbsp;&nbsp;&nbsp; ]# yum clean all<br />&nbsp;&nbsp;&nbsp; ]# yum makecache<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 安装gitlab，默认安装安装的为最新版本，安装时可以指定具体的版本进行安装。<br />&nbsp;&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp;&nbsp; # 安装gitlab依赖软件<br />&nbsp;&nbsp;&nbsp; ]# yum install curl policycoreutils openssh-server openssh-clients postfix<br />&nbsp;&nbsp;&nbsp; # 如果没有关闭防火墙需要配置防火墙<br />&nbsp;&nbsp;&nbsp; ]# firewall-cmd --permanent --add-service=http<br />&nbsp;&nbsp;&nbsp; # 安装gitlab<br />&nbsp;&nbsp;&nbsp; ]# yum install gitlab-ce<br /><br />（2）配置启动gitlab<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 修改gitlab配置文件&#8221; /etc/gitlab/gitlab.rb&#8221;，绑定自己主机ip地址。<br /><br />&nbsp;&nbsp;&nbsp; # 将external修改为自己主机ip地址<br />&nbsp;&nbsp;&nbsp; external_url 'http://192.168.16.128'<br />&nbsp;&nbsp;&nbsp; # 启动gitlab并使修改的配置生效<br />&nbsp;&nbsp;&nbsp; ]# gitlab-ctl reconfigure<br /><br />（3）登录gitlab<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 安装完成后即可通过浏览器登录gitlab，第一次登录需要设置密码。<br /><br />（4）gitlab的操作命令<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gitlab-ctl status：查看gitlab状态<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gitlab-ctl start：启动gitlab<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gitlab-ctl stop：停止gitlab<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gitlab-ctl restart：重启gitlab<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gitlab-ctl tail servername：查看gitlab集成的服务日志<br /><br />&nbsp;&nbsp;&nbsp; #查看gitlab所有组件的状态<br />&nbsp;&nbsp;&nbsp; ]# gitlab-ctl status<br />&nbsp;&nbsp;&nbsp; run: alertmanager: (pid 122565) 1802s; run: log: (pid 122574) 1802s<br />&nbsp;&nbsp;&nbsp; run: gitaly: (pid 122496) 1804s; run: log: (pid 122547) 1802s<br />&nbsp;&nbsp;&nbsp; run: gitlab-monitor: (pid 122520) 1803s; run: log: (pid 122525) 1803s<br />&nbsp;&nbsp;&nbsp; run: gitlab-workhorse: (pid 122480) 1804s; run: log: (pid 122524) 1803s<br />&nbsp;&nbsp;&nbsp; run: logrotate: (pid 121671) 1900s; run: log: (pid 122530) 1803s<br />&nbsp;&nbsp;&nbsp; run: nginx: (pid 121613) 1911s; run: log: (pid 122488) 1804s<br />&nbsp;&nbsp;&nbsp; run: node-exporter: (pid 121854) 1878s; run: log: (pid 122509) 1803s<br />&nbsp;&nbsp;&nbsp; run: postgres-exporter: (pid 122585) 1801s; run: log: (pid 122591) 1801s<br />&nbsp;&nbsp;&nbsp; run: postgresql: (pid 121078) 1980s; run: log: (pid 122514) 1803s<br />&nbsp;&nbsp;&nbsp; run: prometheus: (pid 122535) 1802s; run: log: (pid 122557) 1802s<br />&nbsp;&nbsp;&nbsp; run: redis: (pid 120945) 1986s; run: log: (pid 122513) 1803s<br />&nbsp;&nbsp;&nbsp; run: redis-exporter: (pid 122068) 1855s; run: log: (pid 122526) 1803s<br />&nbsp;&nbsp;&nbsp; run: sidekiq: (pid 121478) 1923s; run: log: (pid 122516) 1803s<br />&nbsp;&nbsp;&nbsp; run: unicorn: (pid 121406) 1929s; run: log: (pid 122515) 1803s<br />&nbsp;&nbsp;&nbsp; # 查看redis日志<br />&nbsp;&nbsp;&nbsp; [root@localhost ~]# gitlab-ctl tail redis<br />&nbsp;&nbsp;&nbsp; 2018-08-10_16:42:14.05381 120945:M 10 Aug 12:42:14.047 * 10 changes in 300 seconds. Saving...<br />&nbsp;&nbsp;&nbsp; 2018-08-10_16:42:14.05398 120945:M 10 Aug 12:42:14.053 * Background saving started by pid 126469<br /><br />（5）gitlab服务安装目录说明<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /var/opt/gitlab/git-data/repositories/：库默认存储目录<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /opt/gitlab：应用代码和相应的依赖程序<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /var/opt/gitlab：&#8221;gitlab-ctl reconfigure&#8221;命令编译后的应用数据和配置文件，不需要人为修改配置<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /etc/gitlab：配置文件目录<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /var/log/gitlab：此目录下存放了gitlab各个组件产生的日志<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /var/opt/gitlab/backups/：备份文件生成的目录<br /><br />（6）变更配置文件操作<br /><br />&nbsp;&nbsp;&nbsp; gitlab-ctl show-config ：修改配置后验证配置文件<br /><br />&nbsp;&nbsp;&nbsp; gitlab-ctl reconfigure ：修改配置后重置配置文件<br /><br />2、gitlab的管理与使用<br /><br />&nbsp;&nbsp;&nbsp; Gitlab安装完成后在登录gitlab，在gitlab创建组、用户以及项目并关联起来，用户在本地生成密钥对，并将公钥拷贝到gitlab。同时创建里程碑给用户分配任务，gitlab对客户端可以做一下操作：<br /><br />&nbsp;&nbsp;&nbsp; # 将gitlab上的文件下载到本地<br />&nbsp;&nbsp;&nbsp; ]# git clone git@192.168.16.128:java/java1.git<br />&nbsp;&nbsp;&nbsp; # 在客户端创建分支完成分配的任务并上传至gitlab<br />&nbsp;&nbsp;&nbsp; ]# git branch index<br />&nbsp;&nbsp;&nbsp; ]# git checkout index<br />&nbsp;&nbsp;&nbsp; ]# echo "hello world" &gt; index.html<br />&nbsp;&nbsp;&nbsp; ]# git add .<br />&nbsp;&nbsp;&nbsp; ]# git commit -m "index"<br />&nbsp;&nbsp;&nbsp; # 提交到远程git仓库<br />&nbsp;&nbsp;&nbsp; ]# git push origin index<br />&nbsp;&nbsp;&nbsp; #查看远程库的详细信息<br />&nbsp;&nbsp;&nbsp; ]# git remote -v<br />&nbsp;&nbsp;&nbsp; origin&nbsp;&nbsp;&nbsp; git@192.168.16.128:java/java1.git (fetch)<br />&nbsp;&nbsp;&nbsp; origin&nbsp;&nbsp;&nbsp; git@192.168.16.128:java/java1.git (push)<br /><br />3、gitlab的备份与恢复<br /><br />（1）gitlab的备份<br /><br />&nbsp;&nbsp;&nbsp; 备份前需要修改配置文件&#8221;/etc/gitlab/gitlab.rb&#8221;中的以下内容：<br /><br />&nbsp;&nbsp;&nbsp; 备份文件存放路径：<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gitlab_rails['backup_path'] = '/data/backup/gitlab'<br /><br />&nbsp;&nbsp;&nbsp; 本地保留多少天备份：<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gitlab_rails['backup_keep_time'] = 604800&nbsp;&nbsp; &nbsp;<br /><br />&nbsp;&nbsp;&nbsp; 修改完配置文件后需要重新加载配置文件，并手动执行一次备份<br /><br />&nbsp;&nbsp;&nbsp; #创建备份文件存放目录并授权<br />&nbsp;&nbsp;&nbsp; ]# mkdir /data/backup/gitlab -p<br />&nbsp;&nbsp;&nbsp; ]# chown -R git.git /data/backup/gitlab<br />&nbsp;&nbsp;&nbsp; #重新加载配置文件<br />&nbsp;&nbsp;&nbsp; ]# gitlab-ctl reconfigure<br />&nbsp;&nbsp;&nbsp; # 手动执行一次备份并查看备份<br />&nbsp;&nbsp;&nbsp; ]# /usr/bin/gitlab-rake gitlab:backup:create<br />&nbsp;&nbsp;&nbsp; ]# ls /data/backup/gitlab/<br />&nbsp;&nbsp;&nbsp; 1533992013_2018_08_11_11.1.4_gitlab_backup.tar<br />&nbsp;&nbsp;&nbsp; # 将备份加入到定时任务中<br />&nbsp;&nbsp;&nbsp; ]# crontab -l<br />&nbsp;&nbsp;&nbsp; 03 2 * * * /usr/bin/gitlab-rake gitlab:backup:create &gt;dev/null 2&gt;&amp;1<br /><br />（2）gitlab恢复<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在恢复前需要停止数据写入服务，需要停掉&#8221;unicorn&#8221;服务以及&#8221;sidekiq&#8221;服务。<br /><br />&nbsp;&nbsp;&nbsp; # 停掉数据写入服务<br />&nbsp;&nbsp;&nbsp; ]# gitlab-ctl stop unicorn<br />&nbsp;&nbsp;&nbsp; ok: down: unicorn: 0s, normally up<br />&nbsp;&nbsp;&nbsp; ]# gitlab-ctl stop sidekiq<br />&nbsp;&nbsp;&nbsp; ok: down: sidekiq: 0s, normally up<br />&nbsp;&nbsp;&nbsp; # 执行恢复，backup后面为备份文件的时间戳及时间<br />&nbsp;&nbsp;&nbsp; ]# gitlab-rake gitlab:backup:restore BACKUP=1533992013_2018_08_11_11.1.4<br />&nbsp;&nbsp;&nbsp; # 恢复完成后，再次启动&#8221;unicorn&#8221;服务及&#8221;sidekiq&#8221;服务<br />&nbsp;&nbsp;&nbsp; ]# gitlab-ctl start unicorn<br />&nbsp;&nbsp;&nbsp; ]# gitlab-ctl start sidekiq<br /><br />4、配置gitlab发送邮件功能<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在配置gitlab发送邮件前需要确保gitlab服务所在主机已安装postfix并已启动，配置发送邮件功能够将创建用户信息及分配任务时将相关信息发送相关负责人。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 配置邮件发送功能时需要在gitlab配置文件中配置一下参数：<br /><br />&nbsp;&nbsp;&nbsp; gitlab_rails['time_zone'] = 'Asia/Shanghai'<br />&nbsp;&nbsp;&nbsp; gitlab_rails['gitlab_email_enabled'] = true<br />&nbsp;&nbsp;&nbsp; gitlab_rails['gitlab_email_from'] = 'dayi_1234@126.com'<br />&nbsp;&nbsp;&nbsp; gitlab_rails['gitlab_email_display_name'] = 'gitlab'<br />&nbsp;&nbsp;&nbsp; gitlab_rails['smtp_enable'] = true<br />&nbsp;&nbsp;&nbsp; gitlab_rails['smtp_address'] = "smtp.126.com"<br />&nbsp;&nbsp;&nbsp; gitlab_rails['smtp_port'] = 25<br />&nbsp;&nbsp;&nbsp; gitlab_rails['smtp_user_name'] = "dayi123"<br />&nbsp;&nbsp;&nbsp; gitlab_rails['smtp_password'] = "mailsnmp_password"<br />&nbsp;&nbsp;&nbsp; gitlab_rails['smtp_domain'] = "126.com"<br />&nbsp;&nbsp;&nbsp; gitlab_rails['smtp_authentication'] = "login"<br /><br />配置完成后重新加载配置：<br /><br />&nbsp;&nbsp;&nbsp; #重新加载配置文件<br />&nbsp;&nbsp;&nbsp; ]# gitlab-ctl reconfigure &nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp; 测试时将邮箱配置为163邮箱及126邮箱（均开启了smtp）邮件不能正常发送出去，会报如下的错误（可通过&#8221; gitlab-ctl tail&#8221;命令查看日志或者登录gitlab在监控的&#8221;已停止&#8221;中查看）：<br /><br />Net::SMTPFatalError: 554 DT:SPM 126 smtp1,C8mowAD3ZCIqlohbfq7kGQ--.54263S3 1535677995,please see http://mail.163.com/help/help_spam_16.htm?ip=58.37.62.187&amp;hostid=smtp1&amp;time=1535677995<br /><br />&nbsp;&nbsp;&nbsp;&nbsp; 发送失败的原因可能是163邮箱将发送内容当做了垃圾邮件处理，导致发送不成功，当使用腾讯企业邮箱时，可以正常发送<br /><img src ="http://www.cnitblog.com/201/aggbug/92267.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2020-07-11 13:35 <a href="http://www.cnitblog.com/201/archive/2020/07/11/92267.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>gitlab 存储仓库目录设置及数据迁移</title><link>http://www.cnitblog.com/201/archive/2020/07/11/92266.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Sat, 11 Jul 2020 05:32:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2020/07/11/92266.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp; 注：一开始没有考虑到把gitlab划分好存储目录，占用系统磁盘，由于gitlab是默认安装的，随着公司代码越来越多，导致gitlab数据目录空间不足<br /><br />磁盘空间：<br /><br />&nbsp;&nbsp;&nbsp; [root@gitlab ~]# df -hT<br />&nbsp;&nbsp;&nbsp; Filesystem&nbsp;&nbsp;&nbsp;&nbsp; Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Size&nbsp; Used Avail Use% Mounted on<br />&nbsp;&nbsp;&nbsp; /dev/vda1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ext4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 40G&nbsp;&nbsp; 25G&nbsp;&nbsp; 13G&nbsp; 67% /<br /><br />&nbsp;&nbsp;&nbsp; 注：因为使用的阿里云服务，所以考虑另挂载一块磁盘专用于gitlab存储。<br />&nbsp;&nbsp;&nbsp; &#183;&#183;&#183;&#183;&#183;&#183; 云盘挂载，磁盘分区就直接略过。<br /><br />设置存储仓库数据<br /><br />默认情况下omnibus-gitlab 将仓库数据存储在 /var/opt/gitlab/git-data目录下，仓库存放在子目录 repositories里面。 以可以通过修改/etc/gitlab/gitlab.rb 的这一行来自定义 git-data 的父目录<br /><br />&nbsp;&nbsp;&nbsp; [root@gitlab ~]#&nbsp; vim /etc/gitlab/gitlab.rb <br />&nbsp;&nbsp;&nbsp; # 把注释取消然后指定新的仓库存储位置<br />&nbsp;&nbsp;&nbsp; git_data_dirs({ "default" =&gt; { "path" =&gt; "/home/gitlab-data" } })<br /><br />&nbsp;&nbsp;&nbsp; 注： /home/gitlab-data 是我新挂载的目录，<br />&nbsp;&nbsp;&nbsp; 注意 ：目标路径和其子路径必须不能为软链接。<br /><br />使设置生效<br /><br />1.1 ，在没有数据的情况下<br /><br />&nbsp;&nbsp;&nbsp; [root@gitlab ~]#&nbsp; gitlab-ctl stop<br />&nbsp;&nbsp;&nbsp; [root@gitlab ~]# gitlab-ctl reconfigure //使修改生效<br /><br />1.2，如果 /var/opt/gitlab/git-data 目录已经存在Git仓库数据， 你可以用下面的命令把数据迁移到新的位置:<br /><br />&nbsp;&nbsp;&nbsp; # 准备迁移之前要停止GitLab服务，防止用户写入数据。<br />&nbsp;&nbsp;&nbsp; [root@gitlab ~]# gitlab-ctl stop<br />&nbsp;&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp;&nbsp; # 注意 'repositories'后面不带斜杠，而<br />&nbsp;&nbsp;&nbsp; # '/home/gitlab-data'后面是有斜杠的。<br />&nbsp;&nbsp;&nbsp; [root@gitlab ~]# rsync -av /var/opt/gitlab/git-data/repositories /home/gitlab-data/<br />&nbsp;&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp;&nbsp; # 如果需要修复权限设置，<br />&nbsp;&nbsp;&nbsp; # 可运行下面的命令进行修复。<br />&nbsp;&nbsp;&nbsp; [root@gitlab ~]# gitlab-ctl reconfigure<br />&nbsp;&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp;&nbsp; # 再次检查下&nbsp; /home/gitlab-data 的目录. 正常情况应该有下面这个子目录:<br />&nbsp;&nbsp;&nbsp; # repositories<br />&nbsp;&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp;&nbsp; [root@gitlab ~]# ls&nbsp; /home/gitlab-data/<br />&nbsp;&nbsp;&nbsp; repositories<br />&nbsp;&nbsp;&nbsp; # 完工! 启动GitLab，验证下是否能<br />&nbsp;&nbsp;&nbsp; # 通过web访问Git仓库。<br />&nbsp;&nbsp;&nbsp; [root@gitlab ~]# gitlab-ctl start<br /><br />设置存储仓库数据的备用目录<br /><br />&nbsp;&nbsp;&nbsp; 注意的是：自GitLab 8.10开始,可以通过在/etc/gitlab/gitlab.rb文件中添加下面的几行配置， 来增加多个 git 数据存储目录。<br /><br />&nbsp;&nbsp;&nbsp; git_data_dirs({<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "default" =&gt; { "path" =&gt; "/var/opt/gitlab/git-data" },&nbsp; //默认存储目录<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "alternative" =&gt; { "path" =&gt; " /home/gitlab-data" }&nbsp;&nbsp;&nbsp;&nbsp; //备用存储目录<br /><br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br /><br /><img src ="http://www.cnitblog.com/201/aggbug/92266.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2020-07-11 13:32 <a href="http://www.cnitblog.com/201/archive/2020/07/11/92266.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>