mod_perl and multiple virtual hosts - perl

We have this situation:
- Apache running mod_perl
- Multiple virtual hosts with own directories
- Each virtual module has the same name for perl modules (development hosts, module differ a little bit, but have the same names)
- Apache2::Reload for each virtual host to reload module on change
But apache throws 500 error on every 1/3 requests for the page reload and without specific error in the log, only warnings about "redefined functions".
Maybe there are some requirements to run the same module names but different paths and distinct them?

Here is how its done:
NameVirtualHost 192.168.0.140
<VirtualHost 192.168.0.140>
PerlOptions +Parent
PerlSwitches -Mlib=/path/to/application
DocumentRoot /path/to/application
ServerName name.domain.com
</VirtualHost>

No, you cannot "run the same module name but with different paths". Perl just does not work that way. If you want to have multiple environments, keep them separate. You can run many Apache instances with different configurations (see the -f *configfilename* option) on various ports. Then in each vhost in the main server, reverse proxy to the back-end server on the corresponding port.

Related

How to run a service on subdomain instead of port on AlmaLinux with Cpanel?

I have a version of keycloak running on my AlmaLinux server. This service runs on port 8080. I can access it using <SERVER-IP>:8080. I however, want to access the service using mysubdomain.mymaindomain.com. This way, the user is not confronted with port-numbers, and I suppose using autoSSL is easier (I cannot get it to work on a different port).
I tried multiple things.
The first (I know, very sketchy) was rerouting using htaccess. I made a rewrite condition that looped to localhost:8080. At first glance this worked, but redirects did not work. I suppose this is, since the service thinks it runs on 'localhost:8080' (what it of course does), and thus redirects (on the browser side) to localhost:8080/home for example.
The second thing I tried was adding this code to the virtualhost config file.
I added this using the WHM environment in the server configuration > apache configuration > include editor. There I tried both 'Pre Virtual Host Include' and 'Post Virtual Host Include' (Originating from here).
<VirtualHost *:80>
DocumentRoot "/public_html/keycloak_public"
ServerName mysubdomain.mymaindomain.com
# Other directives here
</VirtualHost>
That did not work, I found out I had to use a proxy. So I appended the following code behind the former part. (Originating from here).
<VirtualHost *:80>
ServerAdmin me#mymaindomain.com
ServerName mysubdomain.mymaindomain.com
ProxyPreserveHost On
# setup the proxy
<Proxy *>
Order allow,deny
Allow from all
</Proxy>
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</VirtualHost>
However, when I go to mysubdomain.mymaindomain.com this still loads the empty directory, instead of the equivalent of :8080.
According to the above mentioned thread, I have to enable proxy somehow, but I did not find a way to do so in Cpanel, so I kind of assumed it was enabled (I'm sorry). Can that be the problem, or should I look somewhere else in order to fix this problem?
The solution turned out to be replacing the * with the server-ip!

How to configure multiple virtual hosts for MAMP Free version

I've followed several articles about how to configure virtual hosts on Mac using MAMP (such as this post) which involve editing three files:
/etc/hosts
Applications/MAMP/conf/apache/httpd.conf
Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
That all works fine for one host at a time, but if I configure a second local site (such as mysite.loc), the second site doesn't work: it redirects to which ever one I've pointed the directory to in MAMP free. I know that in XAMPP it would be fine to have several different virtual hosts, but shouldn't this also work with MAMP free? If so, how?
you can try to change the port number for all the virtual hosts in the httpd-vhosts.conf file to the one your apache server is currently using. so those virtual hosts can start utilizing the directories you specified, instead of using the default one that can only be changed in the app.

How to find, properly configure MS Team Foundation server?

I have a win7 virtual machine, that has a postgresql installed. There is an (apache) Enterprise DB on my localhost:8080.
I have installed MS Team Foundation Server successfully, and I can see from the management console, that my "DefaultCollection" is online.
Browsing for localhost:8080/tfs or localhost:8080/tfs/DefaultCollection returns a 404 not found error. I had no say on what port I would like to use,
Can you help me find the proper address for this team foundation server? Or tell me how to configure it properly. (I am unfamiliar with this server configuring world, please provide detailed commands or material.)
It sounds like you must've installed PostgreSQL using the one-click installer for Windows, then ran the StackBuilder and installed Apache using StackBuilder.
If so, it's just an ordinary Apache install that you can configure just like normal. You need to either stop and disable any running Apache service in the Services control panel (services.msc).
Alternately, if you wish to continue using it but on a different port, edit the Apache configuration to set the Listen directive to something other than 8080 and change any NameVirtualHost and VirtualHost directives to use the new port, eg:
Listen 8080
NameVirtualHost *:8080
<VirtualHost *:8080>
... blah blah ...
</VirtualHost>
would become:
Listen 8181
NameVirtualHost *:8181
<VirtualHost *:8181>
... blah blah ...
</VirtualHost>
See:
Apache - Virtual Hosts
Apache - Listen
You can find the location of the Apache config file by examining the command that's being used to run Apache. That might be a batch file to start it and stop it, or a service command in the services control panel. It'll probably be called httpd.conf or apache2.conf..
They are 'proper' addresses, but unless the person trying to open the webpage has a valid TFS account then you will not be able to access TFS through the website.
Can you access: http://localhost:8080/tfs/web?
Is your Windows login allowed to access TFS server?
As Craig mentioned, you don't hive any information that could help diagnose what you're trying to achieve. Why are you trying to access TFS through its web endpoints? Did you make sure MSSQL and IIS are installed on the machine? Why have you got apache and postgresql installed on a ALM server that doesn't require them?
TFS is a very complex product, and even though the development team has made huge strides in making it easy to install, it's no small task to get a server working.

how to view "localhost" on my iPod touch

I have a website I am building on localhost:
http://localhost/my-website
I need to test it on my iPhone, but I'm not sure how to go about it. Do I just change my httpd-vhosts.conf file, and, if so, what are the settings?
Assuming that your development machine is called my-macbook-pro, you should just be able to navigate to http://my-macbook-pro.local/mywebsite on your iPhone.
To expand slightly on Richard J. Ross III's answer, "localhost" is a name used to refer only to the local computer. In order for your iPhone to be able to access content on that machine it must:
Have an IP address on the same network as the server machine.
This can be achieved by connecting the iPhone to a wireless access point that is on the same network as the PC, or by creating an ad-hoc wireless network between the two devices.
Respond to HTTP requests from network clients.
Assuming the server and the iPhone are on the same network, it should be possible for traffic to flow between them. However in order for your web content to be visible to the iPhone, the web server must also be configured to respond to requests made to the server machine's IP address.
This is not normally a problem as web servers are commonly configured to respond to HTTP requests sent to any of the machines IP addresses. It is possible that a server could be configured to only respond to local requests, however this is not a typical default setting
How you check or modify this setting is dependent upon the HTTP server software you are using. As this information is not specified I will include instructions for Apache2 as this is a very common choice of HTTP server.
Apache's Listen Directive
Apache's main configuration file is httpd.conf and it is located in the conf subdirectory of your Apache directory. The location of your Apache root directory will vary depending upon what operating system you are using and whether or not a custom location was chosen at installation.
The httpd.conf file contains a directive named Listen which controls the interface (IP address and port) on which Apache listens for incomming HTTP requests.
The default form of this directive is commonly
Listen 80
This specifies that the machine will respond on any of it's IP addresses to requests made on port 80, which is the default port for HTTP traffic.
You can modify the Listen directive to use any address associated with the machine including the loopback address (127.0.0.1) which the name localhost resolves to.
If Apache is set up to only listen on the loopback address then your server machine will only respond to requests made on the local machine. In this configuration, your Listen directive will look something like:
Listen 127.0.0.1:80
If this is the case, you will need to change to either listening on all addresses, as in the example above, or listening only on the address used by the iPhone to communicate with the server machine.
100% working solutions
(for linux + apache + vhosts)
If you are using vhost (several sites on the same server apache) the next several tips can help you view your local websites on mobile:
1) VHOST edit -You should go to /etc/apache2/sites-available/ on your server. There can be several files .conf, each file contain a virtual host configuration for apache. Default file will look like 000-default.conf. Open it (or another one) with admin permissions sudo. In that file you should see something like this:
<VirtualHost *:80>
ServerName auction.dev
ServerAdmin test#test.com
DocumentRoot /var/www/public_html/html
ErrorLog /var/www/logs/error.log
CustomLog /var/www/logs/access.log combined
</VirtualHost>
2) XIP.IO - this special service (its totally free) can help you. You should add to .conf file next line - ServerAlias auction.dev.*.xip.io, after this operation your file will look like this:
<VirtualHost *:80>
ServerName auction.dev
ServerAlias auction.dev.*.xip.io
ServerAdmin test#test.com
DocumentRoot /var/www/public_html/html
ErrorLog /var/www/logs/error.log
CustomLog /var/www/logs/access.log combined
</VirtualHost>
After editing you should save this file and restart apache with command sudo apachectl restart.
3) View from mobile - You need to know ip of your server, in my situation ip = 192.168.1.247. Now in your mobile browser just type auction.dev.192.168.1.247.xip.io and you should see your local website.
I'm working with xampp. localhost works on port 8080.
I just find my ip with ipconfig and surf to http://10.0.0.1:8080.
That easy!
If you just want a better feel of the native behavior instead of just browser dev tools you can use the iOS simulator and type localhost:xxxx in safari app.
For OSX, go to System Preferences / Sharing. There, you can find and change the name of your computer. In the same section, you also have to enable "Internet Sharing" service with "iPhone USB" port.
Then you can view your website at http://{ computer_name }.local/my-website.
When you connect your ipod with the cable to your macbook the device appears in safari on your mac in the menu under developers. When you click this option you can see exact the same as you can on your ipod.
Following these steps worked for me:
https://mtm.dev/iphone-localhost-mac
It is based on Internet Sharing via USB and setting & using the device_name which is then used as mentioned as <device_name>.local:<port>

How do you run multiple instances of JBoss 4.0 (running under Eclipse) on the same machine?

At my office we run JBoss 4.0 and use Eclipse to debug and run the JBoss server. We're deploying simple wars, nothing terribly complex. However, I haven't yet figured out how to get this version of JBoss to either allow me to run separate instances of the war (HEAD and the Branch, for example) or to run separate servers controlled by two different projects in Eclipse. Anyone know how to do this? I've searched and found nothing that addresses this specifically.
The three things you have to think about are:
Making sure that instances do not overwrite each other’s files
Making sure that the instances don’t open the same TCP ports
Determining how to shut down each instance
Create a copy of your configuration so you don't have file collisions (like when temp files are created). Then, I would recommend just binding the two configurations to different IPs on the same machine, which will avoid port conflicts. You can do something like this:
run –b 192.168.0.100 –c myconfig
run –b 192.168.0.101 –c myconfig2
If you have two network cards, this is easy. If you don't, you can setup virtual IP addresses with a loopback adapter on Windows. On Linux, you can use ifconfig.
To shut down, just make sure you specify the IP/port to shut down, like this:
shutdown –s 192.168.0.100:1099 -S
shutdown –s 192.168.0.101:1099 -S
I'm not sure how to get you going on Eclipse, but you should be able to specify those flags to the run and shutdown scripts through the configuration somehow.
We cover this topic in depth in JBoss in Action in section 15.2 - Collocating multiple application server instances.
I think you can subscribe various instances of JBoss to your eclipse installation. normal installation example
Hope it helps you