分类 linux 下的文章

tomcat配置301重定向

tomcat默认情况下不带www的域名是不会跳转到带www的域名的,而且也无法像apache那样通过配置.htaccess来实现。如果想要把不带“www'的域名重定向到带”www"域名下,又不想写代码,可以使用UrlRewriteFilter来实现。

一、简介

urlRewriteFilter是一个用于改写URL的Web过滤器,类似于Apache的mod_rewrite。适用于任何Web应用服务器(如Tomcat,jboss,jetty,Resin,Orion等)。其典型应用就把动态URL静态化,便于搜索引擎爬虫抓取你的动态网页。

二、下载

下载UrlRewriteFilter

wget http://urlrewritefilter.googlecode.com/files/urlrewritefilter-4.0.3.jar

并放入tomcat的 WEB-INF/lib下

三、配置tomcat

编辑WEB-INF/web.xml 在其它servlet mapping前加入

<filter>
  <filter-name>UrlRewriteFilter</filter-name>
  <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>UrlRewriteFilter</filter-name>
  <url-pattern>/*</url-pattern>
  <dispatcher>REQUEST</dispatcher>
  <dispatcher>FORWARD</dispatcher>
</filter-mapping>

四、添加跳转规则

在WEB-INF下新建urlrewrite.xml文件,加入跳转规则

<urlrewrite>
  <rule>
  <name>seo redirect</name>
  <condition name="host" operator="notequal">^www.example.com</condition>
  <condition name="host" operator="notequal">^localhost</condition>
  <from>^/(.*)</from>
  <to type="permanent-redirect" last="true">http://www.example.com/$1</to>
  </rule>
</urlrewrite>

五、测试

访问 http://52os.net/index.jsp 跳转到http://www.52os.net/index.jsp
就配置成功了

参考文章

http://nematodes.org/martin/2010/02/04/301-permanent-redirect-with-tomcat-howto/
http://tuckey.org/urlrewrite/

tegaki using wagomu and zinnia engine

     It is very hard to install tegaki ,very few docs , too many errors and other problems during the compiling,  and  only in ubuntu 10.04 we can use both wagomu and zinnia engine.

How to install:

In ubuntu 10.04

sudo apt-get install gcc g++ python python-dev swig git-core build-essential
git clone https://github.com/tegaki/tegaki.git

- 阅读剩余部分 -

amazon aws 搭建pptp VPN服务器

根据我的测试,亚马逊日本机房在国内的速度是最快的,我是深圳电信最慢的时候ping值在190ms左右,快点时候在100ms以内,下面说下centos 6 32位/64位下搭建pptp VPN的过程,不仅适用aws,其他服务商也是通用的。

一、新建服务器

在日本区launch一个新服务器,由于使用不多,机型选micro instance系统选择 centos 6,32位或者64位都可以,最好不要使用amazon instance store的镜像,因为使用以后无法直接创建ebs ami镜像,如果有问题维护起来不那么方便。新建完成后记得在secruity groups打开1723端口。

二、安装

2.1需要的软件

检查内核是否包含mppe,基本上CentOS都有的,输入这个命令,如果是ok就可以:

modprobe ppp-compress-18 && echo ok

安装PPTP需要ppp和iptables这两个软件支持,这里用yum来安装,输入这个命令:

yum install -y ppp iptables

iptables centos系统都是自带的

2.2下载安装包

下载pptpd和ppp的rpm包并安装,要注意ppp和pptpd包的版本需要对应,也可以使用yum安装

方法1下载安装包安装,32位:

cd /tmp
wget http://poptop.sourceforge.net/yum/stable/rhel6/i386/dkms-2.0.17.5-1.noarch.rpm
wget http://poptop.sourceforge.net/yum/stable/rhel6/i386/ppp-2.4.5-23.0.rhel6.i686.rpm
wget http://poptop.sourceforge.net/yum/stable/rhel6/i386/pptpd-1.3.4-2.el6.i686.rpm
rpm -ivh dkms-2.0.17.5-1.noarch.rpm
rpm -ivh ppp-2.4.5-23.0.rhel6.i686.rpm
rpm -ivh pptpd-1.3.4-2.el6.i686.rpm

64位:

cd /tmp
wget http://poptop.sourceforge.net/yum/stable/rhel6/x86_64/dkms-2.0.17.5-1.noarch.rpm
wget http://poptop.sourceforge.net/yum/stable/rhel6/x86_64/ppp-2.4.5-23.0.rhel6.x86_64.rpm
wget http://poptop.sourceforge.net/yum/stable/rhel6/x86_64/pptpd-1.3.4-2.el6.x86_64.rpm
rpm -ivh dkms-2.0.17.5-1.noarch.rpm
rpm -ivh ppp-2.4.5-23.0.rhel6.x86_64.rpm
rpm -ivh pptpd-1.3.4-2.el6.x86_64.rpm

方法2使用yum安装:

rpm -i http://poptop.sourceforge.net/yum/stable/rhel6/pptp-release-current.noarch.rpm
yum -y install pptpd ppp

2.3配置

2.3.1 options.pptpd

编辑配置文件/etc/ppp/options.pptpd 内容如下(将原文件备份,新建一个文件输入下面内容):

name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd
ms-dns 8.8.8.8
ms-dns 8.8.4.4

options.pptpd文件只需要增加ms-dns的配置,其他默认即可。

2.3.2 pptpd.conf

编辑配置文件/etc/pptpd.conf 内容如下(将原文件备份,新建一个文件输入下面内容):

option /etc/ppp/options.pptpd
logwtmp
localip 172.16.36.0
remoteip 172.16.36.1-40
2.3.3 chap-secrets

编辑配置文件/etc/ppp/chap-secrets,配置用户名为52os,密码为52os.net,内容如下:

52os pptpd 52os.net *

格式为(用户 pptpd 密码 允许访问的ip)一行一个

2.3.4 /sysctl.conf

修改配置文件/etc/sysctl.conf,允许包转发:

net.ipv4.ip_forward = 1
sysctl -p
2.3.5 iptables

配置/etc/sysconfig/iptables,
允许GRE协议:

iptables -A INPUT -p gre -j ACCEPT
    iptables -A INPUT -p tcp --dport 1723 -j ACCEPT

如果没有允许GRE协议(第47号协议)和pptpd开启的1723端口,在一些情况下会导致VPN用户无法注册

转发vpn流量:

iptables -t nat -A POSTROUTING -s 172.16.36.0/24 -o eth0 -j MASQUERADE

设置iptables和pptpd开机自动启动:

chkconfig pptpd on
chkconfig iptables on

三、测试

使用windows或者手机新建一个vpn连接,拨号测试是否成功

四、遇到的问题

1. 无法连接成功

日志中:

Dec  8 06:38:21 web pptpd[20551]: GRE: read(fd=6,buffer=6124a0,len=8196) from PTY failed: status = -1 error = Input/output error, usually caused by unexpected termination of pppd, check option syntax and pppd logs
Dec  8 06:38:21 web pptpd[20551]: CTRL: PTY read or GRE write failed (pty,gre)=(6,7)

解决方法:

iptables -A INPUT -p gre -j ACCEPT

2.日志中报错

Sep  9 13:01:27 digitalocean kernel: conntrack: generic helper won't handle protocol 47. Please consider loading the specific helper module.

解决方法:

修改/etc/pptpd.conf,去掉logwtmp这一行

3.日志中报错

Sep  9 13:10:38 digitalocean pppd[2137]: LCP: timeout sending Config-Requests

解决方法:

modprobe nf_nat_proto_gre
modprobe nf_conntrack_pptp

修改 /etc/ppp/options,加入将默认的lock改为 silent,如果还不行,尝试清空该文件

3.能拨号成功,无法上网

无法上网有如下几个地方要检查:

  1. ms-dns配置
  2. net.ipv4.ip_forward 是否打开
  3. iptables 规则是否正确或有冲突

在一些系统中,系统装好后默认会有下面两条规则,会和流量转发的规则冲突需注释掉:

-A INPUT -j REJECT --reject-with icmp-host-prohibited 
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

参考文档

http://sqsa110.blog.163.com/blog/static/182616369201162105819194/
https://www.digitalocean.com/community/tutorials/how-to-setup-your-own-vpn-with-pptp
http://blog.solidshellsecurity.com/2013/01/11/ctrl-pty-read-gre-write-failed-ptygre67/

shell脚本安装JDK

这个脚本我一直在用但不是我写的,可以在centos和ubuntu下使用,其它系统没测试,使用时要先去官网下好jdk,并改好脚本里的文件名和安装目录


#!/bin/bash
chmod u+x jdk-6u33-linux-x64.bin
installPath=/usr/java
if [ ! -d /usr/java ];
 then
     mkdir /usr/java
 fi
./jdk-6u33-linux-x64.bin -D  /usr/java
cp  -R jdk1.6.0_33/ /usr/java/jdk1.6.0_33/
touch environment
echo "PATH=\"$PATH:/usr/java/jdk1.6.0_33/bin\"" >> environment
echo "JAVA_HOME=/usr/java/jdk1.6.0_33" >> environment
echo "CLASSPATH=.:%JAVA_HOME%/lib/dt.jar:%JAVA_HOME%/lib/tools.jar" >> environment
rm -rf /etc/environment
cp environment /etc
source /etc/environment
update-alternatives --install /usr/bin/java java /usr/java/jdk1.6.0_33/bin/java 300
update-alternatives --install /usr/bin/javac javac /usr/java/jdk1.6.0_33/bin/javac 300
update-alternatives --config java


安装Puppet配置管理工具

一、准备工作

准备工作在server和client都一样

1.1  安装ruby 

puppet是ruby开发的,所以需要安装。

yum   -y install ruby rdoc

1.2 安装facter

facter的作用是收集主机的一些资料,比如CPU,主机IP等,facter把收集到值发送给puppet服务器端,服务器端就可以根据不同的条件来对不同的节点机器生成不同的puppet配置文件

wget http://puppetlabs.com/downloads/facter/facter-latest.tgz
tar zxvf facter-latest.tgz
cd facter-1.6.8
/usr/local/bin/ruby install.rb

- 阅读剩余部分 -

apache访问密码设置步骤

一、建立密码文件

htpasswd -c /etc/httpd/conf/passwd.users admin
New password: admin
Re-type new password: admin

用户名admin  密码admin

二、修改配置文件

 在虚拟主机中加入:

- 阅读剩余部分 -

installation FastDfs PHP client extension

1. Download source zip file:

  •  wget https://fastdfs.googlecode.com/files/FastDFS_v4.03.tar.gz

  • This fastDfs version need php 5.2x or higher


2. Unzip FastDFS zip file: tar -zxvf  FastDFS_v3.06.tar.gz


3. “cd” to your “FastDFS” file.


4. Run those commands: ./make.sh and ./make.sh install

- 阅读剩余部分 -

使用autossh隧道实现mysql的同步

一、准备知识

1.1 什么是 autossh?

假设有两台主机: A 主机为外网,B 主机为内网
通常来说外网主机 A 是无法直接连接到内网主机 B 的,这时如果要实现 A 主机通过 ssh 连接 B 主机,通常来说有两种方法:

  1. 端口映射: 将 B 主机的 ssh 端口映射到 B 的外网 ip,当然这要通过设置防火墙来实现
  2. ssh 的反向连接: B 主机通过 ssh 连接到 A 主机,并在 A 主机上打开一个端口进行监听。这时如果 A 主机连接本机的这个端口就可以实现控制 B 主机
ssh -NfR 1111:localhost:2222 user1@外网主机A -p22

2222 为 A 主机在 B 打开的监听端口,1111 为 A 主机本地的端口,这时访问 B 主机的 2222 端口就映射在 A 主机的 1111 端口了。这个也叫远程端口映射。

这种反向连接很有用,但是很不稳定,经常断开。每次断开都要重新执行上面的命令,如果想要断开时自动执行这个命令,这就需要 Autossh 来完成了。

1.2 为什么要使用 ssh 来完成 mysql 的主从同步?

和上面的情况一样,一台内网主机要和一台外网主机做主从同步

二、实现步骤

2.1 生成密钥

登陆内网主机 B 上执行下面的命令来生成 ssh 密钥,一路回车就可以

ssh-keygen -t rsa

2.2 上传密钥

将内网主机 B 生成的 pub 文件上传到 A 主机

ssh-copy-id -i .ssh/id_rsa.pub user@外网主机A

或者将 id_rsa.pud 文件 scp 过去,执行

cat id_rsa.pub >> ~/.ssh/authorized_keys

2.3 启用证书

编辑 A 主机上的 /etc/ssh/sshd_config, 去掉以下三行的注释:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

2.4 测试登陆

这时 B 主机 ssh 到外网 A 主机就使用证书登陆了,不用输入密码了

2.5 安装软件

这里就用到了上面的 autossh,内网主机 B 需要安装 autossh,A 主机不需要

wget http://www.harding.motd.ca/autossh/autossh-1.4c.tgz
tar -xf autossh-1.4c.tgz
cd autossh-1.4c
./configure
make install

2.6 端口映射

在内网主机 B 上使用 autossh 将本机的 13306 端口映射到外网主机 A 的 3306 端口

autossh -M 20522 -f -N -L 13306:localhost:3306 user@外网主机A

2.7 mysql 同步

这时就可以使用本机的 13306 端口进行 MySQL 服务器的同步了

MySQL 服务器如何配置主从同步请参见:

http://www.nixops.me/mysql-server-replication-config.html

参考文档

http://www.cnblogs.com/eshizhan/archive/2012/07/16/2592902.html

最新文章

最近回复

分类

归档

统计

  • 文章总数:168篇
  • 分类总数:5个
  • 评论总数:103条
  • 页面总数:172个
  • 本站运行:4885天

其它