Seahub won't start on new Centos 8 install

I’m struggling to upgrade an existing v9 installation to v10 so thought I’d check I can do a clean install but I can’t get that working either. I’ve included the detailed install instructions for installation on Centos v8, MariaDB v11.1 and Python v3.9.16. It fails to start the gunicorn web server in seahub.sh. I’ve added debug statements to seahub.sh and all the parameter seem correct. There is nothing written to the console and nothing written to the logs AFAIK. Some observations:

  1. As documented in another post, I had to add a symbolic link to lib64 because it’s missing from a clean install (that’s a bug IMO)
  2. I’ve not installed memcached yet because the Centos v8 instructions don’t work (libmemcached is unknown). I’ll revisit that later but would have prevent Seahub from starting?
  3. Next steps would be to start Seafile & Seahub services on boot but that’s not critical at this stage.
  4. Nginx not installed yet but once again, it should work on port 8000.
  5. Follow very similar steps for v9 and it works so it’s some quirk with v10.

CentOS v8.x: 4 vCPU, 2GB RAM, 128GB OS, DHCP network
Install options: UK; automatic partitions; Software: server; Time zone: London; Network: on, auto connect, DHCP; root pwd: XYZ; User: itsystem; pwd: XYZ; admin
Switch to root: sudo -i
CentOS updates: dnf -y update
Install release package library: dnf -y install epel-release
Install some useful tools: dnf -y install atop htop
MariaDB latest version install (11.1)::
  Download MariaDB repo setup script: cd /tmp && wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
  Enable script: chmod +x mariadb_repo_setup
  Install the latest repo: ./mariadb_repo_setup
  Install MariaDB server: dnf -y install mariadb-server mariadb-devel
  Start MariaDB server and enable service: systemctl enable mariadb --now
  Secure the installation with roo pwd=XYZ: mariadb-secure-installation
Install Python 3.9.16 (has to be compiled)::
  Install compiler and modules: dnf -y install gcc openssl-devel bzip2-devel libffi-devel zlib-devel xz-devel
  Download Python source: cd /usr/src && wget https://www.python.org/ftp/python/3.9.16/Python-3.9.16.tgz
  Unpack source: tar -xzf Python-3.9.16.tgz
  Change to source code folder: cd Python-3.9.16
  Configure compilation: ./configure --enable-optimizations
  Compile but leave old Python in place: make && make install
  Remove archive: rm /usr/src/Python-3.9.16.tgz -f
  Create symbolic link for python3: ln -s /usr/local/bin/python3.9 /usr/bin/python3
  Create symbolic link for pip3: ln -s /usr/local/bin/pip3.9 /usr/bin/pip3
  Upgrade pip3 23.2.1: /usr/local/bin/python3.9 -m pip install --upgrade pip
Install Seafile v10.x::
  Install Python3 packages: pip3 install wheel django==3.2.* future==0.18.* mysqlclient==2.1.* pymysql pillow==9.3.* pylibmc captcha==0.4 markupsafe==2.0.1 jinja2 sqlalchemy==1.4.3 psd-tools django-pylibmc django_simple_captcha==0.5.* pycryptodome==3.16.* cffi==1.15.1 lxml
  Create program directory: mkdir /opt/seafile && cd /opt/seafile
  Create seafile user: adduser seafile
  Change ownership of folder: chown -R seafile: /opt/seafile
  Change to seafile user: su seafile
  Download program: wget -O ‘seafile-pro-server_10.0.9_x86-64_CentOS.tar.gz’ ‘https://download.seafile.com/d/6e5297246c/files/?p=%2Fpro%2Fseafile-pro-server_10.0.9_x86-64_CentOS.tar.gz&dl=1
  Unpack archive: tar -xvf seafile-pro-server_10.0.9_x86-64_CentOS.tar.gz
  Change to seafile folder: cd seafile-pro-server-10.0.9
  Run the setup script: server=seafile2; IP=192.168.0.66: ./setup-seafile-mysql.sh
  Add symbolic link to allow Seafile to find it’s own packages with Python3: cd /opt/seafile/seafile-server-latest/seafile/lib64 && ln -s python2.7 python3
  Start seafile: ./seafile.sh start
  Start seahub: ./seahub.sh start

Seahub.sh simply reports Seahub didn’t start. I guess I might have to teach myself about gunicorn, the Python web server used by Seafile…

A useful tip found from another post about seahub not starting is to edit conf/gunicorn.conf.py and change daemon = True to daemon = False and the run seahub.sh again. I assume this on the console and displays errors - finally! This has determined that for me, the following error is present:

ModuleNotFoundError: No module named ‘djangosaml2’

That allows me to move forward significantly. So even thought the post that led me to this setting was on a three year old topic, you’d be surprised what can help.

This snippet needs adding to the documentation for debugging problems.

This was a massive help that ascertained that the following Python module is missing from the documentation:

pip3 install djangosaml2

Install this and seahub runs. I’m going to just go back and make sure I didn’t miss it in the documentation.

Later… yes, it’s missing from the documentation. It is however documented under the Ubuntu list of modules, but not the Centos v8.