OSX and Apache .htaccess allow mode rewrite

So today i had to get Apache, PHP and Mysql running again on my macbook after installing a new hardrive.

PHP is installed already so thats fine. Mysql a simple download and install. I stick to the 32 bit for now as it not everything plays nicely w/ the 64 bit. Especially not with Python.

Apache is naturally installed. Just need to turn on/off the internet sharing within the System Preferences Pane.

Then comes the tricky part.

In the http.conf file: ensure that the line including the ModRewrite module is uncommented.

The line will look like this:

LoadModule rewrite_module libexec/apache2/mod_rewrite.so

Then go down to your system directive:

And make it look like this:

<Directory />
Options FollowSymLinks
AllowOverride All
# Order deny,allow
# Deny from all
</Directory>

Also ensure that in the /etc/apache2/users/username.conf file that it looks like:

<Directory "/Users/username/Sites/">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
Allow from all
</Directory>

Additionally when defining your Extra Virtual hosts: Make sure to enable all the error logs etc:

ex:

<VirtualHost *:80>
ServerAdmin username@gmail.com
DocumentRoot /Users/username/Sites/my.site.com
ServerName local.site.com
ServerAlias local.site.com
RewriteLog "/Users/username/Sites/logs/my.site.com/rewrite_log"
ErrorLog "/Users/username/Sites/logs/my.site.com/error_log"
CustomLog "/Users/username/Sites/logs/my.site.com/access_log" common
</VirtualHost>

No Comments

CakePHP - Override .htacces to ignore directory

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule    ^manager    -    [L]
RewriteRule    ^pma    -    [L]
RewriteRule    ^fm    -    [L]
RewriteRule    ^$ app/webroot/    [L]
RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>

No Comments

Can-Do.org - Virtual Volunteer - Crow Creek Indian Reservation

Project Crow Creek & Can-DO.org

Bringing accountability and transparency to the Donation industry, we offer the tools to track your generosity from your hands, directly through to the end recipient, with nothing cut out for miscellaneous fees. Together, we can avoid the Donation Black Hole problem perpetuated by many charities. You will not need to wonder about where your money goes, we will show you every step of the way through a trackable, database. And more importantly, you can interact directly with those whose lives you have impacted, and follow their progress.

US Flag worn and weathered.

US Flag worn and weathered.

No Comments

Installing Python & mod_python on OS X 10.5 Leopard

Source: http://blog.ultranurd.net/0000/01/28/compiling-django-with-twitter-support-as-a-mac-os-x-universal-binary/#Python

Files:

  1. MySQL 5.1.30
  2. Python 2.6.1
  3. setuptools 0.6c9-py2.6
  4. MySQL-python 1.2.2
  5. Django 1.0.2-final
  6. simplejson 2.0.7
  7. python-twitter 0.5
  8. mod_python 3.3.1

Python

While python.org provides a nice OS X Installer package for 2.6.1, it is compiled as a 32-bit “fat” binary, which doesn’t help us address the Universality problem. We’ll use their script for generating a package as well as installing the framework directly, after some minor changes, courtesy this mailing list post by Ned Deily.

If you’re feeling particularly trustworthy, you can download the disk image containing the Installer package that I built from my website. If not, you can make the changes yourself. Either way, Python.framework will be installed in /Library/Frameworks/.

In the Python 2.6.1 source directory, open the file Mac/BuildScript/build-installer.py in your favorite editor, and make the following changes on lines 1, 65, 68, 71, 633, and 1020:

1c1
< #!/usr/bin/python2.3
---
> #!/usr/bin/python
65c65
< DEPSRC = os.path.expanduser('~/Universal/other-sources')
---
> #DEPSRC = os.path.expanduser('~/Universal/other-sources')
68c68
< SDKPATH = "/Developer/SDKs/MacOSX10.4u.sdk"
---
> SDKPATH = "/Developer/SDKs/MacOSX10.5.sdk"
71c71
< ARCHLIST = ('i386', 'ppc',)
---
> ARCHLIST = ('i386', 'ppc', 'x86_64', 'ppc64')
633c633
< runCommand("%s -C --enable-framework --enable-universalsdk=%s LDFLAGS='-g -L%s/libraries/usr/local/lib' OPT='-g -O3 -I%s/libraries/usr/local/include' 2>&1"%(
---
> runCommand("%s -C --enable-framework --enable-universalsdk=%s --with-universal-archs=all LDFLAGS='-g -L%s/libraries/usr/local/lib' OPT='-g -O3 -I%s/libraries/usr/local/include' 2>&1"%(
1020c1020
< os.environ['MACOSX_DEPLOYMENT_TARGET'] = ‘10.3′

> os.environ['MACOSX_DEPLOYMENT_TARGET'] = ‘10.5′

You’ll note that some of the changes migrate this script to 10.5 (the hashbang path to Python, the deployment target and SDK version), and some of the changes add support for a Universal binary (adding to the architecture list. It’s possible that some of these changes will be fixed in a future source release of Python 2.6, but I’d guess that most efforts are focused on Python 3.0 at this point.

Once you’ve made the changes, just run the script. You need to be in the BuildScript subdirectory, unless you want to change some of the tmp paths the script uses. This script will do everything, build the framework, download and build any dependencies, install the framework, and generate a disk image. Just sit back and wait!

cd /usr/local/src/Python-2.6.1/Mac/BuildScript/

./build-installer.py

Depending on your shell configuration, you may need to make changes. In my $PATH /usr/local/bin/ trumps /usr/bin/, and I want to keep the Leopard system install of Python 2.5 in place in /System/Library/ and /usr/bin/. Here’s what I did:

cd /usr/local/bin/

for py in `find /Library/Frameworks/Python.framework/Versions/2.6/bin -name py*`; do ln -s $py; done;

This creates a symlink in /usr/local/bin/ for each of the various just-build Python binaries inside the framework (you’ll not that this is equivalent to the system install). If you run which python now, it should return /usr/local/bin/python. If not, adjust your $PATH as needed in your shell configuration file. This is beyond the scope of this post.

mod_python

Sadly, we end with some pain. Long story short, mod_python relies on apxs (the APache eXtenSion tool, best abbreviation ever) to configure its build, and does not obey any amount of environment variable manipulation to pass in multiple architectures. apxs retrieves useful compiler options, apparently based on the ones used to build your local copy apache… and herein lies the problem. apxs reads those flags from /usr/share/httpd/build/config_vars.mk, and if you inspect that file, you’ll see that there are no CFLAGS or LDFLAGS specified. This is particularly odd, considering that httpd is clearly running as a 64-bit process (according to Activity Monitor), and file reports that all of my other shared objects in /usr/libexec/apache2/ are Universal binaries.

This next bit is my idea, since I couldn’t find any suggestions by googling around. I know perl, so I just read the apxs script to figure out what it was doing, and how it was passing arguments to libtool.

This is probably a terrible idea.

Make a backup of config_vars.mk before adding the four architecture flags to CFLAGS and LDFLAGS on lines 59 and 62:

59c59
< CFLAGS =
---
> CFLAGS = -arch i386 -arch x86_64 -arch ppc7400 -arch ppc64
62c62
< LDFLAGS =
---
> LDFLAGS = -arch i386 -arch x86_64 -arch ppc7400 -arch ppc64

If you run apxs -q CFLAGS or apxs -q LDFLAGS, you’ll see these values, instead of empty strings.

Now just run the standard autoconf procedure to build and  install mod_python.so in /usr/libexec/apache2/:

cd /usr/local/src/mod_python-3.3.1/

./configure

make

cd test

python test.py

cd ..

make

sudo make install

No Comments

Key Value Pair Database: Fast Full Text Searches

Store Data for full text searches in key:value pairs.

Tokyo DB

http://www.igvita.com/2009/02/13/tokyo-cabinet-beyond-key-value-store/

No Comments

siFR: CSS, Flash & the fonts you love.

A really slick way to have any font you want on your website.

http://www.mikeindustries.com/blog/sifr/

No Comments

Syncronize, Repositories, Backup, Git, SVN

I have come across some really great places to deal with file backups, syncing, and repository building.

File Syncing:

http://www.samba.org/rsync/

http://www.getdropbox.com

http://www.cis.upenn.edu/~bcpierce/unison/

Repository:

http://git-scm.com/

No Comments

Enable mail() PHP, on OSX Leopard

I found this here: http://jspr.tndy.me/2008/05/php-mail-and-osx-leopard/ Credit goes to him:

There are 4 files I used for the following:

  • /etc/hostconfig
  • /etc/postfix/main.cf
  • php.ini (this could be anywhere depending on your installation, mine’s in /usr/local/php5/lib/)
  • /var/log/mail.log

firstly, sudo nano -w /etc/hostconfig and add the following line:

MAILSERVER=-YES-

then sudo nano -w /etc/postfix/main.cf, find the myhostname variable (by default it’s host.domain.tld), uncomment it and change it to your domain (if you’re on a machine that doesn’t have a DNS, you can make it a domain that you’re responsible for so that it doesn’t get shut down at the receiving end, but please don’t make it google.com or something like that!)

now, open php.ini and look for the sendmail_path variable, uncomment it, make its value sendmail -t -i, save then restart apache. I’m not really sure if this is 100% necessary as there’s a comment above that says this is the default value anyway, but it can’t hurt!

now open a terminal window and execute the next couple of commands:

% sudo postfix start
% tail -f /var/log/mail.log

finally, create a file called mail.php (or whatever!) and add the following to it:

<?php
mail(
  'you@yourdomain.com', // your email address
  'Test', // email subject
  'This is an email', // email body
  "From: Me <me@mydomain.com>rn" // additional headers
);
?>

obviously replace you@yourdomain.com with your email address and me@mydomain.com with a valid email address (domain at least, as some mail servers will bounce your email if the sender’s domain isn’t real). Now navigate to your mail.php file (likely http://localhost/mail.php) and watch your terminal window to see that it’s been sent successfully. If it hasn’t, let me know if you fixed it and I’ll update this - it’s annoying to me that there isn’t really an answer to this question that I can find so the more comprehensive this is, the more helpful!.

No Comments

How To: Setup Virtual Hosts on OS X

http://mark-kirby.co.uk/2008/setting-up-virtual-hosts-on-os-x-leopard/

No Comments

Copyright your Art, Writing, intellectual Property (IP)

Overview:

As a web developer or a website owner its important to know the the laws and processes you can perform, to protect your online work from being copied, plagiarized.

Reality Check:

It is impossible to prevent it from occurring, but you can take precautions and make life harder for those that would attempt to illegally take your work.

How To Protect your:

  • General:

    • Paid:
      • U.S. Copyright: File your work with the U.S. Copyright Dept.
      • Lizard Lock: (Untested) Lizard Lock provides a service that will achieve:
        • pdf security, flash security, html security, ebook security, elearning security, and software copy control.  Stop copying, prevent printing, and control the sharing of your documents, ebooks, training courses, and web content. Protect documents inside and outside your organization, and instantly revoke access to your secure information at any stage.
      • Copysentry: An online service that for a monthly fee compares your work against what is on the web and alerts you if it finds matches.
  • Writing:

    • Online services you can use:
      • Free:
        • Google Alert: With Google Alerts you can specify keywords (things that pertain to your works) and when Google finds articles online that match those words, you receive an email alert notifying you about new content online that it. You can then read the pages provided and if there is an issue you can proceed as appropriate.
        • Digital Container: Digital container provides a secure method of selling, and distributing your content. However it enforces a few extra steps for your customer which you may want to take into consideration.
  • Photography, Art, Images, Graphics:

    • Image:
      • Upload a lower resolution image, so that it won’t look that good when printing.
      • Embed a water mark: Here is a great tutorial on how to do a water mark in Adobe Photoshop as well as how to automate it.
      • Use a flash image gallery.
    • Web Technology:
      • Prevent “Right Click”: disable the right click making it hard for users to copy the image.
        • Add this to your websites HTML BODY tag:   <body oncontextmenu=”return false;”>
  • Website:

    • Add copyright to the bottom of your page in one of the following forms:
      • (c) Name 2001
      • Copr. Name 2001
      • Copyright Name MMI

If you have other ideas about what can be done please post them here.

No Comments