android/cordova/splashscreen说明

配置说明

  1. 自动隐藏启动页面AutoHideSplashScreen(默认为:true)

    1
    <preference name="AutoHideSplashScreen" value="true" />
  2. 显示启动页面的时间长度SplashScreenDelay(默认为:3000)

    1
    2
    3
    <preference name="SplashScreenDelay" value="3000" />
    若想禁用启动页面,可设置为:<preference name="SplashScreenDelay" value="0"/>
    如果是iOS平台上想禁止启动页面,还需要添加<preference name="FadeSplashScreenDuration" value="0"/>
  3. 启动页面淡入淡出的效果

    1
    2
    3
    4
    5
    是否显示淡入淡出效果FadeSplashScreen(默认为:true)
    <preference name="FadeSplashScreen" value="false"/>
    淡入淡出效果的执行时间长度FadeSplashScreenDuration(默认为:500)
    <preference name="FadeSplashScreenDuration" value="750"/>
    注意:FadeSplashScreenDuration时间是包含在SplashScreenDelay的时间里的。
  4. 启动页面是否允许旋转(默认为:true)

    1
    2
    3
    4
    <preference name="ShowSplashScreenSpinner" value="false"/>
    插件还可以通过js代码调用,提供有以下两个方法:
    navigator.splashscreen.hide();//隐藏启动页面
    navigator.splashscreen.show();//显示启动页面
  5. 在Android平台下的特殊设置

    1
    2
    3
    4
    <preference name="SplashMaintainAspectRatio" value="true|false" />
    <preference name="SplashShowOnlyFirstTime" value="true|false" />
    SplashMaintainAspectRatio:选填项,默认为false。当设置为true时,则不会拉伸图片来填充屏幕,会以图片原始比例显示图片。
    SplashShowOnlyFirstTime:选填项,默认为true。当设置为false时,APP通过navigator.app.exitApp()代码退出app后,在下次打开APP时,还会显示启动页面。若为true时,就不会出现。

tengine的安装和使用

由于官方的 Nginx 缺乏一些常用特性。比如:

  1. 对于负载均衡,nginx 不支持 sticky session 方式。如果使用 ip hash, 也可能会负载不均衡。
  2. 不支持对后台服务的health check。

因此,服务器上决定使用 Tengine 来取代 Nginx 官方版。

安装

  1. 安装依赖

    1
    2
    3
    4
    5
    6
    yum install openssl openssl-devel
    # 或者
    sudo apt-get install openssl libssl-dev
    sudo apt-get install build-essential
    sudo apt-get install linux-kernel-headers
    sudo apt-get install gcc libpcre3 libpcre3-dev zlib1g-dev
  2. 下载、编译并安装

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    mkdir /usr/local/tengine

    cd /tmp
    wget http://tengine.taobao.org/download/tengine-2.1.0.tar.gz
    tar zxvf tengine-2.1.0.tar.gz
    chown -R root:root tengine-2.1.0
    cd tengine-2.1.0
    ./configure --prefix=/usr/local/tengine/tengine-2.1.0 --user=nginx
    make
    make install
  3. 修改配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    cd /usr/local/tengine/tengine-2.1.0
    mkdir conf/conf.d
    vi conf/nginx.conf
    # 1. 启用 "log_format main ..."
    # 2. 在 "http {...}" 的 最后一行 加入 "include conf.d/*.conf;"
    # 3. 在最开始,设置 `user www`, 以非root 用户运行
    # 4. 修改 worker_process 为 CPU 核心数量

    useradd www
    chown -R www:www logs

centos 7

  1. 新建 systemd 所需的 service 文件: vi /usr/lib/systemd/system/tengine.service :

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    [Unit]
    Description=Tengine Server
    After=network.target

    [Service]
    Type=forking
    ExecStartPre=/usr/local/tengine/tengine-2.1.0/sbin/nginx -t
    ExecStart=/usr/local/tengine/tengine-2.1.0/sbin/nginx
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/bin/kill -s QUIT $MAINPID
    WorkingDirectory=/usr/local/tengine/tengine-2.1.0/
    PIDFile=/usr/local/tengine/tengine-2.1.0/logs/nginx.pid
    Restart=always
    User=root
    LimitNOFILE=65535
    PrivateTmp=true

    [Install]
    WantedBy=multi-user.target
  2. 启用、启动

    1
    2
    3
    systemctl enable tengine
    systemctl start tengine
    systemctl status tengine

centos 6

  1. 下载 init.d 脚本。从 这里 为 CentOS 下载 Red Hat /etc/init.d/nginx, 并保存到 /etc/init.d/nginx

  2. 修改 /etc/init.d/nginx ,

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        nginx="/usr/local/tengine-2.1.0/sbin/nginx"
    NGINX_CONF_FILE="/usr/local/tengine-2.1.0/conf/nginx.conf"
    ```

    ### ubuntu

    参考[这里](http://wiki.nginx.org/Upstart)

    1. make

    sudo apt-get install libpcre3 libpcre3-dev
    sudo apt-get install openssl libssl-dev

    1
    2
    3


    1. `vi /etc/init/tengine.conf`

mac

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
---------------------------- 需要PCRE依赖,没报错跳过
装nginx的时候报错:./configure: error: the HTTP rewrite module requires the PCRE library.
[##]、访问ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre
下载完成之后,使用CD命令进入到相应的下载文件夹,执行命令:
sudo tar xvfz pcre-8.12.tar.gz 解压文件
解压完成之后,执行命令
cd pcre-8.12
sudo ./configure --prefix=/usr/local --enable-utf8
sudo make
sudo make install
---------------------------- 需要openssl依赖,没报错跳过
================= openssl 不需要安装,tengin中使用的时源码包,下面介绍的只是如果安装的方法
安装/替换:openssl
如果你是32位系统的mac,那么输入
./config --prefix=/usr/local/openssl
如果你是64位系统的mac,那么输入
./Configure darwin64-x86_64-cc --prefix=/usr/local/openssl
sudo make
sudo make install
================
---------------------------

mac开发编译tengine

1
2
3
4
5
6
7
8
9
10
./configure --with-openssl=/usr/local  --prefix=/usr/local/openssl  --with-pcre=/usr/pcre
注:上面制定的路径都是未编译的文件夹,直接解压缩的。
xxxxxxxxxxxxxxx 64位电脑注意,过程中有5秒时间要求输入以下,也可以不输
./Configure darwin64-x86_64-cc, 该解决方法可能不行,还是会出现下面的问题
(注):出现ld: symbol(s) not found for architecture x86_64 。 这是由于64位电脑编译openssl错误导致的
解决方法:手动修改:vi objs/Makefile
./config --prefix=/Users/xxx/Downloads/openssl-1.0.1e/.openssl no-shared no-threads
改成
./Configure darwin64-x86_64-cc --prefix=/Users/xxx/Downloads/openssl-1.0.1e/.openssl no-shared no-threads
注:改了上面的问题还是会出现,这时候删除openssl文件,重新解压,在重新重第一不开始

tengine

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
description "tengine http daemon"

start on (filesystem and net-device-up IFACE=lo)
stop on runlevel [!2345]

env DAEMON=/usr/local/tengine/tengine-2.1.0/sbin/nginx
env PID=/usr/local/tengine/tengine-2.1.0/logs/nginx.pid

expect fork
respawn
respawn limit 10 5
#oom never

pre-start script
$DAEMON -t
if [ $? -ne 0 ]
then exit $?
fi
end script
exec $DAEMON
  1. 启动

    1
    2
    sudo service tengine status
    sudo service tengine start

tengine使用演示配置

1.复杂配置

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
  server {
listen *:80;
server_name {{域名}};
root /404;

client_max_body_size 20m;
ignore_invalid_headers off;

access_log logs/{{成功日志}}.access.log main;
error_log logs/{{错误日志}}.error.log;
#GZIP配置
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain text/css application/javascript text/javascript application/x-javascript text/xml application/xml application/xml+rss application/json;
gzip_vary off;
gzip_disable "MSIE [1-6]\.";

location ~ /local/test/(\d+) { # 这个必须在前面
set $p $1;

proxy_pass http://localhost:$p;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}

location ~ /local/test/ {
set $p 9999;
if ( $arg__ddnsPort ~ "^(\d*)$" ) {
set $p $1;
}

proxy_pass http://localhost:$1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

2.简单配置没有变量

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
server {
listen *:16000;
server_name {{域名}};
root html;
index index.html index.htm;

access_log logs/{{成功日志}}.access.log main;
error_log logs/{{错误日志}}.error.log;

`//alias会直接使用定义的路径.root会在定义的路径后面加上location`
location /local/test/ {
(alias/root) /home/zll/work/git-repo/kingsilk/qh-wap-front/target/dist/;
}

location /local/test/16000/ {
alias /home/zll/work/git-repo/kingsilk/qh-wap-front/target/dist/;
}
location /local/test/16000/api/ {
proxy_pass http://localhost:16030;

proxy_set_header Host $host; # ??? $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

ssh转发

ssh转发使用代理

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
http://www.inet.no/dante/

Dante -- Proxy communication solution

ssh的三个强大的端口转发命令:
QUOTE:
ssh -C -f -N -g -L listen_port:DST_Host:DST_port user@Tunnel_Host
ssh -C -f -N -g -R listen_port:DST_Host:DST_port user@Tunnel_Host
ssh -C -f -N -g -D listen_port user@Tunnel_Host

-f 参数:表示连接成功后,转入后台运行。
-N 参数:表示只连接远程主机,不打开远程shell;
-T 参数:表示不为这个连接分配TTY;

-p port Connect to this port. Server must be on the same port.
被登录的ssd服务器的sshd服务端口。

-L port:host:hostport
将本地机(客户机)的某个端口转发到远端指定机器的指定端口. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 同时远程主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有 root 才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport

-R port:host:hostport
将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口. 工作原理是这样的, 远程主机上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转向出去, 同时本地主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有用 root 登录远程主机才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport

-D port
指定一个本地机器 “动态的'’ 应用程序端口转发. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 根据应用程序的协议可以判断出远程主机将和哪里连接. 目前支持 SOCKS4 协议, 将充当 SOCKS4 服务器. 只有 root 才能转发特权端口. 可以在配置文件中指定动态端口的转发.

-C Enable compression.
压缩数据传输。

-N Do not execute a shell or command.
不执行脚本或命令,通常与-f连用。

-g Allow remote hosts to connect to forwarded ports.
在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接



Linux命令行下SSH端口转发设定笔记(转)

原文:http://be-evil.org/post-167.html

在Windows下面我们可以很方便的使用putty等ssh工具来实现将服务器上的端口映射到本机端口来安全管理服务器上的软件或者服务 那么我们换到在Liunx下我们应该怎么做呢?

ssh -L 本地端口:服务器地址:服务器端口 用户名@服务器地址 -N

参数详解:

-L 端口映射参数 本地端口 - 这个任意即可,只要本机没有其他的程序占用这个端口就行

服务器地址 - 你需要映射的服务器地址(名称/ip)

服务器端口 - 远程的服务器端口

-N - 不使用Shell窗口,纯做转发的时候用,如果你在映射完成后继续在服务器上输入命令,去掉这个参数即可

例子A:我们想远程管理服务器上的MySQL,那么使用下面命令

ssh -L 3306:127.0.0.1:3306 user@emlog-vps -N
运行这个命令之后,ssh将会自动将服务器的3306映射到本机的3306端口,我们就可以使用任意MySQL客户端连接 localhost:3306即可访问到服务器上的MySQL了。

例子B:一次同时映射多个端口

ssh -L 8888:www.host.com:80-L 110:mail.host.com:110 \ 25:mail.host.com:25 user@host -N
这个命令将自动把服务器的80,110,25端口映射到本机的8888,110和25端口 以上命令在ubuntu 9.10 上测试通过...

样例

  • 样例内网穿透:ssh -CfNg -R 0.0.0.0:8080:127.0.0.1:8080 root@ip
    1
    2
    3
    4
    5
    说明:A有公网IP. B是内网.执行上面的语句,访问外网8080端口时候,会穿透到内网上服务器的8080端口.
    备注:如果发现A服务器监听的是本地地址,只允许本地开放.那么需要修改A机器的ssh配置.
    1. vi /etc/ssh/sshd_config
    2. 打开 GatewayPort(删除前面的 # 号,将其设置为 yes)
    3. systemctl restart sshd

ssh对方机子非22端口

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
 windows路径:   C:\Users\Administrator\.ssh

linux路径: /home/administrator/.ssh

如果该路径下没有config文件,则创建一个。

config中添加如下内容:

如是以域名访问的则添加如下内容:(注意修改xxx为你的远程仓库的名称)

Host xxx
HostName xxx.com
Port 3333


如是以ip访问的,则添加如下内容:(注意修改ip为你的远程仓库ip)

Host "211.111.xx.xxx"
Port 3333


注意如果 git 是 ssh 方式免密认证方式登录的话,且你的私钥文件名字不是 id_rsa

则还需要在 config 文件中填加:

IdentityFile ~/.ssh/<你的密钥名>

config中还可以指定User,如

User "git"

配置使用tomcat的session集中存储

session存储

集群中有4种存储session的方式

  1. Session Sticky 。 每次请求都到一台机子中去
  2. Session Replication 每个容器对session进行同步复制
  3. Session数据集中存储 使用redis
  4. Cookie Based 数据放到cookie中传输

tomcat中配置Session Replication

  1. tomcat复制2份 端口勿冲突,不需要做任何修改,在这一行的下面加入如下代码:
    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
    -- tomcat中有这么一行代码,打开注释即可
    <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
    channelSendOptions="8">

    <Manager className="org.apache.catalina.ha.session.DeltaManager"
    expireSessionsOnShutdown="false"
    notifyListenersOnReplication="true"/>

    <Channel className="org.apache.catalina.tribes.group.GroupChannel">
    <Membership className="org.apache.catalina.tribes.membership.McastService"
    address="228.0.0.4"
    port="45564"
    frequency="500"
    dropTime="3000"/>
    <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
    address="auto"
    port="4000"
    autoBind="100"
    selectorTimeout="5000"
    maxThreads="6"/>

    <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
    <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
    </Sender>
    <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
    <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
    </Channel>

    <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
    filter=""/>
    <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

    <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
    tempDir="/tmp/war-temp/"
    deployDir="/tmp/war-deploy/"
    watchDir="/tmp/war-listen/"
    watchEnabled="false"/>

    <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
    <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
    </Cluster>

tomcat开启apr功能

启用apr模式步聚

安装依赖库

  1. 因为apr模式本质是使用JNI技术调用操作系统IO接口,需要用到相关API的头文件

    • yum install apr-devel
    • yum install openssl-devel
    • yum install gcc
    • yum install make
      1
      注意:openssl库要求在0.9.7以上版本,APR要求在1.2以上版本,用rpm -qa | grep openssl检查本机安装的依赖库版本是否大于或等于apr要求的版本。
  2. 安装apr动态库

    • 进入tomcat的bin目录,解压tomcat-native.tar.gz文件,并进入tomcat-native-1.2.7-src/native目录,执行./configure && make && make install 命令
      1
      apr如何openssh版本错误,手动指定安装目录: ./configure --with-apr=/usr/local/apr  --with-ssl=/usr/local/openssl
  3. 编辑$TOMCAT_HOME/bin/catalina.sh文件,在虚拟机启动参数JAVA_OPTS中添加java.library.path参数,指定apr库的路径

    • JAVA_OPTS=”$JAVA_OPTS -Djava.library.path=/usr/local/apr/lib”
  4. Tomcat8以下版本,需要指定运行模式,将protocol从HTTP/1.1改成org.apache.coyote.http11.Http11AprProtocol

    1
    2
    3
    <Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
    connectionTimeout="20000"
    redirectPort="8443" />

apr和openssl版本错误

  1. apr安装
    1
    2
    3
    4
    tar zxvf apr-1.4.5.tar  
    cd apr-1.4.5
    ./configure --prefix=/usr/local/apr
    make && make install
  2. openssl安装
    1
    2
    3
    4
    tar -xvzf openssl-1.1.0e.tar.gz
    cd openssl-1.1.0e/
    ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl
    make && make install

tomcat设置启动参数

tomcat设置启动参数

个人倾向不修改原文件进行添加覆盖

  1. 可以直接修改catalina.sh本身的启动文件进行添加参数
  2. 额外添加文件(后续自己修改添加也比较方便。只知道自己是否添加过文件)

在tomcat/bin目录下新建setenv.sh脚本文件

  1. 根据自己的需要进行调整参数。后面注释自己复制的时候去掉,这里只是提供说明
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
#!/bin/bash
// 引入系统变量,大部分linux没有设置全局变量,所以这里需要自己导入变量,比如java环境
. /etc/profile.d/air.sh
// 打印日志的格式
export today=`date +%Y%m%d%H%M%S`

export CATALINA_HOME="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && cd .. && pwd )"
// 管理进程
export CATALINA_PID=${CATALINA_HOME}/tomcat.pid
// 以下参数可以查找jvm
export CATALINA_OPTS='
-server
-XX:+UnlockCommercialFeatures
-XX:+FlightRecorder
-Xms2048m
-Xmx2048m
-Xss256k
-XX:ErrorFile=${CATALINA_HOME}/logs/start.at.${today}.hs_err_pid.log
-XX:+UseConcMarkSweepGC
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=${CATALINA_HOME}/logs/start.at.${today}.dump.hprof
-XX:+PrintGCDateStamps
-XX:+PrintGCDetails
-Xloggc:${CATALINA_HOME}/logs/start.at.${today}.gc.log
-Duser.timezone=GMT+08
-Dfile.encoding=UTF-8 '

附录:设置java的垃圾回收器

  • 这里有五种可以在应用里使用的垃圾回收类型。仅需要使用JVM开关就可以在我们的应用里启用垃圾回收策略。让我们一起来逐一了解:
  1. Serial GC(-XX:+UseSerialGC):Serial GC使用简单的标记、清除、压缩方法对年轻代和年老代进行垃圾回收,即Minor GC和Major GC。Serial GC在client模式(客户端模式)很有用,比如在简单的独立应用和CPU配置较低的机器。这个模式对占有内存较少的应用很管用。
  2. Parallel GC(-XX:+UseParallelGC):除了会产生N个线程来进行年轻代的垃圾收集外,Parallel GC和Serial GC几乎一样。这里的N是系统CPU的核数。我们可以使用 -XX:ParallelGCThreads=n 这个JVM选项来控制线程数量。并行垃圾收集器也叫throughput收集器。因为它使用了多CPU加快垃圾回收性能。Parallel GC在进行年老代垃圾收集时使用单线程。
  3. Parallel Old GC(-XX:+UseParallelOldGC):和Parallel GC一样。不同之处,Parallel Old GC在年轻代垃圾收集和年老代垃圾回收时都使用多线程收集。
  4. 并发标记清除(CMS)收集器(-XX:+UseConcMarkSweepGC):CMS收集器也被称为短暂停顿并发收集器。它是对年老代进行垃圾收集的。CMS收集器通过多线程并发进行垃圾回收,尽量减少垃圾收集造成的停顿。CMS收集器对年轻代进行垃圾回收使用的算法和Parallel收集器一样。这个垃圾收集器适用于不能忍受长时间停顿要求快速响应的应用。可使用 -XX:ParallelCMSThreads=n JVM选项来限制CMS收集器的线程数量。
  5. G1垃圾收集器(-XX:+UseG1GC) G1(Garbage First):垃圾收集器是在Java 7后才可以使用的特性,它的长远目标时代替CMS收集器。G1收集器是一个并行的、并发的和增量式压缩短暂停顿的垃圾收集器。G1收集器和其他的收集器运行方式不一样,不区分年轻代和年老代空间。它把堆空间划分为多个大小相等的区域。当进行垃圾收集时,它会优先收集存活对象较少的区域,因此叫“Garbage First”。

tomcat开启远程war包上传工程

开启用户管理

  1. 编辑tomcat-user.xml文件 添加一下内容
    1
    2
    3
    <role rolename="manager-gui"/>
    <role rolename="manager-script"/>
    <user username="admin" password="admin" roles="manager-gui, manager-script"/>

添加后依然403无法访问

  1. manager 配置有问题,因为只允许本机访问所以其他人无法访问,
    1
    2
    3
    4
    5
    $TOMCAT_HOME/webapps/manager/META-INF/context.xml文件中
    <Context antiResourceLocking="false" privileged="true" >
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
    allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
    </Context>
  2. 只需加入本机ip即可,或者注释掉上面的语句
    1
    2
    3
    4
    <Context antiResourceLocking="false" privileged="true" >
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
    allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|10.0.1.143" />
    </Context>

ubuntu一些配置

打印

u盘安装

使用 usb-creator-gtk 来创建可以启动U盘。该程序可以到 Ubuntu software center 中查找 ‘Startup disk creator’ 进行安装

显卡驱动

1
2
3
4
5
6
7
lspci -nnk | grep VGA                         # 查看显卡型号
sudo add-apt-repository ppa:xorg-edgers/ppa # 安装 Nvidia 驱动的 ppa
sudo apt-get update
sudo apt-get purge nvidia* # 移除旧的的显卡驱动

# 安装新的驱动。最好通过 start-> Preferences -> Aditional Drivers 选择安装
sudo apt-get install nvidia-349

版本

ubuntu 所有的版本号以及 codeName :

1
lsb_release -a                      # 查看当前安装的 ubuntu 的版本

dpkg

1
dpkg -i package.deb

apt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
apt-get -s install <package>
apt-cache policy <package>
apt-cache search <package> # 模糊查找package
apt-show-versions <package>
aptitude versions <package>

# 查询安装包安装了那些内容
dpkg-query -L <package_name>

# 列出所有已经安装的软件包
dpkg-query -l

# 查找指定的文件属于哪一个package
sudo apt-get install apt-file
sudo apt-file update
apt-file search filename
apt-file search /path/to/file

# 如果通过 dpkg 或 apt-get 安装时,依赖未满足,可以使用该命令删除
sudo apt-get remove xxx

7788

1
2
3
4
5
6
7
8
sudo apt-get install rar                 # rar
sudo apt-get install libreoffice # libreoffice
sudo apt-get install gnome-calculator # 计算器
sudo apt-get install curl

sudo apt-get install p7zip # 7z
7z x xxx.7z -r -o /home/xx # 7z : 解压
7z a -t7z -r manager.7z /home/manager/* # 7z : 压缩

修改主机名

1
2
3
4
5
6
7
sudo hostname your-new-hostname

sudo vim /etc/hostname
your-new-hostname

sudo vim /etc/hosts
127.0.1.1 your-new-hostname

中文字体

参考这里

1
2
3
4
5
6
7
sudo apt-get install ttf-wqy-microhei   #文泉驿-微米黑
sudo apt-get install ttf-wqy-zenhei #文泉驿-正黑
sudo apt-get install xfonts-wqy #文泉驿-点阵宋体
sudo apt-get install fonts-wqy-microhei fonts-wqy-zenhei
# sudo mkfontscale
# sudo mkfontdir
# sudo fc-cache -fv

输入法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
sudo add-apt-repository ppa:fcitx-team/nightly
sudo apt-get update
sudo apt-get install fcitx
#sudo apt-get install gnome-language-selector
im-config # or im-switch


# 以下三种输入法选择其一就可以了。
sudo apt-get install fcitx-googlepinyin
sudo apt-get install fcitx-sunpinyin
# 搜狗输入法 for linux http://pinyin.sogou.com/linux/


# 后续配置

# 防止Fcitx的Ctrl+Shift+F进行繁简转换:语言指示图标上右键->Configure->Addon
# ->选中 "Simple Chinese To Tranditional Chinese" -> 点击底部的Configure按钮
# -> 取消相应的快捷键即可。

#fcitx -r --enable fcitx-qimpanel
#fcitx-qimpanel

gedit

安装

1
2
3
4
5
6
7
8
9
10
11
sudo apt-cache search gedit
sudo apt-get install gedit
sudo apt-get install gedit-plugins

# gmate https://github.com/gmate/gmate
sudo apt-add-repository ppa:ubuntu-on-rails/ppa
sudo apt-get update
sudo apt-get install gedit-gmate

# 移除旧的 文本编辑器 leafpad
sudo apt-get remove leafpad

配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
View -> 取消选中 'toolbar'
Edit -> Preferences :
View
-> 选中 'Display line numbers'
-> 选中 'Highlight current line'
-> 选中 'Highlight matching brackets'
Editor
-> Tab width 设置为 4
-> 选中 'Insert spaces instead tabs'
-> 选中 'Enable automatic indentation'
-> 取消选中 'Create a backup copy of files before saving'
-> 取消选中 'Autosave files every 10 minutes'
Font & Colors
-> 选择一个自己喜爱的 Color Schema

gnome-terminal

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

gnome-terminal : Edit : Profiles : New : xxx : 并设置默认为该 profile
: General
: 取消选中 Use the system fixed width font,并选择使用 Monospace 14 / ubuntu mono 14
: 选中 Use custom default terminal size : 120x30
: Title and Command
: 选中 Run command as login shell
// : 选中 Run a cunstom command instead of my shell,并输入 `env TERM=xterm-color /bin/bash`

# gnome-terminal 彩色显示
vi /etc/profile.d/xxx.sh
export TERM=xterm-color

# 使命令行提示符只显示父目录,而非整个路径
vi ~/.bashrc
查找 PS1 并将其中最后的 \w 替换为 \W
修改ll别名
alias ll='ls -lF'

常用快捷键

hot key descrption
Alt+1 主键盘上的额数字键,可以快速切换至第N个标签页
Ctrl+Shift+T 开启新的标签页
Ctrl+Shift+C 复制
Ctrl+Shift+V 粘贴
Ctrl+E 清屏
Ctrl+R 搜索历史命令
Ctrl+W 向后删除一个词
Ctrl+C 取消当前行的输入,新开始一行
Ctrl+U 清空当前输入行
Ctrl+D 如果当前行是空白行时,可以退出登录,直到退出当前窗口。

文件管理器 PCManFM

1
2
3
Edit : Preference :
General : Default View : Detailed list view
Layout : 选中 Filesystem root

桌面图标

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 复制既有应用的图标
ll /usr/share/applications/*.desktop
cp /usr/share/applications/firefox.desktop ~/Desktop

# 自定义一个图标

vi ~/Desktop/idea-IU-135.909.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[en_US]=gnome-panel-launcher
Name[en_US]=idea-IU-135.909
Exec=env UBUNTU_MENUPROXY= /home/zll/work/idea-IU-135.909/bin/idea.sh
Icon=/home/zll/work/idea-IU-135.909/bin/idea.png

chromium-browser

1
[me@locahost:~]$ sudo apt-get install chromium-browser

NOTICE: 该浏览器中文乱码可以参考这里

1
sudo rm /etc/fonts/conf.d/65-droid-sans-fonts.conf

service

1
2
3
# 等价于CentOS上的chkconfig
[me@localhost:~]$ sudo apt-get install sysv-rc-conf
[me@localhost:~]$ sudo sysv-rc-conf --help

JDK

安装Oracle JDK

1
2
3
4
5
6
7
8
9
10
11
12
13
14
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer

# 缓存文件
# /var/cache/oracle-jdk8-installer/jdk-8u5-linux-x64.tar.gz

# abort
sudo killall -9 apt-get
ps aux | grep dpkg # kill them
dpkg --configure -a
sudo dpkg -r oracle-java7-installer

qq

参考这里

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

#sudo add-apt-repository ppa:ubuntu-wine/ppa
#sudo apt-get update
#sudo apt-get install wine1.7


sudo apt-get install \
libasound2 \
libgtk2.0-0 \
liblcms2-2 \
libpng12-0 \
libsm6 \
libncurses5 \
libcups2 \
libpulse0 \
libmpg123-0 \
libasound2-plugins \
ttf-wqy-microhei

sudo apt-get install libgtk2.0-0:i386
sudo apt-get install ia32-libs
sudo apt-get install lib32ncurses5

sudo dpkg -i wine-qqintl_0.1.3-2_i386.deb
sudo apt-get install -f
#sudo apt-get remove wine-qqintl

cp /usr/share/applications/qqintl.desktop ~/Desktop

python

1
2
sudo apt-get install python-dev
sudo apt-get install python-pip

Ruby

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 1.9.3
sudo apt-get install ruby1.9.3

# FIXME 2.0+
wget http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.1.tar.gz
tar zxvf ruby-2.1.1.tar.gz
cd ruby-2.1.1/
./configure
???

# RVM
curl -sSL https://get.rvm.io | bash -s stable
# in new console
rvm install 2.1.1

常见问题

  • 禁止自动login
1
2
3
4
$ sudo vi /etc/lightdm/lightdm.conf
[SeatDefaults]
#autologin-user=xxx # comment this line
#autologin-user-timeout=0 # comment this line
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
$ vi ~/.config/openbox/lubuntu-rc.xml

<keybind key="W-r">
<action name="Execute">
<!-- <command>lxsession-default launcher_manager</command> -->
<command>lxpanelctl run</command>
</action>
</keybind>


<!-- Take a screenshot of the current window with scrot when Alt+Print are pressed -->
<keybind key="A-Print">
<action name="Execute">
<!--<command>lxsession-default screenshot window</command>-->
<command>scrot -u -b</command>
</action>
</keybind>
<!-- Launch scrot when Print is pressed -->
<keybind key="Print">
<action name="Execute">
<!--<command>lxsession-default screenshot</command>-->
<command>scrot</command>
</action>
</keybind>

<!-- 打开控制台-->
<keybind key="W-t">
<action name="Execute">
<command>gnome-terminal</command>
</action>
</keybind>

<!-- Lubuntu 锁屏-->
<keybind key="W-l">
<action name="Execute">
<!-- <command>xscreensaver-command -lock</command>-->
<command>dm-tool lock</command>
</action>
</keybind>

$ openbox --reconfigure

SSH

1
2
3
sudo apt-get install openssh-client
sudo apt-get install openssh-server
sudo service ssh status

登录画面的number lock

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
# for login

sudo vi /etc/xdg/lubuntu/lxdm/lxdm.conf
[base]
numlock=1

sudo vi /etc/lxdm/default.conf
[base]
numlock=1

# for lock screen
sudo vi /etc/lightdm/lightdm.conf.d/20-lubuntu.conf
greeter-setup-script=/usr/bin/numlockx on

# ???
sudo apt-get install numlockx
echo "/usr/bin/numlockx on" | sudo tee -a /etc/xdg/lxsession/Lubuntu/autostart

sudo vi /etc/X11/xinit/xinitrc
# 追加一下几行
/usr/bin/numlockx on

# ???
sudo vi /usr/share/lightdm/lightdm.conf.d/60-lightdm-gtk-greeter.conf
greeter-setup-script=/usr/bin/numlockx on

Adobe Flash Player

火狐安装的版本一般都比较低,而Chromium浏览器自带一般相对高些。具体可以通过该网页检测查看。

1
2
3
4
sudo apt-get install flashplugin-installer 

#sudo apt-get install pepperflashplugin-nonfree
#sudo update-pepperflashplugin-nonfree --install

文件关联

1
2
vi ~/.local/share/applications/mimeapps.list
cat /usr/share/applications/defaults.list

Mount UDF/ISO-13346 镜像

1
sudo mount -t auto /dev/cdrom0 / media/cdrom0

静态IP地址

参考这里

先禁用图形化的网络管理工具

1
2
3
4
5
6
7
8
sudo vi /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq # 注释掉这一行

[ifupdown]
#managed=false
managed=true # 将值改为true

配置静态IP地址

1
2
3
4
5
6
7
8
9
10
11
12
13
sudo vi /etc/network/interfaces

auto lo
iface lo inet loopback


auto eth0
iface eth0 inet static
address 192.168.115.222
gateway 192.168.115.1
netmask 255.255.255.0
dns-nameservers 8.8.8.8 8.8.4.4
# ??? DNS貌似也可以配置在 /etc/resolvconf/resolv.conf.d/base

重启网络

1
2
sudo service network-manager stop
sudo service network-manager start

配置DNS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 方法1
sudo vi /etc/network/interfaces
# 追加一下一行
dns-nameservers 192.168.101.1

# 方法2
sudo vi /etc/resolvconf/resolv.conf.d/base
nameserver 8.8.8.8

# 最后,更新
sudo resolvconf -u
cat /etc/resolv.conf

sudo ifdown eth0 && sudo ifup eth0
cat /etc/resolv.conf

# 补充
# 可以检测dns有没有在没有记录的时候提供替代地址,比如 189so 网址导航服务
dig @8.8.8.8 www.not-exist-domain.com

wine

wine 可以让部分Windows程序运行在Linux环境下,主要原理是其重新实现了Windows的API。

安装参考

netbook/laptop screen brightness

1
2
3
4
5
6
7
8
9
10
11
12
13
# done.
xrandr -q | grep " connected"
xrandr --output LVDS1 --brightness 0.5
#xrandr --output VGA1 --brightness 0.9
#xbacklight -inc XX

sudo vi /etc/default/grub
# GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
# OK...............
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_osi="
#GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_backlight=vendor"
sudo update-grub

远程桌面

TO windows

1
sudo apt-get install grdesktop

PHP

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
sudo apt-get install nginx
sudo apt-get install php5-fpm php5-cli php5-cgi php5-mysql
sudo service php5-fpm status

sudo vi /etc/php5/fpm/php.ini
cgi.fix_pathinfo=0

sudo vi /etc/php5/fpm/pool.d/www.conf
owner = www-data
group = www-data
listen.owner = www-data
listen.group = www-data
listen.mode = 0660


sudo vi /etc/nginx/sites-available/default
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}

sudo service php5-fpm restart
sudo service nginx restart

vi /usr/share/nginx/html/my.php
<?php phpinfo(); ?>

# 访问浏览器 http://localhost/my.php

自动挂载Windows分区

1
2
3
4
sudo blkid   # 查看各个分区的UUID
id # 查看自己当前账户的uid和gid
sudo vi /etc/fstab
UUID=519CB82E5888AD0F /media/Data ntfs defaults,gid=1000,uid=1000 0 0

环境变量的配置

1
2
3
4
5
 sudo mkdir /etc/profild.d/xx.sh  通常为电脑的名字
在脚本中输入以下内容:(以java为列)
((#!sh /bin/bash)) 这句可以不写
export JAVA_HOME=/usr/local/jdk1.8.0_91
export PATH=$JAVA_HOME/bin:$PATH

uml建模

uml建模我使用Astah

ubuntu无法识别windows下的硬盘(双系统)

双系统下ubuntu无法查看windows硬盘

1
2
## 错误提示
Error mounting /dev/sdb4 at /media/xxx/xx: Command-line`mount -t "ntfs" -o"uhelper=udisks2,nodev,nosuid,uid=1000,gid=1000,dmask=0077,fmask=0177""/dev/sdb4" "/media/eden/文檔"' exited with non-zero exit status14: The disk contains an unclean file system (0, 0).

解决办法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1、打开终端,输入sudo fdisk -l 可列出所有的分区情况,找到自己windows硬盘的分区;
设备 启动 起点 终点 块数 Id 系统
/dev/sda1 * 63 163846934 81923436 7 HPFS/NTFS/exFAT
分区 1 未起始于物理扇区边界。
/dev/sda2 163846996 859797503 347975254 f W95 扩展 (LBA)
分区 2 未起始于物理扇区边界。
/dev/sda5 163846998 404500634 120326818+ 7 HPFS/NTFS/exFAT

2、得知分区为:/dev/sdb4,创建挂载目录:

sudo mkdir /media/xxx/yyy (xxx为用户名,yyy为挂载的硬盘的名字)
3、挂载硬盘:

mount -t ntfs-3g /dev/sdb4 /media/xxx/yyy/ -o force

4、还是不行,网上一搜,用以下命令,大功告成:

sudo ntfsfix /dev/sdb6