X-Git-Url: https://git.danix.xyz/?a=blobdiff_plain;f=articles%2Fgit-setup-own-server-part2.md;h=fe0d944686ed5cc925309a54151fc2d4c0009b43;hb=HEAD;hp=6124b4b3cf7964e7f5aaaf1bf3896479ee262dc7;hpb=6ab8cb7d819405de6154f60130dd8f91b52d985c;p=danix.xyz.git diff --git a/articles/git-setup-own-server-part2.md b/articles/git-setup-own-server-part2.md deleted file mode 100644 index 6124b4b..0000000 --- a/articles/git-setup-own-server-part2.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Git – how to setup your own server pt 2 -author: Danilo M. -type: post -date: 2018-12-17T07:39:08+00:00 -excerpt: followup on my previous article regarding GIT and how to automatically deploy python flask scripts to serve a web app with apache. -draft: true -featured_image: /wp-content/uploads/2018/07/gitout.jpg -categories: - - blogging - - code - - diy - - linux -tags: - - automation - - do it yourself - - flask - - git - - howto - - python - - ssh - ---- -This is a followup on [my previous article about how to setup your server][1] to handle a GIT repository and deploy to a web server like apache. - -Since I started experimenting with python and web publishing with it I wanted a way to push all the changes to my codebase directly to a web server, in a similar way as to what I already do with php and apache.
- -
-

- I want to do it myself, the way I like it.. -

- - danix -
- -Serving python scripts is slightly different than serving html or php, here’s a scheme that shows what happens when using python (flask in this example) to serve some web content. - - -
-
a simple scheme of how python scripts are served on the web.
-
- -As you can see the web server is acting as a reverse proxy to the [WSGI][2] server Gunicorn, Apache receives a request from a client, forwards the request to Gunicorn which in turn asks the python web service, in our case our flask web app. Other than as a reverse proxy, apache is used also to serve static content which is not originated in python, like images, css or js scripts. - -In order to deploy a python web app I had to install the mod_wsgi extension for apache, then I decided to use a folder in my system to install the virtual environment for python to run my web app and point to that directory in my vhost configuration file inside apache. After that I created a directory where to store all files for my web app and instructed apache to serve them using the virtualenv I created earlier. This is more or less what I did: - -
# create the virtual environment for python inside
# the folder /usr/local/virtualenvs/my-app:
virtualenv /usr/local/virtualenvs/my-app

# now create the directory inside the apache root
# to store our web app
mkdir /var/www/htdocs/my-app
- -Now if we put all the py files for our flask web app we can run it inside apache, this is the configuration for the vhost I used: - -
<VirtualHost *:80>
ServerName my-app.mysite.ext
ErrorLog "/var/log/httpd/my-app.error_log"
CustomLog "/var/log/httpd/my-app.access_log" common
WSGIDaemonProcess my-app user=apache group=apache threads=5 python-home=/usr/local/virtualenvs/my-app
WSGIScriptAlias / /var/www/htdocs/my-app/my-app.wsgi
WSGIProcessGroup my-app
Alias "/static/" "/var/www/htdocs/my-app/static/"
<Directory "/var/www/htdocs/my-app/static/">
Order allow,deny
Allow from all
</Directory>
<Directory "/var/www/htdocs/my-app/">
Require all granted
</Directory>
</VirtualHost>

- -With this setting I can now reach my web app and test it after restarting the web server. - - [1]: https://danix.xyz/2018/07/git-setup-own-server/ - [2]: https://en.wikipedia.org/wiki/Web_Server_Gateway_Interface \ No newline at end of file