关于seafile启动的问题解决

过了一个国庆,同事反映说seafile服务挂掉了,无法正常连接。

刚才解决了一下,把相关问题简要记录一下:

1.首先连接阿里云,获得相关IP地址(如果已知IP地址,则不需要该步骤)

2.通过xshell或者其他ssh工具连接上去(此类工具很多,比如putty、secureCRT、MobaXterm Personal Edition等)

3.首次查看seafile进程是否正常: ps -ef | grep seafile ;

4.尝试启动seafile服务,并监控和检查相关log,看是否正常:

报错信息如下:

$ ./seafile.sh start
SQLException: Failed to start connection pool -- Access denied for user 'root'@'localhost' (using password: YES)
 raised in ConnectionPool_start at src/db/ConnectionPool.c:287
failed to run "ccnet-server -t"
5.在上面这一步报错,则相应需要解决该问题。
下面是一些解决步骤:
(1)查看相关log位置:vi /home/haochuang/Seafile/logs/seafile.log,更多log:
[root@AY140714154144069b22Z ~]# ls -la /home/tuyou/Seafile/logs
total 6236
drwxr-xr-x 2 root  root     4096 Oct 10 15:06 .
drwxrwxr-x 8 haochuang haochuang    4096 Oct 10 11:03 ..
-rw-r--r-- 1 root  root   213261 Oct 10 15:07 ccnet.log
-rw-r--r-- 1 root  root    24055 Oct 10 15:06 controller.log
-rw-r--r-- 1 root  root   222309 Oct 10 15:06 seafile.log
-rw-r--r-- 1 root  root  5892209 Oct 10 10:50 seahub_django_request.log
-rw-r--r-- 1 root  root        0 May 13 14:00 seahub.log
(2)检查磁盘空间是否足够:df -lh
(3)查看当前已经启动的seafile服务,通过 pgrep 命令 来检查 seafile/seahub 的进程是否在运行:
$ pgrep -f seafile-controller # 检查 seafile 进程是否在运行
$ pgrep -f "manage.py run_gunicorn" # 检查 seahub 进程是否在运行
 彻底杀掉相关服务,要强行杀死 seafile/seahub 进程,把上面的 pgrep 换成 pkill 命令即可:
$ pkill -f seafile-controller 
$ pkill -f "manage.py run_gunicorn"
$ pkill -f httpserver
重启seafile:
./seafile.sh restart # 停止当前的 seafile 进程,然后重启 seafile
./seahub.sh restart # 停止当前运行的 seahub 进程,并在 8000 端口重新启 seahub
 
(4)检查相关musql配置情况,并直接手动连接;
相关信息也可以查看seafile官网帮助信息:http://manual-cn.seafile.com/deploy/deploy/using_mysql.html
(5)重置mysql数据库账号密码,由于该机器上面我当时配置了seafile和redmine,端口分别为 3306 和 3307,担心会有影响的话,可以备份部分关键文件:
发现我的mysql连接时候报错信息如下:
 Mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost'问题的解决
查了一下,发现这种问题需要强行重新修改密码,方法如下:

/etc/init.d/mysqld stop   (service mysqld stop )
/usr/bin/mysqld_safe --skip-grant-tables
另外开个SSH连接
[root@localhost ~]# mysql
mysql>use mysql
mysql>update user set password=password("123456") where user="root";
mysql>flush privileges;
mysql>exit
 

(6)修改完成之后再次重启seafile,发现基本正常了。

(7)其他补充信息:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

关于该问题,在解决过程中,看到网上的朋友说有多种解决办法:

Red Hat Enterprise Linux 5服务器上mysql启动报错:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
原因1-启动命令错误:
我开始的时候直接输入命令:mysql start 
正确的启动命令是:
/etc/rc.d/init.d/mysql start


原因2-配置文件错误:
检查etc下面的my.cnf如下内容:
[client]
#password   = your_password
port     = 3306
socket     = /usr/mysql-data/mysql.sock
# Here follows entries for some specific programs
# The MySQL server
[mysqld]
port     = 3306
socket     = /usr/mysql-data/mysql.sock


原因3-启动文件错误:
需要修改MySQL启动脚本/etc/rc.d/init.d/mysql,
其中datadir=   ?     一行检查下!

原因4-前提是你在使用php连接时候报错!
在/etc/php.ini修改mysql.default_socket的值设置为:
mysql.default_socket=/var/lib/mysql/mysql.sock
回到终点设置个连接:ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
(在/etc/php.ini中mysql.default_socket这个文件中,关于mysql.default_socket的值的说明是这样的,
;Default socket name for local MySQL connects. If empty, uses the built-in MySQL defaults.
这个值一开始是空的,也就是说,如果我们不主动去修改的话,php将会使用内建在mysql中的默认值)
 
另一篇文章:
Mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost'问题的解决

这种问题需要强行重新修改密码,方法如下:

/etc/init.d/mysqld stop   (service mysqld stop )
/usr/bin/mysqld_safe --skip-grant-tables
另外开个SSH连接
[root@localhost ~]# mysql
mysql>use mysql
mysql>update user set password=password("123456") where user="root";
mysql>flush privileges;
mysql>exit

pkill -KILL -t pts/0 可将pts为0的**用户(之前运行mysqld_safe的用户窗口)强制踢出
正常启动 MySQL:/etc/init.d/mysqld start   (service mysqld start)

注意:另外还遇到需要service mysql star才能启动service mysql stop才能停止。
还有直接使用mysql不能找到命令,错误为“bash: mysql: command not found”可以直接**mysql的安装目录中的bin文件夹跟绝对路径运行命令,还有的需要加./mysql 才能执行。
 
......
总之,其实很多问题乍一看,被蒙住了,但是只要静下心看一下,耐心去解决,其实很多问题并不是问题。
 
 
posted @ 2015-10-10 16:11  念槐聚  阅读(9902)  评论(0编辑  收藏  举报