{"action":"created","comment":{"url":"https://api.github.com/repos/DjangoGirls/tutorial/pulls/comments/29663542","id":29663542,"diff_hunk":"@@ -4,243 +4,301 @@\n \n Until now your website was only available on your computer, now you will learn how to deploy it! Deploying is the process of publishing your application on the Internet so people can finally go and see your app :).\n \n-As you learned, a website has to be located on a server. There are a lot of providers, but we will use the one with the simplest deployment process: [Heroku](http://heroku.com/). Heroku is free for small applications that don't have too many visitors, it'll definitely be enough for you now.\n+As you learned, a website has to be located on a server. There are a lot of providers, but we will one of the ones with the simplest deployment process: [PythonAnywhere](http://pythonanywhere.com/). PythonAnywhere is free for small applications that don't have too many visitors, it'll definitely be enough for you now.\n \n-We will be following this tutorial: https://devcenter.heroku.com/articles/getting-started-with-django, but we pasted it here so it's easier for you.\n+The other external service we'll be using is [Github](http://www.github.com), which is a code hosting service.  There are others out there, but almost all programmers have a Github account these days, and now so will you!\n \n-## The `requirements.txt` file\n+We'll use Github as a stepping stone to transport our code to & from PythonAnywhere.\n \n-We need to create a `requirements.txt` file to tell Heroku what Python packages need to be installed on our server.\n \n-But first, Heroku needs us to install a few packages. Go to your console with `virtualenv` activated and type this:\n+# Git\n \n-    (myvenv) $ pip install dj-database-url gunicorn whitenoise\n+Git is a \"version control system\" used by a lot of programmers - software which keeps track of changes to a file or set of files over time so that you can recall specific versions later. \n \n-After the installation is finished, go to the `djangogirls` directory and run this command:\n \n-    (myvenv) $ pip freeze > requirements.txt\n+## Installing Git\n \n-This will create a file called `requirements.txt` with a list of your installed packages (i.e. Python libraries that you are using, for example Django :)).\n+### Windows\n \n-> __Note__: `pip freeze` outputs a list of all the Python libraries installed in your virtualenv, and the `>` takes the output of `pip freeze` and puts it into a file. Try running `pip freeze` without the `> requirements.txt` to see what happens!\n+You can download Git from [git-scm.com](http://git-scm.com/).  You can hit \"next next next\" on all steps except for one; in the 5th step entitled \"Adjusting your PATH environment\", choose \"Run Git and associated Unix tools from the Windows command-line\" (the bottom option).  Other than that, the defaults are fine.  Checkout Windows-style, commit Unix-style line endings is good.\n \n-Open this file and add the following line at the bottom:\n+### MacOS\n \n-    psycopg2==2.5.4\n+Download Git from [git-scm.com](http://git-scm.com/) and just follow the instructions and just follow the instructions.\n \n-This line is needed for your application to work on Heroku.\n \n+### Linux\n \n-## Procfile\n+Most distros will have this packaged, so try\n \n-Another thing we need to create is a Procfile. This will let Heroku know which commands to run in order to start our website.\n-Open up your code editor, create a file called `Procfile` in `djangogirls` directory and add this line:\n+    sudo apt-get install git  # on debian, ubuntu\n+    # or\n+    sudo yum install git  # on fedora etc\n \n-    web: gunicorn mysite.wsgi\n \n-This line means that we're going to be deploying a `web` application, and we'll do that by running the command `gunicorn mysite.wsgi` (`gunicorn` is a program that's like a more powerful version of Django's `runserver` command).\n+## Starting our Git repository\n \n-Then save it. Done!\n+Go to your console and run these commands, in the `djangogirls` directory:\n \n-## The `runtime.txt` file\n+    $ git init\n+    Initialized empty Git repository in ~/djangogirls/.git/\n+    $ git config user.name \"Your Name\"\n+    $ git config user.email you@example.com\n \n-We need to tell Heroku which Python version we want to use. This is done by creating a `runtime.txt` in the `djangogirls` directory using your editor's \"new file\" command, and putting the following text (and nothing else!) inside:\n+> __Note__: Check your current working directory with a `pwd` command before initializing the repository. You should be in the `djangogirls` folder.\n \n-    python-3.4.2\n+Initializing the git repository is something we only need to do once per project (and you won't have to re-enter the username and email again ever)\n \n-## mysite/local_settings.py\n+Git will track changes to all the files and folders in this directory, but there are some files we want it to ignore.  We do this by creating a file called `.gitignore` in the base directory:\n \n-There is a difference between settings we are using locally (on our computer) and settings for our server. Heroku is using one database, and your computer is using a different database. That's why we need to create a separate file for settings that will only be available for our local environment.\n+    *.pyc\n+    __pycache__\n+    myvenv\n+    db.sqlite3\n \n-Go ahead and create `mysite/local_settings.py` file. It should contain your `DATABASE` setup from your `mysite/settings.py` file. Just like that:\n+The dot on the beginning of the file name is important!","path":"en/deploy/README.md","position":81,"original_position":81,"commit_id":"52eb75c9f6689878d2b819d90dd276b462bad524","original_commit_id":"52eb75c9f6689878d2b819d90dd276b462bad524","user":{"login":"bmispelon","id":6345,"avatar_url":"https://avatars.githubusercontent.com/u/6345?v=3","gravatar_id":"","url":"https://api.github.com/users/bmispelon","html_url":"https://github.com/bmispelon","followers_url":"https://api.github.com/users/bmispelon/followers","following_url":"https://api.github.com/users/bmispelon/following{/other_user}","gists_url":"https://api.github.com/users/bmispelon/gists{/gist_id}","starred_url":"https://api.github.com/users/bmispelon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bmispelon/subscriptions","organizations_url":"https://api.github.com/users/bmispelon/orgs","repos_url":"https://api.github.com/users/bmispelon/repos","events_url":"https://api.github.com/users/bmispelon/events{/privacy}","received_events_url":"https://api.github.com/users/bmispelon/received_events","type":"User","site_admin":false},"body":"Can you turn this into a note?","created_at":"2015-05-05T12:28:10Z","updated_at":"2015-05-05T12:28:10Z","html_url":"https://github.com/DjangoGirls/tutorial/pull/336#discussion_r29663542","pull_request_url":"https://api.github.com/repos/DjangoGirls/tutorial/pulls/336","_links":{"self":{"href":"https://api.github.com/repos/DjangoGirls/tutorial/pulls/comments/29663542"},"html":{"href":"https://github.com/DjangoGirls/tutorial/pull/336#discussion_r29663542"},"pull_request":{"href":"https://api.github.com/repos/DjangoGirls/tutorial/pulls/336"}}},"pull_request":{"url":"https://api.github.com/repos/DjangoGirls/tutorial/pulls/336","id":33290778,"html_url":"https://github.com/DjangoGirls/tutorial/pull/336","diff_url":"https://github.com/DjangoGirls/tutorial/pull/336.diff","patch_url":"https://github.com/DjangoGirls/tutorial/pull/336.patch","issue_url":"https://api.github.com/repos/DjangoGirls/tutorial/issues/336","number":336,"state":"open","locked":false,"title":"Deploy chapter -- pythonanywhere instead of Heroku","user":{"login":"hjwp","id":769730,"avatar_url":"https://avatars.githubusercontent.com/u/769730?v=3","gravatar_id":"","url":"https://api.github.com/users/hjwp","html_url":"https://github.com/hjwp","followers_url":"https://api.github.com/users/hjwp/followers","following_url":"https://api.github.com/users/hjwp/following{/other_user}","gists_url":"https://api.github.com/users/hjwp/gists{/gist_id}","starred_url":"https://api.github.com/users/hjwp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hjwp/subscriptions","organizations_url":"https://api.github.com/users/hjwp/orgs","repos_url":"https://api.github.com/users/hjwp/repos","events_url":"https://api.github.com/users/hjwp/events{/privacy}","received_events_url":"https://api.github.com/users/hjwp/received_events","type":"User","site_admin":false},"body":"As discussed with @olasitarska and @bmispelon, here's a new version of the deploy chapter with the deployment target switched to pythonanywhere instead of heroku.  The hope is that it should be much simpler and cause less problems (there's only 1 config file to edit for example!).  Also, it gets attendees to sign up for github...\r\n\r\n(forked from the USE_TZ=True branch btw ( #334 ) , so will include that if merged.)","created_at":"2015-04-14T19:22:59Z","updated_at":"2015-05-05T12:28:10Z","closed_at":null,"merged_at":null,"merge_commit_sha":"5e5eb0ebd7ee3463c9a86c79e1984e0edb73b627","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/DjangoGirls/tutorial/pulls/336/commits","review_comments_url":"https://api.github.com/repos/DjangoGirls/tutorial/pulls/336/comments","review_comment_url":"https://api.github.com/repos/DjangoGirls/tutorial/pulls/comments{/number}","comments_url":"https://api.github.com/repos/DjangoGirls/tutorial/issues/336/comments","statuses_url":"https://api.github.com/repos/DjangoGirls/tutorial/statuses/52eb75c9f6689878d2b819d90dd276b462bad524","head":{"label":"hjwp:switch-to-pythonanywhere","ref":"switch-to-pythonanywhere","sha":"52eb75c9f6689878d2b819d90dd276b462bad524","user":{"login":"hjwp","id":769730,"avatar_url":"https://avatars.githubusercontent.com/u/769730?v=3","gravatar_id":"","url":"https://api.github.com/users/hjwp","html_url":"https://github.com/hjwp","followers_url":"https://api.github.com/users/hjwp/followers","following_url":"https://api.github.com/users/hjwp/following{/other_user}","gists_url":"https://api.github.com/users/hjwp/gists{/gist_id}","starred_url":"https://api.github.com/users/hjwp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hjwp/subscriptions","organizations_url":"https://api.github.com/users/hjwp/orgs","repos_url":"https://api.github.com/users/hjwp/repos","events_url":"https://api.github.com/users/hjwp/events{/privacy}","received_events_url":"https://api.github.com/users/hjwp/received_events","type":"User","site_admin":false},"repo":{"id":22638703,"name":"djangogirls-tutorial","full_name":"hjwp/djangogirls-tutorial","owner":{"login":"hjwp","id":769730,"avatar_url":"https://avatars.githubusercontent.com/u/769730?v=3","gravatar_id":"","url":"https://api.github.com/users/hjwp","html_url":"https://github.com/hjwp","followers_url":"https://api.github.com/users/hjwp/followers","following_url":"https://api.github.com/users/hjwp/following{/other_user}","gists_url":"https://api.github.com/users/hjwp/gists{/gist_id}","starred_url":"https://api.github.com/users/hjwp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hjwp/subscriptions","organizations_url":"https://api.github.com/users/hjwp/orgs","repos_url":"https://api.github.com/users/hjwp/repos","events_url":"https://api.github.com/users/hjwp/events{/privacy}","received_events_url":"https://api.github.com/users/hjwp/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/hjwp/djangogirls-tutorial","description":"This is a tutorial we are using for Django Girls workshops","fork":true,"url":"https://api.github.com/repos/hjwp/djangogirls-tutorial","forks_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/forks","keys_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/teams","hooks_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/hooks","issue_events_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/issues/events{/number}","events_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/events","assignees_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/assignees{/user}","branches_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/branches{/branch}","tags_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/tags","blobs_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/git/refs{/sha}","trees_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/statuses/{sha}","languages_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/languages","stargazers_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/stargazers","contributors_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/contributors","subscribers_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/subscribers","subscription_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/subscription","commits_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/commits{/sha}","git_commits_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/git/commits{/sha}","comments_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/comments{/number}","issue_comment_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/issues/comments{/number}","contents_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/contents/{+path}","compare_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/merges","archive_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/downloads","issues_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/issues{/number}","pulls_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/pulls{/number}","milestones_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/milestones{/number}","notifications_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/labels{/name}","releases_url":"https://api.github.com/repos/hjwp/djangogirls-tutorial/releases{/id}","created_at":"2014-08-05T09:48:46Z","updated_at":"2015-04-15T20:43:38Z","pushed_at":"2015-05-02T15:34:07Z","git_url":"git://github.com/hjwp/djangogirls-tutorial.git","ssh_url":"git@github.com:hjwp/djangogirls-tutorial.git","clone_url":"https://github.com/hjwp/djangogirls-tutorial.git","svn_url":"https://github.com/hjwp/djangogirls-tutorial","homepage":"http://tutorial.djangogirls.org/","size":13327,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"DjangoGirls:master","ref":"master","sha":"e8585f2d5a937f4027eb6f8e4511b80e63658556","user":{"login":"DjangoGirls","id":7818680,"avatar_url":"https://avatars.githubusercontent.com/u/7818680?v=3","gravatar_id":"","url":"https://api.github.com/users/DjangoGirls","html_url":"https://github.com/DjangoGirls","followers_url":"https://api.github.com/users/DjangoGirls/followers","following_url":"https://api.github.com/users/DjangoGirls/following{/other_user}","gists_url":"https://api.github.com/users/DjangoGirls/gists{/gist_id}","starred_url":"https://api.github.com/users/DjangoGirls/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DjangoGirls/subscriptions","organizations_url":"https://api.github.com/users/DjangoGirls/orgs","repos_url":"https://api.github.com/users/DjangoGirls/repos","events_url":"https://api.github.com/users/DjangoGirls/events{/privacy}","received_events_url":"https://api.github.com/users/DjangoGirls/received_events","type":"Organization","site_admin":false},"repo":{"id":21310764,"name":"tutorial","full_name":"DjangoGirls/tutorial","owner":{"login":"DjangoGirls","id":7818680,"avatar_url":"https://avatars.githubusercontent.com/u/7818680?v=3","gravatar_id":"","url":"https://api.github.com/users/DjangoGirls","html_url":"https://github.com/DjangoGirls","followers_url":"https://api.github.com/users/DjangoGirls/followers","following_url":"https://api.github.com/users/DjangoGirls/following{/other_user}","gists_url":"https://api.github.com/users/DjangoGirls/gists{/gist_id}","starred_url":"https://api.github.com/users/DjangoGirls/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DjangoGirls/subscriptions","organizations_url":"https://api.github.com/users/DjangoGirls/orgs","repos_url":"https://api.github.com/users/DjangoGirls/repos","events_url":"https://api.github.com/users/DjangoGirls/events{/privacy}","received_events_url":"https://api.github.com/users/DjangoGirls/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/DjangoGirls/tutorial","description":"This is a tutorial we are using for Django Girls workshops","fork":false,"url":"https://api.github.com/repos/DjangoGirls/tutorial","forks_url":"https://api.github.com/repos/DjangoGirls/tutorial/forks","keys_url":"https://api.github.com/repos/DjangoGirls/tutorial/keys{/key_id}","collaborators_url":"https://api.github.com/repos/DjangoGirls/tutorial/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/DjangoGirls/tutorial/teams","hooks_url":"https://api.github.com/repos/DjangoGirls/tutorial/hooks","issue_events_url":"https://api.github.com/repos/DjangoGirls/tutorial/issues/events{/number}","events_url":"https://api.github.com/repos/DjangoGirls/tutorial/events","assignees_url":"https://api.github.com/repos/DjangoGirls/tutorial/assignees{/user}","branches_url":"https://api.github.com/repos/DjangoGirls/tutorial/branches{/branch}","tags_url":"https://api.github.com/repos/DjangoGirls/tutorial/tags","blobs_url":"https://api.github.com/repos/DjangoGirls/tutorial/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/DjangoGirls/tutorial/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/DjangoGirls/tutorial/git/refs{/sha}","trees_url":"https://api.github.com/repos/DjangoGirls/tutorial/git/trees{/sha}","statuses_url":"https://api.github.com/repos/DjangoGirls/tutorial/statuses/{sha}","languages_url":"https://api.github.com/repos/DjangoGirls/tutorial/languages","stargazers_url":"https://api.github.com/repos/DjangoGirls/tutorial/stargazers","contributors_url":"https://api.github.com/repos/DjangoGirls/tutorial/contributors","subscribers_url":"https://api.github.com/repos/DjangoGirls/tutorial/subscribers","subscription_url":"https://api.github.com/repos/DjangoGirls/tutorial/subscription","commits_url":"https://api.github.com/repos/DjangoGirls/tutorial/commits{/sha}","git_commits_url":"https://api.github.com/repos/DjangoGirls/tutorial/git/commits{/sha}","comments_url":"https://api.github.com/repos/DjangoGirls/tutorial/comments{/number}","issue_comment_url":"https://api.github.com/repos/DjangoGirls/tutorial/issues/comments{/number}","contents_url":"https://api.github.com/repos/DjangoGirls/tutorial/contents/{+path}","compare_url":"https://api.github.com/repos/DjangoGirls/tutorial/compare/{base}...{head}","merges_url":"https://api.github.com/repos/DjangoGirls/tutorial/merges","archive_url":"https://api.github.com/repos/DjangoGirls/tutorial/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/DjangoGirls/tutorial/downloads","issues_url":"https://api.github.com/repos/DjangoGirls/tutorial/issues{/number}","pulls_url":"https://api.github.com/repos/DjangoGirls/tutorial/pulls{/number}","milestones_url":"https://api.github.com/repos/DjangoGirls/tutorial/milestones{/number}","notifications_url":"https://api.github.com/repos/DjangoGirls/tutorial/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/DjangoGirls/tutorial/labels{/name}","releases_url":"https://api.github.com/repos/DjangoGirls/tutorial/releases{/id}","created_at":"2014-06-28T20:50:05Z","updated_at":"2015-05-03T15:35:27Z","pushed_at":"2015-05-05T10:14:42Z","git_url":"git://github.com/DjangoGirls/tutorial.git","ssh_url":"git@github.com:DjangoGirls/tutorial.git","clone_url":"https://github.com/DjangoGirls/tutorial.git","svn_url":"https://github.com/DjangoGirls/tutorial","homepage":"http://tutorial.djangogirls.org/","size":15829,"stargazers_count":181,"watchers_count":181,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":174,"mirror_url":null,"open_issues_count":39,"forks":174,"open_issues":39,"watchers":181,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/DjangoGirls/tutorial/pulls/336"},"html":{"href":"https://github.com/DjangoGirls/tutorial/pull/336"},"issue":{"href":"https://api.github.com/repos/DjangoGirls/tutorial/issues/336"},"comments":{"href":"https://api.github.com/repos/DjangoGirls/tutorial/issues/336/comments"},"review_comments":{"href":"https://api.github.com/repos/DjangoGirls/tutorial/pulls/336/comments"},"review_comment":{"href":"https://api.github.com/repos/DjangoGirls/tutorial/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/DjangoGirls/tutorial/pulls/336/commits"},"statuses":{"href":"https://api.github.com/repos/DjangoGirls/tutorial/statuses/52eb75c9f6689878d2b819d90dd276b462bad524"}}}}