From 3a9dfb836118bf2255a129356a8fd401b839d7b7 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 5 May 2008 14:51:26 -0400 Subject: [PATCH] enhancesments for shared hosting * Add a Bundle::Ikiwiki to the source for use with CPAN to install *all* the modules ikiwiki can use. * Add a cpan directory containing a CPAN::MyConfig that can ease use of CPAN to install in a home directory on shared hosting providers. * With these changes, it's pretty easy to install onto nearlyfreespeech.net and probably other shared hosting providers like dreamhost. Added a tip page documentng the process for nearlyfreespeech. --- Bundle/IkiWiki.pm | 34 ++++++++++++++++++++ Bundle/IkiWiki/Extras.pm | 33 +++++++++++++++++++ cpan/CPAN/MyConfig.pm | 44 +++++++++++++++++++++++++ cpan/README | 7 ++++ debian/changelog | 7 ++++ doc/install.mdwn | 21 ++++++------ doc/tips/nearlyfreespeech.mdwn | 59 ++++++++++++++++++++++++++++++++++ po/ikiwiki.pot | 2 +- 8 files changed, 196 insertions(+), 11 deletions(-) create mode 100644 Bundle/IkiWiki.pm create mode 100644 Bundle/IkiWiki/Extras.pm create mode 100644 cpan/CPAN/MyConfig.pm create mode 100644 cpan/README create mode 100644 doc/tips/nearlyfreespeech.mdwn diff --git a/Bundle/IkiWiki.pm b/Bundle/IkiWiki.pm new file mode 100644 index 000000000..c802dcdfd --- /dev/null +++ b/Bundle/IkiWiki.pm @@ -0,0 +1,34 @@ +package Bundle::IkiWiki; + +$VERSION = '0.01'; + +1; + +__END__ + +=head1 NAME + +Bundle::IkiWiki - core modules that ikiwiki needs + +=head1 SYNOPSIS + +perl -MCPAN -e 'install Bundle::IkiWiki' + +=head1 CONTENTS + +XML::Simple +Text::Markdown +Date::Parse +HTML::Template +HTNL::Scrubber +CGI +CGI::FormBuilder +CGI::Session +Mail::Sendmail +HTML::Parser +URI +Data::Dumper + +=head1 AUTHOR + +Joey Hess diff --git a/Bundle/IkiWiki/Extras.pm b/Bundle/IkiWiki/Extras.pm new file mode 100644 index 000000000..a9f737215 --- /dev/null +++ b/Bundle/IkiWiki/Extras.pm @@ -0,0 +1,33 @@ +package Bundle::IkiWiki::Extras; + +$VERSION = '0.01'; + +1; + +__END__ + +=head1 NAME + +Bundle::IkiWiki - modules used by ikiwiki plugins + +=head1 SYNOPSIS + +perl -MCPAN -e 'install Bundle::IkiWiki::Extras' + +=head1 CONTENTS + +RPC::XML +File::MimeInfo +Locale::gettext +Net::OpenID::Consumer +LWPx::ParanoidAgent +Crypt::SSLeay +Text::CSV +Text::Typography +Text::Textile +Text::WikiFormat +XML::Feed + +=head1 AUTHOR + +Joey Hess diff --git a/cpan/CPAN/MyConfig.pm b/cpan/CPAN/MyConfig.pm new file mode 100644 index 000000000..f5dd10212 --- /dev/null +++ b/cpan/CPAN/MyConfig.pm @@ -0,0 +1,44 @@ +$CPAN::Config = { + 'auto_commit' => q[0], + 'build_cache' => q[10], + 'build_dir' => "$ENV{HOME}/.cpan/build/", + 'cache_metadata' => q[1], + 'commandnumber_in_prompt' => q[1], + 'cpan_home' => "$ENV{HOME}/.cpan/", + 'ftp' => q[ftp], + 'ftp_passive' => q[1], + 'ftp_proxy' => q[], + 'getcwd' => q[cwd], + 'gzip' => q[gzip], + 'histfile' => "$ENV{HOME}/.cpan/histfile/", + 'histsize' => q[100], + 'http_proxy' => q[], + 'inactivity_timeout' => q[0], + 'index_expire' => q[1], + 'inhibit_startup_message' => q[0], + 'keep_source_where' => "$ENV{HOME}/.cpan/sources/", + 'make' => q[make], + 'make_arg' => q[], + 'make_install_arg' => q[], + 'make_install_make_command' => q[make], + 'makepl_arg' => "PREFIX=$ENV{HOME} LIB=$ENV{HOME}/lib/perl5", + 'mbuild_arg' => q[], + 'mbuild_install_arg' => q[], + 'mbuild_install_build_command' => q[./Build], + 'mbuildpl_arg' => "-install_path lib=$ENV{HOME}/lib/perl5", + 'no_proxy' => q[], + 'pager' => q[less], + 'prerequisites_policy' => q[follow], + 'scan_cache' => q[atstart], + 'shell' => q[sh], + 'show_upload_date' => q[0], + 'tar' => q[tar], + 'term_is_latin' => q[1], + 'term_ornaments' => q[1], + 'unzip' => q[unzip], + 'urllist' => [], + 'use_sqlite' => q[0], + 'wget' => q[wget], +}; +1; +__END__ diff --git a/cpan/README b/cpan/README new file mode 100644 index 000000000..fd189fe86 --- /dev/null +++ b/cpan/README @@ -0,0 +1,7 @@ +In this directory is a CPAN config file that causes it to install into the HOME +directory, and tries to be reasonably portable. Set PERL5LIB=ikiwiki/cpan to +use it. + +This is provided with ikiwiki for use on hosting providers such as +nearlyfreespeech.net, that have CPAN but need some tweaking for it to be +usable by a regular user. diff --git a/debian/changelog b/debian/changelog index 5f2f16c81..a9c10c2c8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -15,6 +15,13 @@ ikiwiki (2.45) UNRELEASED; urgency=low if the source file does not exist. * git: Put -- before the filename when calling git rev-list to avoid warning message when the file doesn't exist. + * Add a Bundle::Ikiwiki to the source for use with CPAN to install *all* + the modules ikiwiki can use. + * Add a cpan directory containing a CPAN::MyConfig that can ease use of + CPAN to install in a home directory on shared hosting providers. + * With these changes, it's pretty easy to install onto nearlyfreespeech.net + and probably other shared hosting providers like dreamhost. Added + a tip page documentng the process for nearlyfreespeech. -- Joey Hess Sat, 26 Apr 2008 15:09:36 -0400 diff --git a/doc/install.mdwn b/doc/install.mdwn index 170a1d93a..e1e071201 100644 --- a/doc/install.mdwn +++ b/doc/install.mdwn @@ -3,17 +3,12 @@ also [[download]] the source and install it by hand. Ikiwiki should work on most unix-like systems. Ikiwiki is a perl program, and needs a recent version of perl such as -5.8.8. (5.8.0 has been reported not to work). +5.10. (5.8.0 has been reported not to work). Ikiwiki requires the [[cpan Text::Markdown]], [[cpan URI]], [[cpan HTML::Parser]], [[cpan HTML::Template]], and [[cpan HTML::Scrubber]] -perl modules be installed. - -It also uses the following perl modules if available: [[cpan -CGI::Session]], [[cpan CGI::FormBuilder]] (version 3.05 or newer), [[cpan -Mail::Sendmail]], [[cpan TimeDate]], [[cpan RPC::XML]], -[[cpan XML::Simple]], [[cpan XML::Feed]], [[cpan File::MimeInfo]], -[[cpan Locale::gettext]] (version 1.04 or newer). +perl modules be installed. It can also use a lot of other perl modules, if +they are available. It's recommended you have a C compiler, as ikiwiki uses one to build wrappers. @@ -30,8 +25,14 @@ perl modules using this command: perl-XML-Simple perl-TimeDate perl-HTML-Template perl-CGI-FormBuilder \ perl-CGI-Session perl-File-MimeInfo perl-gettext -If you want to install from the tarball, you should make sure that the -required perl modules are installed, then run: +If you want to install by hand from the tarball, you should make sure that +all the perl modules are installed. This is one way to install them, using +CPAN: + + PERL5LIB=. PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'CPAN::Shell->install("Bundle::IkiWiki")' + PERL5LIB=. PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'CPAN::Shell->install("Bundle::IkiWiki::Extras")' + +Then to build and install ikiwiki: perl Makefile.PL # PREFIX=/dir to install elsewhere make diff --git a/doc/tips/nearlyfreespeech.mdwn b/doc/tips/nearlyfreespeech.mdwn new file mode 100644 index 000000000..84022f86f --- /dev/null +++ b/doc/tips/nearlyfreespeech.mdwn @@ -0,0 +1,59 @@ +[NearlyFreeSpeech.net](http://NearlyFreeSpeech.net) is a shared hosting +provider with very cheap pay as you go pricing. Here's how to install ikiwiki +there if you don't have a dedicated server. + +* [Get an account](https://www.nearlyfreespeech.net/about/start.php). +* Create a site using their web interface. Mine is named `ikiwiki-test` and I + used their DNS instead of getting my own, resulting in + +* Fund it. (Or don't. They gave me 2 cents free funding for signing up, which + is enough to pay for 10 megabytes of hosting, or about a thousand typical + page views at their current rates.) +* `ssh` into their server using the ssh hostname and username displayed on + the site's information page. For me this was + `ssh joeyh_ikiwiki-test@ssh.phx.nearlyfreespeech.net` +* Set up .profile to use your home directory. + echo "PATH=$PATH:$HOME/bin" > $HOME/.profile + . $HOME/.profile +* You'll be in the htdocs directory by default, where public web pages are + put, so before installing ikiwiki, `cd $HOME` +* Use `wget` to [[download]] the ikiwiki tarball. +* Unpack ikiwiki. + tar zxvf ikiwiki*.tar.gz +* Use CPAN to install the perl modules it uses into your home directory: + PERL5LIB=ikiwiki:ikiwiki/cpan:. PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'CPAN::Shell->install("Bundle::IkiWiki")' + PERL5LIB=ikiwiki:ikiwiki/cpan:. PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'CPAN::Shell->force(install => "Bundle::IkiWiki::Extras")' + (This will take a while. As long as the first command succeeds, ikiwiki will be + usable. The second command adds extra modules that some plugins use, and + installation of some of them might fail.) +* Now build and install ikiwiki into your home directory. + cd ikiwiki + export MAKE=gmake + perl Makefile.PL INSTALL_BASE=$HOME PREFIX= + $MAKE + $MAKE install +* With ikiwiki installed, you can follow the regular [[setup]] tutorial for + settng up your wiki. Make sure to set `destdir` to `/home/htdocs/` so that + the wiki is published on the web site. I recommend using git for revision + control; you can then clone your wiki's git repository as an offsite backup. + Here is an example of how I set up a wiki: + mkdir ~/wiki + cd ~/wiki + cp ~/ikiwiki/doc/ikiwiki.setup . + cp -r ~/ikiwiki/doc/examples/blog/* . + nano ikiwiki.setup + # Set destdir to /home/htdocs + # Set srcdir to /home/private/wiki + # Set url to http://yoursite.nfshost.com/ , set cgiurl likewise + # Uncomment the `rcs => "git"` line, and the cgi and git + # post-update wrapper blocks. + # Set the cgi wrapper path to /home/htdocs/ikiwiki.cgi + # Set the git wrapper path to /home/private/wiki.git/hooks/post-update + # Configure the rest to your liking and save the file. + ikiwiki-makerepo git . ../wiki.git + ikiwiki -setup ikiwiki.setup +* Finally, you can save a _lot_ of disk space by cleaning up the ikiwiki + tarball and .cpan directory. + rm -rf ~/ikiwiki*.tar.gz ~/.cpan + +Have fun and do good things. --[[Joey]] diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot index 835b2773b..8247d5887 100644 --- a/po/ikiwiki.pot +++ b/po/ikiwiki.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-05-02 12:52-0400\n" +"POT-Creation-Date: 2008-05-04 14:50-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n"