Domas, can you write up the manual install instructions? I'd like to try adding support to the installer but I'm pretty fuzzy on what needs to be done first.
Hey, the master document is still at http://ph3.defau.lt/index.php?title=PostgreSQL_Install
-- Domas ---------------------------------------cut here---------------------------------------------------------------------------------
Hereby I, humble developer of mediawiki, try to document the HEAD install process on my FreeBSD/PostgreSQL box.
Files are taken from my dev cf.net CVS account,
cvs co phase3 mv phase3 pgwiki.defau.lt
What I try to do next is creating database and users.
* Database and users should not be created before * I should be able to supply admin credentials
$ psql -U superuser template1 Welcome to psql 7.4.1, the PostgreSQL interactive terminal. ... template1=# CREATE USER mediawikiadmin PASSWORD 'someadminpassword'; CREATE USER template1=# CREATE USER mediawikiuser PASSWORD 'someuserpassword'; CREATE USER template1=# CREATE DATABASE mediawiki WITH OWNER=mediawikiadmin ENCODING='UNICODE'; CREATE DATABASE ...
Then I have to load the database schema as mediawikiadmin:
$ psql -U mediawikiadmin mediawiki < maintenance/postgresql/pg_tables.sql
There are two meanings of schemas in PG, one as, well, database structure. Another is a logical domain for grouping same kinds of objects. In order to allow many MW instances with shared or not-so-shared tables I made that logical domain by default called "mediawiki", but changable by $wgDBschema. Some additional modules (like search) might use other schemas. That's nice for not mixing everything up.
Command names and some notices on implicit indexes would be provided.
Then, if it is desired to use lower-security user (the mediawikiuser), we should grant him access as in maintenance/postgresql/pg_users.sql (there we have {$wgDBuser}):
$ psql -U mediawikiadmin -h dammit.lt mediawiki mediawiki=> set search_path=mediawiki,public; SET mediawiki=> GRANT SELECT,INSERT,UPDATE,DELETE ON mediawiki-> archive,brokenlinks,categorylinks,cur, mediawiki-> cur_cur_id_seq,"group",hitcounter,image,imagelinks, mediawiki-> interwiki,ipblocks,ipblocks_ipb_id_seq,links, mediawiki-> linkscc,"logging",math,objectcache,"old",old_old_id_seq, mediawiki-> oldimage,profiling,querycache,recentchanges, mediawiki-> recentchanges_rc_id_seq,searchindex,site_stats, mediawiki-> site_stats_ss_row_id_seq,"user",user_groups,user_newtalk, mediawiki-> user_rights,user_user_id_seq,validate,watchlist mediawiki-> TO mediawikiuser; GRANT
As database is prepared, here we might need to load some initial data. I do set up AdminSettings.php:
$wgDBadminuser='mediawikiadmin'; $wgDBadminpassword='someadminpassword';
I take a reference LocalSettings.php from another site and start walking through it:
$IP = "/home/midom/www/pgwiki.defau.lt";
PG!
$wgDBtype = "PostgreSQL"; $wgDBserver = "localhost"; $wgDBname = "mediawiki"; $wgDBuser = "mediawikiuser"; $wgDBpassword = "someuserpassword"; # There's a simple bug to fix, but this is required now: $wgPutIPinRC=true;
As I am not a liar:
$wgDBmysql4 = false;
I've got to load initial group data as well, I've got to change `->" from group and load the data into correct schema:
SET search_path=mediawiki,public; INSERT INTO "group" (group_id,group_name,group_description,group_rights) VALUES (1,'Anonymous','Anonymous users','read,edit,createaccount'); INSERT INTO "group" (group_id,group_name,group_description,group_rights) VALUES (2,'Loggedin','General logged in users','read,edit,move,upload'); INSERT INTO "group" (group_id,group_name,group_description,group_rights) VALUES (3,'Sysops','Operators of this site', 'read,edit,move,delete,undelete,protect,block,upload,asksql,rollback,patrol,editinterface,sysop'); INSERT INTO "group" (group_id,group_name,group_description,group_rights) VALUES (4,'Bureaucrat','The bureaucrat group is able to make sysops for example. They have no other rights.', 'read,edit,move,delete,undelete,protect,block,userrights,createaccount,upload,asksql,rollback,patrol,editinterface,siteadmin,sysop');
Mhm, it could load some defaults in case it does not find default groups... That's for owner of Hashar's cat :)
Ah, and next thing is of course - message loading.
$ php rebuildMessages.php --rebuild Initialising "MediaWiki" namespace... Clearing message cache...Done.
Ah, right, search. This is a bit trickier. You've got to have PostgreSQL contrib installed. There you've got /usr/local/share/postgresql/contrib/tsearch2.sql file. You should edit one of first lines in this file from
-- Adjust this setting to control where the objects get CREATEd. SET search_path = public;
to
-- Adjust this setting to control where the objects get CREATEd. SET search_path = tsearch;
This code uses external functions for your PG, therefore, you must be a PG superuser to do this. You should create schema tsearch as user mediawikiadmin, and then load the tsearch schema from pg contrib.
Moreover, as database superuser you'll have to make this:
GRANT ALL ON TABLE pg_ts_cfg,pg_ts_cfgmap,pg_ts_dict,pg_ts_parser to mediawikiadmin; GRANT SELECT ON TABLE pg_ts_cfg,pg_ts_cfgmap,pg_ts_dict,pg_ts_parser to mediawikiuser;
Then again, as mediawikiadmin:
SET search_path=mediawiki,tsearch,public; CREATE TABLE searchindex ( si_page integer PRIMARY KEY, si_title tsvector, si_text tsvector );
CREATE INDEX si_text_idx ON searchindex USING gist (si_text); CREATE INDEX si_title_idx ON searchindex USING gist (si_title); GRANT USAGE ON SCHEMA tsearch to mediawikiuser; GRANT INSERT,UPDATE,SELECT,DELETE ON searchindex to mediawikiuser;
Search is working. Or should be. The wiki - as well.