Where’s the mouse in MacOS Sierra?

I just upgraded to Mac OS Sierra and use a OWC Thunderbolt  2 dock that makes it possible for me to quickly connect my laptop at home and work.  I notice a lot on the first day, but now on day 2 I realize that my mouse speed (tracking?) is moving a bit slower across the screen.  This is an easy thing to solve right?

In Yosemite, you can go to Apple > System Preferences > Mouse and you’d get a screen like this:

adjust-mouse-scroll-in-mouseBut, after upgrading to OS Sierra the new Mouse control panel looks like this:

macos-sierra-mouse-control-panelThe new default it to go directly to looking for a Bluetooth mouse.  How in the world is that helpful?  Not only do I NOT have a Bluetooth mouse but the control panel just never stops looking for a mouse.  So I have no means of adjusting what would be simple mouse controls for my USB connected / wired mouse?

I get it, OS Sierra just doesn’t seem to work well with my OWC Thunderbolt 2 docking station enough to register the mouse that is connected to it.  But, that worked really well in El Capitan with no additional general support needed like drivers.

Time to talk to OWC and see what can be done.

How to compile Adobe ColdFusion 10 Apache connector for OSX Mavericks 10.9

I had just installed OSX Mavericks 10.9, and my ColdFusion 10 server didn’t work – worse it didn’t work after a reinstall.  I had tried downloading an already modified mod_jk.so file, but that didn’t work for me either for some reason.  I had to compile my own.

Please vote for this bug so Adobe fixes this problem with the CF10 installer:

https://bugbase.adobe.com/index.cfm?event=bug&id=3653076

Here is what I had to do to correct, and compile my own Adobe Apache connector for ColdFusion 10.

Shutdown ColdFusion & Apache

In a terminal window:

sudo apachectl stop
cd /Applications/ColdFusion10/cfusion/bin
./coldfusion stop

Now you can work with Apache & ColdFusion 10 files while off.

Get Connector Source

Grab a copy of the source code, as Mike Nicholls pointed out in the bugbase comments from here:

https:helpx.adobe.com/coldfusion/kb/rhel-connector-configuration/_jcr_content/main-pars/download_1/file.res/connector-source.zip

Get XCode

Its free from the App Store and includes the defacto GCC compiler you’ll need.

Get Command-Line Tools

In the past, you had to download and install XCode, and then go into Preferences > Downloads and ask it to also install the command-line tools.  In Mavericks, they smartly separated out the command-line tools from XCode.  You still need both though.  To install the command line tools (and you’ll need to reinstall them after Mavericks if you had it previously), open a terminal window and type:

xcode-select --install

Create a missing symlink

This one is not obvious, I had to google around for this issue.  In a terminal window you need to create a missing symlink:

sudo ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.9.xctoolchain

Copy/paste that into your terminal window and execute it.  It just creates a symlink for osx10.9xctoolchain inside XCode.

Brew Doctor ya self!

I do like HomeBrew, I’ve come to really love it.  Of course, Mavericks kind of broke it – not unusual.  When I ran this in a terminal window:

brew doctor

It complained about everything under /usr/local/ and told me I should chown that directory.  In terminal I ran:

sudo chown -R robsherman:wheel /usr/local/

just replace my name with your account name, but do leave in the ‘wheel’ part.  Now if you re-run brew doctor things should look ok.  You may get a warning about the  /usr/local/lib/libusb-1.0.0.dylib, but Mavericks seems to keep adding that item back no matter how many times I remove it.

Next, some of my items were out-of-date with the new Mavericks install.  My compiler was barking at standard lib items.  In terminal I simply typed:

brew upgrade

This began the process of homebrew upgrading ALL my formulas.  You may want to be more selective about what you upgrade by typing ‘brew upgrade libtool’ for example.

If this is the first time you’ve installed HomeBrew, you may need some additional things in order to compile the Apache connector.  I already had all these things from a previous install so I’m not 100% sure if you’ll need any of it – I do recall when I tried to compile early on, I got some errors and it said my standard library was out of date which was fixed by fixing brew and upgrading the items I had in there.

Here is a list of my brew formulas (‘brew list’):

autoconf        git                      libtool          openssl             readline
automake     libgpg-error    libyaml         pkg-config      ruby-build
cmake             libksba              mysql           rbenv

I can say for certain you won’t need mysql, rbenv, ruby-build, or git just to compile.

If you don’t have these but want to add them just type:

brew install xxx

and replace xxx with the name of the brew formula above.

Working with the Adobe Apache connector source code

When you unzip the connector-source.zip file (do this anywhere, even your Downloads folder), you’ll get a connector-source folder with two sub-folders:  native, and support.

As Mike Nicholls pointed out from the bugbase comment:

I replaced this line in /native/common/jk_map.c:
strcpy(buf, rc);
with:
memmove(buf, rc, len + 1);

You can use a simple text editor to make (about line 207 in the code) this exact change and save it.

Time to Configure and Make

In a terminal window, change directories to the /native directory within connector-source.  Mine was sitting in my download folder so this worked for me:

cd ~/Downloads/connector-source/native

Next, run the configure command:

./configure --with-apxs=/usr/sbin/apxs

You should see a lot of things flash by in the terminal window.  It’s testing and checking what is available to build and outputting a lot of ‘yes’ or ‘pass’ on the screen hopefully.

If there is an error, it will likely be the last thing you see in the prompt in Terminal.  All errors are logged in the config.log file located here:

~/Downloads/connector-source/native/config.log

Open up that log file and review it, its really helpful in telling you what you may be missing.  The few things that bit me initially was that I had reinstalled XCode, but didn’t have command-line tools, I was missing the symlink and one of my Brew formulas was out of date so I had to upgrade them with ‘brew upgrade’.

If you didn’t receive any errors next in the terminal window, type:

make

You’ll get lots of stuff in terminal window again, a few warnings and lots of checks.  Anything in red is going to be a warning as well – don’t panic.

At the bottom of the terminal window, you should see something like:

target="all"; \
        list='common apache-2.0'; \
        for i in $list; do \
            echo "Making $target in $i"; \
            if test "$i" != "."; then \
               (cd $i && /Applications/Xcode.app/Contents/Developer/usr/bin/make $target) || exit 1; \
            fi; \
        done;
Making all in common
make[1]: Nothing to be done for `all'.
Making all in apache-2.0
make[1]: Nothing to be done for `all'.

Congratulations, you did it.

Copy your new mod_jk.so

You can do this through Finder, or you can do it through terminal window.  Here is what I did in terminal window:

cp ~/Downloads/connector-source/native/apache-2.0/mod_jk.so    /Applications/Coldfusion10/config/wsconfig/1/mod_jk.so

There is a space between mod_jk.so and /Applications.  Make sure you have a folder /wsconfig/1/ as your folder could have a different number.

Double check Apache config settings

In your /etc/apache2/httpd.conf file make sure this is at the bottom:

Include /private/etc/apache2/mod_jk.conf

Adobe puts quotes around the file path although its not necessary on a Mac.  Next, open up your mod_jk.conf file and make sure everything there is valid.  Mine is slightly modified to include some additonal ‘custom environment variables’.  Here is a copy of mine:

# Load mod_jk module
LoadModule    jk_module  "/Applications/ColdFusion10/config/wsconfig/1/mod_jk.so"
# Where to find workers.properties
JkWorkersFile "/Applications/ColdFusion10/config/wsconfig/1/workers.properties"
JkMountFile "/Applications/ColdFusion10/config/wsconfig/1/uriworkermap.properties"
# Where to put jk logs
JkLogFile "/Applications/ColdFusion10/config/wsconfig/1/mod_jk.log"
# custom environment variables
JkEnvVar REDIRECT_URL
JkEnvVar REDIRECT_REMOTE_HOST
JkEnvVar REDIRECT_PATH
JkEnvVar REDIRECT_QUERY_STRING
JkEnvVar REDIRECT_HTTP_ACCEPT
JkEnvVar REDIRECT_HTTP_USER_AGENT
JkEnvVar REDIRECT_REMOTE_ADDR
JkEnvVar REDIRECT_SERVER_NAME
JkEnvVar REDIRECT_SERVER_PORT
JkEnvVar REDIRECT_SERVER_SOFTWARE
# Where to put jk shared memory
JkShmFile "/Applications/ColdFusion10/config/wsconfig/1/jk_shm"
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the timestamp log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
AddHandler jakarta-servlet .cfm .cfml .cfc .cfr .cfswf
Alias /CFIDE "/Applications/ColdFusion10/cfusion/wwwroot/CFIDE"
<directory "="" applications="" <span="" class="hiddenSpellError" pre="">ColdFusion10/cfusion/wwwroot/CFIDE">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all

Order allow,deny
Deny from all

Restart

Let’s fire things up and see what happens!  In terminal window:

cd /Applications/ColdFusion10/cfusion/bin
./coldfusion start
sudo apachectl start

Try going to your ColdFusion administrator or any other CF page

Troubleshooting

If nothing is coming up in your browser window, here are a few things to try.  In a terminal window:

sudo apachectl -t

This verifies the syntax of your Apache config files and will tell you if something is wrong.  Apache ok?  can you browse just ‘localhost’ ? If your syntax is ok and you can hit localhost and see the “It works!”, then perhaps its a CF issue.

Take a look at:

/Applications/ColdFusion10/cfusion/logs/coldfusion-error.log

That log should give you a clue what else may be going on with CF10 if it’s not running right.  One common thing I can think of, if you did not reinstall ColdFusion then perhaps Mavericks reset the folder permissions on either the /CFIDE or your directory where your code may be.

Last thought..

Don’t forget to vote for the bug so Adobe themselves fix this problem.  You can do that at the link at the top of this article.  Also, if your ColdFusion is now working, take a moment to create a CAR file of your settings so you have it handy.

I said this before in my previous post, but it bars repeating here too:

Don’t forget to do the ColdFusion 10 mandatory update so you can continue doing the rest of the ColdFusion 10 server updates.

Also, a word of caution – as you start installing the CF10 server updates through the admin, you may be tempted to try and re-configure the Apache connector because almost every one of those updates instructs you to do that.  DON’T!  You’d be replacing the mod_jk.so file with one that currently doesn’t work.

Prepare yourself to perhaps repeat all these steps again as pressure mounts on the ColdFusion team to fix this bug.  That means a new CF10 installer, and/or a hotfix of some kind.

How to Run ColdFusion 10 on OSX Mavericks 10.9 with Apache!

There is a lot to love about Apple’s new Mavericks 10.9 operating system, but as a ColdFusion developer, you know these new things always break a Standard Server (single server) installation on your Mac even if it is a Developer Edition.

A few nights ago I happily downloaded and installed Mavericks and it immediately broke ColdFusion.  Normally I wouldn’t worry, but when trying to reinstall ColdFusion 10, it was still broken.  After a lot of troubleshooting, I finally filed this bug with Adobe.

https://bugbase.adobe.com/index.cfm?event=bug&id=3653076

Please visit this above URL and vote for it.  It’s the only way to show the people at Adobe that this is something that warrants their attention.  As Adam Cameron’s blog points out, Adobe (right now) has no intention of fixing this because the ‘next’ version of ColdFusion (code name Splendor) will be supported in Mavericks, NOT ColdFusion 10.

First, the good news.  The awesome Mike Nicholls saw my bug post and figured out how to make it work.  In short, he grabbed the source code for the connector, changed the C code where the error was happening, recompiled the code, made the connector ‘mod_jk.so’ and tested it out.  It worked, and several other people reported it working as well.  Mike supplied a link to his compiled connector in the above bugbase url if you want to cut right to it.

If you want a bit more information about how to make it all work for yourself, I just want to outline a few steps I’m recalling from memory and all the open windows I’m currently staring at.  Maybe this will help someone else that is still waiting for more help.

Before installing Mavericks

  1. Do yourself a favor and make a CAR file of your ColdFusion settings (ColdFusion admin > Packaging & Deployment > ColdFusion Archives > Create an Archive.  I try to keep one of these handy and updated from time-to-time.
  2. Be smart and do a full backup, it’s why I love Time Machine and my 2TB USB3 WD Passport external hard drive.
  3. Be sure to review what is in the /etc/apache2/ directory, make a backup to your desktop so you can easily reference what was there, and what has changed after the Mavericks install.  Time Machine is great, but it’s not fun always running back and forth, just back it up.
  4. Something to know..  if you created any self-signed SSL certificates to support https in your development, you’ll have to go through the process of recreating new certificates as the Mavericks install deletes the old ones.

After installing Mavericks

Install Java

I was immediately prompted to install Java with an on-screen pop-up. In case you don’t get that prompt, open a Terminal and type:

java -version

if it’s not installed, you should be prompted at that point.  Mavericks removed Java 6 and replaced it with Java 7.  At this point, if you want to try and preserve what is left of your ColdFusion install, you’ll have to change the references from Java 6 to Java 7.  Sean Coyne pointed out that he had to change these three files:

  • /Applications/ColdFusion10/cfusion/bin/jvm.config
  • /Applications/ColdFusion10/cfusion/bin/coldfusion
  • /Applications/ColdFusion10/cfusion/runtime/bin/wsconfig_jvm.config

Sean has other info about Java 7, and migrating from Apple’s Apache to instead use MAMP PRO that is worth looking at as well.  You can try to make these steps work for you or follow what I did below.

Restore your specific Host & Apache settings

Mavericks does a decent job or backing up configuration file changes this time around, that is new from the Mountain Lion upgrade.  Mavericks names your httpd.conf file something like ‘httpd.conf-pre-upgrade’.

What Apache files changed?

  • httpd.conf
  • httpd-vhosts.conf

Don’t forget to restore your host file settings, if you’re using virtual hosts and your own domain names

/private/etc/hosts

Recreate any self-signed SSL certs (if you had any)

The old certificates are gone and will be useless on the newly upgraded Mavericks so be sure to recreate them if your Apache settings had required it after your restore from above.

The one thing that always gets me is remembering to create a nopass.key SSL Certificate Key File.  It’s why I wrote this blog post in the first place, so I’d remember that.

Uninstall ColdFusion 10

For me, I just uninstalled ColdFusion 10 – I’m used to this.  I’d rather have the installer correctly set up the right paths.  Plus, I already have a CAR file ready to import and deploy my settings so I have nothing to loose.

After the uninstall, I also go through and remove the /Applications/ColdFusion10 directory to make sure nothing is left over.

Re-install ColdFusion 10

I like to do the Developer Edition, single server edition.  For the web server, I choose Apache and put in the directory:  /etc/apache2

I don’t like to have my ColdFusion 10 auto-start as I’m not always doing ColdFusion development.  Instead I wrote modified two small AppleScript files compiled into an App that I use to start / stop ColdFusion that use Terminal commands (nothing else).

At the end of the re-install, ColdFusion 10 will start up successfully but you won’t be able to hit any CF pages.  The reason for this is because Adobe’s modified Apache Connector to the modified Tomcat is broken.  Apple updated Apache to version 2.2.24 (from 2.2.22) and this broke it.

If you follow the above bugbase url, I have more notes on what I found.

Replace the mod_jk.so

Stop Coldfusion & Apache and you’ll need to replace the mod_jk.so file found here:

/Applications/ColdFusion10/config/wsconfig/1/mod_jk.so

If you want to replace it, you can use the one Mike Nicholls is linking to in the bug base.  Alternatively, I also fixed the exact same line of code from the same source Mike pointed out and recompiled on my Mac.  I may write about that experience in another post.  You’re welcome to use the file I compiled.  I make or claim no warranty that it will work for you – your mileage may vary.

Here is a quick link to my compiled mod_jk.so file, as well as my CF10 Start and CF10 Stop apps I use on my desktop.

Restart ColdFusion and Apache and things ‘should’ be working for you at this point.

Post frustration notes

Don’t forget to do the ColdFusion 10 mandatory update so you can continue doing the rest of the ColdFusion 10 server updates.

Also, a word of caution – as you start installing the CF10 server updates through the admin, you may be tempted to try and re-configure the Apache connector because almost every one of those updates instructs you to do that.  DON’T!  You’d be replacing the mod_jk.so file with one that currently doesn’t work.

Prepare yourself to perhaps repeat all these steps again as pressure mounts on the ColdFusion team to fix this bug.  That means a new CF10 installer, and/or a hotfix of some kind.

The latest status of this bug is marked as “ToFix” so I’m still hopeful that someone will fix this bug despite what Rakshith Naresh (@rakshithn) tweeted on June 11th.  I’m sure things have changed since June and I’m certain more than a few ColdFusion devs were complaining loudly at the CFSummit  (perfect timing no?)

Creating a self-signed SSL cert for Mac OSx Mountain Lion & Apache

Generate a host key

First, make a home for the new SSL files. I use /etc/apache2/ssl. Open up a terminal window, cd to the new directory and issue the following command to create a host key file.

sudo ssh-keygen -f host.key 

Generate a certificate request file

This command create a certificate request file. A certificate request file contains information about your organization that will be used in the SSL certificate.


sudo openssl req -new -key host.key -out request.csr 

Create the SSL certificate

Create a self signed SSL certificate using the request file.


sudo openssl x509 -req -days 365 -in request.csr -signkey host.key -out server.crt 

Create a ‘nopass’ key

You need to create a ‘nopass’ key otherwise Apache will throw SSL errors that it can’t retrieve a passphrase from the host.

openssl rsa -in host.key -out host.nopass.key

Configure Apache

Create a backup of /etc/apache2/httpd.conf.

Append the contents of /etc/apache2/extra/httpd-ssl.conf to /etc/apache2/httpd.conf.

In /etc/apache2/httpd.conf, make sure the loading of SSL is enabled (remove the #)


LoadModule ssl_module libexec/apache2/mod_ssl.so 

Also, edit SSL section (or in the /apache2/extra/httpd-ssl.conf file) to use the new certificate.

SSLEngine on 
SSLCertificateFile "/etc/apache2/ssl/server.crt"
SSLCertificateKeyFile "/etc/apache2/ssl/host.nopass.key"

Check the config and restart Apache to try the new certificate.

sudo apachectl configtest 
sudo apachectl restart 

Reconfigure Apache Connector on Mac, Mountain Lion & CF10

ColdFusion 10 server updates

ColdFusion 10 server updates informs to reconfigure connectors using wsconfig tool.

I’ve had to dabble through a few updates of ColdFusion 10 so far, and I’ve noticed that some of the updates require reconfiguring the Apache connector.  Something I hadn’t done before in CF9.  The main reason I had discovered this and needed it was the bug fixes in update # 1 that managed to fix problems with CGI variables.  I needed access to cgi.redirect_url and cgi.redirect_uri since I’m using Mod_rewrite rules for my urls.

For starters, you have to manually remove the Apache connector.  If you try to reconfigure right off the bat, you’ll be told that “This web server is already configured for ColdFusion.”

To get started, do yourself a favor and stop both Apache & ColdFusion 10.

For Apache, in a terminal window (I like iTerm), enter:

sudo apachectl stop

For ColdFusion 10, in a terminal window (if single server install) enter:

cd /Applications/ColdFusion10/cfusion/bin

./coldfusion stop

Here are the manual steps from the Adobe article on Installation Considerations:

  • If ColdFusion uninstaller is not able to remove the connector for Apache (for example, in the case of Mac OS X), do the following to manually remove it:
    1. Delete the mod_jk.conf found in
      {apache_install_location}/conf/directory.
    2. Delete {cfroot}/config/wsconfig/1folder which has the Apache connector file,
      mod_jk.so.
    3. Remove the following line from {apache_install_location}/conf/httpd.conf file:
      Include “{apache_install_location}\conf\mod_jk.conf”.
    4. Delete the file {apache_install_location}\conf\mod_jk.conf

You can faithfully follow the above steps, but know that #4 is the same as #1.  Also, # 2 – I’ve noticed for myself that my /config/wsconfig/ directory contains two files, a wsconfig.log and wsconfig.properties files.  If I leave those files there and try to run the steps to reconfigure Apache, I’m still told “This server is already configured for ColdFusion.”  If you get this error, do yourself a favor and just delete the entire “wsconfig” directory and the included two files.  The Apache connector will recreate the folder & files.

To reconfigure Apache, in a terminal window type (again, if you are doing single server install – and chose default locations):

cd /Applications/ColdFusion10/cfusion/runtime/bin

sudo ./wsconfig -ws Apache -dir /etc/apache2 -v

You’ll be prompted for your account password.  Wsconfig needs additional privileges to create folders & files in protected directories.  If you try to execute without it you’ll get some strange “java.io.FileNotfoundException” type of errors for each file/folder it tries to create.  My command above is also assuming you’re using the default Apache located in /etc/apache2.  If you are using a different version of Apache, or installed Apache after the fact in a different location, then please update that part of the directory path.

Here is what you should likely see once the wsconfig is running:


command line: -ws Apache -dir /etc/apache2 -v
Could not find file /private/etc/bin/httpd
Using Apache binary /usr/sbin/httpd
Server version: Apache/2.2.22 (Unix)
Could not find file /private/etc/bin/apachectl
Using Apache control script /usr/sbin/apachectl
Parsing Apache configuration file /private/etc/apache2/httpd.conf
Exec'ing chmod 777 /Applications/ColdFusion10/config/wsconfig/1
Set permission to 777 on /Applications/ColdFusion10/config/wsconfig/1
Exec'ing chmod +x /Applications/ColdFusion10/config/wsconfig/1/mod_jk.so
Set permission to execute on /Applications/ColdFusion10/config/wsconfig/1/mod_jk.so
Created file /Applications/ColdFusion10/config/wsconfig/1/mod_jk.so
Wrote file /private/etc/apache2/httpd.conf
Added ColdFusion configuration to Apache configuration file /private/etc/apache2/httpd.conf
Created file /Applications/ColdFusion10/config/wsconfig/1/README.txt
Wrote file /Applications/ColdFusion10/config/wsconfig/wsconfig.properties
Exec'ing /usr/sbin/apachectl restart
Restarted Apache server
The Apache connector was installed to /private/etc/apache2

Congrats, you’ve reconfigured the Apache connector on your Mac.  Apache got restarted with this process.  Don’t forget to restart ColdFusion:

cd /Applications/ColdFusion10/cfusion/bin

./coldfusion start

You’re done!