Ver Fonte

Update content

Track3 há 6 anos atrás
pai
commit
c8eb03c4c1

+ 7 - 27
content/posts/2017/wp-sites-nginx-conf.md

@@ -22,7 +22,7 @@ tags:
 
 这一部分配置应该写在`http {}`块中。
 
-```shell
+```nginx
 # Upstream to abstract backend connection(s) for php
 upstream php {
     server unix:/run/php/php7.0-fpm.socket;  #使用unix socket
@@ -84,7 +84,7 @@ server {
 
 其中,`location / {}`块的`try_files`非常机智。网上很多教程都是在这里用了if判断加rewrite,就像这样:
 
-```shell
+```nginx
 if (-f $request_filename/index.html) {
     rewrite (.*) $1/index.html break;
 }
@@ -102,7 +102,7 @@ if (!-f $request_filename){
 
 ## 301跳转,强制https访问
 
-```shell
+```nginx
 # Redirect non-www to www
 #
 server {
@@ -130,7 +130,7 @@ server {
 
 在网上搜索“Nginx 301跳转”,很多地方都是这么做的:
 
-```shell
+```nginx
 server {
     listen       80;
     server_name  www.example.org  example.org;
@@ -151,7 +151,7 @@ Nginx官方文档上是这么写的,强烈建议大家去看看这一页:
 
 Apache下,WP Super Cache可以自己生成rewrite规则并写入.htaccess文件中,而Nginx没有.htaccess这样的机制,因此rewrite规则需要自己配置。这个规则可以直接放入`server {}`块中。
 
-```shell
+```nginx
 # WP Super Cache rules.
 #
 set $cache_uri $request_uri;
@@ -174,31 +174,11 @@ if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).
 if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_logged_in") {
     set $cache_uri 'null cache';
 }
-
-# 这一部分用于支持WP Super Cache的“移动设备支持”功能。由于现在一般主题都是响应式的,这个功能很少会用到,所以这一块默认被注释。
-# START MOBILE
-# Mobile browsers section to server them non-cached version. COMMENTED by default as most modern wordpress themes including twenty-eleven are responsive. Uncomment config lines in this section if you want to use a plugin like WP-Touch
-#if ($http_x_wap_profile) {
-#    set $cache_uri 'null cache';
-#}
-
-#if ($http_profile) {
-#    set $cache_uri 'null cache';
-#}
-
-#if ($http_user_agent ~* (2.0\ MMP|240x320|400X240|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|Googlebot-Mobile|hiptop|IEMobile|KYOCERA/WX310K|LG/U990|MIDP-2.|MMEF20|MOT-V|NetFront|Newt|Nintendo\ Wii|Nitro|Nokia|Opera\ Mini|Palm|PlayStation\ Portable|portalmmm|Proxinet|ProxiNet|SHARP-TQ-GX10|SHG-i900|Small|SonyEricsson|Symbian\ OS|SymbianOS|TS21i-10|UP.Browser|UP.Link|webOS|Windows\ CE|WinWAP|YahooSeeker/M1A1-R2D2|iPhone|iPod|Android|BlackBerry9530|LG-TU915\ Obigo|LGE\ VX|webOS|Nokia5800)) {
-#    set $cache_uri 'null cache';
-#}
-
-#if ($http_user_agent ~* (w3c\ |w3c-|acs-|alav|alca|amoi|audi|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-|dang|doco|eric|hipt|htc_|inno|ipaq|ipod|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-|lg/u|maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|palm|pana|pant|phil|play|port|prox|qwap|sage|sams|sany|sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo|teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|wap-|wapa|wapi|wapp|wapr|webc|winw|winw|xda\ |xda-)) {
-#    set $cache_uri 'null cache';
-#}
-# END MOBILE
 ```
 
 此时你的`location / {}`块中`try_files $uri $uri/ /index.php?$args?`应加上WP Super Cache的路径,即:
 
-```shell
+```nginx
 location / {
     try_files /wp-content/cache/supercache/$http_host/$cache_uri/index-https.html $uri $uri/ /index.php?$args?;
 }
@@ -206,7 +186,7 @@ location / {
 
 当然如果你的不是https站点,应稍作修改:
 
-```shell
+```nginx
 location / {
     try_files /wp-content/cache/supercache/$http_host/$cache_uri/index-http.html $uri $uri/ /index.php?$args?;
 }

+ 25 - 19
content/posts/2018/hugo-deployment-webhook.md

@@ -7,15 +7,15 @@ tags:
   - GitLab
 ---
 
-既然是静态博客,部署可不就很简单嘛,完全可以在本地电脑上用`hugo`命令生成静态文件,然后FTP上传到服务器就行了。这种方法是最直观的,但实在是有点麻烦,更重要的是,这一点也不geek。都8102年了,谁还用FTP啊,大家都在用Git好不好!这里我就简单记录一下利用GitLab提供的Webhook来实现Hugo在VPS上自动部署的方法。
+既然是静态博客,部署可不就很简单嘛,本地电脑上用`hugo`命令生成静态文件,然后FTP上传到服务器不就行了?这是最直接的方法,但实在是有点麻烦,更重要的是,这一点也不geek。都8102年了,谁还用FTP啊,大家都在用Git好不好!这里我就简单记录一下利用GitLab提供的Webhook来实现Hugo在VPS上自动部署的方法。
 
 ## 前提
 
-此方法仅适用于在VPS上部署,对于使用GitHub Pages部署或用Netlify部署的同学并不适用。用各类Pages服务的直接本地生成然后Push到Git仓库就行,或者搞个CI自动构建;Netlify就不用多说,绑定账号,选定好Git Repo和分支就不用操心了,一切都是全自动的。
+此方法仅适用于在VPS上部署,对于使用GitHub Pages或用Netlify部署的同学并不适用。用各类Pages服务的直接本地生成然后Push到Git仓库就行,或者搞个CI自动构建;Netlify就不用多说,绑定账号,选定好Git Repo和分支就不用操心了,一切都是全自动的。
 
-关于怎么搭建配置Hugo这里就不做讨论,所以这篇文章前提是认为你已经在本地安装好了环境,搭好了Hugo站点,并且,你已经把源放到远程Git仓库了,我本人用的是GitLab,后面说的也是GitLab上的方法,当然,跟GitHub大同小异。
+关于怎么搭建并配置Hugo站点这里就不做讨论,这篇文章默认你已经在本地安装好了环境,搭好了Hugo站点,并且,你已经把源放到远程Git代码托管了了,我本人用的是GitLab,后面也是以GitLab为例,当然,跟GitHub大同小异。
 
-另外,我的服务器是Debian 9,其他Linux发行版的应该也是大同小异的,并且以下操作我都是以root身份,如果你是非root账户,出现权限问题记得加`sudo`哦。
+另外,我服务器的系统是Debian 9,其他Linux发行版应该也是大同小异的。并且,以下操作我都是以root身份,如果你用的是非root账户,出现权限问题记得加`sudo`哦。
 
 ## 原理
 
@@ -25,7 +25,7 @@ tags:
 
 ###  配置环境
 
-的是VPS的环境配置。
+指VPS的环境配置。
 
 #### Git
 
@@ -41,12 +41,12 @@ apt install git
 在Linux上安装Hugo大概有三种方法:
 
 1. 从系统源安装,这种方法安装更新方便,缺点是版本很低,低到生成页面时都会报错,所以不推荐。
-2. 使用snap。安装snap,然后`snap install hugo`,优点是安装更新方便、版本新,然而如果你是国内的服务器,下载速度可能会慢到你怀疑人生。是否用该方法取决于你的服务器的下载速度和你的忍耐度。
-3. 直接去[Hugo Releases](https://github.com/gohugoio/hugo/releases)上找最新的release,官方提供了各个平台的二进制文件,还提供了deb格式的封装,Debian类系统可以直接用dpkg来安装,其他Linux发行版下载二进制拷到`/usr/bin`文件夹中即可使用。
+2. 使用snap。安装snap,然后`snap install hugo`,优点是安装更新方便、版本新,然而如果你是国内的服务器,下载速度可能会慢到你怀疑人生。是否用该方法完全取决于你的服务器的下载速度和你的忍耐度。
+3. 直接去[Hugo Releases](https://github.com/gohugoio/hugo/releases)上找最新的release,官方提供了各个平台的二进制文件,还提供了deb格式的封装,Debian类系统可以直接用`dpkg`来安装,其他Linux发行版下载二进制拷到`/usr/bin`文件夹中即可使用。
 
-我用的就是第三种方法,以安装最新的0.41为例(64位):
+我用的就是第三种方法,以安装最新的0.41(64位)为例
 
-```shell
+```bash
 wget https://github.com/gohugoio/hugo/releases/download/v0.41/hugo_0.41_Linux-64bit.tar.gz
 tar -zxvf hugo_0.41_Linux-64bit.tar.gz
 cp hugo /usr/bin/hugo
@@ -64,9 +64,9 @@ Hugo Static Site Generator v0.41 linux/amd64 BuildDate: 2018-05-25T16:57:20Z
 
 ### 配置服务器上的Git仓库
 
-源码放在GitLab上,为了能在服务器构建,我们需要把仓库克隆一份。git clone提供ssh和https两种方式,我这里还是推荐用ssh来连接,因为https说不定什么时候就要你重新输入账号密码了,这样一来自动部署就卡住了。用ssh要先添加ssh keyGitLab添加ssh key的详细方法请看这里:[GitLab and SSH keys](https://gitlab.com/help/ssh/README),这里不做过多介绍。配置好ssh key以后,以我的GitLab仓库为例:
+源码放在GitLab上,为了能在服务器构建,我们需要在服务器上克隆一份。`git clone`提供ssh和https两种方式,我这里还是推荐用ssh来连接,因为https说不定什么时候就要你重新输入账号密码了,这样一来自动部署就卡住了。用ssh要先添加ssh keyGitLab添加ssh key的详细方法请看这里:[GitLab and SSH keys](https://gitlab.com/help/ssh/README),这里不做过多介绍。配置好ssh key以后,以我的GitLab仓库为例:
 
-```shell
+```bash
 git clone git@gitlab.com:Track3/my-hugo-blog.git
 cd my-hugo-blog
 hugo -d /usr/share/nginx/html/blog/
@@ -78,7 +78,7 @@ hugo -d /usr/share/nginx/html/blog/
 
 新建一个文件夹,先把hugo的自动构建脚本写好。
 
-```shell
+```bash
 mkdir webhook
 cd webhook
 nano hugo-deploy.sh
@@ -95,9 +95,15 @@ hugo -d /usr/share/nginx/html/blog/
 exit 0
 ```
 
-很简单的bash脚本,其中`~/my-hugo-blog`是你的Git仓库也就是网站源码的路径。然后,我们就要用到Node.js来监听GitLab那边发送过来的请求了。用了[gitlab-webhook-handler](https://github.com/SixQuant/gitlab-webhook-handler)这个中间件:
+很简单的bash脚本,其中`~/my-hugo-blog`是你的Git仓库也就是网站源码的路径。别忘了添加执行权限:
+
+```bash
+chmod +x hugo-deploy.sh
+```
+
+然后,我们就要用到Node.js来监听GitLab那边发送过来的请求了。用了[gitlab-webhook-handler](https://github.com/SixQuant/gitlab-webhook-handler)这个中间件:
 
-```shell
+```bash
 npm install gitlab-webhook-handler --save
 ```
 
@@ -128,7 +134,7 @@ handler.on('push', function (event) {
     console.log('Received a push event for %s to %s', event.payload.repository.name, event.payload.ref);
     exec('sh ./hugo-deploy.sh', function (error, stdout, stderr) {
         if(error) {
-            console.error('error: ' + error);
+            console.error('error:\n' + error);
             return;
         }
         console.log('stdout:\n' + stdout);
@@ -137,11 +143,11 @@ handler.on('push', function (event) {
 })
 ```
 
-这个脚本主要是来自[gitlab-webhook-handler](https://github.com/SixQuant/gitlab-webhook-handler)的README,我自己改了一点,加了日期记录。上面的`path: '/webhook-123456'`你可以任意设置,由于没有设置secret_key验证,所以这里的`webhook-123456`就相当于是密码了,让该路径不至于那么明显。端口用的是`7777`,你可以随意设置,不要过于明显。这样下来最终的监听地址就是`http://0.0.0.0:7777/webhook-123456`了,`0.0.0.0`表示该http服务监听本机的所有ip上收到的请求,说白了就是`0.0.0.0`可以换成服务器的ip或者指向服务器的所有域名。拿我自己的服务器例子就是`http://xxxlbox.com:7777/webhook-123456`。
+这个脚本主要是来自[gitlab-webhook-handler](https://github.com/SixQuant/gitlab-webhook-handler)的README,我自己改了一下,加了日期输出。利用的是Node.js的`child_process`模块来执行shell脚本。上面的`path: '/webhook-123456'`你可以任意设置,由于没有设置secret_key验证,所以这里的`webhook-123456`就相当于是密码了,让该路径不至于那么明显。端口用的是`7777`,你可以随意设置,总之不要过于明显。这样下来最终的监听地址就是`http://0.0.0.0:7777/webhook-123456`了,`0.0.0.0`表示该http服务监听本机的所有ip上收到的请求,说白了就是`0.0.0.0`可以换成服务器的ip或者指向服务器的所有域名。拿我自己的服务器例子就是`http://xxxlbox.com:7777/webhook-123456`。
 
 然后,我们要运行这个脚本:
 
-```shell
+```bash
 node gitlab-webhook.js
 ```
 
@@ -153,9 +159,9 @@ node gitlab-webhook.js
 
 ### 使用pm2管理Node.js进程
 
-pm2是一个很好用的Node应用的进程管理器,具有守护进程,监控,日志一整套完整的功能,用它可以非常方便地启动、重启Node应用,并且可以实现Node应用的开机启动。安装pm2:
+pm2是一个很好用的Node应用的进程管理器,具有守护进程,监控,日志一整套完整的功能,用它可以非常方便地启动、重启Node应用,并且可以实现Node应用的开机启动。用npm安装pm2:
 
-```shell
+```bash
 npm install pm2@latest -g
 ```
 

+ 4 - 4
content/posts/2018/lets-encrypt-wildcard-cert.md

@@ -14,7 +14,7 @@ tags:
 
 我的腾讯云机器用curl下载不下来,因此我直接`git clone`整个库:
 
-```sh
+```bash
 git clone https://github.com/Neilpang/acme.sh.git
 cd ./acme.sh
 ./acme.sh --install
@@ -26,14 +26,14 @@ ACME v2只支持DNS模式颁发证书,即通过在域名上添加一条txt解
 
 如果你的DNS服务商在支持之列,就不用手动添加txt记录了。这里以dnspod为例, 首先先登录到[dnspod](https://www.dnspod.cn/)(dnspod已被腾讯收购,账号体系也并入了腾讯云),生成你的api id和api key。然后用`export`命令导入:
 
-```shell
+```bash
 export DP_Id="your_id"
 export DP_Key="your_key"
 ```
 
 然后就可以愉快地获取证书了:
 
-```shell
+```bash
 ./acme.sh  --issue  -d example.com  -d *.example.com  --dns dns_dp
 ```
 
@@ -43,7 +43,7 @@ export DP_Key="your_key"
 
 证书放在`~/.acme.sh/`目录下了,最好不要直接让Nginx/Apache读取这些证书文件,正确的方法是使用`--install-cert`命令将证书文件复制到Web Server对应目录下,一般是配置文件目录。我这里用的是Nginx:
 
-```shell
+```bash
 ./acme.sh --install-cert -d example.com \
 --key-file       /etc/nginx/key.pem  \
 --fullchain-file /etc/nginx/cert.pem \