Skip to main content

How to to deploy python app sepratly on same server (previous one ) /root/demo - Deploy Python app on Ubuntu Server using ssh Terminal - by Vasu Birla

hello friends , am Vasu Birla and Today we will deploy Python App..

in previous post we have deployed NODE js app on 0.0.0.0 (your server IP) and
acess it using http://0.0.0.0/  

Now  If you want to deploy a Python app separately on the same server,
in the /root/demo directory, and access it using http://0.0.0.0/demo,
 you can use Apache2 and mod_wsgi to host the Python app.
  Additionally, you can configure Apache2 to proxy the requests for the
  /demo path to your Python app without affecting the Node.js app hosted at the root.  


First of all  put your python project folder on root location of server ,
using putty with cloning git repo or using FTP server and direct paste folder
(in previous post we aleady discussed it)

  lets suppose your folder name is demo .. location would be  /root/demo

  install necessery things to support your python app .  like pip install or django ..etc
    as well install in virtual enviorment also ..

     -> python3 -m venv venv

       -> source venv/bin/activate

       ->  pip install django

       -> pip install -r requirements.txt

       -> deactivate

 Step 1: Install mod_wsgi
First, make sure mod_wsgi is installed on your server:

  -> sudo apt update

  -> sudo apt install libapache2-mod-wsgi-py3

 Step 2: Set Up the Python App

Place your Python app code inside the /root/demo directory. Since you mentioned that there is a manage.py file, I assume you are using Django. Make sure you have installed Django and other required dependencies.

Step 3: there are two ways
----------------------(i) . with Unique Port ---------------------------------
    in settings.py you have to allow host either with server IP or with "*" for
    all Internal Hosts

opeen settings.py and put this ->
ALLOWED_HOSTS = ['*']

after doint this verify it using
Verify the Setup
in browser access -> http://YourServerIP:8000/ in my case (http://62.72.5.123:8000/)
and here we go ..you can see your project Live ..

//------------------------------------------------------------------------------

---------------------- (ii). With Apache2 ---------------------------------


Modify Apache2 Configuration for Node.js App
Edit the virtual host configuration for the Node.js app (puno):

run
-> sudo nano /etc/apache2/sites-available/puno.conf  

note - puno.conf is already made for node js app .. but we have to add seprate host for /demo

fot following code in puno.conf

#puno.conf

<VirtualHost *:80>
    ServerName 62.72.5.123


 # Proxy /demo to Python app
    ProxyPass /demo http://127.0.0.1:8000/demo
    ProxyPassReverse /demo http://127.0.0.1:8000/demo

    # Exclude all sub-routes of /demo from being proxied
    <LocationMatch "^/demo($|/)">
        ProxyPass "!"
    </LocationMatch>

    # Proxy other requests to Node.js app
    ProxyPass / http://127.0.0.1:3000/
    ProxyPassReverse / http://127.0.0.1:3000/

</VirtualHost>

Enable the Apache2 Configuration and Restart Apache2
Enable the virtual host configuration and restart Apache2:

-> sudo a2ensite puno.conf

-> sudo service apache2 restart

: Verify the Setup
Now, accessing http://0.0.0.0/demo/ should route requests to your Python app (/demo), and accessing http://0.0.0.0/ should route requests to your Node.js app (kilvishNodeapp).

//---------------------------------------------------------------------------------

Now for keeping alive this Python App without terminal process
we will use same  pm2 pakage (out node app is already running with pm2 in previous post)

Step 1: Ensure the Virtual Environment and Install Django
Make sure you have set up the Python virtual environment for your Django app (demo) and
installed Django within the virtual environment as described before.

if you didnt install require pakages in virtual env yet .. follow below commands

        go to puroject folder location  (in my case its demo) run following command to make virtual env
       ->  cd /root/demo  

       -> python3 -m venv venv

       -> source venv/bin/activate

       ->  pip install django

        -> pip install -r requirements.txt

       -> deactivate



Step 2: Start the Python App with PM2
Start the Python app (demo) using PM2's process file format:
Note - here  /root/demo/venv/bin/python  is my virtual env path .. you have to put yours

run following

-> pm2 start manage.py --name "demo" --interpreter /root/demo/venv/bin/python -- runserver 0.0.0.0:8000

-> pm2 save
 
 -> sudo service apache2 restart  

 ---------------------- Completed -------------------------


Comments

Popular posts from this blog

Part 19- Router (Networking Devices)- Computer Networking- CCNA

Hello friends...i am Vasu Birla and today will discuss about the most important Networking Device ..Router.  so let's start... ROUTER Router is a device which connect two or more networks together, which is why router is also known is Inter-networking device also. Inter-networking means two or more networks are connected together with the help of router. one more thing router is just like a computer  but it is designed for routing only, our computer can be router also but that are software router while hardware router which are specialize for routing is more efficient and fast than software router.  There is a Operating System installed on router which get moves data from one network to another network with the help of routing table.  Router does work on Network layer or Layer 3 of the OSI model.  Cisco Router There many companies which manufacture Router but main companies are - Cisco , Juniper , HP, 3com and Nortel  ...

How to deploy NodeJS app on server with Apache2 and acess it with Server IP addresss - Node JS deploy project Live.

     hello friens , This is Vasu Birla , in previous post we have seen the deployement of NodeJS app on AWS instance server instance but AWS server is expensive than other servers . SO today we will use simple Ubuntu server for making Live out Project using Apache2 . At the end you will be abe to access your NodeJS app using server IP address from anywhere  .. 1.  Login to your server using SSH terminal . (in AWS part i already explained how to do this )     -> Open your putty in hostname put your server IP -      login with ssh username ->root and password     (if you dont have root username and pass ask your      provider or reset it from cpanel or hosting panel ) 2. after login - on terminal you can Put your project anywhere.     There are two ways to put your project folder on server location     (i) - > using Github - (very popular and easy to track your everyday code changes t...

GitHub Repo Collaboration Work on single project

 =============================================== To collaborate effectively with your friend on the same project, you should use Git branches to manage different lines of development. Here's a step-by-step procedure you can follow to streamline collaboration: 1. Create Separate Branches for Each Developer Create a New Branch for Your Friend: On your local repository, create a new branch for your friend. For example if your friend name is kilvish , if you want to create a branch named kilvish , you would run: make sure you would be on main branch already   command->  git checkout -b kilvish git push origin kilvish 2. Set Up Your Friend’s Environment( On your Friend's System )  at kilvish side  run ->  Clone the Repository (if not already done): If your friend hasn’t cloned the repository yet, they should do so: command ->  git clone https://github.com/Vasu-Birla/your-repo.git   // your your main clone line  Fetch All Bran...