龚哥哥 - 山里男儿 爱生活、做自己!
Mac安装PHP Swoole扩展
发表于 2016-7-10 | 浏览(7844) | 服务器

系统软件版本

Swoole Version swoole-1.8.9
PHP    Version 5.6.30
MAC    Version 10.12.4

开始安装

wget http://pecl.php.net/get/swoole-1.8.9.tgz
tar -zxvf swoole-1.8.9.tgz
cd swoole-1.8.9
/usr/bin/phpize    # phpize(如果执行 phpize 出错的话,在博客中搜索 phpize 查看解决方案)
./configure --with-php-config=/usr/bin/php-config
make
sudo make install

在 /etc/php.ini 中添加扩展记录

extension=swoole.so

重启apache

sudo apachectl restart

make可能会报错

错误1
/usr/include/php/ext/pcre/php_pcre.h:29:10: fatal error: 'pcre.h' file not found #include "pcre.h"

排查问题 php -m 已经安装pcre扩展了,是本机未安装pcre服务
我们安装一下pcre服务
  brew install pcre
  sudo cp /usr/local/include/pcre.h /usr/include/php/ext/pcre/

错误2
./php_swoole.h:22:10: fatal error: 'php.h' file not found
sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include /usr/include

阅读全文

Nginx支持htpasswd 访问需要用户和密码认证
发表于 2016-5-26 | 浏览(5726) | 服务器

准备、创建脚本目录

/data/server/nginx/conf/htpasswd

一、创建文件 htpasswd.sh  内容如下

#!/bin/bash

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

echo "========================================"
echo "# A tool like htpasswd for Nginx       #"
echo "#--------------------------------------#"
echo "# Author:Devil http://gongfuxiang.com  #"
echo "========================================"

# file path
dir=$(pwd);
user="user.conf";
userfile="${dir}/${user}"

#set username
    username=""
    read -p "Please input username:" username
    if [ "$username" = "" ]; then
            echo "Error:username can't be NULL!"
            exit 1
    fi
    echo "==========================="
    echo "username was: $username"
    echo "==========================="

#set password
    unpassword=""
    read -p "Please input the Password:" unpassword
    if [ "$unpassword" = "" ]; then
            echo "Error:Password can't be NULL!"
            exit 1
    fi
    echo "==========================="
    echo "Password was: $unpassword"
    echo "==========================="
    password=$(perl -e 'print crypt($ARGV[0], "pwdsalt")' $unpassword)

# create file
if [ ! -f ${userfile} ]; then
  touch ${userfile} 

  echo "Create Auth file......"
fi

# delete original user
for file in $userfile;
do         
    sed -i "/^$MON[\t ]*$username/d" $file  
done

# add user
echo $username:$password >> $userfile
if [ $? == 0 ]; then
    echo $username:$password;
    echo "user add success, Auth file  path:${userfile}."
else
        echo "error"
        exit 1
fi

二、修改虚拟机配置文件 server 中添加以下配置信息

auth_basic "Authorized users only";
auth_basic_user_file /data/server/nginx/conf/htpasswd/user.conf;

三、添加授权用户(根据提示输入用户名和密码)

sh htpasswd.sh

阅读全文

mac下Apache环境配置
发表于 2016-5-5 | 浏览(5837) | 服务器

Host配置、添加域名

vim etc/hosts
  127.0.0.1    default.com

开启PHP

1、vim /etc/apache2/httpd.conf 查找 php5_module
  LoadModule php5_module libexec/apache2/libphp5.so
  把前面的#号去掉

2、按esc键输入 查找 DocumentRoot
  DocumentRoot 和 Directory 的值改成 /data/www

3、查找 hosts
  Include的值修改成 /private/etc/apache2/vhost/*.conf

4、按esc键输入 /Options
  修改两个参数
    AllowOverride All       会去找.htacess文件
    Options Indexes         目录可见指定
  保存退出

5、配置虚拟机和项目路径
  创建虚拟机路径:mkdir vhost
  在vhost目录下创建default.conf ,内容:
    <VirtualHost *:80>
      ServerAdmin email@email.com
      DocumentRoot "/data/www"
      ServerName default.com
      ErrorLog "/data/log/default.com-error_log"
      CustomLog "/data/log/default.com-access_log"   common
    </VirtualHost>
    保存退出

  创建日志路径:mkdir –p /data/log
  创建项目路径:mkdir –p /data/www

  在 /data/www 目录下创建 phpinfo.php 文件,内容:
  <?php
    echo phpinfo();
  ?>

6、重启apache,在终端输入 apachectl restart

7、浏览器访问 default.com 可以看见php的的配置信息就OK了。

PHP安装扩展

下载扩展包:https://yunpan.cn/cdp5SALnsiZK8 (提取码:d68c)

解压后的文件放到 /usr/lib/php/extensions/no-debug-non-zts-20121212 目录中

创建php.ini文件
  cd /etc
  cp php.ini.default php.ini
  vim php.ini 按esc键搜索 extension

添加以下扩展记录后保存退出
  extension=redis.so
  extension=mongo.so
  extension=memcache.so
  extension=memcached.so
  extension=mcrypt.so

重启apache,在终端输入 apachectl restar

环境安装完成~

阅读全文

Shell使用教程
发表于 2016-4-12 | 浏览(5584) | 服务器
#!/bin/sh

# # 用户输入数据获取
# echo "What is your name?"
# read PERSON
# echo "Hello, $PERSON"

# # 定义变量,在变量名前面不需要加¥符号,使用的时候才需要加
# # 定义变量
# ret="value"
# echo $ret

# # 重新定义变量
# ret="value-ssss"
# echo $ret

# # 数字型变量
# number=100
# echo $number # line 22: unset: `value-ssss': not a valid identifier

# # 删除变量
# unset $ret
# echo $ret

# # 字符串循环,变量与字符串混合使用的使用加{}花括号
# # 推荐使用变量的时候,加花括号
# str="Ada Coffa Action Java"
# for v in $str
# do
#   echo "I am good at ${v}Script"
# done

# 字符串可以是单引号或者双引号,单引号中变量当做字符串输出,双引号中支持变量
# ret="ret string"
# # 单引号中不能带单引号,就是加了反斜杠转义也不可以
# # str='hello world \' $ret'
# str='hello world $ret ${ret}'
# echo $str
# str="Hello World Is \"$ret\""
# echo $str

# # 字符串拼接
# xing='Fu'
# strs="Gong "$xing" Xiang"
# name="Gong ${xing} Xiang"

# echo $strs
# echo $name

# # 获取字符串长度
# echo ${#name}

# # 提取子字符串
# echo ${name:4} # Fu Xiang
# echo ${name:1:5} # ong F

# # 查找子字符串,有问题
# # echo `expr index "$name" Fu`

# # 数组
# # 数组名=(值1 值2 值3 ... 值n)
# # 如:arr=(1 2 3 4 5 6)
# arr=(11 2222 3 44 5 6)
# echo $arr # 默认第一个下标元素 11
# echo ${arr[0]} # 第一个元素 11
# echo ${arr[1]} # 第二个元素 2222
# echo ${arr[*]} # 所有元素 11 2222 3 44 5 6
# echo ${arr[@]} # 所有元素 11 2222 3 44 5 6
# echo ${#arr[*]} # 数组的长度(下标1开始) 6
# echo ${#arr[@]} # 数组的长度(下标1开始) 6
# echo ${#arr[1]} # 元素1的长度 4(下标0开始)
# arr[1]="new values heihei"
# echo ${arr[1]}

# # 传递参数,没有参数则空
# # sh testshell.sh 11 22 你好世界
# echo "第一个参数:${1}"  # 11
# echo "第二个参数:${2}"  # 22
# echo "第三个参数:${3}"  # 你好世界
# echo "参数个数:${#}"  # 3
# echo "以一个但字符串显示所有脚本传递的参数:${*}"  # 11 22 你好世界
# echo "脚本运行的当前进程ID号:${$}"  # 当前进程ID号
# echo "后台运行的最后一个进程的ID号:${!}"
# echo "与$*相同,但是使用时加引号,并在引号中返回每个参数:${@}"  # 11 22 你好世界
# echo "显示Shell使用的当前选项,与set命令功能相同:${-}"  # hB
# echo "显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误:${?}"  # 0或错误

# 基本运算符
# 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
# expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
# 完整的表达式需要被 ` 符号包含(不是单引号)
# 乘法 * 必须加反斜杠
# val=`expr 2 + 2` # 2+2是不对的,中间必须空格分开
# echo "两数之和为:${val}"
# num1=1
# num2=2
# num3=3
# echo "num1+num2:`expr ${num1} + ${num2}`"   # 3
# echo "num3-num1:`expr ${num3} - ${num1}`"   # 2
# echo "num2*num3:`expr ${num2} \* ${num3}`"  # 6
# echo "num3/num2:`expr ${num3} / ${num2}`"   # 1
# echo "num3%num2:`expr ${num3} % ${num2}`"   # 1

# # if判断语句
# if [ $num1 == $num2 ]
# then
#   echo "num1等于num2"
# fi
# if [ $num1 != $num2 ]
# then
#   echo "num1不等于num2"
# fi

# # 关系运算符、不支持字符串、只支持数字
# # -eq 等于、-ne 不等于、-gt 大于、-lt 小于、-ge 大于等于、-le 小于等于
# if [ $num1 -eq $num2 ]
# then
#   echo "num1等于num2"
# fi
# if [ $num1 -ne $num2 ]
# then
#   echo "num1不等于num2"
# fi
# if [ $num2 -gt $num1 ]
# then
#   echo "num2大于num1"
# fi
# if [ $num1 -lt $num2 ]
# then
#   echo "num1小于num1"
# fi

# # 布尔运算符
# # ! 非运算(取反)、-o 或运算(一个符合就true)、-a 与运算(需要都符合就true)
# if [ ! $num1 == $num2 ]
# then
#   echo "num1不等于num2"
# fi
# if [ $num1 -ne $num2 -a $num2 -lt $num3 ]
# then
#   echo "条件成立"
# fi

# # 字符串运算符
# str1="abc"
# str2="efg"
# str3="abc"
# if [ $str1 = $str3 ]
# then
#   echo "str1等于str3"
# fi
# if [ $str1 != $str2 ]
# then
#   echo "str1不等于str2"
# fi
# if [ -z $str1 ]
# then
#   echo "str1长度为0"
# fi
# if [ -n $str1 ]
# then
#   echo "str1长度不为0"
# fi
# if [ $str1 ]
# then
#   echo "str1不为空"
# fi

# # 文件运算符
# dir="/data/"
# file="hello.txt"
# if [ -e ${dir}${file} ]
# then
#   echo "${file}文件存在"
# else
#   echo "${file}文件不存在"
# fi
# if [ -s ${dir}${file} ]
# then
#   echo "${file}文件大小大于0"
# else
#   echo "${file}文件大小等于0"
# fi
# if [ -x ${dir}${file} ]
# then
#   echo "${file}文件可执行"
# else
#   echo "${file}文件不可执行权限(755后几可执行了)"
# fi
# if [ -w ${dir}${file} ]
# then
#   echo "${file}文件可写"
# else
#   echo "${file}文件不可写"
# fi
# if [ -f ${dir}${file} ]
# then
#   echo "${file}文件是普通文件"
# else
#   echo "${file}文件不是普通文件"
# fi
# if [ -f "${dir}testshell.sh" ]
# then
#   echo "testshell.sh文件是普通文件"
# else
#   echo "testshell.sh文件不是普通文件"
# fi

# # echo 命令
# echo "it is s test"
# echo "\"id is a ' test\""
# read name # 接收键盘录入数据
# # > 覆盖文件中的内容、>>尾部追加内容
# echo "${name} it is a test `date`" >> ${dir}${file} # 讲内容写入文件
# cat ${dir}${file} # 查看文件中的内容

# # printf 命令
# echo "Hello World"
# printf "Hello World\n"

# printf "%-10s %-10s %-10s\n" 姓名 性别 体重kg
# printf "%-12s %-10s %-10.2f\n" 龚福祥 男 52.25453
# printf "%-12s %-10s %-10.2f\n" 潘玉龙 男 48.34566
# printf "%-11s %-10s %-10.2f\n" 杨过 男 60

# printf "%d %s\n" 100 "abc"
# printf '%d %s\n' 200 "efg"
# printf '%d %s %s %s\n' 300 "Hello" "World" "!"
# printf %s abc efg
# printf "\n\n"
# printf "%s\n" abcc efgg
# printf "www.gongfuxiang.com \n"

# # 控制流程
# num1=100
# num2=100
# if [ $num1 -eq $num2 ]
# then
#   echo "num1等于num2"
# else
#   echo "num1不等于num2"
# fi

# arr=(11 22 33 44 55)
# str="1 2 3 4 5"
# for index in ${arr[*]}
# #for index in $str
# do
#   echo "index the is: ${index}"
# done
# for tmp in 'Hello World'
# do
#   echo $tmp
# done

# int=0
# while(($int <= 5))
# do
#   let "int++"

#   # case 语句
#   case $int in
#       2 | 5)
#           echo "case int is ${int}"
#       ;;
#       4)
#           echo "case int is ${int}"
#       ;;
#   esac

#   # int等于2的时候跳出当前循环
#   if [ $int -eq 2 ]
#   then
#       continue
#   fi

#   # int等于4的时候结束循环
#   if [ $int -eq 5 ]
#   then
#       break
#   fi

#   echo "int is ${int}"
# done

# # function 方法
# # 函数调用必须在调用之前
# function DemoFun()
# {
#   echo "demofun()"
# }
# # 函数调用
# echo "函数执行开始"
# DemoFun
# echo "函数执行完毕"

# # 用户输入的值进行相加返回
# function WitchReturn()
# {
#   echo "输入第一个数字:"
#   read num

#   echo "输入第二个数字:"
#   read another
#   return $(($num+$another))
# }
# # 函数返回值使用 $? 来获取
# WitchReturn
# echo $?

# # 函数参数传递获取
# function FunParam()
# {
#   echo "第一个参数:${1}"
#   echo "第二个参数:${2}"
#   echo "第三个参数:${5}"
#   echo "所有参数:${*}"
#   echo "参数个数:${#}"
# }
# FunParam 11 22 33 "aa" "bb"

# # 输入/输出重定向
# file="hello.txt"

# # 尾部追加内容
# echo "gongfuxiang.com 龚福祥" > $file

# # 覆盖文件中的内容
# echo "gongfuxiang.org" >> $file

# # 文件中的内容行数
# #wc -l $file # 会输出文件名
# wc -l < $file # 不会输出文件名

# cat $file

# # 结果
# #     Devil
# # www.gongfuxiang.com
# cat << EOF
#   Devil
#   www.gongfuxiang.com
# EOF

# # 结果 2
# wc -l  << EOF
#   Devil
#   www.gongfuxiang.com
# EOF

# # 命令执行的内容不显示在终端上
# ls > /dev/null

# # 文件引入 source关键字或 .
# # testshell.sh testshell2.sh
# #. ./testshell2.sh
# source ./testshell2.sh

# # 使用变量
# echo $url

# # 使用方法
# ShellTestFun

# # (()) 双小括号的使用
# a=1
# b=2
# as=$((a+=1)) # 2
# echo $as
# echo $((a+=2)) # 4

# bs=$((b+1)) # 3
# echo $bs
# echo $((b+=2)) # 4

# # 表达式多个值
# c=1
# d=1
# e=1
# $((c++, d++, e--))
# # c,d,e 结果2,2,0
# echo $c
# echo $d
# echo $e

# # for循环
# for((i=0; i<=10; i++))
# do
#   echo $i
# done

# 创建测试目录
dir_name="shell_test"

mkdir $dir_name

read number
for((i=0; i<=$number; i++))
do
    # 在目录下循环创建多个文件
    touch "${dir_name}/test_file_${i}.txt"
done

阅读全文

Shell脚本发布系统
发表于 2015-12-18 | 浏览(6351) | 服务器
#!/bin/sh

# desc      项目上线脚本
# time      2015-12-18
# author    Devil
# version   2.0

echo "---------- 准备中... ----------"
user=`whoami`
date=$(date +%Y%m%d%H%M%S)
time=$(date +%Y-%m-%d" "%H:%M:%S)
name="fangao"
tar_name="${date}_${name}.tar.gz"
test_dir="test/test_app"
bak_dir="bak"
bak_log_dir="bak_log/"$(date +%Y/%m)
date_name=$(date +%d)".txt"
time_start=$(date +%s)

# 日志写入方法
function LogInsert()
{
    echo "user:${user}, date:${time}, msg:${1}, code:${2}" >> "${bak_log_dir}/${date_name}"
    if [ $2 == "success" ]
    then
        echo -e "\e[1;32m ${1} \e[0m"
    else
        echo -e "\e[1;31m ${1} \e[0m"
        exit
    fi
}

# 恢复脚本是否正在运行
is_restore=$(ps -ef | grep "restore" | grep -v grep | wc -l)
if [ $is_restore != 0 ]
then
        LogInsert "恢复脚本正在运行,请先停止再上线项目" "error"
fi

# 当前脚本是否在运行多个
is_online=$(ps -ef | grep "online" | grep -v grep | wc -l)
if [ $is_online -gt 2 ]
then
        LogInsert "当前脚本正在多处运行,请确认一人操作" "error"
fi

# 备份路径不存在则创建
if [ ! -x "$bak_dir" ]
then
    mkdir -p $bak_dir
fi

# 日志目录不存在则创建
if [ ! -x "$bak_log_dir" ]
then
    mkdir -p $bak_log_dir
fi

# 需要上线的目录不存在则退出
if [ ! -x "$test_dir" ]
then
    LogInsert "$test_dir 目录不存在" "error"
fi

echo "---------- 准备结束 ----------"

echo -e
echo "---------- 确定需要上线么?确定:Y  取消:N ----------"
read start_state
if [[ $start_state != "Y" ]]
then
    LogInsert "你取消了操作" "error"
fi

echo -e
echo "---------- 开始压缩,请稍候... ----------"
tar -cf $tar_name --exclude=img --exclude=audio --exclude=tpl_c --exclude=db_log $name
if [ $? == 0 ]
then
    LogInsert "压缩成功" "success"
    echo "压缩包文件名 ${tar_name}" >> "${bak_log_dir}/${date_name}"
else
    LogInsert "压缩失败" "error"
fi
echo "---------- 压缩结束 ----------"

echo  -e
echo "---------- 开始移动压缩包,请稍候... ----------"
mv $tar_name $bak_dir
if [ $? == 0 ]
then
    LogInsert "压缩包移动成功" "success"
else
    LogInsert "压缩包移动失败" "error"
fi
echo "---------- 压缩包移动结束 ----------"

echo  -e
echo "---------- 开始更新项目代码,请稍候... ----------"
cd $test_dir
git checkout master
git pull origin master
if [ $? == 0 ]
then
    echo -e "\e[1;32m git更新master成功 \e[0m"
else
    echo -e "\e[1;31m git更新失败 \e[0m"
    exit
fi
echo "---------- 项目代码更新结束 ----------"

echo -e
echo "---------- 确定迁移项目么?确定:Y  取消:N ----------"
read success
if [[ $success != "Y" ]]
then
        echo -e "\e[1;31m 你终止了迁移操作 \e[0m"
    exit
fi
echo "---------- 开始迁移项目,请稍候... ----------"
cp -r `ls | grep -v config | xargs` ../../$name
cp_state=$?
cd ../../
if [ $cp_state == 0 ]
then
    time_total=$[$(date +%s)-$time_start]
    LogInsert "项目迁移成功 [耗时:${time_total}秒]" "success"
else
    LogInsert "项目迁移失败" "error"
fi
echo "---------- 项目迁移结束 ----------"
echo -e
echo -e "\e[1;36m config目录下的所有文件都未迁移,如有文件需要迁移,请手动操作 \e[0m"
echo -e

阅读全文

Linux常用命令
发表于 2015-12-14 | 浏览(6026) | 服务器
exit  或  按Ctrl+D组合键   退出管理。
shutdown now   系统关机。
init 0  关机
init 3  切换到黑屏命令模式
init 5  切换到图形模式
init 6  重启
clear   清屏
su    管理员与普通用户切换,操作:su 会员名称
ifconfig              查看本机ip
setup      ip dns 修改
whereis 命令名称    查看在那个目录位置

cd     进入目录命令。 操作:cd /***/***
cd ..  返回上一个目录,表示父目录。
ls     查看当前所在目录下的文件与目录。 操作:ls
ls -a    查看当前目录下所有文件包含隐藏文件。
ls *.txt  意思是只查看当前txt的文件类型。
ls ?.txt  意思是只显示一个名称的文件
pwd    查看当前所在目录。 操作:pwd
ls -al /home  操作加命令的方式

tail   查看文件内容

cp     复制文件命令。 进入文件所在目录后操作或者直接在根目录这样操作:cp /文件操作:cp /路径/路径/文件名称 / 路径/路径名称 /需要存放的目录/目录。  空格然后一点就是复制到当前目录。如:cp /a/b/c/88.txt .

fdisk /dev/sdb  m  n  p  1  +200M 按n开始安装第二个磁盘。
fdisk -l  查看磁盘分区
mkfs -t ext3     磁盘格式化。操作:mkfs -t ext3 /dev/磁盘名称
mount    磁盘挂载, 操作:mount /dev/磁盘名称 /mnt/需要挂载的文件名
umount   磁盘挂载卸载,操作:umount /dev/磁盘名称
开机自动挂载 vim /etc/fstab
/dev/vdb1 /dbdata ext3 defaults 0 0

touch      创建空文件。 操作:touch 文件名称
mkdir      创建目录。 操作:mkdir 目录名称。
mkdir -p   直接创建多个目录 如:mkdir -p /a/aa/aaa/aaaa

rmdir    删除目录。 操作:rmdir 目录名称
rm -fr  直接强制删除 不会提示 可以直接删除多层目录
rm -f   删除文件命令。 操作:rm -f /文件名称
mv      移动文件,文件或目录更名。操作:mv t.txt tt.txt
vim 文件名.txt   编辑器,或者打开文件编辑

先按esc键再输入命令
:w        保存
:q        退出
:q!       放弃修改退出
:wq       保存+退出
shutdown-r now     重启
shutdown -r+15     15分钟后关机
reboot       挂起
man ls       获得帮助,获得帮助手册。帮助手册返回按 q
history      命令操作记录
history -c   清空操作的所有命令记录。

lynx localhost         测试  返回按Q
service httpd start    服务器启动
service httpd restart  服务器重启

service vsftpd start     FTP开启。
service vsftpd restart   FTP重启
service network restart   重启网卡。

anonymous       查看FTP
service smb start  测试服务器
service mysqld start   开启myspl 数据库
myspl -u root -p      登录数据库
cd /var/www/html      进入PHP
vim index.php         打开文件添加内容

tab键    自动补齐
反斜杠“\”强制换行
快捷键:ctrl+u   清空
快捷键:ctrl+l   清屏
快捷键:ctrl+k   清空至尾行
快捷键:ctrl+c   奇效本次命令编辑
ls > **.txt      重定向输出
wc < /etc/passwd 重定向输入
less    查看文件内容,操作:less 文件名称

useradd -d 创建FTP用户直接给目录登录权限
操作:useradd -d 目录名 会员名
useradd    创建用户,用户都在在home目录下。
passwd    设置用户密码。操作:passwd 用户名 回车后还要按两次密码。
userdel -r   删除会员及所有数据表

setup     图形查看

:set nu     显示文本行数
:set nonu   去掉文本行数
groupadd   创建用户组
gpasswd    往用户组里面添加一个用户操作:gpasswd -a 会员名 用户名名。

tar -czvf t.tar文件或目录名 -C /       解压缩
tar -xzvf t.tar -C /需要存放的目录     解压
unzip 压缩包名称  zip格式解压

chmod   设置文件或目录权限,操作:chmod 777 文件或目录名称。

/etc/resolv.conf
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0   网关IP配置文件
/etc/sysconfig/network    网卡配置文件
/etc/resolv.conf       DNS配置文件 ip 配置
ggVG   d   清空vim 文件里面的所有内容  恢复 按 u

cat /dev/null > log.txt      清空文件里面的所有内容

grep -rn "hello" ./     在当前目录下(包括子目录)查找所有文件包含hello的文件
find / -name hello.txt  查看文件
find / -name hello -type d   查看目录所在位置
netstat -tnlp  查看正在运行的服务

硬盘管理
fdisk -l  查看还未挂载的硬盘
monut 需要挂载的硬盘 指定挂载的目录名称
如: mount test data
umount 需要被卸载硬盘目录名称
如: umount test

进程查看
 netstat -ntlp | grep 80     //查看指定进程
killall nginx    //杀死进程

vim内容替换
:s/hello/newhello/g
:%s/hello/newhello/g

在指定目录下所有文件中的内容替换
sed -i "s/content/newcontent/g" `grep content -rl /dir/path`
原始字符串 content
新的字符串 newcontent
替换的路径 /dir/path

查看进程
    所有进程:ps -ef
    指定nginx进程:ps -ef | grep nginx

杀死进程
    kill 进程号(如:kill 8899)

查看负载(进程,内存,硬盘,CPU信息,运行时间)
    top

查看占用CPU最高的5个进程
ps -aux | sort -k3nr | head `5`

查看前10个占用内存最高的程序
ps aux | sort -k4,4nr | head -n 10

查看网路请求
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

正常数据传输状态-并发
    netstat -nat|grep ESTABLISHED|wc -l
    6945

无连接是活动的或正在进行
    netstat -nat|grep CLOSED|wc -l
    0

服务器在等待进入呼叫
    netstat -nat|grep LISTEN|wc -l
    9

一个连接请求已经到达,等待确认
    netstat -nat|grep SYN_RECV|wc -l
    236

应用已经开始,打开一个连接
    netstat -nat|grep SYN_SENT|wc -l
    56

应用说它已经完成
    netstat -nat|grep FIN_WAIT1|wc -l
    1400

另一边已同意释放
    netstat -nat|grep FIN_WAIT2|wc -l
    422

等待所有分组死掉
    netstat -nat|grep ITMED_WAIT|wc -l
    0

两边同时尝试关闭
    netstat -nat|grep CLOSING|wc -l
    64

另一边已初始化一个释放,处理完毕,等待超时结束的请求数
    netstat -nat|grep TIME_WAIT|wc -l
    56090

等待所有分组死掉
    netstat -nat|grep LAST_ACK|wc -l
    3627

阅读全文

Git使用教程
发表于 2015-9-17 | 浏览(5822) | 服务器

分支管理架构图

Image

基本操作

拉取分支数据
    默认master分支
        git pull

    指定分支
        git pull origin master

提交数据
    添加到暂停区
        提交当前目录下的所有文件
            git add .

        提交当前仓库所有文件
            git add *

        指定目录或文件
            git add dirname test.php hello.txt

    添加到当前分支
        git commit -m '注释'

    提交到远程仓库
        git push

撤销修改
    git checkout .   # 放弃所有修改
    git checkout test.php   # 放弃test.php文件修改
    git clean -fd   # 放弃新创建的目录或文件

    如果已经添加到暂停区了怎么撤销?两步完成(git add test.php)
        git reset HEAD test.php
        git checkout test.php

版本回退
    回退到上一个版本
        git reset --hard HEAD^

    指定版本号(如果电脑有重启,使用 git reflog)
        git log
            commit 4aa614980a3db998f3f6299f7c22e82f4e248e27
            Author: 龚福祥 <gongfuxiang@gongfuxiangdeMacBook.local>
            Date:   Thu Aug 27 21:47:26 2015 +0800

                gitignore

            commit d496317fc6e0de1697bcebd1dcd0120eaac5b578
            Author: 龚福祥 <gongfuxiang@gongfuxiangdeMacBook.local>
            Date:   Thu Aug 27 21:45:32 2015 +0800

                del temp

            commit 2663f5a91403065f83091087286d9bd7c2368afb
            Author: 龚福祥 <gongfuxiang@gongfuxiangdeMacBook.local>
            Date:   Thu Aug 27 21:31:48 2015 +0800

                dev update

        比如我们回退到 d496317fc6e0de1697bcebd1dcd0120eaac5b578 版本号不用写全,git会自动取找,前几位就行
            git reset --hard d496317fc
                HEAD is now at d496317fc dev update

回退成功后提交到远程仓库
        git push origin master

文件夹/文件管理

文件删除
    git rm test.php

删除文件夹以及文件夹下面的文件
    git rm -r dirname

文件命名
    git mv test.php new_file_name.php

提交到本地仓库
    git commit -m '文件命名'

提交到远程仓库
    git push

分支管理

创建分支
    git branch develop

切换分支
    git checkout develop
        当前分支前面标记一个*号
        * develop
              master

创建分支并且切换到新创建的分支
    git checkout -b develop

fetch只会拉取远程分支最新版本,不做merge操作
  git fetch origin test
  git checkout test

查看本地分支
    git branch

查看远程分支
    git branch -a

重命名本地分支名称
    git branch -m develop new_name

推送本地分支到远程
    git push origin develop

删除本地分支
    git branch -d develop

删除远程分支
    git push origin --delete develop
    git push origin :develop   [git v1.7.0之前]

合并某分支到当前分支
    git merge develop

标签管理

创建标签
    git tag v_0.0.1

创建历史版本标签
    查看历史提交的commit id
        git log --pretty=oneline --abbrev-commit
            97ccfa5 test
            4aa6149 gitignore
            d496317 del temp
            2663f5a dev update

    比如要对2663f5a打标签
        git tag v_0.0.1 2663f5a

查看所有标签
    git tag

提交一个标签到远程
    git push origin v_0.0.1

提交所有未提交到远程的标签
    git push origin --tags

删除本地标签
    git tag -d v_0.0.1

删除远程标签
    git push origin --delete tag v_0.0.1
    git push origin :refs/tags/v_0.0.1   [git v1.7.0之前]

获取远程标签
    git fetch origin tag v_0.0.1

暂时提交到缓存

提交修改的数据到缓存
    git stash

查看缓存数据列表
    git stash list

恢复数据并删除缓存数据
    git stash pop

恢复数据不删除缓存数据
    git stash apply

多次stash后可以使用序号恢复
    git stash apply stash@{0}

删除缓存数据
    git stash drop

git使用规范

1;开发不同功能需创建不同分支,如果涉及到多人开发,需提交到远程仓库一起在新的分支中开发。

2;合并分支前打tag标签,版本号明确。

3;提交代码注释写详细

阅读全文

CentOS设置自动连接网络
发表于 2015-8-31 | 浏览(7462) | 服务器

vi /etc/sysconfig/network-scripts/目录下 ifcfg-eth0文件

ONBOOT=                    yes         //自动连接网络
DEVICE=                 eth0        //由eth0来启动
BOOTPROTO=              dhcp        //获取IP的方式是自动获取,static是固定IP,none是手动
TYPE=                   Ethernet    //网络类型

重启网络

service network restart

阅读全文

CentOS安装memcached服务
发表于 2015-8-31 | 浏览(4983) | 服务器

1;yum安装

yum -y install memcached

2;验证是否安装成功,如果输出一些帮助信息表示安装成功

memcached -h

3;将memcache加入启动列表

chkconfig --level 2345 memcached on

4;配置Memcache

vi /etc/sysconfig/memcached
文件中内容如下
PORT=”11211″ 端口
USER=”root” 使用的用户名
MAXCONN=”1024″ 同时最大连接数
CACHESIZE=”64″ 使用的内存大小
OPTIONS=”" 附加参数

5;启动memcached

启动:service memcached start
关闭:service memcached stop
重启:service memcached restart

加入系统启动项
  echo "service memcached start" >> /etc/rc.local 

6;分配空间(11211 端口号可以自定义设置)

memcached -p 11211 -m 512 -d -u root start

7;连接memcached

telnet 121.199.44.203 11211

阅读全文

php安装memcache和memcached扩展
发表于 2015-8-31 | 浏览(5435) | 服务器

安装php memcache

wget http://pecl.php.net/get/memcache-3.0.6.tgz
tar -zxvf memcache-3.0.6.tgz
cd memcache-3.0.6
/data/soft/php/bin/phpize (如果不知道phpize在什么位置,可以用find / -name phpize查找)
./configure –enable-memcache –with-php-config=/data/soft/php/bin/php-config –with-zlib-dir
make
make install

记录下安装成功后的提示,类似于:
Installing shared extensions: /data/soft/php/modules/
把这个地址记录下来

在php.ini文件里面添加扩展

vim /data/soft/php/bin/php.ini
添加 extension=memcache.so

最后验证一下是否安装完成

php -m|grep memcache
应该会显示memcache

到这里php memcach安装完成

安装php memcached扩展

1、先安装 memcached 依赖库 libmemcached

wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
tar -zxvf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18
./configure --prefix=/usr/local/libmemcached --with-memcached
make
make install

现在安装php memcached扩展

wget http://pecl.php.net/get/memcached-2.2.0.tgz
tar -zxvf memcached-2.2.0.tgz
cd memcached-2.2.0
/data/soft/php/bin/phpize
./configure --enable-memcached --with-php-config=/data/soft/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached --disable-memcached-sasl

在php.ini文件里面添加扩展

vim /data/soft/php/bin/php.ini
  添加 extension=memcached.so

最后验证一下是否安装完成

php -m|grep memcached
应该会显示memcached

到这里php memcachd安装完成

阅读全文

TOP