diff options
author | nathan <> | 2023-09-10 18:01:54 -0500 |
---|---|---|
committer | nathan <> | 2023-09-10 18:01:54 -0500 |
commit | 147acad171c06b95397cd44ad2635704ed341885 (patch) | |
tree | 151037d56e023d7b7ca1564a56ba88bb29df1e60 /Gitit User’s Guide.page | |
parent | 56c1397a89e1b60c363049563c07060282e63600 (diff) |
remove admin-specific stuff from user's guide
Diffstat (limited to 'Gitit User’s Guide.page')
-rw-r--r-- | Gitit User’s Guide.page | 526 |
1 files changed, 1 insertions, 525 deletions
diff --git a/Gitit User’s Guide.page b/Gitit User’s Guide.page index c450c06..5ad0853 100644 --- a/Gitit User’s Guide.page +++ b/Gitit User’s Guide.page @@ -2,120 +2,6 @@ format: Markdown ... -Gitit -===== - -Gitit is a wiki program written in Haskell. It uses [Happstack] for -the web server and [pandoc] for markup processing. Pages and uploaded -files are stored in a [git], [darcs], or [mercurial] repository -and may be modified either by using the VCS's command-line tools or -through the wiki's web interface. By default, pandoc's extended version -of markdown is used as a markup language, but reStructuredText, LaTeX, HTML, -DocBook, or Emacs Org-mode markup can also be used. Gitit can -be configured to display TeX math (using [texmath]) and -highlighted source code (using [highlighting-kate]). - -Other features include - -* plugins: dynamically loaded page transformations written in Haskell - (see "Network.Gitit.Interface") - -* categories - -* TeX math - -* syntax highlighting of source code files and code snippets (using - highlighting-kate) - -* caching - -* Atom feeds (site-wide and per-page) - -* a library, "Network.Gitit", that makes it simple to include a gitit - wiki in any happstack application - -[git]: http://git.or.cz -[darcs]: http://darcs.net -[mercurial]: http://mercurial.selenic.com/ -[pandoc]: http://pandoc.org -[Happstack]: http://happstack.com -[highlighting-kate]: http://johnmacfarlane.net/highlighting-kate/ -[texmath]: http://github.com/jgm/texmath/tree/master - -Getting started -=============== - -Compiling and installing gitit ------------------------------- - -The most reliable way to install gitit from source is to get the -[stack] tool. Then clone the gitit repository and use stack -to install: - - git clone https://github.com/jgm/gitit - cd gitit - stack install - -Alternatively, instead of using [stack], you can get the -[Haskell Platform] and do the following: - - cabal update - cabal install gitit - -This will install the latest released version of gitit. -To install a version of gitit checked out from the repository, -change to the gitit directory and type: - - cabal install - -The `cabal` tool will automatically install all of the required haskell -libraries. If all goes well, by the end of this process, the latest -release of gitit will be installed in your local `.cabal` directory. You -can check this by trying: - - gitit --version - -If that doesn't work, check to see that `gitit` is in your local -cabal-install executable directory (usually `~/.cabal/bin`). And make -sure `~/.cabal/bin` is in your system path. - -[stack]: https://github.com/commercialhaskell/stack -[Haskell Platform]: https://www.haskell.org/platform/ - -Running gitit -------------- - -To run gitit, you'll need `git` in your system path. (Or `darcs` or -`hg`, if you're using darcs or mercurial to store the wiki data.) - -Gitit assumes that the page files (stored in the git repository) are -encoded as UTF-8. Even page names may be UTF-8 if the file system -supports this. So you should make sure that you are using a UTF-8 locale -when running gitit. (To check this, type `locale`.) - -Switch to the directory where you want to run gitit. This should be a -directory where you have write access, since three directories, `static`, -`templates`, and `wikidata`, and two files, `gitit-users` and `gitit.log`, -will be created here. To start gitit, just type: - - gitit - -If all goes well, gitit will do the following: - - 1. Create a git repository, `wikidata`, and add a default front page. - 2. Create a `static` directory containing files to be treated as - static files by gitit. - 3. Create a `templates` directory containing HStringTemplate templates - for wiki pages. - 4. Start a web server on port 5001. - -Check that it worked: open a web browser and go to -<http://localhost:5001>. - -You can control the port that gitit runs on using the `-p` option: -`gitit -p 4000` will start gitit on port 4000. Additional runtime -options are described by `gitit -h`. - Using gitit =========== @@ -196,105 +82,6 @@ To see what languages your pandoc was compiled to highlight: [delimited code blocks]: http://pandoc.org/README.html#delimited-code-blocks -Configuring and customizing gitit -================================= - -Configuration options ---------------------- - -Use the option `-f [filename]` to specify a configuration file: - - gitit -f my.conf - -The configuration can be split between several files: - - gitit -f my.conf -f additional.conf - -One use case is to keep sensible part of the configuration outside of a SCM -(oauth client secret for example). - -If this option is not used, gitit will use a default configuration. -To get a copy of the default configuration file, which you -can customize, just type: - - gitit --print-default-config > my.conf - -The default configuration file is documented with comments throughout. - -The `static` directory ----------------------- - -On receiving a request, gitit always looks first in the `static` -directory (or in whatever directory is specified for `static-dir` in -the configuration file). If a file corresponding to the request is -found there, it is served immediately. If the file is not found in -`static`, gitit next looks in the `static` subdirectory of gitit's data -file (`$CABALDIR/share/gitit-x.y.z/data`). This is where default css, -images, and javascripts are stored. If the file is not found there -either, gitit treats the request as a request for a wiki page or wiki -command. - -So, you can throw anything you want to be served statically (for -example, a `robots.txt` file or `favicon.ico`) in the `static` -directory. You can override any of gitit's default css, javascript, or -image files by putting a file with the same relative path in `static`. -Note that gitit has a default `robots.txt` file that excludes all -URLs beginning with `/_`. - -Note: if you set `static-dir` to be a subdirectory of `repository-path`, -and then add the files in the static directory to your repository, you -can ensure that others who clone your wiki repository get these files -as well. It will not be possible to modify these files using the web -interface, but they will be modifiable via git. - -Using a VCS other than git --------------------------- - -By default, gitit will store wiki pages in a git repository in the -`wikidata` directory. If you'd prefer to use darcs instead of git, -you need to add the following field to the configuration file: - - repository-type: Darcs - -If you'd prefer to use mercurial, add: - - repository-type: Mercurial - -This program may be called "darcsit" instead of "gitit" when a darcs -backend is used. - -Note: we recommend that you use gitit/darcsit with darcs version -2.3.0 or greater. If you must use an older version of darcs, then -you need to compile the filestore library without the (default) -maxcount flag, before (re)installing gitit: - - cabal install --reinstall filestore -f-maxcount - cabal install --reinstall gitit - -Otherwise you will get an error when you attempt to access your -repository. - -Changing the theme ------------------- - -To change the look of the wiki, you can modify `custom.css` in -`static/css`. - -To change the look of printed pages, copy gitit's default `print.css` -to `static/css` and modify it. - -The logo picture can be changed by copying a new PNG file to -`static/img/logo.png`. The default logo is 138x155 pixels. - -To change the footer, modify `templates/footer.st`. - -For more radical changes, you can override any of the default -templates in `$CABALDIR/share/gitit-x.y.z/data/templates` by copying -the file into `templates`, modifying it, and restarting gitit. The -`page.st` template is the master template; it includes the others. -Interpolated variables are surrounded by `$`s, so `literal $` must -be backslash-escaped. - Adding support for math ----------------------- @@ -318,315 +105,4 @@ setting of `math` in the configuration file: 3. `raw`: Math will be rendered as raw LaTeX codes. -[MathJax]: https://www.mathjax.org/ - -Restricting access ------------------- - -If you want to limit account creation on your wiki, the easiest way to do this -is to provide an `access-question` in your configuration file. (See the commented -default configuration file.) Nobody will be able to create an account without -knowing the answer to the access question. - -Another approach is to use HTTP authentication. (See the config file comments on -`authentication-method`.) - -Authentication through github ------------------------------ - -If you want to authenticate the user from github through oauth2, you need to -register your app with github to obtain a OAuth client secret and add the -following section to your configuration file: - -``` -[Github] -oauthclientid: 01239456789abcdef012 -oauthclientsecret: 01239456789abcdef01239456789abcdef012394 -oauthcallback: http://mysite/_githubCallback -oauthoauthorizeendpoint: https://github.com/login/oauth/authorize -oauthaccesstokenendpoint: https://github.com/login/oauth/access_token -## Uncomment if you are checking membership against an organization and change -## gitit-testorg to this organization: -# github-org: gitit-testorg -``` - -The github authentication uses the scope `user:email`. This way, gitit gets the -email of the user, and the commit can be assigned to the right author if the -wikidata repository is pushed to github. Additionally, it uses `read:org` if you -uses the option `github-org` to check membership against an organization. - -To push your repository to gitub after each commit, you can add the file -`post-commit` with the content below in the .git/hooks directory of your -wikidata repository. - -``` -#!/bin/sh -git push origin master 2>> logit -``` - -Plugins -======= - -Plugins are small Haskell programs that transform a wiki page after it -has been converted from Markdown or another source format. See the example -plugins in the `plugins` directory. To enable a plugin, include the path to the -plugin (or its module name) in the `plugins` field of the configuration file. -(If the plugin name starts with `Network.Gitit.Plugin.`, gitit will assume that -the plugin is an installed module and will not look for a source file.) - -Plugin support is enabled by default. However, plugin support makes -the gitit executable considerably larger and more memory-hungry. -If you don't need plugins, you may want to compile gitit without plugin -support. To do this, unset the `plugins` Cabal flag: - - cabal install --reinstall gitit -f-plugins - -Note also that if you compile gitit for executable profiling, attempts -to load plugins will result in "internal error: PAP object entered!" - -Accessing the wiki through git -============================== - -All the pages and uploaded files are stored in a git repository. By -default, this lives in the `wikidata` directory (though this can be -changed through configuration options). So you can interact with the -wiki using git command line tools: - - git clone ssh://my.server.edu/path/of/wiki/wikidata - cd wikidata - vim Front\ Page.page # edit the page - git commit -m "Added message about wiki etiquette" Front\ Page.page - git push - -If you now look at the Front Page on the wiki, you should see your changes -reflected there. Note that the pages all have the extension `.page`. - -If you are using the darcs or mercurial backend, the commands will -be slightly different. See the documentation for your VCS for -details. - -Performance -=========== - -Caching -------- - -By default, gitit does not cache content. If your wiki receives a lot of -traffic or contains pages that are slow to render, you may want to activate -caching. To do this, set the configuration option `use-cache` to `yes`. -By default, rendered pages, and highlighted source files -will be cached in the `cache` directory. (Another directory can be -specified by setting the `cache-dir` configuration option.) - -Cached pages are updated when pages are modified using the web -interface. They are not updated when pages are modified directly through -git or darcs. However, the cache can be refreshed manually by pressing -Ctrl-R when viewing a page, or by sending an HTTP GET or POST request to -`/_expire/path/to/page`, where `path/to/page` is the name of the page to -be expired. - -Users who frequently update pages using git or darcs may wish to add a -hook to the repository that makes the appropriate HTTP request to expire -pages when they are updated. To facilitate such hooks, the gitit cabal -package includes an executable `expireGititCache`. Assuming you are -running gitit at port 5001 on localhost, and the environment variable -`CHANGED_FILES` contains a list of the files that have changed, you can -expire their cached versions using - - expireGititCache http://localhost:5001 $CHANGED_FILES - -Or you can specify the files directly: - - expireGititCache http://localhost:5001 "Front Page.page" foo/bar/baz.c - -This program will return a success status (0) if the page has been -successfully expired (or if it was never cached in the first place), -and a failure status (> 0) otherwise. - -The cache is persistent through restarts of gitit. To expire all cached -pages, simply remove the `cache` directory. - -Idle ----- - -By default, GHC's runtime will repeatedly attempt to collect garbage -when an executable like Gitit is idle. This means that gitit will, after -the first page request, never use 0% CPU time and sleep, but will use -~1%. This can be bad for battery life, among other things. - -To fix this, one can disable the idle-time GC with the runtime flag -`-I0`: - - gitit -f my.conf +RTS -I0 -RTS - - -Note: - -To enable RTS, cabal needs to pass the compile flag `-rtsopts` to GHC while installing. - - cabal install --reinstall gitit --ghc-options="-rtsopts" - -Using gitit with apache -======================= - -Most users who run a public-facing gitit will want gitit to appear -at a nice URL like `http://wiki.mysite.com` or -`http://mysite.com/wiki` rather than `http://mysite.com:5001`. -This can be achieved using apache's `mod_proxy`. - -Proxying to `http://wiki.mysite.com` ------------------------------------- - -Set up your DNS so that `http://wiki.mysite.com` maps to -your server's IP address. Make sure that the `mod_proxy`, `mod_proxy_http` and `mod_rewrite` modules are -loaded, and set up a virtual host with the following configuration: - - <VirtualHost *> - ServerName wiki.mysite.com - DocumentRoot /var/www/ - RewriteEngine On - ProxyPreserveHost On - ProxyRequests Off - - <Proxy *> - Order deny,allow - Allow from all - </Proxy> - - ProxyPassReverse / http://127.0.0.1:5001 - RewriteRule ^(.*) http://127.0.0.1:5001$1 [P] - - ErrorLog /var/log/apache2/error.log - LogLevel warn - - CustomLog /var/log/apache2/access.log combined - ServerSignature On - - </VirtualHost> - -Reload your apache configuration and you should be all set. - -Using nginx to achieve the same -------------------------------- - -Drop a file called `wiki.example.com.conf` into `/etc/nginx/conf.d` -(or where ever your distribution puts it). - - server { - listen 80; - server_name wiki.example.com - location / { - proxy_pass http://127.0.0.1:5001/; - proxy_set_header X-Real-IP $remote_addr; - proxy_redirect off; - } - access_log /var/log/nginx/wiki.example.com.log main; - } - -Reload your nginx config and you should be all set. - - -Proxying to `http://mysite.com/wiki` ------------------------------------- - -Make sure the `mod_proxy`, `mod_headers`, `mod_proxy_http`, -and `mod_proxy_html` modules are loaded. `mod_proxy_html` -is an external module, which can be obtained [here] -(http://apache.webthing.com/mod_proxy_html/). It rewrites URLs that -occur in web pages. Here we will use it to rewrite gitit's links so that -they all begin with `/wiki/`. - -First, tell gitit not to compress pages, since `mod_proxy_html` needs -uncompressed pages to parse. You can do this by setting the gitit -configuration option - - compress-responses: no - -Second, modify the link in the `reset-password-message` in the -configuration file: instead of - - http://$hostname$:$port$$resetlink$ - -set it to - - http://$hostname$/wiki$resetlink$ - -Restart gitit. - -Now add the following lines to the apache configuration file for the -`mysite.com` server: - - # These commands will proxy /wiki/ to port 5001 - - ProxyRequests Off - - <Proxy *> - Order deny,allow - Allow from all - </Proxy> - - ProxyPass /wiki/ http://127.0.0.1:5001/ - - <Location /wiki/> - SetOutputFilter proxy-html - ProxyPassReverse / - ProxyHTMLURLMap / /wiki/ - ProxyHTMLDocType "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>" XHTML - RequestHeader unset Accept-Encoding - </Location> - -Reload your apache configuration and you should be set. - -For further information on the use of `mod_proxy_http` to rewrite URLs, -see the [`mod_proxy_html` guide]. - -[`mod_proxy_html` guide]: http://apache.webthing.com/mod_proxy_html/guide.html - -Using gitit as a library -======================== - -By importing the module `Network.Gitit`, you can include a gitit wiki -(or several of them) in another happstack application. There are some -simple examples in the haddock documentation for `Network.Gitit`. - -Reporting bugs -============== - -Bugs may be reported (and feature requests filed) at -<https://github.com/jgm/gitit/issues>. - -There is a mailing list for users and developers at -<http://groups.google.com/group/gitit-discuss>. - -Acknowledgements -================ - -A number of people have contributed patches: - -- Gwern Branwen helped to optimize gitit and wrote the - InterwikiPlugin. He also helped with the Feed module. -- Simon Michael contributed the patch adding RST support. -- Henry Laxen added support for password resets and helped with - the apache proxy instructions. -- Anton van Straaten made the process of page generation - more modular by adding Gitit.ContentTransformer. -- Robin Green helped improve the plugin API and interface, and - fixed a security problem with the reset password code. -- Thomas Hartman helped improve the index page, making directory - browsing persistent, and fixed a bug in template recompilation. -- Justin Bogner improved the appearance of the preview button. -- Kohei Ozaki contributed the ImgTexPlugin. -- Michael Terepeta improved validation of change descriptions. -- mightybyte suggested making gitit available as a library, - and contributed a patch to ifLoggedIn that was needed to - make gitit usable with a custom authentication scheme. - -I am especially grateful to the darcs team for using darcsit for -their public-facing wiki. This has helped immensely in identifying -issues and improving performance. - -Gitit's default visual layout is shamelessly borrowed from Wikipedia. -The stylesheets are influenced by Wikipedia's stylesheets and by the -bluetrip CSS framework (see BLUETRIP-LICENSE). Some of the icons in -`img/icons` come from bluetrip as well. - +[MathJax]: https://www.mathjax.org/
\ No newline at end of file |