git为仓库配置单独的ssh-key

为了跳过输入密码的流程,服务器上如果使用git部署,一般使用deploy key,但是如果一台机器需要同时部署多个项目的话,默认情况下所有项目都会使用相同的ssh-key,但是GitHub并不支持不同的repo拥有相同的deploy key。

通过对ssh进行一些设置可以实现不同repo使用不同的ssh-key。

主要原理是通过host域名的不同来识别

例如,本来repo的git地址为git@github.com:wangsijie/awesome,为其配置一个专用的ssh-key,而不是使用系统默认的ssh-key的步骤如下:

创建一个新的ssh-key

1
ssh-keygen

Enter file in which to save the key这一行出现后,填写一个特别的名字单独存储这个key,而不是覆盖默认,比如可填写/home/work/.ssh/id_rsa_awesome,其他选项根据实际情况填写,可全部默认

配置Host与key的映射

新建文件~/.ssh/config

1
2
3
Host awesome.github.com
Hostname github.com
IdentityFile ~/.ssh/id_rsa_awesome

有了上面的配置,当git遇到awesome.github.com这个域名的时候,会自动转发到github.com,并使用id_rsa_awesome这个ssh-key

修改repo地址

本来repo的git地址为 git@github.com:wangsijie/awesome,这里需要进行修改,把域名改为 awesome.github.com,于是完整地址变为:

1
git@awesome.github.com:wangsijie/awesome

用这个地址进行正常的clone、push、pull等操作,就会自动的使用id_rsa_awesome这个ssh-key了


git忽略文件的权限变更
1
git config core.fileMode false

git快速删除已合并分支

会自动检查与master的差别,只会删除没有领先master的分支,所以可以安全的使用

删除已合并的远程分支

1
git branch -r —merged | grep -v master | sed ’s/origin\///‘ | xargs -n 1 git push —delete origin

删除已合并的本地分枝

1
git branch —merged | egrep -v “(^*|master|dev)” | xargs git branch -d

nginx反向代理,多域名共用一个ip

实现一个ip对应多个域名,或者说多个应用共用一个端口(80或443)

首先更改nginx.conf配置,通常位于/etc/nginx/nginx.conf

举例配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
worker_rlimit_nofile 65535;
events {
use epoll;
worker_connections 65535;
}

http {
include mime.types;
default_type application/octet-stream;
# include /etc/nginx/conf.d/*.conf;
# include /etc/nginx/sites-enabled/*;
include /etc/nginx/conf.d/reverse-proxy.conf; #关键语句,指定反向代理配置文件
sendfile on;
keepalive_timeout 65;
gzip on;
client_max_body_size 50m; #缓冲区代理缓冲用户端请求的最大字节数,可以理解为保存到本地再传给用户
client_body_buffer_size 256k;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
proxy_connect_timeout 300s; #nginx跟后端服务器连接超时时间(代理连接超时)
proxy_read_timeout 300s; #连接成功后,后端服务器响应时间(代理接收超时)
proxy_send_timeout 300s;
proxy_buffer_size 64k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传递请求,而不缓冲到磁盘
proxy_ignore_client_abort on; #不允许代理端主动关闭连接
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

之后通过配置/etc/nginx/conf.d/reverse-proxy.conf文件实现具体域名的反向代理:

1
2
3
4
5
6
7
8
9
10
11
12
13
server
{
listen 80;
server_name example.com;
location / {
proxy_redirect off;
proxy_set_header host $host;
proxy_set_header x-real-ip $remote_addr; # header中的这个字段用于记录真实ip
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:9100;
}
access_log /var/log/nginx/example.com_access.log;
}

Linux查看端口占用进程
1
netstat -tulpn | grep :80

linux使用crontab执行开机命令

1. 创建运行脚本

1
vi /home/sijie/start.sh

2. 写入内容

1
2
3
4
5
#!/bin/sh

export NODE_ENV=production
export PATH=/usr/local/bin:$PATH
forever start /node/server/path/server.js > /dev/null
阅读更多
docker清理镜像释放空间

以下命令,结束所有container,再删除所有container,再删除所有image

1
2
3
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
docker rmi $(docker images -a -q)

但是这并不太彻底,如果想要进一步清理,可以直接干掉存储文件,从托盘点击图表进入docker的设置,mac下在这里可以看到

docker设置

点击Reveal in Finder然后把那个文件删除了即可


使用git hook进行自动化代码部署

在服务器上使用git部署代码,然后通过设置一个git-hook实现项目的自动部署。即代码变更后,自动拉取新代码并执行相应的操作

基于Node.js,无需依赖其他package,开箱即用,方便部署git-hook进行自动部署

其中8105替换成所需端口

生产环境最好不要使用这种方法,要用的话,也得把.git文件夹的访问权限禁用

另外,从req中可以获取更多的参数,如代码分支等

阅读更多
要不要辞职做自由职业者,想清这四点就够了

人生最大的自由无非是选择的自由,想做什么就做什么,不想做什么就可以不做。这也成为很多人想做自由职业者的动力,可以投入兴趣所在,可以自由地支配时间,但你真具备了做自由职业者的条件和心理准备吗?

朋友婷子想离职做自由职业者,但心里很纠结,就向我咨询。也许我们的讨论可以给你一些启发。

我所了解的婷子情况:工科毕业,酷爱摄影,从读大学时就给人拍照,是豆瓣的小红人一个;毕业后从事工业设计工作,周末兼做人像摄影。经过几年的发展,摄影所带来的收入已经远远超过她的本职工作收入。

阅读更多
小米电视免root安装YouTube

之前用小米电视看YouTube,都是采用AirPlay的方式,但是这个玩意儿有时候并不灵敏,点了好几次都不出来,而且操作比较麻烦。而电视上的爱奇艺、斗鱼等客户端,直接用起来就很方便。也装个YouTube岂不是美滋滋。折腾了一番安装成功。

所需材料

  1. 小米电视(只测试了4)或其他大部分智能电视或电视盒子
  2. U盘
  3. USB鼠标
  4. 电脑,用于下载apk
阅读更多