Mongodb3在centos的安装备忘

1、通过官方文档安装mongodb。
参考 https://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat/
1.1 配置yun源

# vi/etc/yum.repos.d/mongodb-org-3.0.repo

[mongodb-org-3.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/
gpgcheck=0
enabled=1

其中我所在的微软云服务器DNS与 repo.mongodb.org 不通,所以手动配置了hosts 文件

#vi /etc/hosts 增加如下内容 ,webtatic 是php5.4 yum的更新地址。

178.62.92.159 uk.repo.webtatic.com
54.192.150.185 repo.mongodb.org
45.55.104.9 repo.webtatic.com
45.55.104.9 us-east.repo.webtatic.com
163.47.8.16 sp.repo.webtatic.com
46.101.64.32 uk.repo.webtatic.com

1.2 yum方式安装mongodb

#yum install -y mongodb-org

至此,安装完毕。

2、配置mongodb

2.1、自动启动mongodb ,yum安装自动将 mongodb加入 启动列表,所以无需理会
2.2、用命令 #ps aux |grep mongod 检查是否在运行
2.3、建立自定义数据库位置

#mkdir /data/mongodb
#mkdir /data/mongodb/db
#chown -R mongod:mongod /data/mongodb

2.4、修改配置文件

#vi /etc/mongod.conf

修改两个地方
dbPath: /data/mongodb/db
pidFilePath: /data/mongodb/mongod.pid

2.5、开通端口号

# vi /etc/sysconfig/iptables

增加
-A INPUT -m state --state NEW -m tcp -p tcp --dport 27017 -j ACCEPT

加入自动启动
#chkconfig mongod on

2.6、重启服务

kill -9 mongodb的进程
service mongod start

每次都会比较慢

3、建立超管账号、密码

# mongo
MongoDB shell version: 3.0.7
......
> use admin
switched to db admin
> db.createUser({user: "admin",pwd: "admin",roles: [ "dbAdmin" ]})
Successfully added user: { "user" : "admin", "roles" : [ "dbAdmin" ] }
> exit
bye

其他

设置ulimit -n和ulimit -u的值大于20000。如果ulimit的值设置过低的话,当MongoDB处于 频繁访问的状态下,将会产生错误,最终导致无法连接到MongoDB实例。
# ulimit -n 25000
# ulimit -u 25000

查看日志发现

[initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2015-10-28T20:45:19.603+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'

经过查询是 mongoDB 禁用大内存页面 transparent_hugepage=never

参考 http://docs.mongodb.org/master/tutorial/transparent-huge-pages/ 官方文件就能搞定
或者

# vi /etc/init.d/mongod
#顶部行首添加
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi

还有一个警告是

[initandlisten] ** WARNING: soft rlimits too low. rlimits set to 1024 processes, 64000 files. Number of processes should be at least 32000 : 0.5 times number of files.

mongodb当前限制:1024 processes, 64000 files
mongodb建议要求:processes = 0.5*files=32000(至少)

处理方法如下


# ps -ef | grep mongod
查看进程编号
# cat /proc/进程编号/limits
可以看到限制:Max processes,Max open files

修改配置文件 /etc/security/limits.conf,添加配置信息:
[root@localhost ~]# vi /etc/security/limits.conf
mongod soft nofile 64000
mongod hard nofile 64000
mongod soft nproc 32000
mongod hard nproc 32000
重启 mongod 服务:

另处理 ulimit内容

#vi /etc/profile

在最后添加
ulimit -n 64000
ulimit -u 64000

或者 编辑/etc/security/limits.d/90-nproc.conf

将 * soft nproc 1024
改为 * soft nproc 33000

然后重启服务即可。如果重启失败,查看是否有mongod服务在运行。kill后,再重启即可。

kill -9 mongodb的进程
service mongod start

每次都会比较慢

Mac OS 安装 mongodb
参考官方文档即可。

Versions更换服务器后本地资源无法连接的处理

MAC 下Versions 不具备 svn relocate 命令,则需要手动通过svn命令进行更新即可

1、先修改 Repository Bootmark 中连接服务器的 location 地址为新服务器地址

2、用终端进入本地库的文件夹

3、 在文件夹根目录下执行命令 svn relocate https://new/repository/url

4、用命令 svn info 查看。

参考网址 http://help.blackpixel.com/kb/versions/updating-working-copy-url

升级MAC OX上的Python到最新版

1,下载 Mac OS X 64-bit/32-bit installer
https://www.python.org/downloads/release/python-340/

2,安装下载的dmg文件

3,mac打开终端 获取权限

sudo -i

看到 提示符由 $ 变成了#

4、生成脚本 vi python.sh


#!/bin/bash
#python版号需要修改两个地方
#1. new_version

#sudo -i #得到超级权限
new_version="3.4"

PYPATH=/System/Library/Frameworks/Python.framework/Versions/"$new_version"
#第1步移动新版python到mac默认目录下
echo "move.."
mv /Library/Frameworks/Python.framework/Versions/"$new_version" /System/Library/Frameworks/Python.framework/Versions/
#第2步改变用户目录的用户组
echo "chown.."
chown -R root:wheel ${PYPATH}
#第3步 删除原来2.7的链接
echo "del.."
rm /System/Library/Frameworks/Python.framework/Versions/Current
#第4步重新链接到最新版本的python
echo "ln.."
ln -s ${PYPATH} /System/Library/Frameworks/Python.framework/Versions/Current
#第5步删除旧的命令符号链接
echo "rm.."
rm /usr/bin/{pydoc,python,pythonw,python-config}
echo "ln bin.."
#第6步重新建立新的命令符号链接
ln -s ${PYPATH}/bin/pydoc"$new_version" /usr/bin/pydoc
ln -s ${PYPATH}/bin/python"$new_version" /usr/bin/python
ln -s ${PYPATH}/bin/pythonw"$new_version" /usr/bin/pythonw
ln -s ${PYPATH}/bin/python"$new_version"m-config /usr/bin/python-config

python_param_list=`cd /usr/local/bin && ls -al |grep "Python"|awk 'ORS=" " {print $9}'`
#第7步修复其他链接
for i in $python_param_list;do
echo "info: $i"
rm -f /usr/local/bin/${i}
ln -sv /System/Library/Frameworks/Python.framework/Versions/"$new_version"/bin/${i} /usr/local/bin/${i}
done

#第8步.环境变量要修改为最新的版本号
echo 'export PATH=/System/Library/Frameworks/Python.framework/Versions/3.4/bin:${PATH}' >> ~/.bashrc

exit #退出超级权限

5,执行这个脚本
sh python.sh

6,检查版本
$ python -V
Python 3.4.0

完成

Centos6.5安装phthon3.4和mysql-python

安装需要的包
# yum install gcc zlib-devel make
下载安装包
# wget https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tgz
解包,编译
# tar -xzvf Python-3.4.3.tgz
# cd Python-3.4.3.tgz
# ./configure
# make
# make install
清理安装文件
# make clean
# make distclean

保存原有 yum的 python版本为 2.6.6
# vi /usr/bin/yum
将第一行的
#!/usr/bin/python
改为
#!/usr/bin/python2
先要确定 /usr/bin下 有 python 文件 和 python2 文件

删除 /usr/bin/python
# rm -rf /usr/bin/python

# ln -s /opt/python3/bin/python3 ~/bin/python
# ln -s /opt/python3/bin/python3 ~/bin/python3

查看Python 版本
# python -V

[root@local ~]# python3 -V
Python 3.4.3
[root@local ~]# python -V
Python 3.4.3

测试yum是否正常
#yum upagrade -y

安装mysql-python

基于开源项目 https://github.com/davispuh/MySQL-for-Python-3/wiki/Install-on-Linux

# wget https://github.com/davispuh/MySQL-for-Python-3/archive/2.0.tar.gz
# tar xvzf 2.0.tar.gz
# cd MySQL-for-Python-3-2.0
# python setup.py install

VSFTP在CentOS6的SSL最终处理方案

vsftp 是常用的服务,最近因为21端口总被扫描,因此整理网上教程进行维护。

一、更改ftp端口号
1.编辑 /etc/vsftpd/vsftpd.conf 文件,在该配置文件中添加此行:listen_port=801
2.编辑 /etc/services 文件,将其中的
ftp 21/tcp 改为 ftp 801/tcp ,
ftp 21/udp 改为 ftp 801/udp
3.执行 service vsftpd restart 重新启动 vsftpd 服务。启动完成后可以使用 netstat -ntpl | grep vsftpd 命令可以查看到系统现监听的 vsftpd 的端口为 801

二、将ftp改为tsl安全连接。生成证书

查询vsftpd软件是否支持SSL

[root@localhost vsftpd]# ldd /usr/sbin/vsftpd |grep libssl
libssl.so.6 => /lib/libssl.so.6 (0xf7f27000) ==>说明此版本支持

如没有输出libssl.so.6 => /lib/libssl.so.6 (0xf7f27000)类似文本,说明此vsftpd版本不支持SSL

# openssl req -x509 -days 365 -newkey rsa:2048 -nodes -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem
==>生成vsftpd.pem 证书

其中”-days 365″声明证书的有效期是一年。
接下来的过程需要你输入一些相关的国家,地区,位置,组织名称,common name等信息。

三、配置主文件
# vi /etc/vsftpd/vsftpd.conf

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
#data_connection_timeout=120
#nopriv_user=ftpsecure
#async_abor_enable=YES
ascii_upload_enable=NO
ascii_download_enable=NO
ftpd_banner=Welcome to FTP service.
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd/banned_emails
# users to NOT chroot().
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list
#ls_recurse_enable=YES
listen=YES
#listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

guest_enable=YES
guest_username=owner
user_config_dir=/etc/vsftpd/user_conf

pasv_enable=YES
pasv_min_port=5000
pasv_max_port=6000
pasv_promiscuous=YES
pasv_address=xx.x.x.x
max_per_ip=20
pasv_addr_resolve=YES
port_promiscuous=YES
port_enable=YES
local_root=/xxx
listen_port=801

dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
log_ftp_protocol=yes
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=NO
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/vsftpd/vsftpd.pem
ssl_ciphers=AES128-SHA
ssl_request_cert=NO

四、生成脚本,方便操作(需要用 tab空格)
[root@tulip vsftpd]# cat Makefile
POSSIBLE += $(shell test -f user && echo user.db)
all: ${POSSIBLE}
%.db: %
@db_load -T -t hash -f $< $@ clean: rm -f *.db *~ start: /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf & stop: killall vsftpd 五、改成多用户使用,限制路径 参考之前文章 https://www.demengqi.com/archives/84

注意 在 centos64位时候,

需要将之前的 密码验证路径更改一下

#vi /etc/pam.d/vsftpd


auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/login

改为

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/user
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/user