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
-
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
-
- 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"
-
-
- Email and email alert settings
-
-
Change "Default news notification frequency" to "Instantly"
-
-
- 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.
-
- Login provider settings
-
-
Disable "Activate local login"
-
-
- Q&A forum website parameters and urls
-
-
+ Change "Site title for the Q&A forum" to "Ask Fedora: Community
- Knowledge
-
Base and Support Forum"
-
+ Change "Comma separated list of Q&A site keywords" to "Ask Fedora,
- forum,
-
community, support, help"
-
+ 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"
-
+ 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"
-
+ Change "Base URL for your Q&A forum, must start with http or https"
- to
-
"http://ask.fedoraproject.org"
-
-
- 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.
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.