itang / todo.itang.me

4 stars 2 forks source link

DevOps #51

Open itang opened 10 years ago

itang commented 10 years ago

自动化部署

Sample:

upstream backend {
    server 127.0.0.1:3000;
}

server {
    listen 80;
    server_name www.itang.com;

    location / {
         proxy_http_version 1.1;
         proxy_set_header Connection "";
         proxy_pass http://backend;
    }
}

server {
    listen 80;
    server_name image.itang.com;

    root /home/itang/data/pics;

    location / {

    }
}

常用参数:

server { listen 80; server_name test.itang.com;

location / {
    proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_set_header HOST $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://test;
}

}

安全之加解密

AES

不指定填充及加密模式的话,将会采用 ECB 模式和 PKCS5Padding 填充进行处理。

AES 是块加密,块的长度是 16 个字节,如果原文不到 16 个字节,则需要填充至 16 个字节后再进行处理。

AES 密文长度 = (原文长度 / 16) * 16 + 16

如果你想密文与原文长度一样的话,就不能使用块加密算法,需要使用流加密算法,比如 RC4 算法

Base64/32

Base32的原理和Base64一模一样,所以先看一下Base64编码是怎么一回事。
Base64顾名思义就是用64个可显示字符表示所有的ASC字符,64也就是6Bits,而ASC字符一共有256个,也就是8Bits,很简单了,取一下最小公约数,24位,言下之意就是用4个Base64的字符来表示3个ASC字符。即在编码时,3个一组ASC字符,产生4个Base64字符,解码时4个一组,还原3个ASC字符。根据这个原理Base64编码之后的字符串应该比原先增加1/3的长度。
这里所谓的编码就是一次取6Bits,换算出来的值作为索引号,利用这个索引数,到预先定义的长度为64的字符数组中取相应的字符替换即可;解码就是逆运算,根据字符取在预定义数组中的索引值,然后按8Bits一组还原ASC字符。
Base32和Base64相比只有一个区别就是,用32个字符表示256个ASC字符,也就是说5个ASC字符一组可以生成8个Base字符,反之亦然。

等长加密

http://www.pro-technix.com/information/crypto/pages/vernam_base.html

Linux

step 1: 创建 keystore 文件

$ keytool -genkey -alias tomcat -keyalg RSA

记住输入的密码信息, 向导完成后, 在用户的主目录生成了.keystore文件

一次性生成keystore文件:

$ keytool -genkey -alias xxx_crp -keyalg RSA -keystore xxx_crp.keystore -keysize 1024  -validity 3650 -keypass xxx2014 -storepass xxx2014 -dname "CN=(xxx), OU=(xxx.com), O=(xxx), L=(sz), ST=(gd), C=(cn)"
<Connector SSLEnabled="true" acceptCount="100" clientAuth="false"
    disableUploadTimeout="true" enableLookups="false" maxThreads="25"
    port="8443" keystoreFile="/.keystore" keystorePass="password"
    protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https"
    secure="true" sslProtocol="TLS" />

http://jinnianshilongnian.iteye.com/blog/2036420

http://stackoverflow.com/questions/116074/how-to-ignore-a-directory-with-svn

How to ignore a directory with SVN?

Set the svn:ignore property of the directory:

svn propset svn:ignore dirname . If you have multiple things to ignore, separate by newlines in the property value. In that case it's easier to edit the property value using an external editor:

svn propedit svn:ignore .

gedit ~/.subversion/config

[miscellany]
global-ignores = .git logs target .idea .lein-* .nrepl-port *.iml

批量add 文件

svn add . --force

svn import

svn import mex-frontend-api  https://mexbj.com/svn/PBJ/sources/tdb-api/trunk  -m "Initial import"

issues

具体的配置可以参考这里 http://blog.sina.com.cn/s/blog_9ed9ac7d01016ja1.html

  1. 必需appender 配置为rolling的才能滚动
  2. 在FixedWindowRollingPolicy里面不能配置%d{yyyy-MM-dd}, 如果配置了的话,会导致滚动失败,不仅不能生成滚动文件,当前文件也不再写入,只能且必需配置%i. FixedWindowRollingPolicy可以和SizeBasedTriggeringPolicy配合使用

    tests.%i.log.zip 1 3 5MB
  3. TimeBasedRollingPolicy 不能和SizeBasedTriggeringPolicy配合使用,如果两个同时配置,在达到最大文件大小的时候,会导致即不会生成滚动文件,当前文件也不再写入。

    logFile.%d{yyyy-MM-dd}.log 30

    ssh

UBUNTU SERVER安装SSH服务

1.安装

sudo apt-getinstall openssh-server Ubuntu缺省安装了openssh-client,所以在这里就不安装了,如果你的系统没有安装的话,再用apt-get安装上即可。 www.2cto.com

2.确认sshserver是否安装好

ps -e |grep ssh 1698 ? 00:00:00 ssh-agent 4473 ? 00:00:00 sshd

如果只有ssh-agent说明ssh-server还没有启动,需要/etc/init.d/ssh start; 如果看到sshd那说明ssh-server已经启动了。

注:在ubuntu-12.04-server-i386.iso安装中只显示sshd这一项:

3.配置

ssh-server配置文件位于/ etc/ssh/sshd_config,在这里可以定义SSH的服务端口,默认端口是22,你可以自己定义成其他端口号,如222。 然后重启SSH服务: sudo/etc/init.d/ssh restart