Mercurial > piecrust2
diff docs/pages/getting-started.md @ 243:26e59f837558
docs: Add embryo of a documentation website.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Thu, 19 Feb 2015 08:09:17 -0800 |
parents | |
children | 1970e7e3a18e |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/pages/getting-started.md Thu Feb 19 08:09:17 2015 -0800 @@ -0,0 +1,167 @@ +--- +title: Getting Started +header_class: tutorial +--- + +This quick tutorial will show you how to create a simple blog with PieCrust. + +> If you're already an experienced cook, here's the rundown: +> +> virtualenv pcenv +> <activate pcenv> +> pip install piecrust +> chef init mywebsite +> cd mywebsite +> chef prepare post my-first-post +> chef serve +> chef bake + + +## Installation + +The first step is obviously to get PieCrust installed on your machine. + +You'll need Python 3.4 at least for this. Note that it can live side by side +with Python 2.x. On Windows or MacOSX, you can use the [official Python +installer][1]. On main Linux distros, you can use your system's package manager +to install it. If you're on a more obscure system, or if you want to use +alternative means like Homebrew or something, you probably don't need help for +this! + +Now we can start running in a command line. On MacOSX, that's the Terminal app, +and on Windows that's the Command Prompt. + + +### Global installation + +Python 3 comes with a [package manager][2] called `pip`, with which you can install, +update, and uninstall Python programs like PieCrust. Just run: + + pip install piecrust + +This will install PieCrust globally on your system. You may want to install it +using a *virtual environment* instead, though. See the next section for that. + +> #### Permission Errors +> +> If you get some permission errors, you may have to run that command as an +> administrator. That would be `sudo pip install piecrust` on MacOSX and Linux, or +> running the Command Prompt as an Administrator on Windows. + +You should now have PieCrust installed! You can check that it works by typing: + + chef --version + +If everything's fine it should print `{{piecrust.version}}` (the latest +version as of this writing). + + +### Using virtual environements + +Although very straightforward, the previous section installs PieCrust globally +on your system. This may be OK, but could also cause problems if you have other +Python software that share dependencies with PieCrust, but with different +versions. And then there's the issue of installing PieCrust in environments in +which you don't have administrator access. + +Thankfully, `pip` supports a whole variety of scenarios, and [another +utility][3], called `virtualenv` enables even more of them. + +* If you don't have it yet, install `virtualenv` with `pip install + virtualenv`, or check with your administrators to have it. Most web hosts + provide it. +* Run `virtualenv pcenv`. This will create a directory called `pcenv` that + contains a whole new Python environment, separate from your system's Python + environment. +* Activate that environment with `sh pcenv/bin/activate.sh` (on Linux or + MacOSX) or `pcenv\Scripts\activate` (on Windows). The new environment will + now be active for as long as your current command prompt is active. +* Now install PieCrust with `pip install piecrust`. This will install it in + that environment, leaving your system's Python clean of any of PieCrust's + dependencies. + + +## Create an empty website + +The `chef` command is the main PieCrust utility. You can read about it on the +[command-line overview][cmdline] page. The first thing to do is to ask it to +create a basic website structure: + + chef init mywebsite + +This should create a directory called `mywebsite`. There should be a +`config.yml` file in there. Get into that directory: + + cd mywebsite + +Once you're inside a website's root directory, the `chef` command will be able +to do a lot of different things. + + +## Create new content + +Let's start by creating a new page: + + chef prepare page about-me + +It will tell you that it just created a file named `pages/about-me.md`. Go ahead +and edit that in your favorite text editor, and write some text, or change the +title that was defined for you in the header part. For more information on +writing content, see the documentation about [creating pages][cnt]. + +Now let's write a blog post: + + chef prepare post my-new-blog + +It will again tell you about the file it just created. This time it's in the +`posts` folder, and has a name that follows some date/title kind of naming +convention. You don't have to use `chef prepare` to create content for your +website, but for things like blog posts it's a lot easier to let it insert +today's date in the filename. + + +## Preview content + +Time to preview what we just did! Simply type: + + chef serve + +Open your favorite web browser and navigate to the URL that `chef` is listening +on, which by default is `localhost:8080`. You should see some placeholder text +along with today's blog post that you just created, with a simple barebones theme. + +> #### Alternate port +> +> If you already have some other things running on port 8080, you can tell +> PieCrust to use a different one with the `-p` option. + +The `about-me` page isn't shown because you're looking at the index page, but +you would see it if you navigated to `localhost:8080/about-me`. + + +## Bake and publish + +Now it's time to bake this new site and publish it somewhere. There are many +ways to do that, as shown in the documentation about [baking][bake], but here's +a quick way. Run: + + chef bake + +This will bake the website into static files, stored under the `_counter` +directory. At this point, you can upload all the contents of that directory to +your web server. When that's done, you should be able to see the exact same +website being served from there. + + +That's it! This is an extremely quick tour of PieCrust. Read the +[documentation][doc] to learn more. + + +[1]: https://www.python.org/downloads/ +[2]: https://pip.pypa.io/en/latest/ +[3]: https://virtualenv.pypa.io/en/latest/ +[doc]: {{pcurl('docs')}} +[cmdline]: {{pcurl('docs/general/command-line-overview')}} +[cnt]: {{pcurl('docs/content/creating-pages')}} +[bake]: {{pcurl('docs/publish')}} +