How to run multiple sites on one apache instance

后端 未结 2 1926
轮回少年
轮回少年 2020-12-07 08:56

Spent hours going in circles following every guide I can find on the net.

I want to have two sites running on a single apache instance, something like this - 192.168

相关标签:
2条回答
  • 2020-12-07 09:23

    Yes with Virtual Host you can have as many parallel programs as you want:

    Open

    /etc/httpd/conf/httpd.conf

    Listen 81
    Listen 82
    Listen 83
    
    <VirtualHost *:81>
        ServerAdmin webmaster@site1.com
        DocumentRoot /var/www/site1/html
        ServerName site1.com
        ErrorLog logs/site1-error_log
        CustomLog logs/site1-access_log common
        ScriptAlias /cgi-bin/ "/var/www/site1/cgi-bin/"
    </VirtualHost>
    
    <VirtualHost *:82>
        ServerAdmin webmaster@site2.com
        DocumentRoot /var/www/site2/html
        ServerName site2.com
        ErrorLog logs/site2-error_log
        CustomLog logs/site2-access_log common
        ScriptAlias /cgi-bin/ "/var/www/site2/cgi-bin/"
    </VirtualHost>
    
    <VirtualHost *:83>
        ServerAdmin webmaster@site3.com
        DocumentRoot /var/www/site3/html
        ServerName site3.com
        ErrorLog logs/site3-error_log
        CustomLog logs/site3-access_log common
        ScriptAlias /cgi-bin/ "/var/www/site3/cgi-bin/"
    </VirtualHost>
    

    Restart apache

    service httpd restart

    You can now refer Site1 :

    http://<ip-address>:81/ 
    http://<ip-address>:81/cgi-bin/
    

    Site2 :

    http://<ip-address>:82/
    http://<ip-address>:82/cgi-bin/
    

    Site3 :

    http://<ip-address>:83/ 
    http://<ip-address>:83/cgi-bin/
    

    If path is not hardcoded in any script then your websites should work seamlessly.

    0 讨论(0)
  • 2020-12-07 09:29

    Your question is mixing a few different concepts. You started out saying you wanted to run sites on the same server using the same domain, but in different folders. That doesn't require any special setup. Once you get the single domain running, you just create folders under that docroot.

    Based on the rest of your question, what you really want to do is run various sites on the same server with their own domain names.

    The best documentation you'll find on the topic is the virtual host documentation in the apache manual.

    There are two types of virtual hosts: name-based and IP-based. Name-based allows you to use a single IP address, while IP-based requires a different IP for each site. Based on your description above, you want to use name-based virtual hosts.

    The initial error you were getting was due to the fact that you were using different ports than the NameVirtualHost line. If you really want to have sites served from ports other than 80, you'll need to have a NameVirtualHost entry for each port.

    Assuming you're starting from scratch, this is much simpler than it may seem.

    If you are using 2.3 or earlier, the first thing you need to do is tell Apache that you're going to use name-based virtual hosts.

    NameVirtualHost *:80
    

    If you are using 2.4 or later do not add a NameVirtualHost line. Version 2.4 of Apache deprecated the NameVirtualHost directive, and it will be removed in a future version.

    Now your vhost definitions:

    <VirtualHost *:80>
        DocumentRoot "/home/user/site1/"
        ServerName site1
    </VirtualHost>
    
    <VirtualHost *:80>
        DocumentRoot "/home/user/site2/"
        ServerName site2
    </VirtualHost>
    

    You can run as many sites as you want on the same port. The ServerName being different is enough to tell Apache which vhost to use. Also, the ServerName directive is always the domain/hostname and should never include a path.

    If you decide to run sites on a port other than 80, you'll always have to include the port number in the URL when accessing the site. So instead of going to http://example.com you would have to go to http://example.com:81

    0 讨论(0)
提交回复
热议问题