No Root SetupΒΆ
For my first attempt at a production version, I got a shared host running CloudLinux OS that does not provide root access, but has both Python and MySQL pre-installed.
What system you install to is your choice, but this setup assumes a CloudLinux OS without root access and with both Python and MySQL installed. Everything is run from terminal (ssh compatible).
Note
If you have multiple Python versions, replace python
and pip
with your version, e.g.,
python2.7 get-pip.py --user
, pip2.7 install --user -U pip wheel
.
Since root is not available, pip needs to be installed locally.
wget https://bootstrap.pypa.io/get-pip.py && python get-pip.py --user
To ~/.bashrc
, add PATH=$PATH:~/.local/bin
and PYTHONPATH=$PYTHONPATH:~/.local/lib/python/site-packages/
,
then run source ~./bashrc
to apply changes.
Next, update pip and wheel,:
pip install --user -U pip wheel
Then, set up the needed environment. From within the virtual environment, run:
pip install --user praw
From within the MySQL prompt, setup the database itself.
CREATE DATABASE db_name;
USE db_name;
CREATE TABLE message_table (id INT UNSIGNED NOT NULL AUTO_INCREMENT, permalink VARCHAR(100), message VARCHAR(100),
new_date DATETIME, userID VARCHAR(20), PRIMARY KEY(id));
ALTER TABLE message_table AUTO_INCREMENT=1;
CREATE TABLE comment_table (id MEDIUMINT NOT NULL, list VARCHAR(35), PRIMARY KEY(id));
INSERT INTO comment_table VALUES (1, "'0'");
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON db_name.*
TO 'botname'@localhost IDENTIFIED BY 'password';
Now that MySQL is setup, install more dependencies.
source clashcallerbot-reddit/bin/activate # set virtual environment, if needed
pip install --user mysql-connector
Start, redirect output, and background process.
source clashcallerbot-reddit/bin/activate # set virtual environment, if needed
nohup python -m clashcallerbotreddit.reply > /dev/null 2>&1 &
nohup python -m clashcallerbotreddit.search > /dev/null 2>&1 &
Tip
Alternatively, use systemd service.