Installation

Warning

This project is still in an experimental state and may be unstable. Proceed at your own risk.

Note

This tutorial assumes you are using Linux and plan on installing MangAdventure under /var/www/my-site.com/. The instructions are similar for Windows and MacOS.

Install the project

First, install the following prerequisites:

Afterwards, set up a virtualenv for MangAdventure with the following commands:

# This will install a virtualenv under /var/www/my-site.com/
python -m virtualenv /var/www/my-site.com/

# This will activate the virtualenv
source /var/www/my-site.com/bin/activate

Finally, install MangAdventure inside the activated virtualenv:

pip install -e "git+https://github.com/mangadventure/MangAdventure@v0.5.3#egg=MangAdventure"

MangAdventure also optionally provides Content-Security-Policy configuration via the django-csp package. You can install it if you’d like some extra security:

pip install django-csp

Configure the settings

Before proceeding, there are some settings you will need to configure. To configure them, copy the .env.example file to .env and edit it.

Create the database

This command will set up the database for your site.

mangadventure makemigrations
mangadventure migrate

Collect the static files

This command will collect the static files into static/.

mangadventure collectstatic

Create an administrator account

You will be prompted for a name, email, and password. This account is needed to access the /admin-panel/ page. You can create multiple administrator accounts.

mangadventure createsuperuser

Migrate from FoolSlide2

You can import your data from a FoolSlide2 installation.
If you weren’t using FoolSlide2 before, feel free to skip to the next section.

Limitations

  • Series will be imported without authors & artists.
  • Users & team members will not be imported.
  • Chapters with multiple teams will be imported without the teams.
  • Languages are not yet supported and thus cannot be imported.
  • This has only been tested with FoolSlide2 v2.3.3 using a MySQL database.

First, export the data from FoolSlide2:

  • Visit your site’s phpMyAdmin page.
  • Click on your FoolSlide2 database.
  • Go to the Export tab.
  • In Format: select XML and click Go.
  • Save the generated file somewhere and copy its path.

Next, import the data into MangAdventure:

  • Replace {root} with the path to your FoolSlide2 installation.
  • Replace {data} with the path to the XML file you exported.
mangadventure fs2import "{root}" "{data}"

Load Categories

If you want to load an initial set of manga categories imported from MangaUpdates, run this command:

mangadventure loaddata categories

Set up the server

To set up the server you will need Apache, Nginx, or any other web server that supports Django.
Make sure the user running the web server and uwsgi has the necessary permissions to access all the relevant files.
Also, create the media and log directories beforehand to avoid possible permission errors.
Lastly, don’t forget to run uwsgi after setting up the server:
(For more details, check the uWSGI docs.)
uwsgi --socket "127.0.0.1:25432" --chdir "/var/www/my-site.com/" --module "MangAdventure.wsgi"

Apache example

Apache requires mod_wsgi.

<VirtualHost *:80>
    ServerName my-site.com
    ServerAlias www.my-site.com
    ServerAdmin you@email.com
    LimitRequestBody 51000000

    Alias /static /var/www/my-site.com/src/mangadventure/static
    <Directory /var/www/my-site.com/src/mangadventure/static>
        Require all granted
    </Directory>

    Alias /media /var/www/my-site.com/src/mangadventure/media
    <Directory /var/www/my-site.com/src/mangadventure/MangAdventure/media>
        Require all granted
    </Directory>

    WSGIDaemonProcess my-site python-path=/var/www/my-site.com/src/mangadventure/MangAdventure:/var/www/my-site.com/lib/python3.6/site-packages
    WSGIProcessGroup my-site
    WSGIScriptAlias / /var/www/my-site.com/src/mangadventure/MangAdventure/wsgi.py process-group=my-site
    <Directory /var/www/my-site.com/src/mangadventure/MangAdventure>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>
</VirtualHost>

Nginx example

Nginx requires uwsgi.

server {
    listen 80;
    server_name my-site.com www.my-site.com;
    charset utf-8;
    client_max_body_size 51M;

    location /static {
        alias /var/www/my-site.com/src/mangadventure/static;
    }

    location /media  {
        alias /var/www/my-site.com/src/mangadventure/media;
    }

    location / {
        uwsgi_pass 127.0.0.1:25432;
        include uwsgi_params;
    }
}

Updating

First, install the latest release from GitHub:
(Replace {tag} with the latest release tag.)
pip install -U "git+https://github.com/mangadventure/MangAdventure@{tag}#egg=MangAdventure"

Then, check .env.example for new variables. If there are any, set them in .env.

Finally, update the database:

mangadventure makemigrations
mangadventure migrate