分类: 运维笔记

  • PHP 脚本中的各种运算符

    PHP 算数运算符

    运算符 名称 例子 结果
    + 加法 $x + $y $x 与 $y 求和
    – 减法 $x – $y $x 与 $y 的差数
    * 乘法 $x * $y $x 与 $y 的乘积
    / 除法 $x / $y $x 与 $y 的商数
    % 模数 $x % $y $x 除 $y 的余数

    PHP 赋值运算符

    PHP 赋值运算符用于向变量写值。
    PHP 中基础的赋值运算符是 “=”。这意味着右侧赋值表达式会为左侧运算数设置值。

    赋值 等同于 描述
    x = y x = y 右侧表达式为左侧运算数设置值。
    x += y x = x + y 加
    x -= y x = x – y 减
    x *= y x = x * y 乘
    x /= y x = x / y 除
    x %= y x = x % y 模数

    PHP 字符串运算符

    运算符 名称 例子 结果
    . 串接 $txt1 = “Hello” $txt2 = $txt1 . ” world!” 现在 $txt2 包含 “Hello world!”
    .= 串接赋值 $txt1 = “Hello” $txt1 .= ” world!” 现在 $txt1 包含 “Hello world!”

    PHP 递增/递减运算符

    运算符 名称 描述
    ++$x 前递增 $x 加一递增,然后返回 $x
    $x++ 后递增 返回 $x,然后 $x 加一递增
    –$x 前递减 $x 减一递减,然后返回 $x
    $x– 后递减 返回 $x,然后 $x 减一递减

    PHP 比较运算符

    PHP 比较运算符用于比较两个值(数字或字符串):

    运算符 名称 例子 结果
    == 等于 $x == $y 如果 $x 等于 $y,则返回 true。
    === 全等(完全相同) $x === $y 如果 $x 等于 $y,且它们类型相同,则返回 true。
    != 不等于 $x != $y 如果 $x 不等于 $y,则返回 true。
    <> 不等于 $x <> $y 如果 $x 不等于 $y,则返回 true。
    !== 不全等(完全不同) $x !== $y 如果 $x 不等于 $y,或它们类型不相同,则返回 true。
    > 大于 $x > $y 如果 $x 大于 $y,则返回 true。
    < 小于 $x < $y 如果 $x 小于 $y,则返回 true。
    >= 大于或等于 $x >= $y 如果 $x 大于或者等于 $y,则返回 true.
    <= 小于或等于 $x <= $y 如果 $x 小于或者等于 $y,则返回 true。

    PHP 逻辑运算符

    运算符 名称 例子 结果
    and 与 $x and $y 如果 $x 和 $y 都为 true,则返回 true。
    or 或 $x or $y 如果 $x 和 $y 至少有一个为 true,则返回 true。
    xor 异或 $x xor $y 如果 $x 和 $y 有且仅有一个为 true,则返回 true。
    && 与 $x && $y 如果 $x 和 $y 都为 true,则返回 true。
    || 或 $x || $y 如果 $x 和 $y 至少有一个为 true,则返回 true。
    ! 非 !$x 如果 $x 不为 true,则返回 true。

    PHP 数组运算符

    PHP 数组运算符用于比较数组:

    运算符 名称 例子 结果
    + 联合 $x + $y $x 和 $y 的联合(但不覆盖重复的键)
    == 相等 $x == $y 如果 $x 和 $y 拥有相同的键/值对,则返回 true。
    === 全等 $x === $y 如果 $x 和 $y 拥有相同的键/值对,且顺序相同类型相同,则返回 true。
    != 不相等 $x != $y 如果 $x 不等于 $y,则返回 true。
    <> 不相等 $x <> $y 如果 $x 不等于 $y,则返回 true。
    !== 不全等 $x !== $y 如果 $x 与 $y 完全不同,则返回 true。
  • nginx 常见正则匹配符号表示

    nginx 常见正则匹配符号表示

    ^ 匹配字符串的开始位置;
     
    $ 匹配字符串的结束位置;
     
    .* .匹配任意字符,*匹配数量0到正无穷;
     
    \. 斜杠用来转义,\.匹配 .    特殊使用方法,记住记性了;
     
    (值1|值2|值3|值4):或匹配模式,例:(jpg|gif|png|bmp)匹配jpg或gif或png或bmp
     
    i不区分大小写
    

    一.正则表达式匹配,其中:

    ~ 为区分大小写匹配
    ~* 为不区分大小写匹配
    !~和!~*分别为区分大小写不匹配及不区分大小写不匹配

    二.文件及目录匹配,其中:

    -f和!-f用来判断是否存在文件
    -d和!-d用来判断是否存在目录
    -e和!-e用来判断是否存在文件或目录
    -x和!-x用来判断文件是否可执行

    三.rewrite指令的最后一项参数为flag标记,flag标记有:

    1. last 相当于apache里面的[L]标记,表示rewrite。
    2. break本条规则匹配完成后,终止匹配,不再匹配后面的规则。
    3. redirect 返回302临时重定向,浏览器地址会显示跳转后的URL地址。
    4. permanent 返回301永久重定向,浏览器地址会显示跳转后的URL地址。

    使用last和break实现URI重写,浏览器地址栏不变。而且两者有细微差别,使用alias指令必须用last标记;使用proxy_pass指令时,需要使用break标记。Last标记在本条rewrite规则执行完毕后,会对其所在server{……}标签重新发起请求,而break标记则在本条规则匹配完成后,终止匹配。
    例如:如果我们将类似URL /photo/123456 重定向到/path/to/photo/12/1234/123456.png
    rewrite “/photo/([0-9]{2})([0-9]{2})([0-9]{2})”/path/to/photo/$1/$1$2/$1$2$3.png ;

    四.NginxRewrite 规则相关指令

    1.break指令
    使用环境:server,location,if;
    该指令的作用是完成当前的规则集,不再处理rewrite指令。

    2.if指令
    使用环境:server,location
    该指令用于检查一个条件是否符合,如果条件符合,则执行大括号内的语句。If指令不支持嵌套,不支持多个条件&&和||处理。

    3.return指令
    语法:returncode ;
    使用环境:server,location,if;
    该指令用于结束规则的执行并返回状态码给客户端。
    示例:如果访问的URL以”.sh”或”.bash”结尾,则返回403状态码
    location ~ .*\.(sh|bash)?$
    {
    return 403;
    }

    4.rewrite 指令
    语法:rewriteregex replacement flag
    使用环境:server,location,if
    该指令根据表达式来重定向URI,或者修改字符串。指令根据配置文件中的顺序来执行。注意重写表达式只对相对路径有效。如果你想配对主机名,你应该使用if语句,示例如下:

    if( $host ~* www\.(.*) )
    {
    set $host_without_www $1;
    rewrite ^(.*)$  http://$host_without_www$1permanent;
    }

    5.Set指令
    语法:setvariable value ; 默认值:none; 使用环境:server,location,if;
    该指令用于定义一个变量,并给变量赋值。变量的值可以为文本、变量以及文本变量的联合。
    示例:set$varname “hello world”;

    6.Uninitialized_variable_warn指令
    语法:uninitialized_variable_warnon|off
    使用环境:http,server,location,if
    该指令用于开启和关闭未初始化变量的警告信息,默认值为开启。

    五.Nginx的Rewrite规则编写实例

    1.当访问的文件和目录不存在时,重定向到某个php文件

    if( !-e $request_filename )
    {
    rewrite ^/(.*)$ index.php last;
    }

    2.目录对换 /123456/xxxx ====> /xxxx?id=123456
    rewrite ^/(\d+)/(.+)/ /$2?id=$1 last;

    3.如果客户端使用的是IE浏览器,则重定向到/ie目录下

    if( $http_user_agent  ~ MSIE)
    {
    rewrite ^(.*)$ /ie/$1 break;
    }

    4.禁止访问多个目录

    location ~ ^/(cron|templates)/
    {
    deny all;
    break;
    }

    5.禁止访问以/data开头的文件

    location ~ ^/data
    {
    deny all;
    }

    6.禁止访问以.sh,.flv,.mp3为文件后缀名的文件

    location ~ .*\.(sh|flv|mp3)$
    {
    return 403;
    }

    7.设置某些类型文件的浏览器缓存时间

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
    expires 30d;
    }
    location ~ .*\.(js|css)$
    {
    expires 1h;
    }

    8.给favicon.ico和robots.txt设置过期时间;
    这里为favicon.ico为99天,robots.txt为7天并不记录404错误日志

    location ~(favicon.ico) {
    log_not_found off;
    expires 99d;
    break;
    }
    location ~(robots.txt) {
    log_not_found off;
    expires 7d;
    break;
    }

    9.设定某个文件的过期时间;这里为600秒,并不记录访问日志

    location ^~ /html/scripts/loadhead_1.js {
    access_log  off;
    root /opt/lampp/htdocs/web;
    expires 600;
    break;
    }

    10.文件反盗链并设置过期时间
    这里的return412 为自定义的http状态码,默认为403,方便找出正确的盗链的请求
    “rewrite ^/ http://img.chunblog.com/leech.gif;”显示一张防盗链图片
    “access_log off;”不记录访问日志,减轻压力
    “expires 3d”所有文件3天的浏览器缓存

    location ~*^.+\.(jpg|jpeg|gif|png|swf|rar|zip|css|js)$ {
    valid_referers none blocked *.chunblog.com*.linuxidc.net localhost 208.97.167.194;
    if ($invalid_referer) {
    rewrite ^/ http://img.chunblog.com/leech.gif;
    return 412;
    break;
    }
    access_log  off;
    root /opt/lampp/htdocs/web;
    expires 3d;
    break;
    }

    11.只允许固定ip访问网站,并加上密码

    root /opt/htdocs/www;
    allow  208.97.167.194; 
    allow  222.33.1.2; 
    allow  231.152.49.4;
    deny  all;
    auth_basic “C1G_ADMIN”;
    auth_basic_user_file htpasswd;

    12将多级目录下的文件转成一个文件,增强seo效果
    /job-123-456-789.html 指向/job/123/456/789.html
    rewrite^/job-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /job/$1/$2/jobshow_$3.html last;

    13.文件和目录不存在的时候重定向:

    if (!-e $request_filename) {
    proxy_pass http://127.0.0.1;
    }

    14.将根目录下某个文件夹指向2级目录
    如/shanghaijob/ 指向 /area/shanghai/
    如果你将last改成permanent,那么浏览器地址栏显是/location/shanghai/
    rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2last;
    上面例子有个问题是访问/shanghai时将不会匹配
    rewrite ^/([0-9a-z]+)job$ /area/$1/ last;
    rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2last;
    这样/shanghai 也可以访问了,但页面中的相对链接无法使用,
    如./list_1.html真实地址是/area/shanghia/list_1.html会变成/list_1.html,导至无法访问。
    那我加上自动跳转也是不行咯
    (-d $request_filename)它有个条件是必需为真实目录,而我的rewrite不是的,所以没有效果
    if (-d $request_filename){
    rewrite ^/(.*)([^/])$ http://$host/$1$2/permanent;
    }
    知道原因后就好办了,让我手动跳转吧
    rewrite ^/([0-9a-z]+)job$ /$1job/permanent;
    rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2last;

    15.域名跳转

    server
    {
    listen      80;
    server_name  jump.chunblog.com;
    index index.html index.htm index.php;
    root  /opt/lampp/htdocs/www;
    rewrite ^/ https://www.chunblog.com/;
    access_log  off;
    }

    16.多域名转向

    server_name  www.chunblog.com 123.chunblog.com;
    index index.html index.htm index.php;
    root  /opt/lampp/htdocs;
    if ($host ~ "chunblog\.com") {
    rewrite ^(.*) https://www.chunblog.com $1permanent;
    }

    六.nginx全局变量

    arg_PARAMETER    #这个变量包含GET请求中,如果有变量PARAMETER时的值。
    args                    #这个变量等于请求行中(GET请求)的参数,如:foo=123&bar=blahblah;
    binary_remote_addr #二进制的客户地址。
    body_bytes_sent    #响应时送出的body字节数数量。即使连接中断,这个数据也是精确的。
    content_length    #请求头中的Content-length字段。
    content_type      #请求头中的Content-Type字段。
    cookie_COOKIE    #cookie COOKIE变量的值
    document_root    #当前请求在root指令中指定的值。
    document_uri      #与uri相同。
    host                #请求主机头字段,否则为服务器名称。
    hostname          #Set to themachine’s hostname as returned by gethostname
    http_HEADER
    is_args              #如果有args参数,这个变量等于”?”,否则等于”",空值。
    http_user_agent    #客户端agent信息
    http_cookie          #客户端cookie信息
    limit_rate            #这个变量可以限制连接速率。
    query_string          #与args相同。
    request_body_file  #客户端请求主体信息的临时文件名。
    request_method    #客户端请求的动作,通常为GET或POST。
    remote_addr          #客户端的IP地址。
    remote_port          #客户端的端口。
    remote_user          #已经经过Auth Basic Module验证的用户名。
    request_completion #如果请求结束,设置为OK. 当请求未结束或如果该请求不是请求链串的最后一个时,为空(Empty)。
    request_method    #GET或POST
    request_filename  #当前请求的文件路径,由root或alias指令与URI请求生成。
    request_uri          #包含请求参数的原始URI,不包含主机名,如:”/foo/bar.php?arg=baz”。不能修改。
    scheme                #HTTP方法(如http,https)。
    server_protocol      #请求使用的协议,通常是HTTP/1.0或HTTP/1.1。
    server_addr          #服务器地址,在完成一次系统调用后可以确定这个值。
    server_name        #服务器名称。
    server_port          #请求到达服务器的端口号。

    七.Apache和Nginx规则的对应关系

    Apache的RewriteCond对应Nginx的if
    Apache的RewriteRule对应Nginx的rewrite
    Apache的[R]对应Nginx的redirect
    Apache的[P]对应Nginx的last
    Apache的[R,L]对应Nginx的redirect
    Apache的[P,L]对应Nginx的last
    Apache的[PT,L]对应Nginx的last

  • 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
  • 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" 保存退出即可。

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

  • CentOS7 Firewall 常用命令

    CentOS7 Firewall 常用命令

    Firewall介绍

    防火墙守护 firewalld 服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持 ipv4 与 ipv6,并支持网桥,采用 firewall-cmd (command) 或 firewall-config (gui) 来动态的管理 kernel netfilter 的临时或永久的接口规则,并实时生效而无需重启服务。

    Firewall 能将不同的网络连接归类到不同的信任级别,Zone 提供了以下几个级别
    drop: 丢弃所有进入的包,而不给出任何响应
    block: 拒绝所有外部发起的连接,允许内部发起的连接
    public: 允许指定的进入连接
    external: 同上,对伪装的进入连接,一般用于路由转发
    dmz: 允许受限制的进入连接
    work: 允许受信任的计算机被限制的进入连接,类似 workgroup
    home: 同上,类似 homegroup
    internal: 同上,范围针对所有互联网用户
    trusted: 信任所有连接

    Firewall的使用

    systemctl start firewalld.service         # 启动,
    systemctl enable firewalld.service        # 开机启动
    systemctl stop firewalld.service          # 关闭
    systemctl disable firewalld.service       # 取消开机启动
    

    Firewall开放、关闭端口

    --permanent表示设置为持久开放端口,重启后还是生效的 不加开放临时端口,重启失效
    firewall-cmd --zone=public --add-port=8080/tcp --permanent      #开放持久TCP 8080 端口
    firewall-cmd --zone=public --add-port=8080/udp --permanent      #开放持久UDP 8080 端口
    firewall-cmd --zome=public --add-port=8000-9000/udp --permanent #开放持久UDP 8000-9000 端口
    firewall-cmd --zone=public --remove-port=8080/tcp --permanent   #关闭持久TCP 8080 端口
    firewall-cmd --zone=public --remove-port=8080/udp --permanent   #关闭TCP 8080 端口
    firewall-cmd --reload      #重新载入配置 添加规则之后 需要执行此命令使之生效
    firewall-cmd --list-all    #查看防火墙规则,可查到你当前开放的端口信息
    

    开放服务,ftp服务=端口21 http=80

    firewall-cmd --get-services                   ##列出支持的服务
    firewall-cmd --add-service=ftp --permanent    ##持久开放ftp服务
    firewall-cmd --remove-service=ftp --permanent ##移除ftp服务
    firewall-cmd --reload      #重新载入配置 添加规则之后 需要执行此命令使之生效