From Fedora Project Wiki

Line 66: Line 66:
 
  deactivate
 
  deactivate
  
 +
= Deploying ResultsDB as Apache2/wsgi application =
 +
 +
Install and configure mysql
 +
yum install mysql-server
 +
chkconfig mysqld on
 +
service mysqld start
 +
/usr/bin/mysqladmin -u root password 'new-password'
 +
 +
mysql -u root -p
 +
 +
create database resultsdb;
 +
grant usage on *.* to resultsdb@localhost identified by 'TOP_SECRET_PASSWORD';
 +
grant all privileges on resultsdb.* to resultsdb@localhost;
 +
exit
 +
 +
Prepare virtualenv
 +
yum install python-pycurl python-fedora MySQL-python
 +
 +
# setup baseline virtualenv
 +
mkdir -p /usr/local/pythonenv
 +
cd /usr/local/pythonenv
 +
virtualenv BASELINE
 +
chown -R apache:apache BASELINE
 +
 +
mkdir git
 +
chown apache:apache git
 +
sudo -u apache bash
 +
 +
# clone the resultsdb git & initialize the baseline virtualenv
 +
cd git
 +
git clone git://git.fedorahosted.org/ResultsDB.git resultsdb
 +
 +
source /usr/local/pythonenv/BASELINE/bin/activate
 +
easy_install -i http://www.turbogears.org/2.1/downloads/current/index tg.devtools
 +
cd /usr/local/pythonenv/git/resultsdb/resultsdb/
 +
python setup.py develop
 +
 +
exit
 +
 +
# install modwsgi deploy helper tool
 +
cd ~/
 +
easy_install bzr
 +
mkdir modwsgideploy
 +
cd modwsgideploy
 +
bzr branch http://bazaar.launchpad.net/~mcfletch/modwsgideploy/parameterized/
 +
cd parametrized/trunk
 +
python setup.py develop
 +
 +
# prepare the actual deployment data
 +
mkdir /usr/local/turbogears
 +
cp -r ../resultsdb /usr/local/turbogears/
 +
paster make-config resultsdb production.ini
 +
cp production.ini /usr/local/turbogears/resultsdb
 +
mkdir /usr/local/turbogears/resultsdb/python-eggs
 +
 +
#??? is this really necessary ???
 +
cd /usr/local/pythonenv/BASELINE/
 +
virtualenv resultsdb
 +
chown -R apache:apache resultsdb
 +
 +
# use the modwsgi_deploy tool to create apache config files
 +
cd /usr/local/turbogears/resultsdb
 +
paster modwsgi_deploy --logging -b /usr/local/pythonenv/BASELINE/
 +
 +
deactivate
 +
 +
# apacheuser needs to own the deployed directory & files
 +
chown -R apache:apache /usr/local/turbogears/resultsdb
 +
 +
 +
== Config files ==
 +
 +
Copy apache config file
 +
cp /usr/local/turbogears/resultsdb/apache/resultsdb /etc/httpd/conf.d/resultsdb.conf
 +
 +
Edit /usr/local/turbogears/resultsdb/production.ini
 +
* Default -> debug = false
 +
* app:main -> full_stack = false
 +
* app:main -> set debug = false
 +
* app:main -> sqlalchemy.url = mysql://resultsdb:TOP_SECRET_PASSWORD@localhost:3306/resultsdb
 +
 +
<http://stackoverflow.com/questions/3579850/mod-wsgi-not-working-with-pinax-of-django>
 +
* add "WSGISocketPrefix /var/run/wsgi" (without quotes) to /etc/httpd/conf.d/wsgi.conf
 +
 +
Change /etc/httpd/conf.d/resultsdb.conf
 +
* Original line:
 +
*: WSGIScriptAlias /resultsdb/ /usr/local/turbogears/resultsdb/apache/resultsdb.wsgi
 +
* Change line to (notice the deleted slash at the end of the originally '/resultsdb/'):
 +
*: WSGIScriptAlias /resultsdb /usr/local/turbogears/resultsdb/apache/resultsdb.wsgi
 +
 +
Restart the httpd service, and try to access http://url.of.your.server/resultsdb/ you should see the ResultsDB's "man" page.
  
 
[[Category:ResultsDB]]
 
[[Category:ResultsDB]]

Revision as of 09:31, 21 September 2011

Prerequisities

Installed Fedora 14, preferably in a virtual environment.

Installation

Install and configure mysql

yum install mysql-server
chkconfig mysqld on
service mysqld start
/usr/bin/mysqladmin -u root password 'new-password'
mysql -u root -p
create database resultsdb;
grant usage on *.* to resultsdb@localhost identified by '9zWyNtmBmHcUe6Yn';
grant all privileges on resultsdb.* to resultsdb@localhost;
exit

Prepare virtualenv environment

yum install gcc sqlite-devel python-virtualenv
virtualenv tg2env
cd tg2env
source bin/activate
easy_install -i http://www.turbogears.org/2.1/downloads/current/index tg.devtools

Download ResultsDB from GIT

git clone git://git.fedorahosted.org/ResultsDB.git resultsdb
cd resultsdb/resultsdb

Install dependencies and setup the application

yum install python-pycurl python-fedora MySQL-python
python setup.py develop
paster setup-app development.ini

ResultsDB

Start the ResultsDB instance in screen

screen -S resultsdb
paster serve development.ini --reload

Turbogears welcome screen should be now visible on http://localhost:8081. Either press Ctrl+ad to send screen to background, or open another terminal.

Test the XMLRPC interface

python
import xmlrpclib
s = xmlrpclib.ServerProxy("http://localhost:8081/xmlrpc", allow_none = 1)
s.get_metadata("https://fedoraproject.org/wiki/User:Jskladan/Sandbox:Rpmlint_Testcase_Metadata")

Expected result:

{'required_keyval': ['pkg_name', 'envr', 'arch', 'owner']}

Exit Python shell

exit()

Stop the application

If you used the screen terminal to run ResultsDB, reattach it using

screen -r resultsdb

or switch to the terminal window in which you started the application.


Press Ctrl+c to kill the running Turbogears application. Then stop the virtualenv

deactivate

Deploying ResultsDB as Apache2/wsgi application

Install and configure mysql

yum install mysql-server
chkconfig mysqld on
service mysqld start
/usr/bin/mysqladmin -u root password 'new-password'
mysql -u root -p
create database resultsdb;
grant usage on *.* to resultsdb@localhost identified by 'TOP_SECRET_PASSWORD';
grant all privileges on resultsdb.* to resultsdb@localhost;
exit

Prepare virtualenv

yum install python-pycurl python-fedora MySQL-python
  1. setup baseline virtualenv
mkdir -p /usr/local/pythonenv
cd /usr/local/pythonenv
virtualenv BASELINE
chown -R apache:apache BASELINE
mkdir git
chown apache:apache git
sudo -u apache bash
  1. clone the resultsdb git & initialize the baseline virtualenv
cd git
git clone git://git.fedorahosted.org/ResultsDB.git resultsdb

source /usr/local/pythonenv/BASELINE/bin/activate
easy_install -i http://www.turbogears.org/2.1/downloads/current/index tg.devtools
cd /usr/local/pythonenv/git/resultsdb/resultsdb/
python setup.py develop
exit
  1. install modwsgi deploy helper tool
cd ~/
easy_install bzr
mkdir modwsgideploy
cd modwsgideploy
bzr branch http://bazaar.launchpad.net/~mcfletch/modwsgideploy/parameterized/
cd parametrized/trunk
python setup.py develop

  1. prepare the actual deployment data
mkdir /usr/local/turbogears
cp -r ../resultsdb /usr/local/turbogears/
paster make-config resultsdb production.ini
cp production.ini /usr/local/turbogears/resultsdb
mkdir /usr/local/turbogears/resultsdb/python-eggs
#??? is this really necessary ???
cd /usr/local/pythonenv/BASELINE/
virtualenv resultsdb
chown -R apache:apache resultsdb
  1. use the modwsgi_deploy tool to create apache config files
cd /usr/local/turbogears/resultsdb
paster modwsgi_deploy --logging -b /usr/local/pythonenv/BASELINE/ 

deactivate
  1. apacheuser needs to own the deployed directory & files
chown -R apache:apache /usr/local/turbogears/resultsdb


Config files

Copy apache config file

cp /usr/local/turbogears/resultsdb/apache/resultsdb /etc/httpd/conf.d/resultsdb.conf

Edit /usr/local/turbogears/resultsdb/production.ini

* Default -> debug = false
* app:main -> full_stack = false
* app:main -> set debug = false
* app:main -> sqlalchemy.url = mysql://resultsdb:TOP_SECRET_PASSWORD@localhost:3306/resultsdb

<http://stackoverflow.com/questions/3579850/mod-wsgi-not-working-with-pinax-of-django>

* add "WSGISocketPrefix /var/run/wsgi" (without quotes) to /etc/httpd/conf.d/wsgi.conf

Change /etc/httpd/conf.d/resultsdb.conf

* Original line:
*: WSGIScriptAlias /resultsdb/ /usr/local/turbogears/resultsdb/apache/resultsdb.wsgi
* Change line to (notice the deleted slash at the end of the originally '/resultsdb/'):
*: WSGIScriptAlias /resultsdb /usr/local/turbogears/resultsdb/apache/resultsdb.wsgi

Restart the httpd service, and try to access http://url.of.your.server/resultsdb/ you should see the ResultsDB's "man" page.