标签: Centos

  • Linux crontab实现秒级定时任务

    Linux crontab 定时任务最少到每分钟执行一次,一些需要频繁运行启动的应用场景无法满足。

    Linux crontab:

    *    *    *    *    *
    -    -    -    -    -
    |    |    |    |    |
    |    |    |    |    +----- day of week (0 - 7) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
    |    |    |    +---------- month (1 - 12) OR jan,feb,mar,apr ...
    |    |    +--------------- day of month (1 - 31)
    |    +-------------------- hour (0 - 23)
    +------------------------- minute (0 - 59)

    crontab能到分钟级,我们可以在sh文件里写一个循环,然后每循环一次间隔多少秒执行下次循环。

    先不说了看代码

    #!/bin/sh
    step=2 #循环间隔的秒数
    #(i+step) 是每次循环i值+step 也就是每次循环+2 i到60停止循环
    for (( i = 0; i < 60; i=(i+step) )); do   
            /www/server/php/56/bin/php /www/wwwroot/crontab.php
    	/www/server/php/56/bin/php /www/wwwroot/crontab_1.php
    	/www/server/php/56/bin/php /www/wwwroot/crontab_2.php
    	/www/server/php/56/bin/php /www/wwwroot/crontab_3.php
    	/www/server/php/56/bin/php /www/wwwroot/crontab_4.php
    	/www/server/php/56/bin/php /www/wwwroot/crontab_5.php
    	/www/server/php/56/bin/php /www/wwwroot/crontab_6.php
    	/www/server/php/56/bin/php /www/wwwroot/crontab_7.php
        sleep $step
    done
    exit 0

    我在项目里使用这种方式定时任务稳定运行了有半年了,会有一点点的时间误差 因为中间PHP脚本运行需要耗时,但是这些误差可以忽略不计。

    crontab添加定时任务的时候需要根据脚本的几个数值做相应的时间调整

    比如我上面的间隔时间是2秒,每次循环i都会加2,当i到60的时候就会停止,crontab定时任务如下

    执行crontab -e 添加如下内容 每分钟运行一次

    */1 * * * * /data/apps/crontab/php_api_clear.sh

    比如你的任务需要5秒运行一次 间隔时间(step =5)循环 i 到180 停止 那么定时任务应设为每3分钟执行一次,

    脚本内容如下:

    #!/bin/sh
    step=5 #间隔的秒数
    for (( i = 0; i < 180; i=(i+step) )); do
            /www/server/php/56/bin/php /www/wwwroot/crontab.php
    	/www/server/php/56/bin/php /www/wwwroot/crontab_1.php
    	/www/server/php/56/bin/php /www/wwwroot/crontab_2.php
    	/www/server/php/56/bin/php /www/wwwroot/crontab_3.php
    	/www/server/php/56/bin/php /www/wwwroot/crontab_4.php
    	/www/server/php/56/bin/php /www/wwwroot/crontab_5.php
    	/www/server/php/56/bin/php /www/wwwroot/crontab_6.php
    	/www/server/php/56/bin/php /www/wwwroot/crontab_7.php
        sleep $step
    done
    exit 0

     

  • Centos 7 开启BBR加速

    Centos 7 配置BBR加速

    什么是BBR:

    TCP BBR是谷歌出品的TCP拥塞控制算法。BBR目的是要尽量跑满带宽,并且尽量不要有排队的情况。BBR可以起到单边加速TCP连接的效果。

    Google提交到Linux主线并发表在ACM queue期刊上的TCP-BBR拥塞控制算法。继承了Google“先在生产环境上部署,再开源和发论文”的研究传统。TCP-BBR已经再YouTube服务器和Google跨数据中心的内部广域网(B4)上部署。由此可见出该算法的前途。

    TCP-BBR的目标就是最大化利用网络上瓶颈链路的带宽。一条网络链路就像一条水管,要想最大化利用这条水管,最好的办法就是给这跟水管灌满水。

    BBR解决了两个问题:

    • 在有一定丢包率的网络链路上充分利用带宽。非常适合高延迟,高带宽的网络链路。
    • 降低网络链路上的buffer占用率,从而降低延迟。非常适合慢速接入网络的用户。

    Google 在 2016年9月份开源了他们的优化网络拥堵算法BBR,最新版本的 Linux内核(4.9-rc8)中已经集成了该算法。对于TCP单边加速,并非所有人都很熟悉,不过有另外一个大名鼎鼎的商业软件“锐速”,相信很多人都清楚。特别是对于使用国外服务器或者VPS的人来说,效果更佳。

    BBR项目地址:

    https://github.com/google/bbr

     

    升级内核,第一步首先是升级内核到支持BBR的版本:

    1.yum更新系统版本:

    yum update

    2.查看系统版本:

    [root@xianggang ~]# cat /etc/redhat-release 
    CentOS Linux release 7.6.1810 (Core)

    3.安装elrepo并升级内核:

    [root@xianggang ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
    [root@xianggang ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
    [root@xianggang ~]# yum --enablerepo=elrepo-kernel install kernel-ml -y

    4.更新grub文件并重启系统:

    [root@xianggang ~]# egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'
    CentOS Linux (5.2.9-1.el7.elrepo.x86_64) 7 (Core)
    CentOS Linux (3.10.0-957.27.2.el7.x86_64) 7 (Core)
    CentOS Linux (3.10.0-957.5.1.el7.x86_64) 7 (Core)
    CentOS Linux (3.10.0-862.11.6.el7.x86_64) 7 (Core)
    CentOS Linux (3.10.0-693.21.1.el7.x86_64) 7 (Core)
    CentOS Linux (3.10.0-514.21.2.el7.x86_64) 7 (Core)
    CentOS Linux (0-rescue-b8690a3783cf4b1a9ddccfe7a7f69414) 7 (Core)
    [root@xianggang ~]# grub2-set-default "CentOS Linux (5.2.9-1.el7.elrepo.x86_64) 7 (Core)"
    [root@xianggang ~]# reboot

    5.重启完成后查看内核是否已更换为5.2.9版本:

    [root@xianggang ~]# uname -r
    5.2.9-1.el7.elrepo.x86_64
    [root@xianggang ~]# 
    

    6.开启bbr:

    [root@xianggang ~]# vim /etc/sysctl.conf    # 在文件末尾添加如下内容
    net.core.default_qdisc = fq
    net.ipv4.tcp_congestion_control = bbr

    7.重新载入sysctl:

    [root@xianggang ~]# sysctl -p
    net.core.default_qdisc = fq
    net.ipv4.tcp_congestion_control = bbr

    输出了我们添加的那两行配置 并且后面没有提示 代表正常。

    8.确定bbr已经成功开启:

    [root@xianggang ~]# sysctl net.ipv4.tcp_available_congestion_control
    net.ipv4.tcp_available_congestion_control = reno cubic bbr
    [root@xianggang ~]# lsmod | grep bbr
    tcp_bbr                20480  4 
    [root@xianggang ~]#

    输出以上内容,表示BBR已经成功开启。

  • Centos7.4 编译安装Mysql 5.7.21 配置开机启动

    Centos7.4 编译安装Mysql 5.7.21 配置开机启动

    Centos7.4 编译安装Mysql 5.7.21数据库,加添服务并 配置开机启动。使用yum安装的Mysql一般版本比较旧,如果想要尝试最新的功能或者需要指定特殊的功能的话,就需要手工进行编译安装了。

    一、下载Mysql boost

    下载源码
    https://dev.mysql.com/downloads/mysql/
    1.在Select Operating System:选择Source Code
    2.在下面的Select OS Version:选择Generic Linux (Architecture Independent);
    3.然后再下面的部分可以看到Compressed TAR Archive,单击后面的Download;
    4.在最下面的No thanks, just start my download.就是下载地址了

    wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.21.tar.gz

    二、下载boost

    Mysql5.7 要求boost的版本1.59

    wget --no-check-certificate http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz

    三、安装依赖

    yum install -y cmake bison bison-devel libaio-devel gcc gcc-c++ git  ncurses-devel

    四、解压mysql源文件

    tar -zxvf mysql-5.7.21.tar.gz

    五、进入Mysql源文件目录,新建configure做为编译目录,并进入该目录

    cd mysql-5.7.21
    mkdir configure
    cd configure

    六、使用cmake进行生成编译环境

    -DCMAKE_INSTALL_PREFIX mysql安装目录
    -DMYSQL_DATADIR 数据库文件没有了
    -DSYSCONFDIR 配置文件目录(配置文件需要自己创建)
    -DMYSQL_UNIX_ADDR sock目录 春风这里使用/dev/shm(物理内存目录)
    -DWITH_BOOST= boost源码文件
    -DEXTRA_CHARSETS 安装所字符集 可以用all安装所有扩展字符集
    -DDEFAULT_CHARSET 使用utf8字符
    -DDEFAULT_COLLATION 校验字符

    cmake .. -DCMAKE_INSTALL_PREFIX=/data/apps/mysql \
    -DMYSQL_DATADIR=/data/apps/mysql/data \
    -DSYSCONFDIR=/data/apps/conf/mysql/etc \
    -DWITH_MYISAM_STORAGE_ENGINE=1 \
    -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
    -DMYSQL_UNIX_ADDR=/dev/shm/mysql.sock \
    -DMYSQL_TCP_PORT=3306 \
    -DENABLED_LOCAL_INFILE=1 \
    -DWITH_PARTITION_STORAGE_ENGINE=1 \
    -DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \
    -DDEFAULT_CHARSET=utf8 \
    -DDEFAULT_COLLATION=utf8_general_ci \
    -DWITH_DEBUG=0 \
    -DMYSQL_MAINTAINER_MODE=1 \
    -DWITH_SSL:STRING=bundled \
    -DWITH_ZLIB:STRING=bundled \
    -DDOWNLOAD_BOOST=1 \
    -DWITH_BOOST=/root/boost_1_59_0.tar.gz
    

    如果编译出现错误,请先删除CMakeCache.txt后,再重新编译

    rm -rf CMakeCache.txt

    如果出现下面的提示就表示成功生成了编译环境

    -- Configuring done
    -- Generating done

    七、使用make进行编译

    make && make install

    八、初始化数据库

    1.新建www用户组

    groupadd www

    2.新建mysql用户

    useradd -g www mysql -s /sbin/nologin

    3.新建数据库文件夹、日志文件夹、配置文件文件夹,并更改用户为mysql

    mkdir -p /data/apps/mysql/data  /data/apps/log/mysql /data/apps/conf/mysql/etc
    chown -R mysql:www /data/apps/mysql /data/apps/log/mysql /data/apps/conf/mysql
    

    4.创建配置文件

    vim /data/apps/conf/mysql/etc/my.cnf

    加入以下内容

    [mysqld]
    port = 3306
    socket = /dev/shm/mysql.sock
    basedir = /data/apps/mysql
    datadir = /data/apps/mysql/data
    log_error = /data/apps/log/mysql/error.log

    5.配置MySQL环境变量

    vim /etc/profile
    export PATH=/data/apps/php/bin:/data/apps/php/sbin:$PATH
    #改为
    export PATH=/data/apps/php/bin:/data/apps/php/sbin:/data/apps/mysql/bin:$PATH
    #让变量生效
    source /etc/profile
    

    6.初始化数据库

    /data/apps/mysql/bin  --initialize --user=mysql

    九、复制启动脚本 配置开机启动

    1.复制启动脚本

    cp /data/apps/mysql/support-files/mysql.server /etc/init.d/mysql

    2.修改脚本

    vim /etc/init.d/mysql

    找到以下两行

    basedir=
    datadir=

    改为

    basedir=/data/apps/mysql/
    datadir=/data/apps/mysql/data

    3.给脚本可执行权限

    chmod +x /etc/init.d/mysql

    4.启动Mysql数据库

    systemctl start mysql

    5.设为开机启动

    systemctl enable mysql

    十、修改Mysql 初始密码

    1.获取初始密码

    cat /root/.mysql_secret
    !n1,lI1og4Sy
    

    2.使用初始密码登陆Mysql

    mysql -uroot -p

    3.修改root密码

    mysql> alter user 'root'@'localhost' identified by '密码';

    4.重启Mysql

    systemctl restart mysql

    Mysql启动、停止、重启命令

    #启动
    systemctl start mysql
    #停止
    systemctl stop mysql
    #重启
    systemctl restart mysql
    
  • Centos Linux 创建 删除SWAP虚拟内存 交换分区

    Centos Linux 创建 删除SWAP虚拟内存 交换分区

    SWAP分区就是Linux下的虚拟内存分区,它的作用是在物理内存使用完之后将磁盘空间SWAP分区虚拟成内存来使用,如果服务器内存比较小可以创建SWAP分区解决服务器繁忙时段资源耗尽的问题。

    需要注意的是虽然这个SWAP分区能够作为“虚拟”的内存,但它的速度比物理内存可是慢多了,所以如果你的服务器比较繁忙,物理内存持续属于耗尽的情况,并不能寄厚望于SWAP,最好的办法仍然是加大物理内存,SWAP分区只是临时的解决办法。

    添加SWAP虚拟内存交换分区

    查看是否有SWAP:

    free –h
    Swap: 0 0 0 表示系统没Swap分区
    

    创建一个2G的交换分区:

    dd  if=/dev/zero  of=/data/cfswap  bs=1024  count=2097152

    执行完毕 使用 mkswap 命令来设置交换分区:

    mkswap  /data/cfswap

    使用swapon启用交换分区:

    swapon /data/cfswap

    使用vim /etc/fstab 编辑fstab文件尾部添加以下代码 设置开机自动挂载

    /data/cfswap   swap  swap  defaults  0  0

    删除添加SWAP虚拟内存交换分区

    首先禁用正在使用的虚拟内存交换分区

    swapoff /data/cfswap

    编辑fstab文件

    vim /etc/fstab

    删除我们之前添加的内容

    /data/cfswap   swap  swap  defaults  0  0

    删除文件

    rm /data/cfswap
  • Centos7.4 编译安装PHP 7.24 并配置开机启动

    Centos7.4 编译安装PHP 7.24 并配置开机启动

    网络资料显示PHP7性能是PHP5的三倍(wordpress 而言),而且代码向下兼容,春风也把PHP5.6更换成了PHP7.2,性能提升明显,而且感觉更节省内存。

    PHP5 PHP7 性能对比图
    PHP7性能多方评测结果图片,来源于网络

    编译安装PHP 7.24
    系统环境:Centos 7.4

    安装依赖

    yum -y install gd-devel zlib-devel libjpeg-devel libpng-devel libiconv-devel freetype-devel libxml2 libxml2-devel openssl openssl-devel curl-devel libxslt-devel libmcrypt-devel mhash
    

    下载PHP7.24

    wget http://cn2.php.net/distributions/php-7.2.4.tar.gz
    

    解压后进入PHP7.24目录

    #解压
    tar -xzvf php-7.2.4.tar.gz
    #进入目录
    cd php-7.2.4
    

    新建用户 我这里使用Tengine的用户

    #新建www用户组
    groupadd www
    #新建Tengine用户
    useradd -g www tengine -s /sbin/nologin
    

    开始编译

    ./configure \
    --prefix=/data/apps/php \
    --with-config-file-path=/data/apps/conf/php/etc \
    --with-mysql-sock=/dev/shm/mysql.sock \
    --enable-fpm \
    --with-fpm-user=tengine  \
    --with-fpm-group=www \
    --enable-inline-optimization \
    --disable-debug \
    --disable-rpath \
    --enable-shared  \
    --enable-soap \
    --with-libxml-dir \
    --with-xmlrpc \
    --with-openssl \
    --with-mhash \
    --with-pcre-regex \
    --with-sqlite3 \
    --with-zlib \
    --enable-bcmath \
    --with-iconv \
    --with-bz2 \
    --enable-calendar \
    --with-curl \
    --with-cdb \
    --enable-dom \
    --enable-exif \
    --enable-fileinfo \
    --enable-filter \
    --with-pcre-dir \
    --enable-ftp \
    --with-gd \
    --with-openssl-dir \
    --with-jpeg-dir \
    --with-png-dir \
    --with-zlib-dir  \
    --with-freetype-dir \
    --enable-gd-jis-conv \
    --with-gettext \
    --with-gmp \
    --with-mhash \
    --enable-json \
    --enable-mbstring \
    --enable-mbregex \
    --enable-mbregex-backtrack \
    --with-libmbfl \
    --with-onig \
    --enable-pdo \
    --with-mysqli=mysqlnd \
    --with-pdo-mysql=mysqlnd \
    --with-zlib-dir \
    --with-pdo-sqlite \
    --with-readline \
    --enable-session \
    --enable-shmop \
    --enable-simplexml \
    --enable-sockets  \
    --enable-sysvmsg \
    --enable-sysvsem \
    --enable-sysvshm \
    --enable-wddx \
    --with-libxml-dir \
    --with-xsl \
    --enable-zip \
    --enable-mysqlnd-compression-support \
    --with-pear \
    --enable-opcache
    

    安装

    make && make install
    

    更改PHP安装目录所属用户 复制配置文件

    #新建配置文件目录
    mkdir -p data/apps/conf/php/etc/php-fpm.d
    #复制配置文件
    cp -rf /data/apps/php/etc/* /data/apps/conf/php/etc
    cp /root/php-7.2.4/php.ini* /data/apps/php/etc/
    #到安装目录
    cd /data/apps/conf/php/etc
    #把php.ini-production复制为php.ini
    cp php.ini-production php.ini
    #把php-fpm.conf.default复制为php-fpm.conf
    cp php-fpm.conf.default  php-fpm.conf
    #把php-fpm.d/www.conf.default复制为php-fpm.d/www.conf
    cp php-fpm.d/www.conf.default php-fpm.d/www.conf
    #更改PHP安装目录所属用户
    chown -R tengine:www /data/apps/php /data/apps/conf/php
    

    配置php.ini

    # 字符集UTF-8
    default_charset = "UTF-8"
    # 设置PHP的扩展库路径,默认被注释了。
    extension_dir = "/usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/"
    #添加opcache扩展
    zend_extension=opcache.so
    # 设置PHP的时区
    date.timezone = PRC
    # 开启opcache,默认是0
    [opcache]
    opcache.enable=1
    

    配置php-fpm.d目录下www.conf

    ; 设置用户和用户组
    user = tengine
    group = www
    ; 下面是默认值,如果PHP Nginx在一台服务器不建议使用 我这里注释掉
    ; listen = 127.0.0.1:9000
    ; sock目录改为/dev/shm物理硬件内存 读写速度比硬盘快N倍
    listen = /dev/shm/php-fpm.sock
    

    保存配置检验配置是否正确

    /data/apps/php/sbin/php-fpm -t
    

    添加环境变量

    #编辑/etc/profile
    vim /etc/profile
    #在尾部加入
    export PATH=/data/apps/php/bin:/data/apps/php/sbin
    

    启动

    /data/apps/php/sbin/php-fpm
    

    让tengine或Nginx 支持PHP

    编辑nginx.conf更改为以下内容。

            #PHP模块
            location ~ \.php$ {
                fastcgi_pass   unix:/dev/shm/php-fpm.sock;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
            }

    创建开机启动脚本

    vim /etc/init.d/php-fpm
    

    写入以下内容

    #! /bin/sh
    ### BEGIN INIT INFO
    # Provides:          php-fpm
    # Required-Start:    $remote_fs $network
    # Required-Stop:     $remote_fs $network
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: starts php-fpm
    # Description:       starts the PHP FastCGI Process Manager daemon
    ### END INIT INFO
    
    prefix=/data/apps/php
    exec_prefix=${prefix}
    
    php_fpm_BIN=${exec_prefix}/sbin/php-fpm
    php_fpm_CONF=${prefix}/etc/php-fpm.conf
    php_fpm_PID=${prefix}/var/run/php-fpm.pid
    
    
    php_opts="--fpm-config $php_fpm_CONF --pid $php_fpm_PID"
    
    
    wait_for_pid () {
        try=0
    
        while test $try -lt 35 ; do
    
            case "$1" in
                'created')
                if [ -f "$2" ] ; then
                    try=''
                    break
                fi
                ;;
    
                'removed')
                if [ ! -f "$2" ] ; then
                    try=''
                    break
                fi
                ;;
            esac
    
            echo -n .
            try=`expr $try + 1`
            sleep 1
    
        done
    
    }
    
    case "$1" in
        start)
            echo -n "Starting php-fpm "
    
            $php_fpm_BIN --daemonize $php_opts
    
            if [ "$?" != 0 ] ; then
                echo " failed"
                exit 1
            fi
    
            wait_for_pid created $php_fpm_PID
    
            if [ -n "$try" ] ; then
                echo " failed"
                exit 1
            else
                echo " done"
            fi
        ;;
    
        stop)
            echo -n "Gracefully shutting down php-fpm "
    
            if [ ! -r $php_fpm_PID ] ; then
                echo "warning, no pid file found - php-fpm is not running ?"
                exit 1
            fi
    
            kill -QUIT `cat $php_fpm_PID`
    
            wait_for_pid removed $php_fpm_PID
    
            if [ -n "$try" ] ; then
                echo " failed. Use force-quit"
                exit 1
            else
                echo " done"
            fi
        ;;
    
        status)
            if [ ! -r $php_fpm_PID ] ; then
                echo "php-fpm is stopped"
                exit 0
            fi
    
            PID=`cat $php_fpm_PID`
            if ps -p $PID | grep -q $PID; then
                echo "php-fpm (pid $PID) is running..."
            else
                echo "php-fpm dead but pid file exists"
            fi
        ;;
    
        force-quit)
            echo -n "Terminating php-fpm "
    
            if [ ! -r $php_fpm_PID ] ; then
                echo "warning, no pid file found - php-fpm is not running ?"
                exit 1
            fi
    
            kill -TERM `cat $php_fpm_PID`
    
            wait_for_pid removed $php_fpm_PID
    
            if [ -n "$try" ] ; then
                echo " failed"
                exit 1
            else
                echo " done"
            fi
        ;;
    
        restart)
            $0 stop
            $0 start
        ;;
    
        reload)
    
            echo -n "Reload service php-fpm "
    
            if [ ! -r $php_fpm_PID ] ; then
                echo "warning, no pid file found - php-fpm is not running ?"
                exit 1
            fi
    
            kill -USR2 `cat $php_fpm_PID`
    
            echo " done"
        ;;
    
        *)
            echo "Usage: $0 {start|stop|force-quit|restart|reload|status}"
            exit 1
        ;;
    
    esac
    

    把php-fpm加入服务 设置为启动

    # 给php-fpm可执行权限
    chmod +x /etc/init.d/php-fpm
    # php-fpm加入服务
    chkconfig --add php-fpm
    # php-fpm 设置为开机启动
    chkconfig php-fpm on
    # 查看是否开机启动 2:no 3:no 4:no级别下为启动
    chkconfig --list php-fpm
    php-fpm         0:off   1:off   2:on    3:on    4:on    5:on    6:off
    

    重启、启动、停止php-fpm命令

    # 启动
    service php-fpm start
    # 关闭
    service php-fpm stop
    # 重启
    service php-fpm restart
    # 重载配置文件
    service php-fpm reload
    
  • Centos 7.4 编译安装Tengine 2.2.2/Nginx 并配置开机启动

    Centos 7.4 编译安装Tengine 2.2.2/Nginx 并配置开机启动

    Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。

    编译安装可自定义安装目录,解决不必要的软件间依赖,最主要的是编译安装一般是用最新的版本。
    系统环境:Centos 7.4 Tengine 2.2.2

    安装必要的编译环境

    yum -y install gcc gcc-c++ wget make autoconf automake

    下载pcre zlib openssl Tengine

    wget https://ftp.pcre.org/pub/pcre/pcre-8.42.tar.gz
    wget http://www.zlib.net/zlib-1.2.11.tar.gz
    wget https://www.openssl.org/source/openssl-1.1.0f.tar.gz
    wget http://tengine.taobao.org/download/tengine-2.2.2.tar.gz
    

    解压pcre zlib openssl Tengine

    tar -xzvf pcre-8.42.tar.gz
    tar -xzvf zlib-1.2.11.tar.gz
    tar -xzvf openssl-1.1.0f.tar.gz
    tar -xzvf tengine-2.2.2.tar.gz
    

    创建Tengine运行用户

    #新建www用户组
    groupadd www
    #新建Tengine用户
    useradd -g www Tengine -s /sbin/nologin
    

    编译Tengine

    ./configure \
    --prefix=/data/apps/tengine \  //安装目录
    --conf-path=/data/apps/conf/tengine/nginx.conf \  //配置文件目录
    --lock-path=/dev/shm/nginx.lock \  //loc文件目录
    --sbin-path=/data/apps/tengine/sbin/nginx \  //可执行文件目录
    --error-log-path=/data/apps/log/tengine/error.log \  //错误日志
    --http-log-path=/data/apps/log/tengine/access.log \  //访问日志
    --http-client-body-temp-path=/data/apps/temp/tengine/client/ \
    --http-proxy-temp-path=/data/apps/temp/tengine/proxy/ \
    --http-fastcgi-temp-path=/data/apps/temp/tengine/fcgi/ \
    --http-uwsgi-temp-path=/data/apps/temp/tengine/uwsgi/ \
    --http-scgi-temp-path=/data/apps/temp/tengine/scgi/ \
    --pid-path=/data/apps/temp/tengine/pid/nginx.pid \  //pid目录
    --group=www \  //用户组
    --user=Tengine \  //运行用户
    --with-pcre=/root/pcre-8.42 \  //pcre目录
    --with-zlib=/root/zlib-1.2.11 \  //zlib目录 
    --with-openssl=/root/openssl-1.1.0f \ //openssl目录
    --with-http_ssl_module \
    --with-http_realip_module \
    --with-http_image_filter_module \
    --with-http_sub_module \
    --with-http_gzip_static_module \
    --with-http_secure_link_module \
    --with-http_stub_status_module \
    --with-http_v2_module \
    --with-http_slice_module 
    

    安装

    make && make install
    

    创建目录 pid目录 log目录 并更改所属用户

    mkdir -p /data/apps/temp/tengine/pid  /data/apps/log/tengine
    #更改文件夹所属用户为tengine
    chown -R tengine:www /data/apps/temp/tengine /data/apps/log/tengine data/apps/conf/tengine /data/apps/tengine
    

    启动tengine

    /data/apps/tengine/sbin/nginx

    直接用IP地址访问 出现以下界面表示安装成功

    或者用命令 curl -I http://127.0.0.1 出现HTTP/1.1 200 OK 表示成功

    添加服务项 开机启动

    创建启动脚本

    vim /etc/rc.d/init.d/nginx
    

    写入以下内容

    #! /bin/bash
    # chkconfig: - 85 15
    PATH=/data/apps/tengine
    DESC="nginx daemon"
    NAME=tengine
    DAEMON=$PATH/sbin/$NAME
    CONFIGFILE=/data/apps/conf/tengine/$NAME.conf
    PIDFILE=/data/apps/temp/tengine/pid/$NAME.pid
    SCRIPTNAME=/etc/init.d/$NAME
    set -e
    [ -x "$DAEMON" ] || exit 0
    do_start() {
    $DAEMON -c $CONFIGFILE || echo -n "nginx already running"
    }
    do_stop() {
    $DAEMON -s stop || echo -n "nginx not running"
    }
    do_reload() {
    $DAEMON -s reload || echo -n "nginx can't reload"
    }
    case "$1" in
    start)
    echo -n "Starting $DESC: $NAME"
    do_start
    echo "."
    ;;
    stop)
    echo -n "Stopping $DESC: $NAME"
    do_stop
    echo "."
    ;;
    reload|graceful)
    echo -n "Reloading $DESC configuration..."
    do_reload
    echo "."
    ;;
    restart)
    echo -n "Restarting $DESC: $NAME"
    do_stop
    do_start
    echo "."
    ;;
    *)
    echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2
    exit 3
    ;;
    esac
    exit 0
    

    给脚本添加执行权限

    chmod +x nginx

    添加服务

    chkconfig --add nginx

    加入开机启动

    chkconfig nginx on

    启动、重启、停止命令

    #启动
    service nginx start
    #重启
    service nginx restart
    #重新加载配置文件
    service nginx reload
    #停止
    service nginx stop
    #也可以这样
    /data/apps/tengine/sbin/nginx -s stop    #停止服务 
    /data/apps/tengine/sbin/nginx -s quit    #退出服务 
    /data/apps/tengine/sbin/nginx -s reopen    #重新打开日志文件 
    /data/apps/tengine/sbin/nginx -s reload    #重新加载配置文件
    
  • Centos 7改变系统语言为中文

    Centos 7改变系统语言为中文

    最近阿里云在搞活动,春风入手了一台99元一年,配置是1核心 2G内存 1M宽带,安装的Centos 7.4默认的语言是英文,虽然说看英文没有太大的问题。但是就是想把这个系统语言改为中文,要怎么改呢?
    先是用locale命令,看看语言配置。

    LANG=en_US.UTF-8
    LC_CTYPE="en_US.UTF-8"
    LC_NUMERIC="en_US.UTF-8"
    LC_TIME="en_US.UTF-8"
    LC_COLLATE="en_US.UTF-8"
    LC_MONETARY="en_US.UTF-8"
    LC_MESSAGES="en_US.UTF-8"
    LC_PAPER="en_US.UTF-8"
    LC_NAME="en_US.UTF-8"
    LC_ADDRESS="zen_US.UTF-8"
    LC_TELEPHONE="en_US.UTF-8"
    LC_MEASUREMENT="en_US.UTF-8"
    LC_IDENTIFICATION="en_US.UTF-8"
    LC_ALL=
    

    怎么把”en_US.UTF-8″改成”zh_CN.UTF-8″?赶紧用度娘搜了一下。

    1.临时解决方法

    使用LANG=“zh_CN.UTF-8”,这个命令来实现,不过在重新登录的时候又会变回英文。这个不是长久的方法。

    2.更改系统参数

    如果系统没有中文支持,可以通过网上下载安装中文语言包,使用命令:yum groupinstall Chinese-support

    在网上普遍说的是修改/etc/sysconfig/文件夹里面的i18n这个文件里面的参数,但是呢。我在Centos7同样的路径下面是没有看到有这个文件的。

    经过在网上查找资料发现,Centos 7已经不采用/etc/sysconfig/i18n这一个文件来做配置,而改为使用/etc/locale.conf这个来进行语言配置。

    使用vim命令编辑

    vim /etc/locale.conf

    进入以后只有简单的一句

    LANG="en_US.UTF-8" 这个配置,把"en_US.UTF-8"替换成"zh_CN.UTF-8" 保存退出即可。

    这样子就算是重启进入系统,系统也还是中文的配置界面。