</para>
<orderedlist>
<listitem><para>Linux Operating System</para></listitem>
- <listitem><para><ulink url="http://www.postgresql.org/">PostgreSQL</ulink> 7.3 or later</para></listitem>
- <listitem><para><ulink url="http://www.apache.org/">Apache</ulink> 1.3.22 or later</para></listitem>
+ <listitem><para><ulink url="http://www.postgresql.org/">PostgreSQL</ulink> 8.3 or later (8.1, 8.2 should work)</para></listitem>
+ <listitem><para><ulink url="http://www.apache.org/">Apache</ulink> 2.2 or later</para></listitem>
<listitem><para><ulink url="http://www.openssl.org/">openssl</ulink> 0.9.4 or later</para></listitem>
<listitem><para><ulink url="http://www.openssl.org/">mod_ssl</ulink> 2.4.10 or later (included in Apache 2.0 and later)</para></listitem>
- <listitem><para><ulink url="http://www.php.net/">PHP</ulink> 4.0.4 or later (note that you'll need to have PHP built with the command line interface support, which only comes standard with PHP 4.3 or later)</para></listitem>
+ <listitem><para><ulink url="http://www.php.net/">PHP</ulink> 5.2 or later (php4 with the command line interface support and php5.1 should work)</para></listitem>
<listitem><para>php-pgsql (enable it with <literal>--with-pgsql</literal> when building PHP, or install it as package)</para></listitem>
<listitem><para>php-mbstring (enable it with <literal>--with-mbstring</literal> when building PHP, or install it as package)</para></listitem>
</orderedlist>
<title>Installation</title>
<section>
<title>Overview</title>
+ <important>
+ <para>The <filename>INSTALL</filename> file in GForge package and <filename>README</filename> files in plugin directories are the authoritive sources for installation instructions and they should have more precedence over this guide.</para>
+ </important>
<note>
- <para>This installation guide is for GForge 4.5.3.</para>
- </note>
- <note>
- <para>Parts of this installation guide are based on <filename>INSTALL</filename> file.</para>
+ <para>This installation guide is for GForge 4.7.</para>
</note>
<para>GForge has a lot of different pieces touching a lot of different components in the system. Cronjobs are required to maintain the system, touching lots of files on a daily and hourly basis, including <filename>/etc/*</filename> system files.</para>
<para>The plugins that now manage the CVS and SVN functionality have made installation slightly harder because even more files have to be moved into place during installation.</para>
<para>The manual installation of GForge is documented below. Be sure to follow each step carefully, check the forums for frequently asked questions, and ask your Apache, Mailman, and PostgreSQL installation questions in the corresponding mailing lists rather than on the GForge forums where little help is available.</para>
</section>
<section>
- <title>Installing on Debian</title>
+ <title>Installing Gforge on Debian</title>
<para>
You can simply add lines found at <ulink url="http://people.debian.org/~bayle/"/> or <ulink url="http://roland.mas.free.fr/"/> to <filename>/etc/apt/sources.list</filename> and type <command>apt-get install gforge</command> to install a working GForge system, thanks to Christian Bayle and Roland Mas.
</para>
</para>
</section>
<section>
- <title>Installing on RPM-based systems</title>
+ <title>Installing Gforge on RPM-based systems</title>
<para>Guillaume Smet makes <ulink url="http://people.openwide.fr/~gsmet/gforge/rpm/">RPM packages for installing GForge</ulink>. If you are using Fedora Core or Red Hat Enterprise Linux, you may want to try them.</para>
</section>
<section>
- <title>Installing GForge</title>
+ <title>Installing GForge oneself on a linux distribution</title>
+ <para>To install GForge, follow these steps (as root):</para>
<section>
<title>Directory Layout</title>
- <para>Instructions below assume that gforge is unpacked into <filename class="directory"><replaceable>/var/www/gforge</replaceable></filename>. There are some other directories where GForge stores files. In this installation guide, they are put in <filename class="directory">/var/www</filename> too.</para>
+ <para>Instructions below assume that gforge is unpacked into <filename class="directory"><replaceable>/opt/gforge</replaceable></filename>. There are some other directories where GForge stores files. In this installation guide, they are put in <filename class="directory">/var/www</filename> too.</para>
<note>
<para>If you want to be <ulink url="http://www.pathname.com/fhs/">FHS</ulink>-compliant, GForge should be unpacked into <filename class="directory">/usr/local/share/gforge</filename>, and directories for storing files should be in <filename class="directory">/var/lib/gforge</filename> or <filename class="directory">/var/local/gforge</filename>. You may use symbolic links to physically place files in FHS-compliant places and still use directory paths that are presented in this manual.</para>
</note>
</section>
<section>
- <title>Unpacking</title>
- <para>To install GForge, follow these steps (as root):</para>
-<screen>
-# <userinput>bzip2 -dc gforge-4.5.tar.bz2 | tar xvf -</userinput>
-# <userinput>mv gforge-4.5 <replaceable>/var/www/gforge</replaceable></userinput>
-</screen>
- </section>
- <section>
- <title>Checking out from Branch_4_5</title>
- <para>Alternative way to get GForge 4.5.3 is to check out from Branch_4_5 in CVS. This gets latest fixes as well. Each of the plugins need to be checked out separately.</para>
- <screen>
-$ <userinput>CVSROOT=:pserver:anonymous@cvs.gforge.org:/cvsroot/gforge; export CVSROOT</userinput>
-$ <userinput>cvs checkout -P -rBranch_4_5 gforge</userinput>
-$ <userinput>mkdir gforge/plugins</userinput>
-$ <userinput>cd gforge/plugins</userinput>
-
-$ <userinput>cvs checkout -P gforge-plugin-scmcvs</userinput>
-$ <userinput>ln -s gforge-plugin-scmcvs scmcvs</userinput>
-
-$ <userinput>cvs checkout -P gforge-plugin-scmsvn</userinput>
-$ <userinput>ln -s gforge-plugin-scmsvn scmsvn</userinput>
-
-$ <userinput>cvs checkout -P gforge-plugin-cvstracker</userinput>
-$ <userinput>ln -s gforge-plugin-cvstracker cvstracker</userinput>
-
-$ <userinput>ln -s common scmcvs/include</userinput>
-$ <userinput>ln -s common scmsvn/include</userinput>
-$ <userinput>ln -s common cvstracker/include</userinput>
-
-$ <userinput>cd ../www</userinput>
-$ <userinput>mkdir plugins</userinput>
-$ <userinput>cd plugins</userinput>
-$ <userinput>ln -s ../../plugins/scmcvs/www scmcvs</userinput>
-$ <userinput>ln -s ../../plugins/scmsvn/www scmsvn</userinput>
-$ <userinput>ln -s ../../plugins/cvstracker/www cvstracker</userinput>
- </screen>
- <para>As you may notice, <literal>Branch_4_5</literal> is not used for plugins although there are such branches.</para>
+ <title>Getting the source</title>
+ <para>There is two ways to get the sources from Gforge : </para>
<section>
- <title>Updating checked out Branch_4_5</title>
- <para>To get latest updates in <literal>Branch_4_5</literal>, run the following commands:</para>
- <screen>
-$ <userinput>cd gforge</userinput>
-$ <userinput>cvs -q update -Pd</userinput>
-$ <userinput>cd plugins/gforge-plugin-scmcvs</userinput>
-$ <userinput>cvs -q update -Pd</userinput>
-$ <userinput>cd ../gforge-plugin-scmsvn</userinput>
-$ <userinput>cvs -q update -Pd</userinput>
-$ <userinput>cd ../gforge-plugin-cvstracker</userinput>
-$ <userinput>cvs -q update -Pd</userinput>
- </screen>
- <para>To monitor latest changes in GForge, including <literal>Branch_4_5</literal>, subscribe to <ulink url="http://lists.gforge.org/mailman/listinfo/gforge-commits">gforge-commits mailing list</ulink>.</para>
+ <title>With the tarball available on https://gforge.org/frs/?group_id=1</title>
+ <para>Unpacking : </para>
+ <screen>
+ # <userinput>tar -xjvf gforge-4.7-svn6744.tar.bz2</userinput>
+ # <userinput>cd gforge-4.7-svn6744</userinput>
+ # <userinput>mkdir -p /opt/gforge</userinput>
+ # <userinput>cp -r *<replaceable>/opt/gforge</replaceable></userinput>
+ </screen>
</section>
<section>
- <title>Fixing access rights</title>
- <para>You may want to make sure that permissions are correct (replace <replaceable>apache-group</replaceable> with the system group used by Apache server):</para>
+ <title>Checking out from the SVN repository with tag v4_7 </title>
+ <para>Alternative way to get GForge 4.7 is to check out with tag v4_7 from SVN. This gets latest fixes as well.</para>
<screen>
-# <userinput>cd gforge</userinput>
+ $ <userinput>svn checkout --username anonsvn https://svn.gforge.org/svn/gforge/tags/v4_7</userinput>
+
+ $ <userinput>cd gforge/www/plugins</userinput>
+ $ <userinput>ln -s ../../plugins/scmcvs/www scmcvs</userinput>
+ $ <userinput>ln -s ../../plugins/scmsvn/www scmsvn</userinput>
+ $ <userinput>ln -s ../../plugins/cvstracker/www cvstracker</userinput>
+ </screen>
+ <section>
+ <title>Updating checked out Branch_4_5</title>
+ <para>To get latest updates in <literal>Branch_4_5</literal>, run the following commands:</para>
+ <screen>
+ $ <userinput>cd gforge</userinput>
+ $ <userinput>svn -q update</userinput>
+ </screen>
+ <para>To monitor latest changes in GForge, subscribe to <ulink url="http://lists.gforge.org/mailman/listinfo/gforge-commits">gforge-commits mailing list</ulink>.</para>
+ </section>
+ </section>
+ </section>
+ <section>
+ <title>Fixing access rights</title>
+ <para>You may want to make sure that permissions are correct (replace <replaceable>apache-group</replaceable> with the system group used by Apache server):</para>
+ <screen>
+# <userinput>cd /opt/gforge</userinput>
# <userinput>chown -R root:<replaceable>apache-group</replaceable> .</userinput>
# <userinput>chmod -R 644 .</userinput>
# <userinput>find -type d | xargs chmod 755</userinput>
# <userinput>chmod -R 755 cronjobs</userinput>
- </screen>
- </section>
+ </screen>
</section>
<section>
<title>GForge Config File</title>
# <userinput>mkdir /etc/gforge</userinput>
# <userinput>chown root: /etc/gforge</userinput>
# <userinput>chmod 755 /etc/gforge</userinput>
-# <userinput>cp <replaceable>/var/www/gforge</replaceable>/etc/local.inc.example /etc/gforge/local.inc</userinput>
+# <userinput>cp <replaceable>/opt/gforge</replaceable>/etc/local.inc.example /etc/gforge/local.inc</userinput>
# <userinput>chown <replaceable>apache-user</replaceable>:<replaceable>apache-group</replaceable> /etc/gforge/local.inc</userinput>
# <userinput>chmod 600 /etc/gforge/local.inc</userinput>
</programlisting>
$sys_dbpasswd="<replaceable>gforge-password</replaceable>"
</programlisting>
</listitem>
- <listitem>
+ <!--<listitem>
<para>Change the following basic variables::</para>
<programlisting>
$sys_urlroot="<replaceable>/var/www/gforge</replaceable>/www/";
$sys_themeroot="<replaceable>/var/www/gforge</replaceable>/www/themes/";
$sys_plugins_path="<replaceable>/var/www/gforge</replaceable>/plugins/";
</programlisting>
- </listitem>
+ </listitem>-->
<listitem>
<para>The directive <varname>$sys_default_domain</varname> should contain the domain of your server, e.g. <literal>gforge.<replaceable>company.com</replaceable></literal>. You may want to replace all occurences of <replaceable>company.com</replaceable> with company's domain name.</para>
</listitem>
</section>
<section>
<title>Configuring the Database (PostgreSQL)</title>
+ <section>
+ <title>PostgreSQL Requirements</title>
+ <para>You to have installed the following packages for </para>
+ <orderedlist>
+ <listitem>a CentOS or Red Hat 5 or Fedora: postgresql, postgresql-libs, postgresql-server, postgresql-contrib</listitem>
+ <listitem>a Debian: postgresql, postgresql-contrib</listitem>
+ <listitem>a Red Hat 4 : postgresql, postgresql-contrib</listitem>
+ </orderedlist>
+
+ </section>
<section>
<title>Initialization of PostgreSQL</title>
<para>In some distributions, PostgreSQL database cluster is not initialised. Consult distribution documentation for more information. If database cluster is not created, you can do so by running:</para>
<title>PostgreSQL Authentication Configuration</title>
<para>The <literal>postgres</literal> PostgreSQL user is used only during installation. Usually, it can connect via UNIX socket without password when invoked by <literal>postgresql</literal> system account. Check by running this:</para>
<screen>
+# <userinput>/etc/init.d/postgresql restart</userinput>
# <userinput>su - postgres</userinput>
$ <userinput>psql template1</userinput>
</screen>
<screen>
local all postgres ident sameuser
</screen>
+<para>If you went just to install postgresql on your server be sure that there is only this line in your <filename>pg_hba.conf</filename> (comment the others)</para>
+<screen>local all all ident sameuser</screen>
<para>GForge uses <literal>gforge</literal> PostgreSQL user to connect to <literal>gforge</literal> database by using password. (You can change that name by editing <filename>local.inc</filename>.) In order this to work, assure that you have the following line in your <filename>pg_hba.conf</filename> (before other <literal>host</literal> directives):</para>
<screen>
host gforge gforge 127.0.0.1 255.255.255.255 md5
</screen>
<para>This line assumes that GForge will always use local PostgreSQL database (<literal>localhost</literal>). If this is not the case, consult PostgreSQL manual for ways to allow connection.</para>
- <para>The following option should be set in <filename>postgresql.conf</filename> because connection to <literal>localhost</literal> uses TCP/IP:</para>
+
+ <!-- <para>The following option should be set in <filename>postgresql.conf</filename> because connection to <literal>localhost</literal> uses TCP/IP:</para>
<screen>
tcpip_socket = true
-</screen>
+</screen>-->
<para>After all these changes to PostgreSQL configuration files are made, PostgreSQL should be restarted. This depends on the distribution. In Debian, it's like this:</para>
<screen>
# <userinput>/etc/init.d/postgresql restart</userinput>
<para>Create GForge database:</para>
<screen>
template1=# <userinput>CREATE DATABASE gforge OWNER gforge ENCODING 'UNICODE';</userinput>
+template1=# <userinput>\q</userinput>
</screen>
<para>Add PL/pgSQL support using the commands:</para>
<screen>
-# <userinput>su - postgres</userinput>
+<!-- # <userinput>su - postgres</userinput> -->
$ <userinput>createlang plpgsql gforge</userinput>
</screen>
<para>Finally, install the database:</para>
<screen>
-$ <userinput>cd <replaceable>/var/www/gforge</replaceable>/db</userinput>
+$ <userinput>cd <replaceable>/opt/gforge</replaceable>/db</userinput>
$ <userinput>psql -a -U gforge -W -h localhost -f gforge.sql gforge &> /tmp/gforge.sql.log</userinput>
+$ <userinput>exit</userinput>
+</screen>
+<para>It is required that the postgresql service is up on each reboot</para>
+<screen>
+$ <userinput>chkconfig postgresql on</userinput>
</screen>
<note>
<para>You may experience the following errors. They are harmless and you can safely ignore them:</para>
<section>
<title>Configuring DNS Server (BIND)</title>
<para>GForge needs its own domain. In example GForge configuration file, it's <literal>gforge.<replaceable>company.com</replaceable></literal>. You should search for <replaceable>company.com</replaceable> in example GForge configuration file and replace it with your domain name.</para>
- <para>Here some example configuration files for BIND are presented that can help you if you are not familiar with BIND but it's not meant to be complete. Don't ask BIND-related questions in GForge forums – consult documentation that come with your distribution and search in Internet. Distributions put files in different places and so there are no file locations here. The example configuration below is only quick start example and doesn't include reverse mapping.</para>
+ <para>Here some example configuration files for BIND are presented that can help you if you are not familiar with BIND but it's not meant to be complete. Don't ask BIND-related questions in GForge forums, consult documentation that come with your distribution and search in Internet. Distributions put files in different places and so there are no file locations here. The example configuration below is only quick start example and doesn't include reverse mapping.</para>
+ <section>
+ <title>DNS Requirements</title>
+ <para>It's required to have the bind package installed </para>
+ </section>
+
<para>New subdomain in <literal>gforge.<replaceable>company.com</replaceable></literal> should be created. In <replaceable>company.com</replaceable> zone file, it may look like that:</para>
<screen>
gforge IN NS ns.gforge.<replaceable>company.com</replaceable>.
};
</screen>
<para>Of course, changes will take effect after reloading BIND.</para>
+ <para>It is required that the dns service is up on each reboot.</para>
+ <screen>
+$ <userinput>chkconfig named on</userinput>
+ </screen>
+ <!-- <section>
+ <title>Basic but concrete DNS cofiguration on CentOS, Fedora or Red Hat</title>
+ <para>Create the file <filename>/etc/named.conf</filename> and add in :</para>
+ <screen>
+options {
+ directory "/var/named";
+ dump-file "/var/named/data/cache_dump.db";
+ statistics-file "/var/named/data/named_stats.txt";
+};
+include "/etc/rndc.key";
+
+zone "." {
+ type hint;
+ file "/var/named/root.db";
+};
+zone "gforge.company.com" {
+ type master;
+ file "/var/named/gforge.db";
+};
+ </screen>
+ <para>Create the file <filename>/var/named/named.root</filename>and add in :</para>
+ <screen>
+
+ </screen>
+ <para></para>
+ </section>-->
</section>
<section>
<title>Configuring PHP</title>
<listitem>
<para><emphasis>Serving Web pages</emphasis>. In this case, PHP is usually used as module and its configuration is in virtual host configuration, as shown later in the document. If you prefer to configure <filename>php.ini</filename>, the following directives are required by GForge:</para>
<programlisting>
-register_globals = On
+<!-- register_globals = Off-->
magic_quotes_gpc = On
file_uploads = On
-include_path=".:<replaceable>/var/www/gforge</replaceable>:<replaceable>/var/www/gforge</replaceable>/www/include:/etc/gforge"
+include_path=".:<replaceable>/opt/gforge</replaceable>:<replaceable>/opt/gforge</replaceable>/www/include:/etc/gforge"
</programlisting>
</listitem>
<listitem>
<para><emphasis>Cron jobs and some scripts</emphasis> require PHP Command-Line Interface (CLI). Scripts are usually invoked with command like this:</para>
<screen>
-$ <userinput>php4 -f cronjobs/mail/mailing_lists_create.php</userinput>
+$ <userinput>php5 -f cronjobs/mail/mailing_lists_create.php</userinput>
</screen>
<note>
<para>The <literal>-f</literal> is optional when using PHP CLI but it's required when PHP CGI executable is used.</para>
</note>
<para>You must set <varname>include_path</varname> in PHP CLI <filename>php.ini</filename>, like already shown above. Increase <varname>memory_limit</varname> configuration parameter to at least 32M. To find where <filename>php.ini</filename> is located, use the following command:</para>
<screen>
-$ <userinput>php4 -i | fgrep php.ini</userinput>
+$ <userinput>php5 -i | fgrep php.ini</userinput>
</screen>
</listitem>
</orderedlist>
<listitem>
<para>Set up PHP module:</para>
<programlisting>
-php_flag register_globals On
-php_flag gpc_magic_quotes On
+php_flag register_globals Off
+php_flag magic_quotes_gpc On
php_flag files_uploads On
php_value include_path ".:/etc/gforge:<replaceable>/var/www/gforge</replaceable>:<replaceable>/var/www/gforge</replaceable>/www/include"
php_value default_charset "UTF-8"
</section>
<section>
<title>Customizing Front Page</title>
- <para>If you want to customize front page, edit <filename>index_std.php</filename>.</para>
+ <para>If you want to customize front page, you'll have to provide new <filename>index_std.php</filename>:</para>
+ <orderedlist>
+ <listitem>
+ <para>Create <filename class="directory">/etc/gforge/custom</filename> directory.</para>
+ </listitem>
+ <listitem>
+ <para>Set <varname>$sys_custom_path</varname> configuration variable to <filename class="directory">/etc/gforge/custom</filename>.</para>
+ </listitem>
+ <listitem>
+ <para>Copy <filename><replaceable>/var/www/gforge</replaceable>/www/index_std.php</filename> to <filename>/etc/gforge/custom/index_std.php</filename> and edit it as you like.</para>
+ </listitem>
+ </orderedlist>
</section>
<section>
<title>Optional Features</title>
<title>SVN</title>
<section>
<title>Overview</title>
- <para>SVN is also managed via plugin – the scmsvn plugin is included and activated by default in GForge. As with scmcvs, you have to move the <filename>scmcvs/etc/plugins/*</filename> files to <filename>/etc/gforge/plugins/*</filename> and may have to make minor modifications for your specific setup.</para>
- <para>There are two ways to manage SVN – one is to have SVN over DAV and the other is to have SVN over SSH just as you do with CVS. If you choose to use DAV, you will need the <filename class="libraryfile">mod_auth_gforge</filename> library compiled and installed in your apache and the appropriate virtual host settings in your <filename>httpd.conf</filename>. <filename class="libraryfile">mod_auth_gforge</filename> is available from gforge.org. The cronjobs to manage SVN are in <filename class="directory">cronjobs/dav-svn/</filename> and so are sample <filename>httpd.conf</filename> virtual host settings. Each of these cronjobs has configuration parameters which you may have to edit manually for your specific system.</para>
+ <para>SVN is also managed via plugin. The scmsvn plugin is included and activated by default in GForge. As with scmcvs, you have to move the <filename>scmcvs/etc/plugins/*</filename> files to <filename>/etc/gforge/plugins/*</filename> and may have to make minor modifications for your specific setup.</para>
+ <para>There are two ways to manage SVN. One is to have SVN over DAV and the other is to have SVN over SSH just as you do with CVS. If you choose to use DAV, you will need the <filename class="libraryfile">mod_auth_gforge</filename> library compiled and installed in your apache and the appropriate virtual host settings in your <filename>httpd.conf</filename>. <filename class="libraryfile">mod_auth_gforge</filename> is available from gforge.org. The cronjobs to manage SVN are in <filename class="directory">cronjobs/dav-svn/</filename> and so are sample <filename>httpd.conf</filename> virtual host settings. Each of these cronjobs has configuration parameters which you may have to edit manually for your specific system.</para>
<para>Configuring svnserv for svn-over-ssh:
<itemizedlist>
<listitem>
<para>Q: How do I upgrade my database?</para>
<para>A: As stated above, you must apply the changes that are listed in date order in the <filename class="directory">db/</filename> directory to your database. Only the changes that are not already in your old <filename class="directory">db/</filename> directory should be applied, and they should be applied and checked <emphasis>in order</emphasis>.</para>
- <para>Q: I'm getting an error about BaseLanguage.class not being found.</para>
+ <para>Q: I'm getting an error about BaseLanguage.class.php not being found.</para>
<para>A: Make sure your localization path is correctly specified in the local.inc file and that it is readable <emphasis>and</emphasis> writable by the apache user.</para>
<para>Q: When I click on <quote>/projects/</quote> or <quote>/users/</quote> links, I get the source code instead of the page I expected.</para>