- certbot升级到最新版(0.23以上),签发证书: https://certbot.eff.org/lets-encrypt/ubuntuxenial-nginx
- 检查
/etc/letsencript/renewal文件夹下renewal配置 - 运行
certbot renew --dry-run测试更新证书是否成功
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
/etc/letsencript/renewal文件夹下renewal配置certbot renew --dry-run测试更新证书是否成功openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
| #!/usr/bin/env bash | |
| function ergodic(){ | |
| for file in `ls $1` | |
| do | |
| if [ -d "$1/$file" ] | |
| then | |
| ergodic "$1/$file" | |
| else | |
| echo "Uploading $1/$file" |
Only files under 25 MB can be previewed with the Google Drive viewer.
Google Drive viewer helps you preview over 16 different file types, listed below:
| var flag = false; | |
| var timer = null; | |
| window.addEventListener('load', function () { | |
| if (!flag) { | |
| flag = true; | |
| document.getElementById("load").style["display"] = "none"; | |
| clearTimeout(timer); | |
| } | |
| }, false); | |
| timer = setTimeout(function () { |
| <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" /> | |
| <meta http-equiv="Pragma" content="no-cache" /> | |
| <meta http-equiv="Expires" content="0" /> |
| var routeData = angular.module('RouteData', []); | |
| routeData.provider('RouteData', function () { | |
| var settings = {}; | |
| var hookToRootScope = false; | |
| this.applyConfig = function (newSettings) { | |
| settings = newSettings; | |
| }; |
| app.filter('rangeFilter', function () { | |
| return function (items, sliderRanges) { | |
| var filtered = []; | |
| var expectedReturnMin = sliderRanges.expectedReturnMin; | |
| var expectedReturnMax = sliderRanges.expectedReturnMax; | |
| var durationMin = sliderRanges.durationMin; | |
| var durationMax = sliderRanges.durationMax; | |
| angular.forEach(items, function (item) { |
| var securityService = angular.module('security.service', []); | |
| //Security | |
| securityService.factory('Security', [ | |
| '$http', '$location', '$cookieStore', 'API_SERVER', '$window', '$route', 'toaster', | |
| function ($http, $location, $cookieStore, API_SERVER, $window, $route, toaster) { | |
| var security = {}; | |
| //login |
| var securityInterceptor = angular.module('security.interceptor', []); | |
| //securityInterceptor, add token to page_header | |
| securityInterceptor.factory('securityInterceptor', ['$q', '$cookieStore', '$location', 'toaster', | |
| function ($q, $cookieStore, $location, toaster) { | |
| var token = $cookieStore.get('token'); | |
| return { | |
| 'request': function (config) { | |
| config.headers = config.headers || {}; | |
| if (token) { |