Has anyone setup tomcat to run virtual hosts using mod_jk - macos

I work in OSX primarily with mostly PHP. Normally I work locally using MAMP and virtual hosts setup in my httpd.conf so that I can point a browser to http://some-project and have as many projects as I need setup.
We have a project coming up where we need to serve JSP pages and I would like to set up my local apache server to serve only JSP files to Tomcat and everything else to MAMP using the same virtual hosts setup in:
~/applications/MAMP/conf/apache/httpd.conf
So far I have:
Successfully installed Tomcat
Placed mod_jd.so in
~/applications/MAMP/Library/modules/mod_jk.so
Added the module by placing:
LoadModule jk_module modules/mod_jk.so
in
~/applications/MAMP/conf/apache/httpd.conf
Created /Library/Tomcat/Home/conf/jk/workers.properties
and added the following lines:
workers.tomcat_home=/Library/Tomcat
workers.java_home=/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home
ps=/
worker.list=ajp12, ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp12.type=ajp13
worker.ajp13.mount=/*.jsp
added the following lines:
JkWorkersFile /Library/Tomcat/Home/conf/workers.properties
JkLogFile /Library/Tomcat/Home/logs/mod_jk.log JkLogLevel debug
to
~/applications/MAMP/conf/apache/httpd.conf
I cannot start my MAMP however when these last two lines are present in my httpd.conf.
Does anyone work like this?
Any tips?
Any clear ideas of what I'm doing wrong?

I've found with MAMP that it won't start unless the log files already exist. I create the path to the log file and put in an empty text document named the same as the expected log file and it starts right up.

Related

Change localhost/htdocs folder in Xampp 8.2

I know this is not a new question but I think something has changed with Xampp in the latest version. I was using Xampp 8.0 and was using another directory to serve as localhost just fine. My Xampp installation is in C:/xampp while my projects are located in D:\Whip\Projects. This is the folder I want to load when using the address localhost.
I changed 2 lines in httpd.conf like I had done several times before
DocumentRoot "D:\Whip\Projects"
<Directory "D:\Whip\Projects">
The folder loads but PHP doesn't work properly. I get errors related to missing session folders and extensions. The problem is in php.ini file the paths are not absolute anymore. For example, in xampp 8.0 I had
session.save_path="C:\xampp\tmp"
In 8.2 I have
session.save_path="\xampp\tmp"
And same thing with extensions directory and all other paths defined in php.ini (and who knows where else). If I manually add C: to the path above, the sessions start working. I'm apprehensive of changing every path like that. Is there a better way to change the htdocs folder now?

Laravel returns "No input file specified." after changing virtualhosts

I recently installed a fresh copy of Laravel onto this test domain -http://laravel.so-mad.com/ using composer.
Install worked fine, if i navigated to http://laravel.so-mad.com/laravel/public then it all worked as it should.
I then began the task of editing to DocumentRoot on my server. editing the httpd.conf file directly wasn't an option as this gets automatically rebuilt whenever there is an update or the server is rebooted.
However, there is a file included if the file exists at
/etc/apache2/conf.d/userdata/std/2_4/somad/laravel.so-mad.com/*.conf
I editied this file adding in the line
DocumentRoot /home/somad/public_html/nobackup/laravel/laravel/public
This.. I thought would allow my new laravel project to work from the domain root without having to navigate to /laravel/public.
However, as you can see by navigating to http://laravel.so-mad.com/ i just get the message No input file specified.
Any advice or help would be much appreciated

Can Apache Configuration File (httpd.conf) Be Located Elsewhere?

I have been using Apache on Windows (+PHP +MySQL) for a long time now. Lately, I decided to have the configuration files of Apache, PHP and MySQL in one directory, outside of the installation folders of any of them.
With PHP it works by setting PHPIniDir in Apache's httpd.conf
With MySQL it works by setting the --defaults-file=<path/to/my.ini> option while installing on the command line as a Windows service.
With Apache itself, I haven't been able to find a way. Is it possible to choose an arbitrary location or name for the httpd.conf file? And how?
Thank you.
you could use "..-f httpd.conf" on startup. see http://httpd.apache.org/docs/current/de/invoking.html
Regards

Why does mod_jk on Ubuntu 14.04 not connect to tomcat

I am running tomcat 7, Ubuntu 14.04, apache 2.4, Java 8. I am trying to hook up apache with mod_jk to use the tomcat application with only the static resources coming from apache.
Apache is running on port 80 and I can see the file structure and all my static resources. But when I go to the naked url, I only see the apache folder structure. In my understanding mod_jk should be forwarding to the ajp port of tomcat instead.
I installed apache2 and mod_jk (libapache2-mod-jk) by using apt-get. It basically did all the configuration for me (at least it looks like it did). I followed some tutorials to install it, but basically just checked and made sure the steps were taken. The main apache conf file is called apache2.conf and it includes all the .conf files from the folder called mods-enabled. Inside mods-enabled, there is a file called jk.conf. This is the mod-jk conf file and it includes a workers.properties file that is held in my /etc/libapache2-mod-jk folder. (I edited the workers.properties file to point to my tomcat home location and my java home)
The one thing that seemed different from most of the tutorials I read was that my mod jk conf file (jk.conf) had no reference to a file called module/mod_jk.so. I don't know what this file is, and why the folder doesn't have a slash in front of it, but that was what it looked like in all the tutorials.
What would really help is if someone has used the apt-get installation of mod_jk on Ubuntu 14.04 (all of the examples I found were for 12.04).
Is the reason it's not connecting because I don't have the .so file?
Am I mistaken about how ajp is suppossed to work, do I need to do any extra tomcat configuration other than have an ajp connector that looks like this <Connector port="8009" protocol="AJP/1.3" redirectPort="8080" />?
I had not added JkMount to apache2.conf. That solved this.

Xdebug + XAMPP + Netbeans = fail. Cannot get debugger to work in Netbeans

I've read other questions regarding this topic. The listed solutions haven't worked.
Installed:
XAMPP 1.7.7
Netbeans 7.1.1
XDebug 2.1.4
phpinfo() shows that Xdebug is installed with all the correct parameters:
zend_extension = C:\xampp\php\ext\php_xdebug-2.1.4-5.3-vc9.dll
xdebug.remote_enable = on
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "localhost"
xdebug.remote_port = 9000
However, when I start a Netbeans debug session, it cycles for awhile with no effect. When I stop it, I get the Info box informing me that "No connection from xdebug was detected with in nn seconds. The reasons could be that xdebug is not installed or not properly configured. (their emphasis).
As far as I can tell, I configured everything correctly, restarted the Apache server and it still doesn't work. I'm at a total loss on how to proceed. Any help is appreciated.
Can you believe it!? After spending literally HOURS researching this problem, I finally found the cause which I can only classify as a bug. Now, how do I report a bug? That's the next question.
Here's a summary:
create PHP project and setup NetBeans project site root to subfolder.
(In order to not register for Apache new test site for any new task I
put every new task into subfolder under my local test domain, e.g.
http://test.my/project3/ ). NetBeans will not start debugging session
automatically in this case. You will see a ‘waiting for connection’
message from the image below. Do not worry. Left it as it is. Go to
your browser. I use FireFox 4. And call the script you wish to debug
with additional parameter, e.g.
http://test.my/project3/index.php?XDEBUG_SESSION_START=netbeans-xdebug
When you return to NetBeans you will see that connection with xdebug
is established successfully. To stop XDebug session manually call any
script from the same subdirectory with this parameter
?XDEBUG_SESSION_STOP_NO_EXEC=netbeans-xdebug
The complete solution can be found on my newest hero's blog NetBeans 7.0 for PHP Waiting for Connection to XDebug
Edit: Know what I just discovered? I removed index.php as the index file of my run configuration. Works like a charm without having to manually insert the xdebug section of the url.
I just ran into this with Netbeans 8 and while your answer worked around my problem I think I found the solution that will fix it forever.
Project Properties => Run Configuration => Advanced ...
Ensure that the following entry is selected
Debug URL: 'Default: YOUR URL'
Mine was set to "Do Not Open Web Browser" .....
Now it works as it used to work many months ago :)
I am a .Net programmer and very new to PHP. Recently I was trying to host an open source PHP application on my machine(Windows). After the Struggle for 5-6 days I will list the steps which worked for me.
I uninstalled every previous installations of XAMPP and NetBeans and proceeded with fresh installations.
This might not be the solution for everyone but it worked for me and I hope it helps someone.
install XAMPP
install netbeans for PHP.
Open IIS and stop it. It is running on port 80 by default.(I am running XAMPP on port 80 i.e. default, Running on other port might need additional configuration settings)
Open XAMPP control panel and start Apache. If port 80 is free no problem should arise.
Open localhost in browser in should display XAMPP home page.
open phpinfo() link on the left pane and copy all the contents on page. Go to: http://xdebug.org/wizard.php and paste all the content in TextBox and click Analyze my phpinfo output. It will diplay you the Xdebug file suitable for your configuration.
Download the given Xdebug dll and copy it in C:\xampp\php\ext (Xampp being the default Xampp installation directory)
Goto XAMPP control panel, click on Config button in front of Apache and select php.in,
Find line similar or exacly like,
;zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
(Semicolon means it is commented)
Remove the semicolon and replace the path with the path of dll you just copied like:
zend_extension = "C:\xampp\php\ext\php_xdebug-2.3.2-5.4-vc9.dll"
Similarly find lines
;xdebug.remote_enable = 0 ;xdebug.remote_handler = "dbgp"
remove semicolons in front of both lines and make remote_enable = 1
xdebug.remote_enable = 1 xdebug.remote_handler = "dbgp"
Restart Apache server.
Copy your website code under C:/XAMPP/htdocs/(your_website)/ that means your index.php should be at C:/XAMPP/htdocs/(your_website)/index.php
Open Netbeans select New project -> PHP -> PHP project from existing source and select the folder you just copied in htdocs folder. Set it to run on Local web server.
Set a breakpoint on first line of index.php and debug.
That's it.
Additional settings were suggested on various different posts but above mentioned steps worked perfectly for me.
I think what you might be missing is
xdebug.idekey=netbeans-xdebug
this is the settings I use in my php.ini
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=127.0.0.1
xdebug.remote_connect_back=1 # Not safe for production servers
xdebug.remote_port=9000
xdebug.idekey=netbeans-xdebug
xdebug.remote_autostart=false
Read the installation of XAMPP 1.7.7 & Netbeans 7.1 with edditing
the php.ini file as suggested:
http://netbeans.org/kb/docs/php/configure-php-environment-windows.html
Create your PHP project in the local XAMPP directory, c:\xammp\htdocs\*yourproject*
Debug the index.php, you will see that your browser will start with additional parameters:
http://*yourproject*/index.php?XDEBUG_SESSION_START=netbeans-xdebug
Go to your Netbeans, your debugger will be started.

Resources