安装moses笔记

先把一些常用程序装了:

yum -y install wget gcc gcc-c++ flex bison make bind bind-libs bind-utils openssl openssl-devel perl quota libaio libcom_err-devel libcurl-devel gd zlib-devel zip unzip libcap-devel cronie bzip2 db4-devel cyrus-sasl-devel perl-ExtUtils-Embed libstdc++.so.6 libnspr4.so libssl.so.6

用winscp把三个文件上传到/home/moses。

进入moses目录:

cd moses

按照一些依赖:

yum -y install libicu-devel python-devel bzip2-devel

解压缩boost_1_59_0.zip:

unzip boost_1_59_0.zip

cd boost_1_59_0

运行:

./bootstrap.sh

然后,运行:

./b2 –build-type=complete –layout=tagged

等待……等待……等待……

安装,不知道这一步是否必要:

./b2 install

boost安装完成。接下去装giza++

cd ..

tar xzvf giza-pp-v1.0.7.tar.gz

cd giza-pp

make

mkdir -p bin

cp GIZA++-v2/GIZA++ bin/

cp GIZA++-v2/snt2cooc.out bin/

cp mkcls-v2/mkcls bin/

ZIGA++安装完毕

接下去安装irstlm

cd ..

tar zxvf irstlm-5.80.08.tgz

cd irstlm-5.80.08

cd trunk

yum install libtool

./regenerate-makefiles.sh

./configure –prefix=/home/moses/irstlm-5.80.08

make

make install

irstlm安装完成

cd ../..

yum install git

git clone git://github.com/moses-smt/mosesdecoder.git

cd mosesdecoder

./bjam –with-irstlm=/home/moses/irstlm-5.80.08 –with-giza=/home/moses/giza-pp/bin

 

 

 

 

 

 

 

安装 scws出现 autoconf 需要先安装

安装在终端操作,

curl -OL http://ftpmirror.gnu.org/autoconf/autoconf-latest.tar.gz
tar xzf autoconf-latest.tar.gz
cd autoconf-*./configure –prefix=/usr/local
make
sudo make install
这样就把autoconf安装到/usr/local/bin/下面了。

接着在执行以下终端命令安装PECL uploadprogress

phpize # prepares the PHP extension for compiling
./configure
make
sudo make install

我把下载好的uploadprogress包放在/usr/include/php/ext中。然后cd到这个目录下,执行以上的终端命令。

如果是宝塔面板:

   3) 执行 ./configure --with-scws=/usr/local/scws 
       若 php 安装在特殊目录 $php_prefix, 则请在 configure 后加上 --with-php-config=/www/server/php/54/bin/php-config

最后终端显示

Installing shared extensions: /usr/lib/php/extensions/no-debug-non-zts-20060XXX/

就表示安装完成。

然后修改php.ini 在/etc中。

本来应该修改extensions dir的路径。但是我是在是不敢随便动这个Paths and Directories 里的东西,所以就写了个全路径extension=”/usr/lib/php/extensions/no-debug-non-zts-20090XXX/uploadprogress.so”。结果重启apache以后,显示upload包已经启动了。

设置 SSH 通过密钥登录

我们一般使用 PuTTY 等 SSH 客户端来远程管理 Linux 服务器。但是,一般的密码方式登录,容易有密码被暴力破解的问题。所以,一般我们会将 SSH 的端口设置为默认的 22 以外的端口,或者禁用 root 账户登录。其实,有一个更好的办法来保证安全,而且让你可以放心地用 root 账户从远程登录——那就是通过密钥方式登录。

密钥形式登录的原理是:利用密钥生成器制作一对密钥——一只公钥和一只私钥。将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。这样一来,没有私钥,任何人都无法通过 SSH 暴力破解你的密码来远程登录到系统。此外,如果将公钥复制到其他账户甚至主机,利用私钥也可以登录。

下面来讲解如何在 Linux 服务器上制作密钥对,将公钥添加给账户,设置 SSH,最后通过客户端登录。

1. 制作密钥对

首先在服务器上制作密钥对。首先用密码登录到你打算使用密钥登录的账户,然后执行以下命令:

[root@host ~]$ ssh-keygen  <== 建立密钥对
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): <== 按 Enter
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): <== 输入密钥锁码,或直接按 Enter 留空
Enter same passphrase again: <== 再输入一遍密钥锁码
Your identification has been saved in /root/.ssh/id_rsa. <== 私钥
Your public key has been saved in /root/.ssh/id_rsa.pub. <== 公钥
The key fingerprint is:
0f:d3:e7:1a:1c:bd:5c:03:f1:19:f1:22:df:9b:cc:08 root@host

密钥锁码在使用私钥时必须输入,这样就可以保护私钥不被盗用。当然,也可以留空,实现无密码登录。

现在,在 root 用户的家目录中生成了一个 .ssh 的隐藏目录,内含两个密钥文件。id_rsa 为私钥,id_rsa.pub 为公钥。

2. 在服务器上安装公钥

键入以下命令,在服务器上安装公钥:

[root@host ~]$ cd .ssh
[root@host .ssh]$ cat id_rsa.pub >> authorized_keys

如此便完成了公钥的安装。为了确保连接成功,请保证以下文件权限正确:

[root@host .ssh]$ chmod 600 authorized_keys
[root@host .ssh]$ chmod 700 ~/.ssh

3. 设置 SSH,打开密钥登录功能

编辑 vi /etc/ssh/sshd_config 文件,进行如下设置:

RSAAuthentication yes
PubkeyAuthentication yes

另外,请留意 root 用户能否通过 SSH 登录:

PermitRootLogin yes

当你完成全部设置,并以密钥方式登录成功后,再禁用密码登录:

PasswordAuthentication no

最后,重启 SSH 服务:

[root@host .ssh]$ service sshd restart

4. 将私钥下载到客户端,然后转换为 PuTTY 能使用的格式

使用 WinSCP、SFTP 等工具将私钥文件 id_rsa 下载到客户端机器上。然后打开 PuTTYGen,单击 Actions 中的 Load 按钮,载入你刚才下载到的私钥文件。如果你刚才设置了密钥锁码,这时则需要输入。

载入成功后,PuTTYGen 会显示密钥相关的信息。在 Key comment 中键入对密钥的说明信息,然后单击 Save private key 按钮即可将私钥文件存放为 PuTTY 能使用的格式。

今后,当你使用 PuTTY 登录时,可以在左侧的 Connection -> SSH -> Auth 中的 Private key file for authentication: 处选择你的私钥文件,然后即可登录了,过程中只需输入密钥锁码即可。

Navicat中文乱码问题

在“连接属性”的设置中,高级-“使用mysql字符集”去掉钩,并且将编码改为10008-GB2312.
然后进入navicat的控制台后,show variables like ‘char%’;命令后如下:
+————————–+—————————————+
| Variable_name            | Value                                 |
+————————–+—————————————+
| character_set_client     | latin1                                |
| character_set_connection | latin1                                |
| character_set_database   | utf8                                  |
| character_set_filesystem | binary                                |
| character_set_results    | latin1                                |
| character_set_server     | utf8                                  |
| character_set_system     | utf8                                  |
| character_sets_dir       | D:\mysql-5.1.32-win32\share\charsets\ |

此时我们需要在控制台运行 set names ‘gbk’命令,运行后再次show variables like ‘char%’;命令查看结果如下:

+————————–+—————————————+
| Variable_name            | Value                                 |
+————————–+—————————————+
| character_set_client     | gbk                                   |
| character_set_connection | gbk                                   |
| character_set_database   | utf8                                  |
| character_set_filesystem | binary                                |
| character_set_results    | gbk                                   |
| character_set_server     | utf8                                  |
| character_set_system     | utf8                                  |
| character_sets_dir       | D:\mysql-5.1.32-win32\share\charsets\ |

客户端连接环境设置算是完成了。接着中文数据该怎么插还是怎么插,不会再有乱码出现。

至于从.sql.txt等文本批量导入数据,则需要将相应的文件转化为gbk格式保存再导入,否则导入后会乱码

linux使用denyhosts防ssh暴力破解

说明:
DenyHosts是Python语言写的一个程序,它会分析sshd的日志文件(默认是/var/log/secure),当发现重复的攻击时就会记录IP到/etc/hosts.deny文件,启用tcp_wrappers,从而达到自动屏IP的功能。 通过http://denyhosts.sourceforge.net可以下载DenyHosts的程序,可以直接下载rpm包来安装,也可以通过src.rpm包重新编译并安装等,通过这种方式默认是安装在/usr/share/denyhosts目录下。

实现:

1.安装DenyHosts-2.6.tar.gz
# wget http://sourceforge.net/projects/denyhosts/files/denyhosts/2.6/DenyHosts-2.6.tar.gz
# tar zxvf DenyHosts-2.6.tar.gz
# cd DenyHosts-2.6
# yum install python -y  //yum安装python,系统基本都有
# python setup.py install

2.拷贝默认文件

# cd /usr/share/denyhosts/
# cp denyhosts.cfg-dist denyhosts.cfg
# cp daemon-control-dist daemon-control

3.编辑配置文件denyhosts.cfg

# vim denyhosts.cfg  //该配置文件结构比较简单,简要说明主要参数如下:
PURGE_DENY:当一个IP被阻止以后,过多长时间被自动解禁。可选如3m(三分钟)、5h(5小时)、2d(两天)、8w(8周)、1y(一年);
PURGE_THRESHOLD:定义了某一IP最多被解封多少次。即某一IP由于暴力破解SSH密码被阻止/解封达到了PURGE_THRESHOLD次,则会被永久禁止;
BLOCK_SERVICE:需要阻止的服务名;
DENY_THRESHOLD_INVALID:某一无效用户名(不存在的用户)尝试多少次登录后被阻止;
DENY_THRESHOLD_VALID:某一有效用户名尝试多少次登陆后被阻止(比如账号正确但密码错误),root除外;
DENY_THRESHOLD_ROOT:root用户尝试登录多少次后被阻止;
HOSTNAME_LOOKUP:是否尝试解析源IP的域名;
大家可以根据上面的解释,浏览一遍此配置文件,然后根据自己的需要稍微修改即可。

4.启动Denyhosts

# ./daemon-control start

5.设置自动启动,让DenyHosts每次重启后自动启动。设置自动启动可以通过两种方法进行。

第一种是将DenyHosts作为类似apache、mysql一样的服务,这种方法可以通过 /etc/init.d/denyhosts 命令来控制其状态。方法如下:
# cd /etc/init.d
# ln -s /usr/share/denyhosts/daemon-control denyhosts
# chkconfig --add denyhosts
# chkconfig --level 2345 denyhosts on
第二种是将Denyhosts直接加入rc.local中自动启动(类似于Windows中的“启动文件夹”):
# echo '/usr/share/denyhosts/daemon-control start' >> /etc/rc.local

如果想查看已经被阻止的IP,打开/etc/hosts.deny 文件即可。

附录:
附录1.各系统ssh日志位置
ssh日志文件,如果是redhat系列是根据/var/log/secure文件来判断的;Mandrake、FreeBSD是根据 /var/log/auth.log来判断的,而SUSE则是用/var/log/messages来判断的。这些在配置文件里面都有很详细的解释。

附录2.当我把denyhosts安装上启动后,结果/etc/hosts.deny文件中马上就有了我自己的ip地址在里面!晕死,我在安装后根本就还没有尝试登录过啊,又怎么被限制?
分析:我在rhel6和centos6上分别安装了denyhosts软件。结果均出现此情况。我想,既然它是根据/var/log/secure文件中登录失败记录来是判断是否违规,那么,会不会是我在安装denyhosts之前的secure中的失败登录记录也被算作违规呢?那么我删了应该就不会有问题了吧。
办法:cat /dev/null > /var/log/secure 即把secure日志文件全部清空!要注意的是,清空后要service syslog restart(也有可能是rsyslog) 重启日志记数器!因为如果你不重启服务,你会发现secure日志文件会停止记录一切活动了!那么denyhosts也就无效了。
结果:如果安装前就先清空,在安装denyhosts后,就不会自动出现禁止的IP了。
原理:根据官方FAQ上关于denyhosts对监控secure日志文件更新的原理,可以理解上述问题的原因。官方说明大概是这样的:denyhosts在/usr/share/denyhosts/data(即WORK_DIR)中的offset文件中记录了secure的首行记录。
如果说offset文件中的首行记录和现有secure中的首行记录相同,则比较现有secure和offset中最后记录的secure文件的大小,如果现有secure比记录中的secure文件大,则将secure中新增加的部分进行分析,并将新增加的失败登录行记录在了denyhosts记数器中。比如原来记录了root有3次登录失败,这次新增行中又发现了2次,那么一共就5次记录了。当超过DENY_THRESHOLD_ROOT中设立的值时,便将该IP加入hosts.deny中。如果现有secure文件和offset中记录的文件大小相同,则认为secure日志未更新。不做任何操作
如果offset文件中首行记录和现有secure中的首行记录不同,那么则认为secure文件是全新的。那么,offset会重新分析secure日志的所有行。
如果我们刚安装denyhosts,那么offset中并不会有secure日志文件头,也不会有secure日志文件大小的记录,那么denyhosts自然会分析所有的secure日志行,于是乎,我在安装denyhost前一周的所有的登录失败次数被累计起来,如果我在上一周内登录失败记录超过限制数,那么肯定就会在启动denyhosts后马上被加入黑名单了!(为什么是一周之内?因为secure日志文件记录的周期为一个星期!)

附录3.在另一台机器上我设置了DENY_THRESHOLD_ROOT=5 ,安装后结果我root用户才输错一次密码就给我封杀了!按参数意思应该是5次机会啊!不用这么绝吧!
和第一个问题是一个原因。只要先将secure清空再安装,一切就正常了。原因是,root用户在安装前就有了失败的记录,影响到denyhosts的次数判断。如你安装denyHosts之前root已经错误登录4次。那么你再用root登录1次就会发现登录不了了。我的其实安装denyhosts前日志中的记录就已经有4次了,所以马上被封杀了。

附录4.我设置了PURGE_DENY=3m,即3分钟清除hosts.deny中添加的记录。结果我苦等十分钟还不见/etc/hosts.deny中添加的ip被清除!这不是存心不让我再次登录了吗?好在我当前的ssh连接没断开。要断开了岂不没得连了?
还需要修改/usr/share/denyhosts/denyhosts.cfg中的DAEMON_PURGE = 3m,这个参数与PURGE_DENY=3m一样,感觉都是用于设置当某个ip 3分钟不再重新ssh登陆,将此ip从/etc/hosts.deny删除。DAEMON_PURGE = 3m可以设置长点,如1h,这里设置为3m主要是为了测试快。总不能等1小时吧。

附录5.这个所谓的阻止暴力破解,貌似只对ssh连接有效,我用ftp登录,然后不停的尝试登录,结果却没有被添加进阻止。
这个,我没有去试!

附录6.我将hosts.deny文件中的用户列表删除后,不久后竟然又自动给添加进来了!我@#¥¥。。难道硬是不让我再次登录了?!!
参考了官方文档才发现,原来不能单纯的只删除hosts.deny中的记录,要想删干净,得先service denyhosts stop .然后再把/usr/share/denyhosts/data目录下的其它文件中关于hosts.deny中的IP记录一并清空。再service denyhosts start即可。但有的时候只清除hosts.deny中的文件也可以。

附录7.denyhosts日志位置
# less /var/log/denyhosts

在kimsufi上安装windows

Okay, so you want to install Windows on your Kimsufi server? Cool! Just follow the instructions and you’ll have Windows installed within an hour!

First of all disable monitoring, once disabled, boot into rescue mode (netboot) from the Kimsufi control panel. Wait a few minutes and an email will show up in your inbox with the details (username and password) of the rescue system.
Login at the rescue system using PuTTy (or your favorite SSH client) and follow the following steps.

Type the following command in the console

For Windows Server 2012 R2

wget -O- 'http://ktd.joodle.nl/KS2012R2.gz' | gunzip | dd of=/dev/sda

For Windows Server 2008 R2

wget -O- 'http://ktd.joodle.nl/KS2008R2.gz' | gunzip | dd of=/dev/sda

For Windows 8.1

wget -O- 'http://ktd.joodle.nl/KS8.1.gz' | gunzip | dd of=/dev/sda

For Windows 7

wget -O- 'http://ktd.joodle.nl/KS7.gz' | gunzip | dd of=/dev/sda

Once fully downloaded and unzipped to the disk go back to the Kimsufi control panel and change Netboot to Hard Disk. Once done, reboot the server and wait till it responds to ping. After that you can login using RDP (Remote Desktop Control)

Use the following credentials to login:

Windows Server 2012 R2 & 2008 R2

Username: Administrator
Password: Password147

Windows 7 & Windows 8.1

Username: Admin
Password: Password147

directadmin 安装完proftp没有启动的解决方法

解决方法:

先手动安装proftpd:

wget http://files.directadmin.com/services/customapache/proftpd-1.3.3f.tar.gz
tar xvzf proftpd-1.3.3f.tar.gz
cd proftpd-1.3.3f
install_user=ftp install_group=ftp ./configure –prefix=/usr –sysconfdir=/etc –localstatedir=/var/run –mandir=/usr/local/man –without-pam –disable-auth-pam –enable-nls –with-modules=mod_ratio:mod_readme:mod_tls
make
make install

也可参见另一片博文:http://phpcn.info/archives/121

然后配置directadmin:

cd /usr/local/directadmin/custombuild
./build update
./build set proftpd yes
./build proftpd

可能最后还需要这么一句命令:

mkdir /var/run/proftpd

 

Centos编译安装Proftpd

ProFTPD是继Wu-FTP之后最为流行的FTP服务器软件。我带大家看看Centos是如何编译安装Proftpd。

centos不能直接yum安装proftpd,有两种方法可解决:

1、用yum安装ProFTPD需要定义非官方的库。

2、手动编译。

这里就说说怎样手动编译。

先下载proftpd

wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.3.tar.gz

编译前记得安装gcc、gcc-c++、make等

tar zxvf proftpd-1.3.3.tar.gz

cd proftpd-1.3.3

./configure –prefix=/usr/local/proftpd

make

make install

编辑启动脚本:

cd proftpd-1.3.2

拷贝 proftpd.init.d 到 /etc/rc.d/init.d 文件夹中,重命名为proftpd

cp contrib/dist/rpm/proftpd.init.d /etc/rc.d/init.d/proftpd

编辑/etc/rc.d/init.d/proftpd,找到文件行开头是PATH行,改成安装proftpd所在的目录

vim /etc/rc.d/init.d/proftpd

PATH=”$PATH:/usr/local/proftpd/sbin:/usr/local/proftpd/bin”

增加/etc/rc.d/init.d/proftpd执行权限

chmod +x /etc/rc.d/init.d/proftpd

修改配置文件,把有关组的注释掉

vim /usr/local/proftpd/etc/proftpd.conf

centos开启proftpd服务

chkconfig –level 35 proftpd on

chkconfig –add proftpd

service proftpd start

通过本文的描写,其实Centos编译安装Proftpd 很简单。

directadmin账号不能登录的解决办法

修改 /etc/dovecot.conf
# More verbose logging. Useful for figuring out why authentication isn’t
# working.
auth_verbose = yes

to
# More verbose logging. Useful for figuring out why authentication isn’t
# working.
#auth_verbose = yes

端口代理访问mstsc

mstsc 相信开发的兄弟对这个windows的远程桌面连接再熟悉不过了,可是往往在实验室环境无法轻易获取外网IP ,还有时候在异地办公远程桌面时需要先近端登陆鉴权才能访问路由的情况,你就会发现mstsc原来如此陌生;不得不顶着实验室的噪音近段操作,又或者是无奈的将自己非常有内涵的密码(经常有兄弟的密码是woaiXXX  哈哈)告诉在异地的同事帮忙登陆通过鉴权。不过如果你这时候还能够ssh实验室的其他服务器,哪你捞到了救命的稻草了,不过前提是你这个服务器是跟你要远程桌面的机器是在同一个逻辑子网的。

设置代理详细方法

1.注册表更改默认的3389端口:

HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/Terminal Server/Wds/Repwd/Tds/Tcp修改PortNumberd键值,默认键值为0xd3d是16进制的3389

修改键值(例如修改键值为8089),注意用10进制的去修改(默认的是16进制的),这个值是RDP(远程桌面协议)的默认值,也就是说用来配置以后新建的RDP服务的,要改已经建立的RDP服务,HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/TerminalServer/WinStations这里应该有一个或多个类似RDP-TCP的子健(取决于你建立了多少个RDP服务),一样改掉PortNumber,然后重新启动计算机让修改配置生效。

2. putty设置代理

添加代理端口

 

然后登陆会话成功后,就可以用mstsc通过本地端口登陆远程控制桌面了