美文网首页
在 CentOS 7 上安装 Seafile

在 CentOS 7 上安装 Seafile

作者: it之承影含光 | 来源:发表于2024-08-06 14:53 被阅读0次

在 CentOS 7 上安装 Seafile 的步骤如下:

  1. 更新系统并安装必要的依赖:
sudo yum update -y
sudo yum install -y python-setuptools python-imaging python-ldap MySQL-python python-memcached python-urllib3
  1. 安装 MySQL(如果尚未安装):
sudo yum install -y mariadb mariadb-server
sudo systemctl start mariadb
sudo systemctl enable mariadb
sudo mysql_secure_installation
  1. 创建 Seafile 数据库:
mysql -u root -p
CREATE DATABASE `seafile-db` CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE DATABASE `ccnet-db` CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE DATABASE `seahub-db` CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'seafile'@'localhost' IDENTIFIED BY 'your-password';
GRANT ALL PRIVILEGES ON `seafile-db`.* TO `seafile`@`localhost`;
GRANT ALL PRIVILEGES ON `ccnet-db`.* TO `seafile`@`localhost`;
GRANT ALL PRIVILEGES ON `seahub-db`.* TO `seafile`@`localhost`;
  1. 下载并解压 Seafile:
cd /opt
wget https://download.seadrive.org/seafile-server_7.1.5_x86-64.tar.gz
tar -xzf seafile-server_7.1.5_x86-64.tar.gz
  1. 安装 Seafile:
cd seafile-server-*
./setup-seafile-mysql.sh

按照提示完成安装过程。

  1. 启动 Seafile:
./seafile.sh start
./seahub.sh start
  1. 配置防火墙:
sudo firewall-cmd --zone=public --add-port=8000/tcp --permanent
sudo firewall-cmd --zone=public --add-port=8082/tcp --permanent
sudo firewall-cmd --reload
  1. 设置开机自启:

创建文件 /etc/systemd/system/seafile.service

[Unit]
Description=Seafile
After=network.target mysql.service

[Service]
Type=oneshot
ExecStart=/opt/seafile-server-latest/seafile.sh start
ExecStop=/opt/seafile-server-latest/seafile.sh stop
RemainAfterExit=yes
User=root
Group=root

[Install]
WantedBy=multi-user.target

创建文件 /etc/systemd/system/seahub.service

[Unit]
Description=Seahub
After=network.target seafile.service

[Service]
Type=oneshot
ExecStart=/opt/seafile-server-latest/seahub.sh start
ExecStop=/opt/seafile-server-latest/seahub.sh stop
RemainAfterExit=yes
User=root
Group=root

[Install]
WantedBy=multi-user.target

启用服务:

sudo systemctl enable seafile.service
sudo systemctl enable seahub.service

现在,Seafile 应该已经在您的 CentOS 7 系统上安装并运行了。您可以通过访问 http://your-server-ip:8000 来访问 Seafile Web 界面。

注意:这些步骤可能需要根据您的具体环境和 Seafile 的最新版本进行调整。始终建议查阅 Seafile 的官方文档以获取最新的安装说明。

报错

CREATE USER 'seafile'@'localhost' IDENTIFIED BY 'seafile-';
ERROR 1396 (HY000): Operation CREATE USER failed for 'seafile'@'localhost'

这个错误通常意味着用户 'seafile'@'localhost' 已经存在。在这种情况下,您可以尝试以下步骤:

  1. 首先,检查用户是否已存在:

    SELECT User, Host FROM mysql.user WHERE User = 'seafile';
    
  2. 如果用户确实存在,您有两个选择:

    a. 删除现有用户,然后重新创建:

    DROP USER 'seafile'@'localhost';
    CREATE USER 'seafile'@'localhost' IDENTIFIED BY 'seafile-';
    

    b. 或者,如果您只想更改密码,可以使用:

    ALTER USER 'seafile'@'localhost' IDENTIFIED BY 'seafile-';
    
  3. 如果以上操作仍然失败,可能是权限问题。确保您使用的是具有创建用户权限的账户(通常是 root 用户)。

  4. 如果还是遇到问题,可以尝试刷新权限后再操作:

    FLUSH PRIVILEGES;
    

    然后重试创建用户或更改密码的操作。

  5. 最后,不要忘记为新用户或修改后的用户授予必要的权限:

    GRANT ALL PRIVILEGES ON seafile_db.* TO 'seafile'@'localhost';
    GRANT ALL PRIVILEGES ON ccnet_db.* TO 'seafile'@'localhost';
    GRANT ALL PRIVILEGES ON seahub_db.* TO 'seafile'@'localhost';
    FLUSH PRIVILEGES;
    

请根据实际情况选择适合的操作。如果还遇到问题,可能需要检查 MySQL 的错误日志以获取更多信息。

Error: Failed to connect to mysql database ccnet-db: Access denied for user 'seafile'@'localhost' (using password: YES)

这个错误表明 MySQL 用户 'seafile' 没有访问 'ccnet-db' 数据库的权限。让我们来解决这个问题:

  1. 首先,确保 'ccnet-db' 数据库存在:

    SHOW DATABASES;
    

    如果不存在,创建它:

    CREATE DATABASE `ccnet-db` CHARACTER SET utf8 COLLATE utf8_general_ci;
    
  2. 然后,为 'seafile' 用户授予访问 'ccnet-db' 的权限:

    GRANT ALL PRIVILEGES ON `ccnet-db`.* TO 'seafile'@'localhost';
    
  3. 同样,确保 'seafile' 用户也有访问其他必要数据库的权限:

    GRANT ALL PRIVILEGES ON `seafile-db`.* TO 'seafile'@'localhost';
    GRANT ALL PRIVILEGES ON `seahub-db`.* TO 'seafile'@'localhost';
    
  4. 刷新权限:

    FLUSH PRIVILEGES;
    
  5. 验证权限是否正确授予:

    SHOW GRANTS FOR 'seafile'@'localhost';
    
  6. 确保在 Seafile 的配置文件中使用了正确的数据库名称、用户名和密码。通常这些配置在 ccnet.conf 文件中,路径可能是 /opt/seafile/conf/ccnet.conf 或类似位置。检查以下行:

    [Database]
    ENGINE = mysql
    HOST = 127.0.0.1
    PORT = 3306
    USER = seafile
    PASSWD = seafile-
    DB = ccnet-db
    
  7. 如果以上步骤都正确,但仍然出现错误,可以尝试重新启动 MySQL 服务:

    sudo systemctl restart mysql
    
  8. 最后,重新启动 Seafile 服务:

    ./seafile.sh restart
    ./seahub.sh restart
    

如果还是遇到问题,可能需要检查 MySQL 的错误日志(通常在 /var/log/mysql/error.log)以获取更多信息。也可以尝试使用 'seafile' 用户手动连接 MySQL 来测试连接是否成功:

mysql -u seafile -p'seafile-' ccnet-db

如果这个命令成功连接,那么问题可能出在 Seafile 的配置上。如果失败,则可能是 MySQL 的权限或网络配置问题。

相关文章

网友评论

      本文标题:在 CentOS 7 上安装 Seafile

      本文链接:https://www.haomeiwen.com/subject/ejgfkjtx.html