首页
关于
留言
友链
电台
壁纸
我的足迹
推荐
知易而行MCP
Search
1
乐橙CMS影视管理系统最全版本
109,277 阅读
2
VIP视频解析破解电影解析模拟破解影视解析
77,795 阅读
3
乐橙CMS影视管理系统4.0.18版本
16,934 阅读
4
新浪图片链接修复教程集合
15,125 阅读
5
反调试代码调试死机代码禁止F12代码
12,093 阅读
语言
PHP
Java
Go
JavaScript
CSS
Vue
资源教程
网络杂谈
技术文章
影视交流
软件工具
Mac
知易而行
登录
Search
标签搜索
PHP
AI
LINUX
微信
MYSQL
OpenClaw
ESP32S3
小智AI
P2P
JS
破解
乐橙cms
支付
uniapp
人工智能
技术趋势
智能玩具
公众号
typecho
xshell
子沐~
累计撰写
121
篇文章
累计收到
372
条评论
首页
栏目
语言
PHP
Java
Go
JavaScript
CSS
Vue
资源教程
网络杂谈
技术文章
影视交流
软件工具
Mac
知易而行
页面
关于
留言
友链
电台
壁纸
我的足迹
推荐
知易而行MCP
搜索到
56
篇与
的结果
2019-03-31
价值3000元的唤醒支付宝红包原理
<html class="normal "> <head> <meta charset="UTF-8"> <title>支付宝</title> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black"> <meta name="format-detection" content="telephone=no"> <meta name="format-detection" content="email=no"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0"> <style> *, :before, :after { -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,form,fieldset,legend,input,textarea,p,blockquote,th,td { margin: 0; padding: 0; } table { border-collapse: collapse; border-spacing: 0; } fieldset,img { border: 0; } li { list-style: none; } caption,th { text-align: left; } q:before,q:after { content: ""; } input:password { ime-mode: disabled; } :focus { outline: 0; } html,body { text-align: center; -webkit-user-select: none; user-select: none; font-family:"Helvetica Neue",Helvetica,STHeiTi,sans-serif; font-size: 12px; line-height: 1.5; text-align: center; } html{ background:#181c27; } .download-cover{ display:block; height:360px; background-position:center 0; background-repeat:no-repeat; -webkit-background-size:320px auto; -moz-background-size:320px auto; -ms-background-size:320px auto; -o-background-size:320px auto; background-size:320px auto; margin:0 auto; overflow:hidden; } .download-cover .download-cover-slogan, .download-cover .download-cover-picture{ display:none; } .download-interaction{ margin-top:20px; height:42px; padding-bottom:20px; } .download-interaction .download-button{ display:none; text-decoration: none; font-size: 16px; color: #ffffff; letter-spacing: 2px; margin:0 48px; background:#181c27; height:42px; line-height:42px; text-align:center; border:1px solid #7f7f87; border-top-left-radius:2px; border-top-right-radius:2px; border-bottom-left-radius:2px; border-bottom-right-radius:2px; -webkit-background-clip:padding-box; background-clip:padding-box; } .download-interaction .download-opening, .download-interaction .download-asking{ display:none; color:#fff; font-size:15px; } .download-interaction.download-interaction-asking .download-asking, .download-interaction.download-interaction-opening .download-opening, .download-interaction.download-interaction-button .download-button{ display:block; } .download-putcenter, .copyright{ font-size:12px; color:#999; text-align:center; } .download-putcenter{ padding-top:10px; } .download-putcenter .version, .download-putcenter .date, .download-putcenter .size{ margin-left:3px; } .copyright{ padding-bottom:10px; } a{ color:#0af; text-decoration:none; } </style> <script> window.readyToRun = []; </script> </head> <body ryt14421="1"> <script> function track(type) { var img = new Image(); img.onload = function(){}; img.onerror = function(){}; img.src = 'https://cmspromo.alipay.com/mseed/index.jsonp?seed=startAppFrom_'+type+'&t='+(new Date()).getTime(); } if (!location.hash) { track('mobileweb'); } </script> <script> if (typeof AlipayWallet !== 'object') { AlipayWallet = {}; } (function () { var ua = navigator.userAgent.toLowerCase(), locked = false, domLoaded = document.readyState==='complete', delayToRun; function customClickEvent() { var clickEvt; if (window.CustomEvent) { clickEvt = new window.CustomEvent('click', { canBubble: true, cancelable: true }); } else { clickEvt = document.createEvent('Event'); clickEvt.initEvent('click', true, true); } return clickEvt; } function getAndroidVersion() { var match = ua.match(/android\s([0-9\.]*)/); return match ? match[1] : false; } var noIntentTest = /aliapp|360 aphone|weibo|windvane|ucbrowser|baidubrowser/.test(ua); var hasIntentTest = /chrome|samsung/.test(ua); var isAndroid = /android|adr/.test(ua) && !(/windows phone/.test(ua)); var canIntent = !noIntentTest && hasIntentTest && isAndroid; var openInIfr = /weibo|m353/.test(ua); var inWeibo = ua.indexOf('weibo')>-1; if (ua.indexOf('m353')>-1 && !noIntentTest) { canIntent = false; } // 是否在 webview var inWebview = ''; if (inWebview) { canIntent = false; } /** * 打开钱包 * @param {string} params 唤起钱包的参数设置('alipays://platformapi/startapp?'后面的值) * @param {boolean} jumpUrl 唤起钱包后,android下要跳转到的URL; * 若传"default",则为https://d.alipay.com/i/index.htm?nojump=1#once */ AlipayWallet.open = function (params, jumpUrl) { if (!domLoaded && (ua.indexOf('360 aphone')>-1 || canIntent)) { var arg = arguments; delayToRun = function () { AlipayWallet.open.apply(null, arg); delayToRun = null; }; return; } // 唤起锁定,避免重复唤起 if (locked) { return; } locked = true; var o; // 参数容错 if (typeof params==='object') { o = params; } else { o = { params: params, jumpUrl: jumpUrl }; } // 参数容错 if (typeof o.params !== 'string') { o.params = ''; } if (typeof o.openAppStore !== 'boolean') { o.openAppStore = true; } o.params = o.params || 'appId=20000001'; o.params = o.params + ''; o.params = o.params + '&_t=' + (new Date()-0); if (o.params.indexOf('startapp?')>-1) { o.params = o.params.split('startapp?')[1]; } else if (o.params.indexOf('startApp?')>-1) { o.params = o.params.split('startApp?')[1]; } // 是否为RC环境 var isRc = ''; // 是否唤起re包 var isRe = ''; if (typeof o.isRe==='undefined') { o.isRe = !!isRe; } // 通过alipays协议唤起钱包 var schemePrefix; if (ua.indexOf('mac os')>-1 && ua.indexOf('mobile')>-1) { // IOS RC包前缀为 alipaysrc if (isRc) { if (o.isRe) { schemePrefix = 'alipayrerc'; } else { schemePrefix = 'alipaysrc'; } } } if (!schemePrefix && o.isRe) { schemePrefix = 'alipayre'; } schemePrefix = schemePrefix || 'alipays'; // 由于历史原因,对 alipayqr 前缀做特殊处理 if (location.href.indexOf('scheme=alipayqr') > -1) { schemePrefix = 'alipayqr'; isRc = false; } if (!canIntent) { var alipaysUrl = schemePrefix + '://platformapi/startapp?' + o.params; if ( ua.indexOf('qq/') > -1 || ( ua.indexOf('safari') > -1 && ua.indexOf('os 9_') > -1 ) ) { var openSchemeLink = document.getElementById('openSchemeLink'); if (!openSchemeLink) { openSchemeLink = document.createElement('a'); openSchemeLink.id = 'openSchemeLink'; openSchemeLink.style.display = 'none'; document.body.appendChild(openSchemeLink); } openSchemeLink.href = alipaysUrl; // 执行click openSchemeLink.dispatchEvent(customClickEvent()); } else { var ifr = document.createElement('iframe'); ifr.src = alipaysUrl; ifr.style.display = 'none'; document.body.appendChild(ifr); } } else { // android 下 chrome 浏览器通过 intent 协议唤起钱包 var packageKey = 'AlipayGphone'; if (isRc) { packageKey = 'AlipayGphoneRC'; } var intentUrl = 'intent://platformapi/startapp?'+o.params+'#Intent;scheme='+ schemePrefix +';package=com.eg.android.'+ packageKey +';end'; var openIntentLink = document.getElementById('openIntentLink'); if (!openIntentLink) { openIntentLink = document.createElement('a'); openIntentLink.id = 'openIntentLink'; openIntentLink.style.display = 'none'; document.body.appendChild(openIntentLink); } openIntentLink.href = intentUrl; // 执行click openIntentLink.dispatchEvent(customClickEvent()); } // 延迟移除用来唤起钱包的IFRAME并跳转到下载页 setTimeout(function () { if (typeof o.jumpUrl !== 'string') { o.jumpUrl = ''; } // URL白名单 var urlPattern = /^http(s)?:\/\/([a-z0-9_\-]+\.)*(alipay|taobao|alibaba|alibaba-inc|tmall|koubei)\.(com|net|cn|com\.cn)(:\d+)?([/;?].*)?$/; // 默认跳转地址 if (o.jumpUrl==='default') { o.jumpUrl = 'https://ds.alipay.com/?nojump=true'; } if (o.jumpUrl && typeof o.jumpUrl==='string' && urlPattern.test(o.jumpUrl)) { location.href = o.jumpUrl; } }, 1000) // 唤起加锁,避免短时间内被重复唤起 setTimeout(function () { locked = false; }, 2500) } if (!domLoaded) { document.addEventListener('DOMContentLoaded', function () { domLoaded = true; if (typeof delayToRun === 'function') { delayToRun(); } }, false); } })(); </script> <script type="text/javascript"> (function(){ var schemeParam = ''; schemeParam = schemeParam.replace(/&/ig, '&'); if (!location.hash) { AlipayWallet.open({ params: schemeParam, jumpUrl: '', openAppStore: false }); } function pageFuntion(){ } if (/complete|loaded|interactive/.test(document.readyState && document.body)) { pageFuntion(); } else { document.addEventListener('DOMContentLoaded', function () { pageFuntion(); }, true); } })(); </script> <iframe src="alipays://platformapi/startapp?appId=20000001&_t=1464601210564" style="display: none;"></iframe> <style> .normal .download-cover{ background-image:url("https://os.alipayobjects.com/rmsportal/hNfINSQHpUoLRly.png"); } html{background-color:#019fe8;} a{color:#8cffff;} .download-interaction .download-button{background:#019fe8;border:1px solid #fff;} .download-putcenter, .copyright{color:#fff;} </style> <script> window.readyToRun.push(function () { setTimeout(function () { var downloadCover = document.getElementById('downloadCover'); if (downloadCover) { downloadCover.style.backgroundImage = 'url(https://os.alipayobjects.com/rmsportal/hNfINSQHpUoLRly.png)'; } }, 50); }); </script> <div class="download-view-wrap" id="downloadViewWrap"> <div class="wrap-view-addon-1"></div> <div class="wrap-view-addon-2"></div> <div class="wrap-view-addon-3"></div> <div class="wrap-view-addon-4"></div> <div class="download-inner-view" id="downloadInnerView"> <div class="inner-view-addon-1"></div> <div class="inner-view-addon-2"></div> <div class="inner-view-addon-3"></div> <div class="inner-view-addon-4"></div> <div class="download-view" id="downloadView"> <div class="download-view-addon-1"></div> <div class="download-view-addon-2"></div> <div class="download-view-addon-3"></div> <div class="download-view-addon-4"></div> <div class="download-cover" id="downloadCover" style="background-image: url("https://os.alipayobjects.com/rmsportal/hNfINSQHpUoLRly.png");"> <div class="download-cover-logo" id="downloadCoverLogo"></div> <div class="download-cover-slogan" id="downloadCoverSlogan"></div> <div class="download-cover-picture" id="downloadCoverPicture"> <div class="download-cover-picture-1"></div> <div class="download-cover-picture-2"></div> <div class="download-cover-picture-3"></div> <div class="download-cover-picture-4"></div> </div> </div> <div id="J_downloadInteraction" class="download-interaction download-interaction-button"> <div class="inner-interaction"> <p class="download-opening">正在打开支付宝<span class="download-opening-1">.</span><span class="download-opening-2">.</span><span class="download-opening-3">.</span></p> <p class="download-asking">如果没有打开支付宝,<a id="J_downloadBtn" href="https://itunes.apple.com/cn/app/id333206289?mt=8">请下载最新版</a></p> <a id="J_downloadBtn" href="https://itunes.apple.com/cn/app/id333206289?mt=8" class="download-button">立即下载</a> </div> </div> <script> document.getElementById('J_downloadBtn').onclick = function () { var ifr = document.createElement('iframe'); ifr.src = 'itms-apps://itunes.apple.com/app/zhi-fu-bao/id333206289?mt=8'; ifr.style.display = 'none'; document.body.appendChild(ifr); location.href = 'itms-apps://itunes.apple.com/app/zhi-fu-bao/id333206289?mt=8'; }; </script> </div> </div> </div> <div class="base-info"> <div class="download-putcenter"> <span class="word">最新版本:</span> <span class="version">9.6.6</span> <span class="date">(2016-05-10)</span> <span class="size">93.2MB</span> </div> <p class="copyright">支付宝版权所有 © 2004 - 2016</p> </div> <script> function jsBridgeRun(fn) { if (typeof window.AlipayJSBridge==='object' && window.AlipayJSBridge.startupParams) { fn(); } else { document.addEventListener('AlipayJSBridgeReady', function () { fn(); }, false); } } jsBridgeRun(function () { AlipayJSBridge.call("hideOptionMenu"); }); // 等待运行函数 var rtrLen = window.readyToRun.length; if(window.readyToRun.length) { var rtrIdx, rtrFn; for(rtrIdx=0; rtrIdx<rtrLen; rtrIdx++) { rtrFn = window.readyToRun[rtrIdx]; typeof rtrFn==='function' && rtrFn(); } window.readyToRun = []; } </script></body></html>
2019年03月31日
1,695 阅读
0 评论
0 点赞
2019-03-31
jsonp转数组函数jsonp_decode
分享一个可以跟json一样用的函数jsonp_decode,能把jsonp格式数据转为php数组或对象。/** * 把jsonp转为php数组 * @param string $jsonp jsonp字符串 * @param boolean $assoc 当该参数为true时,将返回array而非object * @return array */ function jsonp_decode($jsonp, $assoc = false) { $jsonp = trim($jsonp); if(isset($jsonp[0]) && $jsonp[0] !== '[' && $jsonp[0] !== '{') { $begin = strpos($jsonp, '('); if(false !== $begin) { $end = strrpos($jsonp, ')'); if(false !== $end) { $jsonp = substr($jsonp, $begin + 1, $end - $begin - 1); } } } return json_decode($jsonp, $assoc); }
2019年03月31日
2,022 阅读
2 评论
0 点赞
2019-03-31
Nginx添加多个网站,禁止通过ip访问,禁止访问某些目录
同一个nginx上安装多个网站的方法在nginx.conf的http{}中按照说明修改server{}字段server { listen 80; server_name www.example.com; #所绑定的域名 location / { root example; #该域名对应的网站根目录 index index.html index.htm index.php; } location ~ \.php$ { #支持php root C:/nginx/html; #php访问目录 fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }如果想添加多个网站,添加多个server{}并绑定不同的域名,设置不同的根目录即可。以下是禁止通过ip访问的代码server { listen 80 default_server; server_name _; return 444; #当有用户通过ip访问时返回的HTTP状态码 }禁止访问某些目录location ^~ /admin/test/ { deny all; }这样就可以禁止访问/admin/test目录下的任何文件
2019年03月31日
2,377 阅读
2 评论
0 点赞
2019-03-31
安装BBR加速脚本为服务器提速
BBR 是 Google 开源的 TCP BBR 拥塞控制算法,并提交到了 Linux 内核,最新的 4.10 版内核已经用上了该算法。主要用于网络加速,类似于锐速。不支持OpenVZ的机器。本脚本适用环境系统支持:CentOS 6+,Debian 7+,Ubuntu 12+虚拟技术:OpenVZ 以外的(KVM、Xen、VMware等)内存要求:≥128M日期:2017 年 02 月 22 日使用root用户登录,运行以下命令:wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh chmod +x bbr.sh ./bbr.sh安装完成后,脚本会提示需要重启 VPS,输入 y 并回车后重启。重启完成后,进入 VPS,验证一下是否成功安装最新内核并开启 TCP BBR,输入以下命令:uname -r查看内核版本,含有 4.10 就表示 OK 了查看BBR是否启用,输入以下命令:lsmod | grep bbr返回值有 tcp_bbr 模块即说明bbr已启动。内核升级方法如果是 CentOS 系统,执行如下命令即可升级内核:yum --enablerepo=elrepo-kernel -y install kernel-ml kernel-ml-develCentOS 6 的话,执行命令:sed -i 's/^default=.*/default=0/g' /boot/grub/grub.confCentOS 7 的话,执行命令:grub2-set-default 0如果是 Debian/Ubuntu 系统,则需要手动下载最新版内核来安装升级。 去这里下载最新版的内核 deb 安装包。 如果系统是 64 位,则下载 amd64 的 linux-image 中含有 generic 这个 deb 包; 如果系统是 32 位,则下载 i386 的 linux-image 中含有 generic 这个 deb 包; 安装的命令如下(以最新版的 64 位 4.9.3 举例而已,请替换为下载好的 deb 包):dpkg -i linux-image-4.9.3-040903-generic_4.9.3-040903.201701120631_amd64.deb安装完成后,再执行命令:/usr/sbin/update-grub
2019年03月31日
1,693 阅读
0 评论
0 点赞
2019-03-31
豆瓣电影的API接口
文字摘抄1、获取正在热映的电影:接口:https://api.douban.com/v2/movie/in_theaters访问参数:start : 数据的开始项count:单页条数city:城市如:获取 广州热映电影 第一页 10条数据:https://api.douban.com/v2/movie/in_theaters?city=广州&start=0&count=10返回数据格式:(这里只列出app需要的字段)2、获取电影Top250:接口:https://api.douban.com/v2/movie/top250访问参数:start : 数据的开始项count:单页条数如:获取电影Top250 第一页 10条数据:https://api.douban.com/v2/movie/top250?start=0&count=10返回数据格式:同上3、电影搜索接口:https://api.douban.com/v2/movie/search访问参数:start : 数据的开始项count:单页条数q:要搜索的电影关键字tag:要搜索的电影的标签如:搜索电影《神秘巨星》:https://api.douban.com/v2/movie/search?q=神秘巨星&start=0&count=10搜索喜剧类型的电影:https://api.douban.com/v2/movie/search?tag=喜剧&start=0&count=10返回数据格式:同上4、电影详情接口:https://api.douban.com/v2/movie/subject/:id访问参数:电影id如:电影《神秘巨星》的电影id为:26942674,搜索此电影的详细信息:https://api.douban.com/v2/movie/subject/26942674返回数据格式:
2019年03月31日
2,841 阅读
0 评论
0 点赞
2019-03-31
PHP检测每一段代码执行时间
<?php // 实例1 /** * @start time */ function proStartTime() { global $startTime; $mtime1 = explode(" ", microtime()); $startTime = $mtime1[1] + $mtime1[0]; } /** * @End time */ function proEndTime() { global $startTime,$set; $mtime2 = explode(" ", microtime()); $endtime = $mtime2[1] + $mtime2[0]; $totaltime = ($endtime - $startTime); $totaltime = number_format($totaltime, 7); echo "process time: ".$totaltime."\r\n"; } // 程序调用开始记时 proStartTime(); sleep(1); // sleep() 延时代码执行若干秒 proEndTime(); // 程序在每一段所消耗的执行时间 sleep(2); proEndTime(); sleep(3); proEndTime(); /************************************************* 华丽的分割线 **************************************************/ // 实例2 $t1 = microtime(true); sleep(3); $t2 = microtime(true); echo '程序耗时'.round($t2-$t1,3).'秒'; ?>
2019年03月31日
1,619 阅读
0 评论
0 点赞
2019-03-31
thinkphp5多语言切换
config.php 两个配置:'lang_switch_on' => true,'lang_list' => ['zh-cn','en-us'], 进入Lang.php /** * 自动侦测设置获取语言选择 * @return string */ public static function detect() { // 自动侦测设置获取语言选择 $langSet = ''; // if (isset($_GET[self::$langDetectVar])) { if (cookie('think_var')) { // url中设置了语言变量 // $langSet = strtolower($_GET[self::$langDetectVar]); $langSet = strtolower(cookie('think_var')); } elseif (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { // 自动侦测浏览器语言 preg_match('/^([a-z\d\-]+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches); $langSet = strtolower($matches[1]); $acceptLangs = Config::get('header_accept_lang'); if (isset($acceptLangs[$langSet])) { $langSet = $acceptLangs[$langSet]; } elseif (isset(self::$acceptLanguage[$langSet])) { $langSet = self::$acceptLanguage[$langSet]; } } if (empty(self::$allowLangList) || in_array($langSet, self::$allowLangList)) { // 合法的语言 self::$range = $langSet ?: self::$range; } return self::$range; } 添加语言包控制器页面
2019年03月31日
1,737 阅读
0 评论
0 点赞
2019-03-31
Strjson博客发布一个PHP版P2P加速 只支持M3U8资源
源码下载:↓[hide]博客交流群QQ群:893570651[/hide]
2019年03月31日
3,980 阅读
11 评论
0 点赞
2019-03-31
Windows VPS一键重装为Linux系统
说明:之前萌咔大佬做的Linux to Windows和Linux to Linux脚本方便了很多人,近期又做出了Windows to Linux脚本,基本上已经全了,这里就分享下。前言有些厂商的机器因策略问题,不支持Windows重装为Linux。例如:腾讯云非大陆区域。有些厂商Windows系统盘会比Linux系统盘大,想要大一点系统盘。例如: AZURE、AWS等。有些厂商不支持VNC,这对于转换系统实在不方便。这篇文章可以解决以上问题。使用下载文件:萌咔来源、本站来源。双击打开此文件。自行选择选项。按回车重启,并等待安装完成。注意事项1、如果对提供安装的发行版不满意,请参考此文章→传送门。默认提供的是Debian8(Jessie),添加了firmware包,提供了更多的驱动支持,DHCP模式一键。非DHCP模式,如果要一键,则需要自己定制镜像。定制Debian系镜像应该没问题,其他未作测试。默认root账户密码Vicer。2、如果厂商不支持VNC,则需要自己定制镜像。定制方法请参考此文章→传送门。主要在镜像中添加机器的网络参数,以便支持一键安装。命令示例:#定制带网络参数的initrd.img bash InstallNET.sh -d 8 -v 64 -a --ip-addr <IP> --ip-mask <NetMask> --ip-gate <GATE> --loader #需要dd安装其他系统(例如 Windows to Windows),定制命令.(网络参数有DHCP的,无需添加.) bash InstallNET.sh -dd <IMAGE_URL.tar> --ip-addr <IP> --ip-mask <NetMask> --ip-gate <GATE> --loader完成后将initrd.img和vmlinuz存放到能直链下载的位置。3、如果厂商支持VNC,则可以直接全部选1。安装的时候,自己填IP地址,子网掩码,网关,DNS服务器。DNS服务器推荐填:8.8.8.8。4、区分是否为DHCP模式非DHCP模式:如上图,显示了详细的IP地址。(选中:使用下面的IP地址)DHCP模式:参考上图。(选中:自动获得IP地址)相关教程Linux VPS纯净版CentOS系统一键安装脚本Linux VPS无限制一键全自动DD安装Windows脚本Linux VPS纯净版Debian/Ubuntu系统一键安装脚本文章来源:https://moeclub.org/2018/10/31/670/
2019年03月31日
1,810 阅读
0 评论
0 点赞
2019-03-31
Linux VPS定时备份服务器/网站数据到Github私人仓库
说明:现在Github被微软收购后,私人仓库已经开始免费了,只能说微软很良心。然后就可以拿来折腾下了,让其充分发挥下作用,这里我们可以用来备份下网站或者服务器一些数据,方法就大概说下。教程首先你肯定需要一个Github账号,没有的可以去注册一个,地址:https://github.com。有了账号就继续看。1、配置Git SSH密钥由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以必须要让github仓库认证你SSH key,在操作之前,需要先在服务器上生成SSH key。我们先去根目录下使用命令:cd ~ssh-keygen -t rsa这里会要你命名密匙名称(这里建议使用默认名称),然后连续按几次Enter,这时候会在/root/.ssh文件夹生成2个ssh密钥,然后我们查看公钥id_rsa.pub。cat ~/.ssh/id_rsa.pub查看后,再复制下公钥,然后打开Github官网,进入https://github.com/settings/ssh/new,Title随便填,然后Key填入刚刚复制的密匙,最后点击Add SSH Key添加即可。请输入图片描述2、建立私人仓库我们需要先访问https://github.com/new,新建一个仓库用来存放备份文件,名称自己随意,记得下面一定要勾选Private,也就是私人仓库。不然你辛辛苦苦备份的小姐姐就要被别人偷走了。请输入图片描述3、配置本地仓库由于博主是用来备份网站,所以需要备份文件夹为/home/www.moerats.com,也就是把该文件夹定为本地仓库,使用命令:进入需要备份的文件夹cd /home/www.moerats.com初始化你的github仓库git init关联到远程github仓库git remote add origin git@github.com:iiiiiii1/MOERATS.git关联仓库的时候,后面可以用HTTPS链接也可以用SSH,这里强烈建议选择SSH,安全性很高。请输入图片描述4、初次备份进入备份的文件夹cd /home/www.moerats.com把目录下所有文件更改状况提交到暂存区,包括增,删,改。git add -A提交更改的说明,说明随意了,这里为backsitegit commit -m "backsite"开始推送到Githubgit push -u origin master推送的时候可能会提示The authenticity of host 'github.com' can't be established.信息,直进yes即可。然后可以看到仓库的备份文件了。请输入图片描述5、设置定时备份在根目录先新建一个bash脚本:nano ~/gitback.sh代码如下:!/bin/bash进入到网站根目录,记得修改为自己的站点cd /home/xxx.com将数据库导入到该目录,这里以mysql为例,passwd为数据库密码,typecho为数据库名称,typecho.sql为备份的数据库文件mysqldump -uroot -ppasswd typecho > typecho.sqlgit add -Agit commit -m "backsite"git push -u origin master然后编辑好了后,使用ctrl+x,y保存退出。再测试下脚本,使用命令:bash ~/gitback.sh脚本没问题的话,再设置为每天05:15执行一次:并将运行日志输出到根目录的siteback.log文件echo "15 05 * bash ~/gitback.sh > ~/siteback.log 2>&1 &" > bt.croncrontab bt.cronrm -rf bt.cron最后使用crontab -l命令查看添加成功没。成功的话,就基本上算完成了。推送失败如果你将本地文件夹推送到Github失败的话,常见原因有2种,具体如下。1、邮件问题报错提示:Your push would publish a private email address.这里可能是你将你的邮件地址私密了,解决方法如下:方法一,如果你想一直保持私密,可以选择方法二访问https://github.com/settings/emails,将Keep my email address private的勾去掉。方法二1、访问https://github.com/settings/emails,将Block command line pushes that expose my email的勾去掉。2、设置你的github邮箱,修改成自己的再运行命令:git config --global user.email "admin@moerats.com"2、密匙问题报错提示:Permission denied (publickey).大概的原因就是,你设置密匙的时候改成了其它名称,而ssh默认只读取id_rsa,所以会显示没权限。解决方法如下:方法一进入根目录的.ssh文件夹,将你的github密匙文件,重新更名为id_rsa。方法二将github密匙添加到ssh agent,比如密匙名称为github,使用命令:ssh-agent bashssh-add ~/.ssh/github总结使用该方法备份网站是个不错的选择,不过别用来备份大文件东西,比如电影什么的,听说有限制,具体多少暂时还没测试。
2019年03月31日
1,623 阅读
0 评论
0 点赞
1
...
4
5
6