359 lines
8.7 KiB
Text
359 lines
8.7 KiB
Text
= Ask Fedora SOP
|
|
|
|
To set up https://ask.fedoraproject.org based on Askbot as a question
|
|
and answer support forum for the Fedora community. A production instance
|
|
could be seen at https://ask.fedoraproject.org and the staging instance
|
|
is at http://ask.stg.fedoraproject.org/
|
|
|
|
This page describes how to set up and customize it from scratch.
|
|
|
|
== Contents
|
|
|
|
[arabic]
|
|
. Contact Information
|
|
. Creating database
|
|
. Setting up the forum
|
|
. Adding administrators
|
|
. Change settings within the forum
|
|
. Database tweaks
|
|
. Debugging
|
|
|
|
== Contact Information
|
|
|
|
Owner::
|
|
Fedora Infrastructure Team
|
|
Contact::
|
|
#fedora-admin
|
|
Persons::
|
|
anyone from the sysadmin team
|
|
Sponsor::
|
|
nirik
|
|
Location::
|
|
phx2
|
|
Servers::
|
|
ask01 , ask01.stg
|
|
Purpose::
|
|
To host Ask Fedora
|
|
|
|
== Creating database
|
|
|
|
We use the postgresql database backend. To add the database to a
|
|
postgresql server:
|
|
|
|
....
|
|
# psql -U postgres
|
|
postgres# create user askfedora with password 'xxx';
|
|
postgres# create database askfedora;
|
|
postgres# ALTER DATABASE askfedora owner to askfedora;
|
|
postgres# \q;
|
|
....
|
|
|
|
Now setup the db tables if this is a new install:
|
|
|
|
....
|
|
python manage.py syncdb
|
|
python manage.py migrate askbot
|
|
python manage.py migrate django_authopenid #embedded login application
|
|
....
|
|
|
|
== Setting up the forum
|
|
|
|
Askbot is packaged and available in Rawhide, Fedora 16 and EPEL 6. On a
|
|
RHEL 6 system, you need to install EPEL 6 repo first.:
|
|
|
|
....
|
|
# yum install askbot
|
|
....
|
|
|
|
The /etc/askbot/sites/ask/conf/settings.py file should look something
|
|
like:
|
|
|
|
....
|
|
DATABASE_ENGINE = 'postgresql_psycopg2'
|
|
DATABASE_NAME = 'testaskbot'
|
|
DATABASE_USER = 'askbot'
|
|
DATABASE_PASSWORD = 'xxxxx'
|
|
DATABASE_HOST = '127.0.0.1'
|
|
DATABASE_PORT = '5432'
|
|
|
|
# Outgoing mail server settings
|
|
#
|
|
DEFAULT_FROM_EMAIL = 'askfedora@fedoraproject.org'
|
|
EMAIL_SUBJECT_PREFIX = '[Askfedora]'
|
|
EMAIL_HOST='127.0.0.1'
|
|
EMAIL_PORT='25'
|
|
|
|
# This variable points to the Askbot plugin which will be used for user
|
|
# authentication. Not enabled yet because we don't need FAS auth but use
|
|
# Fedora id as a openid provider.
|
|
#
|
|
# ASKBOT_CUSTOM_AUTH_MODULE = 'authfas'
|
|
|
|
Now Ask Fedora website should be accessible from the browser.
|
|
....
|
|
|
|
== Adding administrators
|
|
|
|
As of Askbot version 0.7.21, the first user who logs in automatically
|
|
becomes the administrator. In previous versions, you have to do the
|
|
following.:
|
|
|
|
....
|
|
# cd /etc/askbot/sites/ask/conf/
|
|
# python manage.py add_admin 1
|
|
Do you really wish to make user (id=1, name=pjp) a site administrator?
|
|
yes/no: yes
|
|
....
|
|
|
|
Once a user is marked as a administrator, he or she can go into anyone's
|
|
profile, go the "moderation" tab in the end and mark them as
|
|
administrator or moderator as well as block or suspend a user.
|
|
|
|
== Change settings within the forum
|
|
|
|
* {blank}
|
|
+
|
|
Data entry and display:::
|
|
** Disable "Allow asking questions anonymously"
|
|
** Enable "Force lowercase the tags"
|
|
** Change "Format of tag list" to "cloud"
|
|
** Change "Minimum length of search term for Ajax search" to "3"
|
|
** Change "Number of questions to list by default" to "50"
|
|
** Change "What should "unanswered question" mean?" to "Question has
|
|
no
|
|
** answers"
|
|
* {blank}
|
|
+
|
|
Email and email alert settings::
|
|
** Change "Default news notification frequency" to "Instantly"
|
|
* {blank}
|
|
+
|
|
Flatpages - about, privacy policy, etc.::
|
|
Change "Text of the Q&A forum About page (html format)" to the
|
|
following:
|
|
+
|
|
....
|
|
Ask Fedora provides a community edited knowledge base and support forum
|
|
for the Fedora community. Make sure you read the FAQ and search for
|
|
existing questions before asking yours. If you want to provide feedback,
|
|
just a question in this site! Tag your questions "meta" to highlight your
|
|
questions to the administrators of Ask Fedora.
|
|
....
|
|
* {blank}
|
|
+
|
|
Login provider settings::
|
|
** Disable "Activate local login"
|
|
* {blank}
|
|
+
|
|
Q&A forum website parameters and urls::
|
|
** {blank}
|
|
+
|
|
Change "Site title for the Q&A forum" to "Ask Fedora: Community
|
|
Knowledge;;
|
|
Base and Support Forum"
|
|
** {blank}
|
|
+
|
|
Change "Comma separated list of Q&A site keywords" to "Ask Fedora,
|
|
forum,;;
|
|
community, support, help"
|
|
** {blank}
|
|
+
|
|
Change "Copyright message to show in the footer" to "All content is
|
|
under;;
|
|
Creative Commons Attribution Share Alike License. Ask Fedora is
|
|
community maintained and Red Hat or Fedora Project is not
|
|
responsible for content"
|
|
** {blank}
|
|
+
|
|
Change "Site description for the search engines" to "Ask Fedora:
|
|
Community;;
|
|
Knowledge Base and Support Forum"
|
|
** Change "Short name for your Q&A forum" to "Ask Fedora"
|
|
** {blank}
|
|
+
|
|
Change "Base URL for your Q&A forum, must start with http or https"
|
|
to;;
|
|
"http://ask.fedoraproject.org"
|
|
* {blank}
|
|
+
|
|
Sidebar widget settings - main page::
|
|
** Disable "Show avatar block in sidebar"
|
|
** Disable "Show tag selector in sidebar"
|
|
* Skin and User Interface settings
|
|
** Upload "Q&A site logo"
|
|
** Upload "Site favicon". Must be a ICO format file because that is the
|
|
only one IE supports as a fav icon.
|
|
** Enable "Apply custom style sheet (CSS)"
|
|
** Upload the following custom CSS:
|
|
+
|
|
....
|
|
#ab-main-nav a {
|
|
color: #333333;
|
|
background-color: #d8dfeb;
|
|
border: 1px solid #888888;
|
|
border-bottom: none;
|
|
padding: 0px 12px 3px 12px;
|
|
height: 25px;
|
|
line-height: 30px;
|
|
margin-right: 10px;
|
|
font-size: 18px;
|
|
font-weight: 100;
|
|
text-decoration: none;
|
|
display: block;
|
|
float: left;
|
|
}
|
|
|
|
#ab-main-nav a.on {
|
|
height: 24px;
|
|
line-height: 28px;
|
|
border-bottom: 1px solid #0a57a4;
|
|
border-right: 1px solid #0a57a4;
|
|
border-top: 1px solid #0a57a4;
|
|
border-left: 1px solid #0a57a4; /*background:#A31E39; */
|
|
background: #0a57a4;
|
|
color: #FFF;
|
|
font-weight: 800;
|
|
text-decoration: none
|
|
}
|
|
|
|
#ab-main-nav a.special {
|
|
font-size: 18px;
|
|
color: #072b61;
|
|
font-weight: bold;
|
|
text-decoration: none;
|
|
}
|
|
|
|
/* tabs stuff */
|
|
.tabsA { float: right; }
|
|
.tabsC { float: left; }
|
|
|
|
.tabsA a.on, .tabsC a.on, .tabsA a:hover, .tabsC a:hover {
|
|
background: #fff;
|
|
color: #072b61;
|
|
border-top: 1px solid #babdb6;
|
|
border-left: 1px solid #babdb6;
|
|
border-right: 1px solid #888a85;
|
|
border-bottom: 1px solid #888a85;
|
|
height: 24px;
|
|
line-height: 26px;
|
|
margin-top: 3px;
|
|
}
|
|
|
|
.tabsA a.rev.on, tabsA a.rev.on:hover {
|
|
padding: 0px 2px 0px 7px;
|
|
}
|
|
|
|
.tabsA a, .tabsC a{
|
|
background: #f9f7eb;
|
|
border-top: 1px solid #eeeeec;
|
|
border-left: 1px solid #eeeeec;
|
|
border-right: 1px solid #a9aca5;
|
|
border-bottom: 1px solid #888a85;
|
|
color: #888a85;
|
|
display: block;
|
|
float: left;
|
|
height: 20px;
|
|
line-height: 22px;
|
|
margin: 5px 0 0 4px;
|
|
padding: 0 7px;
|
|
text-decoration: none;
|
|
}
|
|
|
|
.tabsA .label, .tabsC .label {
|
|
float: left;
|
|
font-weight: bold;
|
|
color: #777;
|
|
margin: 8px 0 0 0px;
|
|
}
|
|
|
|
.tabsB a {
|
|
background: #eee;
|
|
border: 1px solid #eee;
|
|
color: #777;
|
|
display: block;
|
|
float: left;
|
|
height: 22px;
|
|
line-height: 28px;
|
|
margin: 5px 0px 0 4px;
|
|
padding: 0 11px 0 11px;
|
|
text-decoration: none;
|
|
}
|
|
|
|
a {
|
|
color: #072b61;
|
|
text-decoration: none;
|
|
cursor: pointer;
|
|
}
|
|
|
|
div.side-box
|
|
{
|
|
width:200px;
|
|
padding:10px;
|
|
border:3px solid #CCCCCC;
|
|
margin:0px;
|
|
background: -moz-linear-gradient(top, #DDDDDD, #FFFFFF);
|
|
}
|
|
....
|
|
|
|
== Database tweaks
|
|
|
|
To automatically delete expired sessions, we run a trigger that makes
|
|
PostgreSQL delete them upon inserting a new one.
|
|
|
|
The code used to create this trigger was:
|
|
|
|
....
|
|
askfedora=# CREATE FUNCTION delete_old_sessions() RETURNS trigger
|
|
askfedora-# LANGUAGE plpgsql
|
|
askfedora-# AS $$
|
|
askfedora$# BEGIN
|
|
askfedora$# DELETE FROM django_session WHERE expire_date<current_timestamp;
|
|
askfedora$# RETURN NEW;
|
|
askfedora$# END
|
|
askfedora$# $$;
|
|
CREATE FUNCTION
|
|
askfedora=# CREATE TRIGGER old_sessions_gc
|
|
askfedora-# AFTER INSERT ON django_session
|
|
askfedora-# EXECUTE PROCEDURE delete_old_sessions();
|
|
....
|
|
|
|
In case this trigger causes any problems, please remove it by running:
|
|
`DROP TRIGGER old_sessions_gc;`
|
|
|
|
To make this perform, we have a custom index that's not in upstream
|
|
askbot, please remember to add that when recreating the trigger:
|
|
|
|
....
|
|
CREATE INDEX CONCURRENTLY django_session_expire_date ON django_session (expire_date);
|
|
....
|
|
|
|
If you deleted the trigger, or reinstalled without trigger, please make
|
|
sure to run `manage.py clean_sessions` regularly, so you don't end up
|
|
with a database that's too massive in size.
|
|
|
|
== Debugging
|
|
|
|
Set DEBUG to True in settings.py file and restart Apache.
|
|
|
|
== Auth issues
|
|
|
|
Users can login to ask with a variety of social media accounts. Once
|
|
they login with one they can attach other ones as well.
|
|
|
|
If a user forgets what social media they used, you can look in the
|
|
database:
|
|
|
|
Login to database host (db01.phx2.fedoraproject.org) # sudo -u postgres
|
|
psql askfedora psql> select * from django_authopenid_userassociation
|
|
where user_id like '%username%';
|
|
|
|
If they can login again with the same auth, ask them to do so. If not,
|
|
you can add the fedora account system openid auth to allow them to login
|
|
with that:
|
|
|
|
psql> insert into django_authopenid_userassociation (user_id,
|
|
openid_url,provider_name) VALUES (2595,
|
|
'http://name.id.fedoraproject.org', 'fedoraproject');
|
|
|
|
Use the ID from the previous query and replace name with the users fas
|
|
name.
|