Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

linux记录 #27

Open
lovecn opened this issue May 31, 2015 · 2 comments
Open

linux记录 #27

lovecn opened this issue May 31, 2015 · 2 comments

Comments

@lovecn
Copy link
Owner

lovecn commented May 31, 2015

不想每次输入host和user,可以在 ~/.ssh/config文件写上配置alias信息,以后ssh的时候根据alias即可。如:

Host alias-name
   HostName ip_address
   Port 22
   User user
这个方法还可以配置ssh私钥,这样连接的时候连密码都用不着输。

如果就得自己记不住那么多机器的alias,那么就自己写个脚本命令例如sshl

alias sshl='cat ~/.ssh/config | grep "Host "'

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
改为nginx规则
上面规则的意思如果URI对应的文件或文件夹不存在就进行rewrite。apache的%{REQUEST_FILENAME}在nginx与之对应的是$uri,所以你上面的规则可以用如下的try_files 配置

try_files    $uri $uri/  /index.php?_url=/$uri&$args;
try_files的作用是按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有的文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。
$args 表示url中的参数。

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
终端输入git lg,就能看到下面漂亮的git log了



Nginx反向代理部署Node.js应用配置方法

var http = require('http');  
http.createServer(function (req, res) {  
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, '127.0.0.1');

server{  
listen 80;  
server_name fitbit.is26.com;  
index index.html index.htm index.php default.html default.htm default.php;

location / {  
proxy_set_header X-Real-IP $remote_addr;  
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
proxy_set_header Host $http_host;  
proxy_set_header X-NginX-Proxy true;  
proxy_pass http://127.0.0.1:1337/;  
proxy_redirect off;  
}
}
将网站域名设置好,然后端口设置为80,将所有从fitbit.is26.com:80的请求传递到nodejs程序去


在PHP中,iconv是一个常用的函数,尤其是在采集方面,几乎是必用的,但是这个函数在某些系统上会存在问题。

使用iconv时可以指定IGNORE参数来忽略遇到illegal字符时产生的错误,但是在有些系统上,即使指定了IGNORE,在遇到illegal字符时,iconv仍会返回FALSE,这样就无法得到想要的结果了。

解决的办法就是编译安装最新的iconv,下载地址在这里:https://www.gnu.org/software/libiconv/。
安装命令很简单:

./configure --prefix=/usr/local
make
make install
编译PHP时需要加上这个参数,否则会出错。

make ZEND_EXTRA_LIBS='-liconv'
编译PHP时指定参数:

--with-iconv-dir=/usr/local/


linux下使用vim进程编辑的时候,有时候会遇到编辑的文本的每行的最后会多一个^M,这个^M实际上是windows下的换行符到了linux下解析出错而导致的,因为在linux下的换行符是 \n ,在windows下的换行符是 \r\n.

  在linux下使用vim编辑文本,默认的文本格式是unix风格的,但如果原文件就是window复制过来的,那么看到的就是dos风格.
查看的指令是在vim里执行:

set fileformat
这样你就能看到你正在编辑的文件是什么风格的了,事实上,如果我们执行

set fileformats
这个指令时,我们能看到

fileformats=unix,dos
这个表示在vim编辑的时候,优先使用unix风格,其次才是dos风格

 当然,如果我们想切换风格,执行

set fileformat=unix
 就能切换回来了,但是如果原来的文件就是dos风格的,还是要把文件中的换行符改成linux下的\n.否则你就会看到恼人的^M了

Windows 下 Composer 爆出错误:Failed to enable crypto。原因是证书验证失败

下面是解决方法:
1. 上 http://curl.haxx.se/docs/caextract.html 下载最新的 cacert.pem 文件
2. 将该文件丢到某个目录下,如 D:\Ruchee\PHP\extras\ssl
3. 找到 PHP.ini 文件中的 openssl.cafile 选项,设置为 openssl.cafile = D:/Ruchee/PHP/extras/ssl/cacert.pem
几种快速清空文件内容的方法:

echo "" > filename
echo /dev/null > filename
echo > filename
cat /dev/null > filename
: > filename #其中的 : 是一个占位符, 不产生任何输出.
> filename

后台运行程序 以program指代程度名称

1.使用nohup忽略挂断信号,并将错误输出重定向到标准输出,且将标准输出丢弃

nohup program > /dev/null 2>&1 & 
2.使用setsid让当前程序不属于接受 HUP 信号的终端的子进程,其父进程将是init进程,且无法通过jobs -l查看

setsid program > /dev/null
3.将一个或多个命名包含在“()”中就能让这些命令在子 shell 中运行

(program > /dev/null &)


phalcon的安装脚本是bash,首行是#!/bin/bash[LF],这表示直接执行(或sudo执行)时去查找/bin/bash这个解释器。

如果由于git克隆等原因,文件的换行符意外的改成了[CR][LF]的Windows风格……
那么在脚本执行的时候,sudo仍然只会去掉Unix换行符[LF],然后试图去查找/bin/bash[CR]这个文件当作解释器,当然是不可能存在的。

请用此命令检查文件的第一行是否以CR(0x0D) LF(0x0A)结尾:
cat install | head -n 1 | od -t x1
tony@B60:~/source/cphalcon/build$ cat install | head -n 1 | od -t x1
0000000 23 21 2f 62 69 6e 2f 62 61 73 68 0d 0a
0000015
搜了一下,用 set ff=unix 转了一下,保存,重新运行OK 了
// http://segmentfault.com/q/1010000002693596
// 
// tony@B60:~/source/cphalcon/build$ file install
install: Bourne-Again shell script, ASCII text executable, with CRLF line terminators

用winscp将一个文本文件从windonws传到Ubuntu,默认使用的是二进制模式,传输后,在Ubuntu上用vim可以正常打开,文件中的换行是正常的。传送前后两个文件的md5是相同的
在Linux下,可以用cat -A file 看到文件中的所有内容,包括换行符。无论是vim还是Windows上的notepad,Notepad,Notepad++都是支持Linux/Windows上的换行符的,所以从他们的显示来看,你往往看不出文本直接的换行符是什么。也可以用Python做到,用二进制模式打开文件,并用repr()查看,repr()会打印出换行符  vim 打开的时候执行下 set ff=unix vim自动处理了windows换行符
@lovecn
Copy link
Owner Author

lovecn commented Jun 5, 2015

@lovecn
Copy link
Owner Author

lovecn commented Jun 12, 2015

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant