redhat下使用mysql,python,redis,httpsqs,shell脚本开机自启动的一些问题与解决

先给上一些网址,里面有各种问题与解决

1. httpsqs官方网址

2. python安装与使用mysql

3.mysql插入数据时:Incorrect string value

4.mysql显示中文乱码

5.修改mysql默认编码

6.linux开机以root身份启动一个脚本


注意:一下的操作建议全部以root身份运行,不然会出现很多权限问题。。。很烦恼

其实碰到的问题都是一些小问题,因为自己之前都没接触过,所以记下来,方便以后使用。我想做的大致流程是,现有几个python脚本,python脚本里都含有死循环,然后在shell脚本里执行python脚本,接着开机的时候自动执行这些shell脚本,同时,我还需要将httpsqs服务,redis服务,mysql服务开机自启动,因为我的python脚本里使用到了这些服务,因此这些服务要在我的脚本执行之前先开启

启动httpsqs的命令为:httpsqs -d -l (httpsqs服务地址) -p (httpsqs服务端口) -x (httpsqs数据存放地址)

启动redis服务的命令为:/home/bigdata/redis-2.8.12/src/redis-server /home/bigdata/redis-2.8.12/redis.conf  ;其中,/home/bigdata/redis-2.8.12/redis.conf为你的redis服务的配置文件

启动mysql服务的命令为:/etc/rc.d/init.d/mysqld start


在使用mysql的时候,因为我要往数据库里插入中文数据,但是mysql默认编码并不支持中文,因而显示的数据中文部分全是问号,即乱码,查看mysql的默认编码如下(如何查看可以参见 5.修改mysql默认编码)

redhat下使用mysql,python,redis,httpsqs,shell脚本开机自启动的一些问题与解决_第1张图片

可以看到默认并不支持中文

我们需要修改默认配置文件,我的时redhat服务器,默认配置文件位于/etc/my.cnf

使用vi编辑器打开此文件,修改如下

redhat下使用mysql,python,redis,httpsqs,shell脚本开机自启动的一些问题与解决_第2张图片

注意:文件里面之前没有 [client],我自己加的,因此,如果你的文件里没有那个就自己加上哪个;同时注意,[mysqld]下的为 character-set-server=utf8 而不是像[client]下面一样为 default-character-set=utf8,否则启动 mysql会提示:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
打开日志查看就会发现日志报错为:
mysqld: unknown variable 'default-character-set=utf8'


修改完之后,我们再看看它的默认编码,如下:

redhat下使用mysql,python,redis,httpsqs,shell脚本开机自启动的一些问题与解决_第3张图片

修改成功了,但是当我们在代码里往mysql数据库插入中文数据时,问题又来了,如下:

Incorrect string value,详情参见3.mysql插入数据时:Incorrect string value

我的修改后的代码如下:


redhat下使用mysql,python,redis,httpsqs,shell脚本开机自启动的一些问题与解决_第4张图片

说明:连接数据库的时候设置连接的编码:charset='utf8'

对于字段时中文的,需要在创建表的时候指定其编码,即代码中创建表里的 author text CHARSET utf8,不过好像如果之前设置了Mysql的默认编码,这步不用也可以。

至此,mysql中文乱码的问题解决了


再来说下httpsqs吧,不知道为什么,突然不能在浏览器里查看队列状态了,使用的时候老碰到这个问题:

以为是httpsqs没开启,原来是httpsqs已经开启了,再使用相同的端口开启时便会报错了,这时我们可以使用命令:pkill httpsqs 杀死httpsqs,再开启这个端口就没问题了,如下:

redhat下使用mysql,python,redis,httpsqs,shell脚本开机自启动的一些问题与解决_第5张图片


接下来再说说mysql,运行 mysql -u root -p的时候出现如下错误:

redhat下使用mysql,python,redis,httpsqs,shell脚本开机自启动的一些问题与解决_第6张图片

又一个问题:

redhat下使用mysql,python,redis,httpsqs,shell脚本开机自启动的一些问题与解决_第7张图片

这里首先要一开始就使用root身份运行,而不要先普通用户,然后再su切换到root运行,具体问题再网上查查。。。


再说下redis,运行redis时出现如下问题:

这是因为redis服务没有开启,开启:/home/bigdata/redis-2.8.12/src/redis-server /home/bigdata/redis-2.8.12/redis.conf  就行了。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

今天使用 redis的时候我想多台电脑连接安装了redis服务的机器,发现在装有redis-server的机器上连接redis-server时,连接的ip要设置为127.0.0.1,不能设置为本机器的ip,否则出现如下问题:

[T:2015-09-23 16:08:49,684|F:URLUnique.py-mfUniqueURL|L:80|L:ERROR]:Traceback (most recent call last):
  File "URLUnique.py", line 59, in mfUniqueURL
    if self.m_redisOb.exists(pageMD5) is True:
  File "/usr/local/lib/python2.7/dist-packages/redis/client.py", line 852, in exists
    return self.execute_command('EXISTS', name)
  File "/usr/local/lib/python2.7/dist-packages/redis/client.py", line 575, in execute_command
    connection.send_command(*args)
  File "/usr/local/lib/python2.7/dist-packages/redis/connection.py", line 558, in send_command
    self.send_packed_command(self.pack_command(*args))
  File "/usr/local/lib/python2.7/dist-packages/redis/connection.py", line 534, in send_packed_command
    self.connect()
  File "/usr/local/lib/python2.7/dist-packages/redis/connection.py", line 438, in connect
    raise ConnectionError(self._error_message(e))
ConnectionError: Error 111 connecting to 192.168.11.178:6379. Connection refused.

然而其他机器连接装有redis-server的机器时,连接ip设置为装有redis-server机器的固定ip却能连上。。。

即假设redis-server机器ip为 192.168.11.178,未装redis-server的机器ip为192.168.11.176,那么如果想在192.168.11.178上连接redis-server,则客户端配置的redis连接ip需为127.0.0.1而非 192.168.11.178;若在192.168.11.176上连接192.168.11.178的redis-server,则其客户端redis配置连接ip为192.168.11.178却可以连上

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

最后再来说下将这些python代码写入shell脚本然后再随机启动吧

shell脚本代码:

开启各个服务代码(start_service.sh)

redhat下使用mysql,python,redis,httpsqs,shell脚本开机自启动的一些问题与解决_第8张图片

服务端代码(start_server.sh)

redhat下使用mysql,python,redis,httpsqs,shell脚本开机自启动的一些问题与解决_第9张图片

这里我在每条python代码后面都加了一个 & ,为的是让这条python代码在后台执行,因为这些python脚本里都含有死循环

客户端代码(start_client.sh)

redhat下使用mysql,python,redis,httpsqs,shell脚本开机自启动的一些问题与解决_第10张图片

这里每条python指令后面也都有一个&符号,原理与上面类似,同时有个循环,即一次性开启5个

好了,接下来就要把这些shell脚本开机自启动了,最简便的方法便是在/etc/rc.d/rc.local文件里加入启动这些shell脚本的命令,加入之后的文件为:

redhat下使用mysql,python,redis,httpsqs,shell脚本开机自启动的一些问题与解决_第11张图片

这里先定位到shell脚本的目录,然后执行shell脚本,每条shell脚本后面也加了一个 &,原理与上面类似

到这里就全部结束了,看下运行结果:

redis结果:

redhat下使用mysql,python,redis,httpsqs,shell脚本开机自启动的一些问题与解决_第12张图片

mysql结果

redhat下使用mysql,python,redis,httpsqs,shell脚本开机自启动的一些问题与解决_第13张图片

支持中文。。。


最后再提醒下:建议直接使用root身份操作,这样会省去很多麻烦。。。



你可能感兴趣的:(redis,mysql,shell,redhat,乱码)