centos环境安装mongodb

#下载mongodb
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.4.tgz
#解压
tar -zvxf mongodb-linux-x86_64-4.0.4.tgz
#进入源码目录
cd mongodb-linux-x86_64-4.0.4
#创建安装目录
mkdir -p /home/wwwroot/mongodb/data/
mkdir -p /home/wwwroot/mongodb/log/
mkdir -p /home/wwwroot/mongodb/bin/
#复制源码目录下的文件到安装目录
cp bin/* /home/wwwroot/mongodb/bin/
#编辑配置文件
vi /home/wwwroot/mongodb/mongodb.conf

port=27017 #端口
bind_ip=0.0.0.0 #默认是127.0.0.1
dbpath=/home/wwwroot/mongodb/db #数据库存放
logpath=/home/wwwroot/mongodb/log/mongodb.log #日志文件
fork=true #设置后台运行
#auth=true #开启认证

#启动服务
/home/wwwroot/mongodb/bin/mongod –config /home/wwwroot/mongodb/mongodb.conf

#客户端连接mongodb

/home/wwwroot/mongodb/bin/mongo 127.0.0.1:27017

命令行使用mongodb请参考:
http://www.netljc.com/?p=1202

shell函数读取ini配置文件中的配置项

ini文件的格式,中括号里面是节,name是键名,value是键值
[code]
[section1]
name1 = value1
name2 = value2

[section2]
name3 = value3
[/code]
实现读取ini文件的函数代码看起来比较简单:
[code]
function readINI()
{
FILENAME=$1;
SECTION=$2;
KEY=$3
RESULT=`awk -F ‘=’ ‘/\[‘$SECTION’\]/{a=1}a==1&&$1~/’$KEY’/{print $2;exit}’ $FILENAME`
echo $RESULT
}
[/code]

调用方法(从名为Filename的文件中读取Section节中的Key键值保存到变量Value中):
[code]Value=$(readINI Filename Section Key)[/code]

解析:
readINI()函数接收三个参数分别传给FILENAME、SECTION和KEY,然后调用awk命令在文件中查找指定键值。这里最重要的就是awk命令:

awk -F ‘=’ ‘/\[‘$SECTION’\]/{a=1}a==1&&$1~/’$KEY’/{print $2;exit}’ $FILENAME
-F ‘=’ 表示用“=”作为分割符(多余的空格同样会被忽略);
/\[‘$SECTION’\]/ 和 /’$KEY’/ 是正则表达式,用于匹配节名和键名,注意在awk正则表达式中参数要用单引号括起来;
/\[‘$SECTION’\]/{a=1} 表示逐行搜索到目标节时用变量a标记下来;
a==1&&$1~/’$KEY’/{print $2;exit} 表示当目标节已找到(a==1)并且当前行第一个参数匹配键名时,打印第二个参数(键值)并退出,这里exit是为了防止后面其它节有相同的键名。

注意:
该方法的一个缺陷是,如果节名和键名都存在但目标键并不在目标节下时会返回错误的搜索结果,因此在写ini文件的时候需要注意。

shell基础语法

[code]
#!/bin/bash
# 上面中的 #! 是一种约定标记, 它可以告诉系统这个脚本需要什么样的解释器来执行;</code>

echo "Hello, world!"

#变量赋值
bianliang="aaa"

#删除变量
unset bianliang

#输出变量
echo ${bianliang}

#输出当前脚本的文件名
echo $0

#输出脚本传递的第一个参数
echo $1

#输出脚本传递参数的个数
echo $#

#脚本传递的所有参数
echo $*
echo $@

#当前脚本的进程ID
echo $$

#上一条命令返回的退出状态,执行成功返回0,失败返回1
echo $?

#命令替换———————————————-
#它的意思就是说我们把一个命令的输出赋值给一个变量,方法为把命令用反引号(在Esc下方)引起来
directory=`ls`
echo $directory

#变量替换———————————————
a=’123456′
#原样输出
echo $a
#如果变量存在则返回word
echo ${a:+word}
unset a
#变量不存在返回word,但不改变a的值
echo ${a:-word}
#变量不存在返回word,并给a赋值
echo ${a:=word}

#echo $a

#Shell运算符—————————————
#注意运算符两边一定要要空格,不然就是在拼接字符串,不会执行运算
a=2
b=9
#加
echo `expr $a + $b`
echo $[$a+$b]
#减
echo `expr $a – $b`
echo $[$a-b]
#乘
echo `expr $a \* $b`
echo $[$a*$b]
#关系运算符
[ $a -eq $b ] #相等
[ $a -ne $b ] #不相等
[ $a -gt $b ] #&gt;
[ $a -ge $b ] #&gt;=
[ $a -lt $b ] #&lt;
[ $a -le $b ] #&lt;= #字符串运算符 [ $a = $b ] #相等 [ $a != $b ] #不相等 [ -z $a ] #字符串长度为0,返回true [ -n $a ] #长度不为0返回true [ $a ] 不为空返回true #文件测试运算符 file=/home/wwwroot/www/shellstudy.sh if [ -r $file ] then echo "文件可读" else echo "文件不可读" fi #字符串———————————- #拼接字符串 a=’abcde'; echo "aaaa${a}aaaaaa" #获取字符串长度 echo ${#a} #截取字符串 echo ${a:0:2} #查找字符串 echo `expr index $a cde` #数组————————————– a=(1 2 3 4 5) a[0]=1 a[1]=2 a[2]=3 a[3]=4 #读取下标为2的值 echo ${a[2]} #读取数组的全部元素 echo ${a[*]} #获取数组的长度 length=${#a[*]} echo $length #获取数组全部下标 xb=${!a[*]} echo $xb #流程控制语句———————————- #if语句 a=2 b=3 if [ $a -eq $b ] then echo "===" else echo "!=" fi if [ $a -eq $b ] then echo "相等" elif [ $a -gt $b ] then echo "$a&gt;$b"
elif [ $a -lt $b ]
then
echo "$a&lt;$b"
fi

#for循环
arr=(1 2 3 4)
for i in ${arr[*]}
do
echo "${i}"
done

for((i=1;i&lt;=5;i++));do
echo "这是第 $i 次调用";
done;

while
int=1
while(( $int&lt;=5 ))
do
echo $int
let "int++"
done

echo ‘按下 退出’
echo -n ‘输入你最喜欢的网站名: ‘
while read FILM
do
echo "是的!$FILM 是一个好网站"
done

#until循环
a=0
until [ ! $a -lt 10 ]
do
echo $a
a=`expr $a + 1`
done

#case命令
a=1
read a
case ${a} in
1) echo ‘aaaaa’
;;
2) echo ‘bbbbb’
;;
3) echo ‘ccccc’
;;
*) echo ‘error’
;;
esac

#死循环 break
while true
do
read a
case ${a} in
1|2|3|4) echo "你输入了${a}"
;;
*) echo "你要输入1-4之间的数字"
break
;;
esac
done

#死循环 continue
while true
do
read a
case ${a} in
1|2|3|4) echo "你输入了${a}"
;;
*) echo "你要输入1-4之间的数字"
continue
;;
esac
done

#shell函数——————————————-
#注意:1. 调用函数只需要给出函数名,不需要加括号。
#2. 函数返回值,可以显式增加return语句;如果不加,会将最后一条命令运行结果作为返回值。
#3. Shell 函数返回值只能是整数,一般用来表示函数执行成功与否,0表示成功,其他值表示失败。
#4. 函数的参数可以通过 $n 得到.如:
function testF(){
echo "hell world $1 $2"
}
testF a b

#删除函数
unset .f testF
[/code]

linux中 vi / vim显示行号或取消行号命令

1. 显示行号

:set number

或者

:set nu

2. 取消行号显示

:set nu!

3. 每次打开都显示行号

修改vi ~/.vimrc 文件,添加:set number

centos下mysql自动备份(全量)

1、新建mysql的备份目录
[code]mkdir -p /home/wwwroot/mysql/backup/[/code]

2、新建备份脚本
[code]
vi /home/wwwroot/mysql/backup/backup.sh
#!/bin/bash
backupdir=/home/wwwroot/mysql/backup/
time=` date +%Y%m%d `
db_user=root
db_pass=123456
db=demo
/home/wwwroot/mysql/bin/mysqldump -u $db_user -p$db_pass -S /home/wwwroot/mysql/mysql.sock –databases $db | gzip > $backupdir/demo$time.sql.gz
find $backupdir -name "*.gz" -type f -mtime +180 -exec rm -rf {} \; > /dev/null 2>&1
[/code]

3、添加脚本的可执行权限
[code]chmod 755 /home/wwwroot/mysql/backup/backup.sh[/code]

4、在crontab中添加计划任务
crontab的使用请参考:http://www.netljc.com/?p=1186
[code]
crontab -e
#每5分钟执行一次
*/5 * * * * /home/wwwroot/mysql/backup/backup.sh

#每月8号10点30分执行一次
30 10 8 * * /home/wwwroot/mysql/backup/backup.sh

service crond restart
[/code]

crontab 的使用及参数说明

crontab主要用于在在linux系统中定时执行计划任务

crontab各参数说明:
crontab [-u user] [file]
crontab [-u user] [-e|-l|-r]
crontab -l -u root 查看root用户的任务表

注意crontab是分用户的,以谁登录就会编辑到谁的crontab
-e : 执行文字编辑器来编辑crontab,内定的文字编辑器是VI
-r : 删除目前的crontab
-l : 列出目前的crontab(查看专用)
-i : 会和-r 配合使用,在删除当前的crontab时询问,输入y 则删除

/etc/init.d/crond restart(stop/start)重启或者停止后再启动
或者 service crond restart(stop/start)
或者 systemctl restart(stop/start)crond

crontab的n内容基本格式

f1  f2  f3  f4  f5  command

分  时 日  月  周  命令

第一列f1代表分钟1~59:当f1为*表示每分钟都要执行;为*/n表示每n分钟执行一次;为a-b表示从第a分钟到第b分钟这段时间要执行;为a,b,c,…表示第a,b,c分钟要执行

第二列f2代表小时0~23(0表示凌晨):当f2为*表示每小时都要执行;为*/n表示每n小数执行一次;为a-b表示从第a小时到第b小时这段时间要执行;为a,b,c,…表示第a,b,c小时要执行

第三列f3代表日1~31:含义如上所示,以此类推

第四列f4代表月1~12:含义如上所示,以此类推

第五列f5代表星期0~6(0表示星期天):含义如上所示,以此类推

第六列command代表要运行的命令

下面来举例具体说明一下crontab格式的含义:

30 21 * * * /usr/local/apache/bin/apachectl restart
上面的例子表示每晚的21:30重启apache。

45 4 1,10,22 * * /usr/local/apache/bin/apachectl restart
上面的例子表示每月1、10、22日的4 : 45重启apache。

10 1 * * 6,0 /usr/local/apache/bin/apachectl restart
上面的例子表示每周六、周日的1 : 10重启apache。

0,30 18-23 * * * /usr/local/apache/bin/apachectl restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。

0 23 * * 6 /usr/local/apache/bin/apachectl restart
上面的例子表示每星期六的23 : 00 重启apache。

* */1 * * * /usr/local/apache/bin/apachectl restart
上面的例子表示每一小时重启apache

* 23-7/1 * * * /usr/local/apache/bin/apachectl restart
上面的例子表示晚上11点到早上7点之间,每隔一小时重启apache

0 11 4 * mon-wed /usr/local/apache/bin/apachectl restart
上面的例子表示每月的4号与每周一到周三的11点重启apache

0 4 1 jan * /usr/local/apache/bin/apachectl restart

上面的例子表示一月一号的4点重启apache

centos开机执行脚本

1. 自己新建一个脚本,如service.sh

经过后面的几个步骤后,这个脚本在开机的时候会执行,在这个脚本里面可以写你开机的时候想执行的命令,如启动nginx,redis等服务

2. 在脚本中输入启动服务的命令,如(开机启动redis):

[code]
#!/bin/bash
/home/wwwroot/redis/bin/redis-server /home/wwwroot/redis/redis.conf
[/code]

3. 执行如下命令,将该脚本标记为可执行文件(添加可执行的权限)

[code]chmod +x /home/wwwroot/service.sh[/code]

4. 执行如下命令将/etc/rc.d/rc.local文标记为可执行文件

在centos7中,/etc/rc.d/rc.local文件的权限被降低了,开机的时候执行在自己的脚本是不能起动一些服务的,执行下面的命令可以文件标记为可执行的文件
[code]chmod +x /etc/rc.d/rc.local[/code]

5. 打开/etc/rc.d/rc.local文件,在最后面添加如下脚本

[code]/home/centnet/service.sh[/code]
这样,service.sh这个脚本在开机的时候就会被执行了,以后再这里面写启动服务的命令就可以了

通过php的源码包安装各种扩展

在php官方下载的源码包中有各种自带的扩展,如果在安装php的时候没有一起安装,后续又有使用的需求,
可以直接通过php的源码包进行安装,不用去各种下载

cd 源码包/php-5.4.17/ext/curl/

/home/wwwroot/php/bin/phpize

./configure –with-php-config=/home/wwwroot/php/bin/php-config

make && make install

php.ini 中加入 extension=curl.so

/etc/init.d/php-fpm restart

centos下安装php的redis扩展

wget http://pecl.php.net/get/redis-4.1.1.tgz
cd redis-4.1.1
/home/wwwroot/php/bin/phpize
./configure –with-php-config=/home/wwwroot/php/bin/php-config
make && make install

vi /home/wwwroot/php/lib/php.ini
extension = redis.so #最后加入
/etc/init.d/php-fpm restart

php -m中无法看到的解决办法,请参考

http://www.netljc.com/?p=1175

php使用redis相关的文档介绍:
https://github.com/phpredis/phpredis

centos安装完redis扩展后phpinfo中能看到扩展,但php -m中无法看到的解决办法

查看/usr/bin目录下是否有php php-cgi php-config phpize这几个文件,有的话直接删除,然后从php的安装目录建立软连接
[code]
cd /usr/bin
rm -rf php php-cgi php-config phpize
ln -s /home/wwwroot/php/bin/php php
ln -s /home/wwwroot/php/bin/php-cgi php-cgi
ln -s /home/wwwroot/php/bin/php-config php-config
ln -s /home/wwwroot/php/bin/phpize phpize
[/code]