2018年5月

Nginx访问控制

1. 用户认证

用户认证用来控制不想让其它用户访问的地址,在虚拟主机配置文件中这样定义:

server
{
    listen 80;
    server_name example.com;
    index index.html index.htm index.php;
    root /data/www/example;

    location  /{
        auth_basic              "Auth";
        auth_basic_user_file   /usr/local/nginx/conf/htpasswd;
    }
}

然后使用Apache的密码工具生成用户密码文件:

htpasswd -c /usr/local/nginx/conf/htpasswd username

- 阅读剩余部分 -

MySQL的三种常见sql_mode

MySQL数据库的中有一个环境变量sql_mode,定义了mysql应该支持的sql语法,数据校验等!

我们可以通过以下方式查看当前数据库使用的sql_mode:

mysql> select @@sql_mode;
+--------------------------------------------+
| @@sql_mode                                 |
+--------------------------------------------+
| STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------+
1 row in set (0.00 sec)

以及:

mysql> show variables like 'sql_mode%'\G
*************************** 1. row ***************************
Variable_name: sql_mode
        Value: STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
1 row in set (0.03 sec)

- 阅读剩余部分 -

MyISAM与InnoDB的区别是什么?

InnoDB和MyISAM是MySQL常用的两个表类型,这两个表类型各有优劣,视具体应用而定。

基本的差别为:

  • MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。
  • MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持以及外部键等高级数据库功能。

一、存储结构

  • MyISAM:每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名是.MYI (MYIndex)。
  • InnoDB:所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),InnoDB表的大小只受限于操作系统文件的大小,一般为2GB。

- 阅读剩余部分 -

Nginx简单配置

一、Nginx虚拟主机

在Nginx中,我们可以使用多个配置文件来更加人性化的管理不同的站点,首先需要在Nginx的配置文件,nginx.conf中http部分加入这样一行:

    include vhost/*.conf

在当前目录下创建vhost目录,然后在vhost目录下创建一个.conf配置文件,简单的配置大致如下:

server
{
    listen 80 default_server;
    server_name default.com;
    index index.html index.htm index.php;
    root /data/www/default;
}

default_server:这个标记表示默认虚拟主机。

- 阅读剩余部分 -

常见的502错误排查思路

1.配置错误

因为nginx找不到php-fpm了,所以报错,一般是fastcgi_pass后面的路径配置错误了,后面可以是socket或者是ip:port

2.资源耗尽
lnmp架构在处理php时,nginx直接调取后端的php-fpm服务,如果nginx的请求量偏高,我们又没有给php-fpm配置足够的子进程,那么php-fpm就会资源耗尽,一旦资源耗尽nginx找不到php-fpm就会出现502错误,

解决办法是去调整php-fpm.conf中的pm.max_children数值,使其增加,但是也不能无限增加,毕竟资源有限。
一般4G内存机器如果跑php-fpm和nginx,不跑mysql可以设置为150,8G为300以此类推。

- 阅读剩余部分 -

php不解析的排查步骤

看一下有没有加载libphp5.so

/usr/local/apache2/bin/apachectl -M

查看配置文件中是否有

AddType application/x-httpd-php .php

看看有没有加入index

DirectoryIndex index.html index.htm index.php

不要忘记重启apache

还有一个不容忽视的问题,就是检查你的selinux是否开启
命令: getenforce 如果结果是 Enforcing 就说明是打开的
关闭: setenforce 0
还要在配置文件中配置一把enforcing改为disabled