Deploying Django with a web server is one of the, if not the most, confusing parts of Django.
First, as a quick answer to one of the questions here, the runserver
command is performing the same basic features as what Apache (or nginx) would perform. It is acting as a web server and then forwarding the appropriate requests to Django.
So you don’t use runserver with Apache - it’s used instead of Apache, in a development environment. (You would never want to use runserver for a production Django deployment.)
One of the reasons why Django deployment is such a confusing topic is the number of options you have for doing so. (While you can run Django in Apache - in a couple different ways - I haven’t done so in nearly 10 years. I’ve switched to nginx and have been extremely happy to have done so.)
To start to learn about deploying Django, start with the docs at How to deploy Django | Django documentation | Django.