linux与linux之间共享目录

2014年6月19日 22:46

简述

在linux与windows之间共享目录使用smbfs. 但是在linux与linux之间共享目录要用nfs(Network File System网络文件系统). 服务端用nfs提供共享目录服务,客户端通过mount将共享目录挂载到本地.

以fedora 20设置共享目录为例

  • 安装nfs
fedora 20要安装以下两个包
[wyq@localhost ~]$ rpm -qa |grep nfs
libnfsidmap-0.25-8.fc20.x86_64
nfs-utils-1.3.0-2.1.fc20.x86_64
  • 配置共享目录
在/etc/exports文件中添加以下内容
/home/wyq/share  192.* (insecure,rw,sync,no_root_squash)
  • 设置防火墙,允许nfs服务
输入sudo firewall-config打开防火墙配置界面,选中nfs服务
  • 启动nfs服务
sudo service nfs start
  • 挂载目录
sudo mount -t nfs 127.0.0.1:/home/wyq/share /home/wyq/mount
  • 取消挂载
umount /home/wyq/mount
 
 
 
exports配置文件说明
/home/wyq/share 共享的目录
192.*           允许访问的主机IP, 如果不能确定 ,请使用 *(在fedora 20实验中表示任意IP时,不用加星号,否则nfs会无法启动) 
insecure        一个安全选项, 如果nfs服务端口号小于1024则可以不添加这个选项, 否则不添加的话, 是无法访问的.其他主机访问的话就会被拒绝.
rw              共享目录的权限,rw 是可读写的权限,只读的权限是ro.
sync            同步的选项, 可选的还有 async. sync是不使用缓存,随时写入同步, async是使用缓存的.
no_root_squash  NFS服务共享的目录的属性, 如果用户是root, 那么对这个目录就有root的权限.
 
启动nfs失败示例
  • 启动nfs时提示失败
[wyq@localhost workspace]$ sudo service nfs start
Redirecting to /bin/systemctl start  nfs.service
Job for nfs-server.service failed. See 'systemctl status nfs-server.service' and 'journalctl -xn' for details.
  • 根据提示查看错误信息
[wyq@localhost workspace]$ sudo systemctl status nfs-server.service
nfs-server.service - NFS Server
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled)
   Active: failed (Result: exit-code) since 四 2014-06-19 22:20:37 CST; 5s ago
  Process: 4984 ExecStopPost=/usr/sbin/exportfs -f (code=exited, status=0/SUCCESS)
  Process: 4980 ExecStop=/usr/sbin/rpc.nfsd 0 (code=exited, status=0/SUCCESS)
  Process: 3778 ExecStartPost=/usr/libexec/nfs-utils/scripts/nfs-server.postconfig (code=exited, status=0/SUCCESS)
  Process: 3761 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS $RPCNFSDCOUNT (code=exited, status=0/SUCCESS)
  Process: 5371 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=1/FAILURE)
  Process: 5369 ExecStartPre=/usr/libexec/nfs-utils/scripts/nfs-server.preconfig (code=exited, status=0/SUCCESS)
 Main PID: 3761 (code=exited, status=0/SUCCESS)

6月 19 22:20:37 localhost.localdomain systemd[1]: Starting NFS Server...
6月 19 22:20:37 localhost.localdomain exportfs[5371]: exportfs: No options for /home/wyq/share *: suggest *(sync) to avoid warning
6月 19 22:20:37 localhost.localdomain exportfs[5371]: exportfs: No host name given with /home/wyq/share (insecure,rw,sync,no_root_squash), suggest *(insecure,rw,sync,no_root_squash) to avoid warning
6月 19 22:20:37 localhost.localdomain exportfs[5371]: exportfs: incompatible duplicated export entries:
6月 19 22:20:37 localhost.localdomain exportfs[5371]: exportfs:         *:/home/wyq/share (0x422) [IGNORED]
6月 19 22:20:37 localhost.localdomain exportfs[5371]: exportfs:         *:/home/wyq/share (0x425)
6月 19 22:20:37 localhost.localdomain systemd[1]: nfs-server.service: control process exited, code=exited status=1
6月 19 22:20:37 localhost.localdomain systemd[1]: Failed to start NFS Server.
6月 19 22:20:37 localhost.localdomain systemd[1]: Unit nfs-server.service entered failed state.
注意到信息中"exportfs: incompatible duplicated export entries:" 意思是有重复配置
  • 查看配置文件/etc/exports, 内容如下
/home/wyq/share  *  (insecure,rw,sync,no_root_squash)
  • 猜测是配置错误导致nfs无法启动
将配置更改为以下几种,逐一尝试
第一种
/home/wyq/share  192.*  (insecure,rw,sync,no_root_squash)
第二种
/home/wyq/share  (insecure,rw,sync,no_root_squash)
 
发现使用以上两种方式的配置,nfs均能正常启动并且被挂载.
  • 结论
在fedora 20的nfs配置文件/etc/exports中,如果想让任意主机访问共享目录,不需要用*表示,不填即表示任意主机.
 
 

Tags: mount;共享目录
评论(0) 阅读(2364)

postgres复制表结构

2014年6月17日 11:18

  • 复制表结构
create table his_process_data_201405 as 
( select * from his_process_data_201406 limit 0)
  • 完整复制一张表
create table his_process_data_201405 as 
( select * from his_process_data_201406)

 

 

评论(0) 阅读(2341)

用个人电脑搭建网站

2014年6月01日 01:47

是否可以用个人电脑搭建网站? 可以通信就一定可以相互访问.
  • 问题
通常个人电脑处在内网,连接着路由器,路由经过ads拨号,拥有临时外网地址. 当个人电脑向外网发送请求时,路由器会使用NAT协议,将请求转换为自己对为外网的请求。当外网返回数据时,路由器先接收到数据,然后根据转换关系,将请求转给个人电脑。在整个过程中,外网不知到个人电脑的存在,只知道到路由器. 在这种情况下如何将个人电脑上的服务映射出去呢?
  • 解决办法
每次个人电脑发送对外请求时,路由器都会将请求转换为自己的请求. 接收外网返回数据时,通过发送时的转换规则,返回给个人电脑。 如果转换关系是固定的,那么外网也就可以访问个人电脑了.
  • 示例
1. 启动一个简单web服务
c:\Python27>python -m SimpleHTTPServer 80
Serving HTTP on 0.0.0.0 port 80 ...
 
2. 设置路由器转发规则
 
3. 使用外网地址访问 
用百度搜索"ip地址"即可看到自己的外网地址,然后访问http://xxxxxx/
 
4. 使用域名访问
路由器的外网IP地址经常在变,不方便. 可以安装花生壳,然个人电脑拥有域名. 这样就不用管IP地址经常变化的问题.
 
花生壳下在地址
填入身份信息,注册成功,它会生成一个域名.
  • 其它
如果想把virtualbox虚拟机里面的服务映射到外网. 则需要在"网卡--网络地址转换-->端口转发"中进行设置. 
启用网卡2并设置为桥接网卡,让虚拟机拥有内网IP,然后再设置路由器转发规则,是没有用的.
 

Tags: 服务器
评论(1) 阅读(1621)

局域网如何访问外网

2014年5月31日 23:50

通常一台主机拥有外网地址,根据网络协议很容易理解,通信的过程.
 
如果主机拥有的是局域网IP地址,该如何理解?
比如:常见的一种情况,主机地址是192.168.1.100,连接着一个路由器,路由器通过拨号上网(拥有临时外网IP). 这种情况下局域网主机, 如何访问外网主机(比如www.baidu.com), 根据网络协议似乎很难理解两者是如何通信的?
 
答案是: 网络地址转换(NAT),将私有地址转化为合法IP地址。
 
当主机192.168.1.100向外网主机发送数据,在通过个人路由器时,路由器会修改IP报文,将IP和端口替换为它的外网IP和随机分配的端口,并且将修改前后的信息作为映射关系保存起来, 再将IP报文转发出去. 当外网主机返回信息时,先被路由器接收到,路由器再根据发送数据时保存的映射关系,将数据发送给内网主机.

Tags: 网络
评论(0) 阅读(1091)

ssh登陆提示Too many authentication failures for wyq

2014年5月05日 16:58

 
碰到使用ssh登陆,直接出现认证失败次数太多的问题.
 
在自己机器上模拟了下面测试.
 
ssh登陆系统,未输入密码就提示认证失败
[wyq@localhost ~]$ ssh wyq@192.168.1.107
Received disconnect from 192.168.1.107: 2: Too many authentication failures for wyq
查看/etc/sshd/sshd_config尝试认证次数
MaxAuthTries 1
 
最大认证次数为1,为什么还没有输入密码就已经提示 Too many authentication failures ?
 
开启ssh的debug模式
[wyq@localhost ~]$ ssh -v wyq@192.168.1.107
OpenSSH_6.4, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /home/wyq/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 51: Applying options for *
debug1: Connecting to 192.168.1.107 [192.168.1.107] port 22.
debug1: Connection established.
debug1: identity file /home/wyq/.ssh/id_rsa type 1
debug1: identity file /home/wyq/.ssh/id_rsa-cert type -1
debug1: identity file /home/wyq/.ssh/id_dsa type -1
debug1: identity file /home/wyq/.ssh/id_dsa-cert type -1
debug1: identity file /home/wyq/.ssh/id_ecdsa type -1
debug1: identity file /home/wyq/.ssh/id_ecdsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.4
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.4
debug1: match: OpenSSH_6.4 pat OpenSSH*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5-etm@openssh.com none
debug1: kex: client->server aes128-ctr hmac-md5-etm@openssh.com none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA 66:29:e1:f3:32:92:64:da:98:bc:ab:f8:9c:a4:63:02
debug1: Host '192.168.1.107' is known and matches the ECDSA host key.
debug1: Found key in /home/wyq/.ssh/known_hosts:21
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: gssapi-keyex
debug1: No valid Key exchange context
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure.  Minor code may provide more information
Cannot determine realm for numeric host address

debug1: Unspecified GSS failure.  Minor code may provide more information
Cannot determine realm for numeric host address

debug1: Unspecified GSS failure.  Minor code may provide more information


debug1: Unspecified GSS failure.  Minor code may provide more information
Cannot determine realm for numeric host address

debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/wyq/.ssh/id_rsa
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Trying private key: /home/wyq/.ssh/id_dsa
debug1: Trying private key: /home/wyq/.ssh/id_ecdsa
debug1: Next authentication method: password
wyq@192.168.1.107's password: 
发现在提示输入密码前它已经进行了几次验证
debug1: Next authentication method: gssapi-keyex
debug1: Next authentication method: gssapi-with-mic
debug1: Next authentication method: publickey
debug1: Next authentication method: password
原来在密码认证之前,ssh已经进行了几种认证.
应该是他们导致的,具体原因就不是很清楚.
 
还有一个问题就是MaxAuthTries值再大,也只能输入三次密码.
这个问题也很疑惑的.
 
挺奇怪的,管理人员怎么喜欢修改MaxAuthTries的值?
ssh登陆密码输入错误,被中断后,别人再ssh不行吗?
默认值很合理的,完全没有必要修改.
 

Tags: ssh
评论(0) 阅读(2970)

sqlfront.h 没有那个文件或目录

2014年4月23日 17:12

  • 安装pymssql,出现下面情况
[wyq@localhost ~]$ sudo pip install pymssql
Downloading/unpacking pymssql
  Downloading pymssql-2.1.0.tar.bz2 (1.9MB):   0%  8.2kB
  Downloading pymssql-2.1.0.tar.bz2 (1.9MB): 1.9MB downloaded
  Running setup.py egg_info for package pymssql
    setup.py: platform.system() => 'Linux'
    setup.py: platform.architecture() => ('64bit', 'ELF')
    setup.py: platform.linux_distribution() => ('Fedora', '20', 'Heisenbug')
    setup.py: platform.libc_ver() => ('glibc', '2.2.5')
    setup.py: Not using bundled FreeTDS
    setup.py: include_dirs = ['/usr/local/include']
    setup.py: library_dirs = ['/usr/local/lib']
    
    warning: no files found matching 'pymssql_version.py'
    warning: no files found matching 'win32/freetds.zip'
    warning: no previously-included files matching '*' found under directory 'docs/_build'
Installing collected packages: pymssql
  Running setup.py install for pymssql
    setup.py: platform.system() => 'Linux'
    setup.py: platform.architecture() => ('64bit', 'ELF')
    setup.py: platform.linux_distribution() => ('Fedora', '20', 'Heisenbug')
    setup.py: platform.libc_ver() => ('glibc', '2.2.5')
    setup.py: Not using bundled FreeTDS
    setup.py: include_dirs = ['/usr/local/include']
    setup.py: library_dirs = ['/usr/local/lib']
    building '_mssql' extension
    gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/local/include -I/usr/include/python2.7 -c _mssql.c -o build/temp.linux-x86_64-2.7/_mssql.o -DMSDBLIB
    _mssql.c:346:22: 致命错误:sqlfront.h:没有那个文件或目录
     #include "sqlfront.h"
                          ^
    编译中断。
    error: command 'gcc' failed with exit status 1
    Complete output from command /usr/bin/python -c "import setuptools;__file__='/tmp/pip_build_root/pymssql/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-K_4vEY-record/install-record.txt --single-version-externally-managed:
    setup.py: platform.system() => 'Linux'

setup.py: platform.architecture() => ('64bit', 'ELF')

setup.py: platform.linux_distribution() => ('Fedora', '20', 'Heisenbug')

setup.py: platform.libc_ver() => ('glibc', '2.2.5')

setup.py: Not using bundled FreeTDS

setup.py: include_dirs = ['/usr/local/include']

setup.py: library_dirs = ['/usr/local/lib']

running install

running build

running build_ext

building '_mssql' extension

creating build

creating build/temp.linux-x86_64-2.7

gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/local/include -I/usr/include/python2.7 -c _mssql.c -o build/temp.linux-x86_64-2.7/_mssql.o -DMSDBLIB

_mssql.c:346:22: 致命错误:sqlfront.h:没有那个文件或目录

 #include "sqlfront.h"

                      ^

编译中断。

error: command 'gcc' failed with exit status 1

----------------------------------------
Cleaning up...
Command /usr/bin/python -c "import setuptools;__file__='/tmp/pip_build_root/pymssql/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-K_4vEY-record/install-record.txt --single-version-externally-managed failed with error code 1 in /tmp/pip_build_root/pymssql
Traceback (most recent call last):
  File "/bin/pip", line 9, in <module>
    load_entry_point('pip==1.4.1', 'console_scripts', 'pip')()
  File "/usr/lib/python2.7/site-packages/pip/__init__.py", line 147, in main
    return command.main(args[1:], options)
  File "/usr/lib/python2.7/site-packages/pip/basecommand.py", line 169, in main
    text = '\n'.join(complete_log)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 21: ordinal not in range(128)
  • 需要安装freetds
sudo yum install freetds-devel
SQLServer和Sybase使用的协议是TDS协议,linux中使用freetds连接SQLServer.
 
 

Tags: sqlserver;python;pymssql
评论(0) 阅读(2945)

净空法师:听经的好处,就像用火去点燃湿透的木头

2014年4月15日 06:43

我们听经有没有好处?有好处,这个好处就是薰习,一遍一遍的薰习,你才能真觉悟。我们像一根木头掉在水里,在水里泡了几千年,湿透了,今天拿出来用一支火柴去把它点燃,能不能点燃?点不燃。不要紧,再点一支,点上一万支,点上十万支,点上一百万支,点燃了。这叫什么?长时薰修,肯定它会燃的,木头怎么会不燃?水里面泡久了,就是习气太深、习气太重,经虽然是听明白,回不了头来,一转眼老毛病又发了,就这么个道理,怎么点都点不燃。这就说明长时薰修的必要。

像惠能大师那种人,那一点就燃,佛法里称他做上上根人。怎么那么容易就开悟?祖师大德告诉我们,他不是偶然的,他是无量劫就在修大乘。就好像这一根泡在水里的木头,它已经被燃烧过一百万次,还没有点著,这一支就把它点著。我们呢?我们前面没有这个数字,没有长时间薰修。有没有薰修?肯定有,如果要是没有的话,这个经你听不下去,你在这里两小时坐不住。你不相信到外面找个人来,你叫他在这里坐两个钟点,他能坐五分钟就不错,坐不住!那就是什么?他没善根。你能坐得住,证明你过去决定不止一世、二世、三四五世,你大概至少也有十几二十世的薰修,你听到佛法才能欢喜,才欢欢喜喜能坐两个钟点,天天都会来,不是容易事情。还是转不过来,就是习气太重,烦恼太深,天天薰习对你就有很大的帮助。如果每天不间断,连续薰个十年、二十年、三十年,你成功了,你就会大彻大悟。

净土宗的人大彻大悟就是彻底放下,身心世界、世出世法统统放下,一部经、一句佛号。这是什么?这是真正觉悟的人,不是真正觉悟的人做不到。诸位细细想想,取西方极乐世界,亲近阿弥陀佛,不是难事。善导大师所说「万修万人去」,一个都不漏,这个话是真的,不是假的。李老师告诉我们,一万个念佛人,真正能往生的也只有三、五个人。他的话也是真的,不是假的。为什么?大多数念佛人不想去,口里想,心里不想,口里说要去,心里对这个世间还留恋得很,不肯放下,不是去不了,不想去那就没法子。所以能不能往生,权操在你自己手上,谁都管不了。往生的权不是在阿弥陀佛手上,这个要知道,在自己的手上,自己想不想去。

评论(0) 阅读(998)

cnpm包管理工具

2014年3月26日 14:33

通常的包管理工具是npm,npm使用的镜像源在国外,经常被gfw屏蔽掉.

发现另一个包管理工具cnpm,可以正常使用.

  • 安装cnpm

npm install -g cnpm --registry=http://r.cnpmjs.org

  • 使用

cnpm install package

用法与npm一样

Tags: npm nodejs
评论(0) 阅读(941)

npm无反应

2014年3月25日 15:42

通过npm安装node包时,发现卡住了,没有反应

查找原因

加上参数-verbose,查看详细信息
发现卡在下面这个地方
npm http GET https://registry.npmjs.org/express
npm info retry will retry, error on last attempt: Error: connect ETIMEDOUT
通过提示知道应该是出现超时.

解决方法

最后找到,通过修改它的安装源,换成国内的http://registry.cnpmjs.org 即可.
  • config命令
npm config set registry http://registry.cnpmjs.org
npm info underscore
  • 命令行指定
npm --registry http:/registry.cnpmjs.org install express
  • 修改~/.npmrc配置文件,加入以下内容
registry = http://registry.cnpmjs.org

cnpm

更方便的方法是使用cnpm,安装后用法与npm一样
sudo npm install -g cnpm --registry http://r.cnpmjs.org
 

 

Tags: nodejs
评论(0) 阅读(2947)

linux端口使用权限

2014年3月25日 09:55

在Linux系统中,监听1024以下端口需要root权限。因此,如果想监听80,需要使用sudo命令启动程序。
  • 示例
[wyq@localhost ~]$ python -m SimpleHTTPServer 80
Traceback (most recent call last):
  File "/usr/lib64/python2.7/runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib64/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/usr/lib64/python2.7/SimpleHTTPServer.py", line 220, in <module>
    test()
  File "/usr/lib64/python2.7/SimpleHTTPServer.py", line 216, in test
    BaseHTTPServer.test(HandlerClass, ServerClass)
  File "/usr/lib64/python2.7/BaseHTTPServer.py", line 595, in test
    httpd = ServerClass(server_address, HandlerClass)
  File "/usr/lib64/python2.7/SocketServer.py", line 419, in __init__
    self.server_bind()
  File "/usr/lib64/python2.7/BaseHTTPServer.py", line 108, in server_bind
    SocketServer.TCPServer.server_bind(self)
  File "/usr/lib64/python2.7/SocketServer.py", line 430, in server_bind
    self.socket.bind(self.server_address)
  File "/usr/lib64/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 13] Permission denied

 

评论(0) 阅读(1224)