Difference between revisions of "ISFDB:Personal Linux Website"

From ISFDB
Jump to navigation Jump to search
(→‎Setup the MySQL server: Creating a blank version of the database)
(22 intermediate revisions by 5 users not shown)
Line 3: Line 3:
 
==Setup the Web server==
 
==Setup the Web server==
 
The ISFDB code relies on a web server. Apache is a good choice for this. The basic instructions are:
 
The ISFDB code relies on a web server. Apache is a good choice for this. The basic instructions are:
 +
 +
=== Installation ===
 +
 +
Many Linux distributions will include Apache as a package in their repository.  This may be called 'apache', 'httpd' or some variant thereof.  Alternatively you can download and install from the Apache Software Foundation:
  
 
# Download the software. For Linux this is generally a source distribution, found at [http://httpd.apache.org/download.cgi http://httpd.apache.org/download.cgi].
 
# Download the software. For Linux this is generally a source distribution, found at [http://httpd.apache.org/download.cgi http://httpd.apache.org/download.cgi].
# Following the build instructions. In general, you should expect to uncompress, untar, run configure, run make, and run make install.
+
# Following the build instructions. In general, you should expect to uncompress, untar, run configure, run make, and run make install.  The latter command will probably need to be run as a user account with root/sysadmin privileges.
# Setup the system so that apache start automatically after a boot. First copy the startup/kill script from the apache installation to the standard Linux location:
+
 
 +
== Running the web server ==
 +
 
 +
Regardless of how you installed Apache, you will almost certainly need to configure it to start automatically after a boot. The exact method depends on how your Linux system manages the startup process.  All of the following will need to be done by a user account with root/sysadmin privileges.
 +
 
 +
=== Linux system using init.d scripts ===
 +
 
 +
First copy the startup/kill script from the apache installation to the standard Linux location:
  
 
     cd /usr/local/apache2/bin
 
     cd /usr/local/apache2/bin
Line 28: Line 39:
 
     sh httpd start
 
     sh httpd start
  
: You should now be able to point a browser at you machine's IP address and see something.
+
: You should now be able to point a browser at your machine's IP address (or localhost) and see something.
 +
 
 +
=== Linux system using systemd ===
 +
 
 +
Many newer Linux distributions have switched to [https://en.wikipedia.org/wiki/Systemd Systemd].  To cause Apache to be started at boot time, do:
 +
 
 +
    systemctl enable httpd
 +
 
 +
(It is possible the "httpd" service name might be something else on your system, e.g. "apache".)
  
==Setup the MySQL server==
+
This does not start Apache running immediately, this can be done by doing:
  
For this step, follow the Linux instructions found in [[ISFDB:MySQL_Only_Setup]]. This will load in the current version of the ISFDB data.
+
    systemctl start httpd
  
It is also possible to construct a blank version of the database, which can then be used to track the books in your library, or to create a different database altogether - like a database of Westerns, or Romance Novels. To follow this path:
+
To stop a running Apache server, or to disable Apache from starting at boot time, you can respectively do:
  
1. Download [http://www.isfdb.org/isfdb.sql http://www.isfdb.org/isfdb.sql].
+
    systemctl stop httpd
 +
    systemctl disable httpd
  
2. Start up the mysql client and issue the following commands:
+
There are many other systemctl subcommands, which are documented on the [http://man7.org/linux/man-pages/man1/systemctl.1.html man page].
  
  mysql> drop database isfdb;
+
==Set up the MySQL server==
  mysql> create database isfdb;
+
 
  mysql> connect isfdb;
+
For this step, follow the Linux instructions found in [[ISFDB:MySQL_Only_Setup#Linux_Installation]]. This will load in the current version of the ISFDB data.
  mysql> source isfdb.sql;
 
  
 
==Install Python==
 
==Install Python==
  
Install the latest version of python. You can download from [http://python.org python.org].
+
Install Python 2.5.4. You can download it from [http://python.org python.org]. Note that earlier and later versions of Python may not work with the ISFDB software.
  
 
==Install MySQLdb==
 
==Install MySQLdb==
Line 69: Line 88:
 
==Download the ISFDB Source==
 
==Download the ISFDB Source==
  
There are three ways to download the ISFDB source code.
+
Use your browser to download the [https://sourceforge.net/p/isfdb/code-svn/HEAD/tarball latest version of the ISFDB software] from SourceForge.
  
===Download from the ISFDB Website===
 
  
The source code can be downloaded from [http://www.isfdb.org/isfdb2.tar.gz isfdb2.tar.gz]. This image will eventually be located at [https://sourceforge.net/projects/isfdb https://sourceforge.net/projects/isfdb] in the Download section. This method requires building a tar image from the official CVS repository, and uploading it to the site. As such, it can sometimes be out of date. To extract:
 
  
  gunzip isfdb2.tar.gz
+
==Install the ISFDB==
  tar -xvf isfdb2.tar
 
  
===Anonymous CVS Download From SourceForge===
+
1. Edit common/localdefs.py:
 +
  DBASE          = "isfdb"
 +
  DBASEHOST      = "localhost"
 +
  DO_ANALYTICS    = 0
 +
  HTFAKE          = "/your_host_name/cgi-bin"
 +
  HTMLHOST        = "your_host_name"
 +
  HTMLLOC        = "your_host_name"
 +
  PASSWORD        = ""
 +
  PROTOCOL        = "http"
 +
  USERNAME        = "isfdb1"
 +
  LEGACY_PASSWORDS= 1
 +
  UNICODE        = "iso-8859-1"
 +
  WIKILOC        = "your_host_name/wiki"
  
If you have CVS tools installed, you can download a complete up to date version of the source with the following command:
+
Note that you will want to set LEGACY_PASSWORDS to 1. This will use the old md5 hashing algorithm when logging into your system. This will match the md5 algorithm used by create_user.py to create an account.
  
  cvs -z3 -d:pserver:anonymous@isfdb.cvs.sourceforge.net:/cvsroot/isfdb co -P isfdb2
+
2. Then edit isfdb/INSTALLDIRS:
  
===Developer CVS Download From SourceForge===
+
  INSTALL_CGI    = Local CGI binary directory
 +
  INSTALL_HTML    = Local HTML directory
  
If you are an ISFDB developer, you can check out views, make changes, and check in updates. Requests to be an ISFDB developer must be approved by an ISFDB administrator at SourceForge. Developer checkouts also require that you obtain a login at SourceForge, generate an SSH key on your home system, and record your public key on the SourceForge site. Once those steps are complete, you can extract a developer view via:
+
3. Check the directory permissions on your INSTALL_CGI and INSTALL_HTML directories. You'll either need to do the install as a user who has permission to write there or you'll need to modify the permissions on the directories.
  
  export CVS_RSH=ssh
+
4. Then execute:
  export CVSROOT=login_name@isfdb.cvs.sourceforge.net:/cvsroot/isfdb
 
  cvs -z3 -d:ext:login_name@isfdb.cvs.sourceforge.net:/cvsroot/isfdb co -P isfdb2
 
  
 +
  cd isfdb
 +
  make -B install
  
==Install the ISFDB==
+
The "-B" is needed only the first time, or you will get an error about not knowing how to build ".TARGETS". Subsequent rebuilds do not need this.  The build process requires your default version of Python to be some flavor of v2, otherwise you will get errors about "SyntaxError: Missing parentheses in call to 'print'".  You can verify the version of Python by running 'python --version', and if necessary set up a new Python environment using a tool such as virtualenv.
  
1. Edit isfdb2/common/localdefs.py:
+
5. Save copies of your versions of isfdb/INSTALLDIRS and isfdb/common/localdefs.py someplace safe. If you download a new version of the ISFDB software and someone has checked in new versions of those files, you'll need to restore your settings before rerunning "make install".
  
  HTMLLOC        = "your_host_name"
+
==Configure Nightly Processing==
  HTFAKE          = "/your_host_name/cgi-bin"
 
  DBASEHOST      = "localhost"
 
  HTMLHOST        = "your_host_name"
 
  COOKIEHOST      = "your_host_name"
 
  USERNAME        = "root"
 
  PASSWORD        = ""
 
  DBASE          = "isfdb"
 
  UNICODE        = "iso-8859-1"
 
  DO_ANALYTICS    = 0
 
  
2. Then edit isfdb2/INSTALLDIRS:
+
See [[ISFDB:Configure Nightly Processing]].
  
  INSTALL_CGI    = Local CGI binary directory
+
==Enable ISFDB Editing==
  INSTALL_HTML    = Local HTML directory
 
  
3. Check the directory permissions on your INSTALL_CGI and INSTALL_HTML directories. You'll either need to do the install as a user that has permission to write there, or you'll need to modify the permissions on the directories.
+
The ISFDB relies on MediaWiki to register users. In the personal Linux setup without the Wiki, this is not possible. A script is provided to update the appropriate tables to allow editing permissions. After everything is installed and you are able to view pages in the isfdb, execute:
  
4. Then execute:
+
isfdb/scripts/create_user.py LoginName password
  
  cd isfdb2
+
This will insert the login name and encrypted password into the correct tables. By default, the new user will be a moderator as well as a bureaucrat. If you want to create a non-privileged user, pass "0" as the third parameter.
  make install
 
  
5. Place copies of isfdb2/INSTALLDIRS and isfdb2/common/localdefs.py somplace safe. If you do a cvs update on your source directory, and someone has checked in new versions of those files, you'll need to merge in your settings before installing again.
+
[[Category:Installation instructions|Personal Linux]]

Revision as of 15:36, 9 September 2022

Follow these instruction to create a version of the ISFDB to run on your home Linux system. These instruction do not include setting up the ISFDB wiki.

Setup the Web server

The ISFDB code relies on a web server. Apache is a good choice for this. The basic instructions are:

Installation

Many Linux distributions will include Apache as a package in their repository. This may be called 'apache', 'httpd' or some variant thereof. Alternatively you can download and install from the Apache Software Foundation:

  1. Download the software. For Linux this is generally a source distribution, found at http://httpd.apache.org/download.cgi.
  2. Following the build instructions. In general, you should expect to uncompress, untar, run configure, run make, and run make install. The latter command will probably need to be run as a user account with root/sysadmin privileges.

Running the web server

Regardless of how you installed Apache, you will almost certainly need to configure it to start automatically after a boot. The exact method depends on how your Linux system manages the startup process. All of the following will need to be done by a user account with root/sysadmin privileges.

Linux system using init.d scripts

First copy the startup/kill script from the apache installation to the standard Linux location:

   cd /usr/local/apache2/bin
   cp apachectl /etc/init.d/httpd
Next setup the Start and Kill scripts from runstate 3 by creating symbolic links:
   cd /etc/rc3.d
   ln -s ../init.d/httpd S85httpd
   ln -s ../init.d/httpd K85httpd
Next setup the Start and Kill scripts from runstate 5 by creating symbolic links:
   cd /etc/rc5.d
   ln -s ../init.d/httpd S85httpd
   ln -s ../init.d/httpd K85httpd
Finally, if you want to startup Apache without a reboot:
   cd /etc/init.d
   sh httpd start
You should now be able to point a browser at your machine's IP address (or localhost) and see something.

Linux system using systemd

Many newer Linux distributions have switched to Systemd. To cause Apache to be started at boot time, do:

   systemctl enable httpd

(It is possible the "httpd" service name might be something else on your system, e.g. "apache".)

This does not start Apache running immediately, this can be done by doing:

   systemctl start httpd

To stop a running Apache server, or to disable Apache from starting at boot time, you can respectively do:

   systemctl stop httpd
   systemctl disable httpd

There are many other systemctl subcommands, which are documented on the man page.

Set up the MySQL server

For this step, follow the Linux instructions found in ISFDB:MySQL_Only_Setup#Linux_Installation. This will load in the current version of the ISFDB data.

Install Python

Install Python 2.5.4. You can download it from python.org. Note that earlier and later versions of Python may not work with the ISFDB software.

Install MySQLdb

MySQLdb is a python module that allows a python script to interface with the MySQL database. The module includes C code, so it requires the standard Linux development tools. It uses the MySQL libraries, so MySQL must be installed prior to this step. Finally, it is installed in the python modules area, so python must be installed prior to this step.

1. Install the development tools. This contains the C compiler, which is needed in order to compile and link elements of the MySQLdb module. You can test if the development tools are present by typing cc. If cc is present it will output:

  $ cc
  cc: no input files

If the tools are not present you will see:

  $ cc
  -bash: cc: command not found

2. Install python-devel. This module is required in order to install additional python packages, such as MySQLdb. Your version of python may already have this module installed.

3. Install the MySQLdb python module. This can be found at http://sourceforge.net/projects/mysql-python. At this point python will be able to interact with MySQL.

Download the ISFDB Source

Use your browser to download the latest version of the ISFDB software from SourceForge.


Install the ISFDB

1. Edit common/localdefs.py:

  DBASE           = "isfdb"
  DBASEHOST       = "localhost"
  DO_ANALYTICS    = 0
  HTFAKE          = "/your_host_name/cgi-bin"
  HTMLHOST        = "your_host_name"
  HTMLLOC         = "your_host_name"
  PASSWORD        = ""
  PROTOCOL        = "http"
  USERNAME        = "isfdb1"
  LEGACY_PASSWORDS= 1
  UNICODE         = "iso-8859-1"
  WIKILOC         = "your_host_name/wiki"

Note that you will want to set LEGACY_PASSWORDS to 1. This will use the old md5 hashing algorithm when logging into your system. This will match the md5 algorithm used by create_user.py to create an account.

2. Then edit isfdb/INSTALLDIRS:

  INSTALL_CGI     = Local CGI binary directory
  INSTALL_HTML    = Local HTML directory

3. Check the directory permissions on your INSTALL_CGI and INSTALL_HTML directories. You'll either need to do the install as a user who has permission to write there or you'll need to modify the permissions on the directories.

4. Then execute:

  cd isfdb
  make -B install

The "-B" is needed only the first time, or you will get an error about not knowing how to build ".TARGETS". Subsequent rebuilds do not need this. The build process requires your default version of Python to be some flavor of v2, otherwise you will get errors about "SyntaxError: Missing parentheses in call to 'print'". You can verify the version of Python by running 'python --version', and if necessary set up a new Python environment using a tool such as virtualenv.

5. Save copies of your versions of isfdb/INSTALLDIRS and isfdb/common/localdefs.py someplace safe. If you download a new version of the ISFDB software and someone has checked in new versions of those files, you'll need to restore your settings before rerunning "make install".

Configure Nightly Processing

See ISFDB:Configure Nightly Processing.

Enable ISFDB Editing

The ISFDB relies on MediaWiki to register users. In the personal Linux setup without the Wiki, this is not possible. A script is provided to update the appropriate tables to allow editing permissions. After everything is installed and you are able to view pages in the isfdb, execute:

isfdb/scripts/create_user.py LoginName password

This will insert the login name and encrypted password into the correct tables. By default, the new user will be a moderator as well as a bureaucrat. If you want to create a non-privileged user, pass "0" as the third parameter.