How to switch between two Apache installations? - apache

Some time ago I installed Apache 2.2.29 with this manual:
https://echo.co/blog/os-x-1010-yosemite-local-development-environment-apache-php-and-mysql-homebrew
into this directory:
/usr/local/Cellar/httpd22/2.2.29/bin/httpd
Yesterday I installed Apache 2.4.17 with this manual:
https://www.youtube.com/watch?v=hV52Vs4E1xs
into this directory:
/usr/local/apache2/bin/httpd
Terminal command
which httpd
shows me this:
Server version: Apache/2.2.29 (Unix)
is there any way to switch to 2.4.17?
(I'm on OS X 10.10.5)

Yes of course. Just specify the absolute path.
For example to stop Apache 2.2.9 use the following command:
/usr/local/Cellar/httpd22/2.2.29/bin/apachectl -k stop
Give it a few seconds or use 'ps' to check its finished shutting down and then use the following to start up the 2.4.17 instance:
/usr/local/apache2/bin/apachectl -k start
Note when you machine restarts it my revert to the old version depending what's in its start up scripts.
Also any config will be specific to each installation so you might find they don't point to the same DocumentRoot so don't display the same website.
You cannot run both under port 80 at the same time. However you could run one under port 80 and one under another port of you wanted both running at exactly the same time.

Related

MAMP 6.7 won't start on port 80

I just upgraded to MAMP version 6.7, to get php 8, it won't start on port 80 from GUI but it starts from command line with /Applications/MAMP/Library/bin/apachectl start (no error messages). Previous version of MAMP (5.7) was running without any problems).
I do not have any other applikation running on port 80 (did: ps aux | grep httpd ).
I do not get any error message in MAMPs error log.
I can start MAMP Apache server on any other port.
I had deactivated Macs own Apaoche server with:
sudo launchctl unload /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null
Installed new version off MAMP, copied over config files for mysql to bin (as I have password for mysql server), configurated phpMyAdmin for http login and no password, chosed php 8.20 in GUI for starting MAMP, checked that port 80 for Apache and 3306 from mysql was configurated, started server.
Edit: It was something about the admin rights on the log files in MAMP/logs (was set to: root as user and admin as group), so I changed permission on apache_error file. to my username (as I i have apache running under it) and read write for group admin, still server do not start.
It is something about the password prompt for the main GUI that not get trigged, I actually want to have that prompt when I start the MAMP servers.
Any ideas?
I upgrade to new version 6.8 of MAMP now who just come out, and that solved the problem, Apache starts and i get the prompt for password when using port 80.
The upgrade process is quite stupid though, IT DID NOT TAKE BACKUP on config files and database, when it wrote the date named backup files for old installation in Applications. Gladly I have strong routine on backup both by hand and in my system setup. So had to copy over config files for mySql (in bin directory) and database directory(in db directory). Need to do this on every new installation of MAMP.
This is stupid MAMP, fix it!

Apache commands with 2nd instance on Mac OS X

I have a Mac OS X 10.9/Mavericks Mac which I have just installed FileMaker Server v13. The FileMaker Server installer creates its own instance of the Apache web server and configures this web server to use port 80 for HTTP and port 443 for HTTPS. The document root for this instance is located at:
/Library/FileMaker Server/HTTPServer/htdocs
I'm trying to use the Apache commands via the Mac OS X Terminal to stop/start/restart this instance but it looks like it's trying to use the standard OS X Apache not the FileMaker Server installed instance.
For example I would like to use:
sudo apachetctl restart
When there are 2 instances of Apache installed how do you specify which instance you wish to command?
Finally found the answer. The following syntax will work:
sudo /Library/Filemaker\ Server/HTTPServer/bin/httpdctl graceful
If you want to keep your OS Apache running it needs to be on a different port. FileMaker doesn't really support console commands and wants you to restart the computer to restart apache.
You can try with the launchctl:
sudo launchctl stop com.filemaker.fms
sudo launchctl start com.filemaker.fms
Or you can try to run httpd and specify the 2nd file directly
/usr/sbin/httpd -f /Library/FileMaker\ Server/HTTPServer/conf/httpd.conf -t
if you you want to restart FileMaker Server you should use this commands in Terminal :
fmsadmin start server
fmsadmin stop server
fmsadmin restart server

Unable to start httpd on OS X Mavericks

I upgraded to OS X Mavericks and I am trying to start the apache web server
I am using the command
sudo apachectl start
to start the server but I get the following error
(13)Permission denied: make_sock: could not bind to address [::]:80
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
With AMPPS or any other app, you can run it through Terminal:
Start
$ sudo /Applications/AMPPS/apache/bin/apachectl start
Stop
$ sudo /Applications/AMPPS/apache/bin/apachectl stop
had the same thing this morning, out of the blue..
I found that running :
sudo /Applications/AMPPS/apache/bin/apachectl start
at least gave me some info :
AH00544: httpd: bad group name administration
so I typed (in terminal)
groups
to see which groups were available and found that there is no administration group but there is admin group
so I went into httpd.conf and found the user/groups config section and changed accordingly
and -surprise!- apache started!
Here is what u can do.
Make sure the server is turned on with sudo ( root ) but I assume this is going just fine since u are using sudo in your start post.
The other way to solve this is to check in your
/etc/apache2/httpd.conf
And change the listen port from 80 into 8080 or anything greater than 1024
Official Bug Fix is here, so you can manage it from UI.
Also sudo apachectl start/stop is for apache bundled with Mac OS X.
Type the whole path as suggested by Daniel above.
Have a read of this blog post
It sounds like you're not seeing the same "silent terminating" thing, but maybe you have a similar problem, that with Maveriks superfluous "Listen 80" line in another config file will now trip up apache. So check if you have a config file under /etc/apache2/users , and also check VirtualHosts which maybe configured in /etc/apache2/extra/httpd-vhosts.conf (or try temporarily disabling these)
Another service is running on the port 80.
Check the service by execute this command:
sudo lsof -i :80
Stop the service before you run start the apachectl.

How to install two Apache services

I would like two install two different apache2.2 services on a Windows machine. I already have one installed and running on ports 80 and 443. I copied the server installation directory and pasted it some where else. I went into httpd.conf and changed it from Listen 80 to Listen 8000. I also changed the Listen 443 to Listen 8001.
I can install it as a service, but it says there is an error in httpd.conf.
When I try to start the service it says:
make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down
Nowhere in the config file does it say to listen to port 80.
What could cause this?
EDIT
I found that if I changed the config file in the original Apache installation that I copied, it would change the error message.
For example I changed the original config files to listen on ports not in use and the error messages, when I try to start the new Apache service, would go away. However, in task manager it did not show the Service as running but as STOPPED.
I uninstalled the service and re-installed it using the -f flag to point to the correct config file and nothing changed. It seems there must be internal pointers or something that are kept when I copied it?
I also tried installing Apache from a .msi installer and it wont install because I already have an apache installation.
SECOND EDIT
Wish I would have seen this earlier. According to Using Apache HTTP Server on Microsoft Windows I may need to build Apache from source.
Note that you cannot install two versions of Apache 2.3 on the same computer with the binary installer. You can, however, install a version of the 1.3 series and a version of the 2.3 series on the same computer without problems. If you need to have two different 2.3 versions on the same computer, you have to compile and install Apache from the source.
I have never done something like this could some one perhaps explain this a little more clearly?
The solution was going into the original Apache install directory and running:
C:\original-apache-install\bin> httpd -k install -n "new service name" -f "new/config/file/location"
Just copying the installation and pasting somewhere else kept ties to the original config file and did not let me change what it pointed to. When I ran the above command in the new install directory it did not work. Example:
C:\new-pasted-apache\bin> httpd -k install -n "new service name" -f "new/config/file/location"
I successfully installed two different 2.4.x versions of apache by installing both services separately with the command that was already mentioned:
C:\Apache2.4.23> httpd -k install -n "Apache2.4.23" -f "C:/Apache2.4.23/conf/httpd.conf"
C:\Apache2.4.12\bin> httpd -k install -n "Apache2.4.12" -f "C:/Apache2.4.12/conf/httpd.conf"
When i checked both services in the "Services" interfaces of windows i noticed that the seconds service had the same executable path as the first installed service. I fixed that by editing the service via regedit (since the sc command did not accept the parameter "-k runservice" that is appended to the executable path):
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
See: https://superuser.com/questions/222238/how-to-change-path-to-executable-for-a-windows-service/252850#252850

Why does running "apachectl -k start" not work, but "sudo apachectl -k start" does?

I'm working on my OS X with the default installation of Apache. For some reason, when I run the "apachectl" command without the "sudo" I get "no listening sockets available / unable to open logs." I'm guessing this is a permissioning thing, so can someone help me out? I'm using Apache 2.2.
Also, side question, where the the Apache script file that is basically the "exe" that linux executes? I'm trying to intergrate my server with Aptana Studio, and it requires the path to the Apache install. I know in Windows, this would be "C:\path\to\httpd.exe", but I don't know how this works in linux.
Is your server listening on port 80? (Usually) only root is allowed to open ports below 1024. Hence the need for sudo.
As you can see, lots of people wonder how to get around this. One possible solution is to perform port-forwarding on your router. (I'm assuming here that you are behind a router...). Then incoming connections on port 80 can be forwarded to e.g. port 8080. Thus only locally does one need to connect to port 8080. (There may be more elegant solutions... somebody else will post them.)
I think generally (on both OS X and Linux - I'm not sure which one you're referring to) the httpd binary is located at: /usr/sbin/httpd
If you need to be able to restart Apache, and you can't do so as root (for whatever reason..), then you may have to settle for a non 'well known' port.
try this
(with php)
$a = shell_exec('sudo -u root -S /etc/init.d/apache2 restart < /home/$user/passfile');
password should stored in passfile