| « Earlier | 13 items total | Later » |
Install Rails/lighttpd with DarwinPorts for Tiger
install darwinports package
Add 'export PATH=/opt/local/bin:$PATH' to ~/.bashrc
sudo port -d selfupdate
sudo port install ruby
sudo port install rb-rubygems
sudo gem install rails --include-dependencies
sudo port install readline
sudo port install lighttpd
vi /opt/local/etc/lighttpd.conf [edit lighttpd.conf to your liking]
set up launchd item for lighttpd
-- restart lighttpd: sudo launchctl stop net.lighttpd
sudo launchctl start net.lighttpd
sudo port install fcgi
sudo port install rb-fcgi
install official OS X MySQL package (not darwinports)
sudo gem install mysql -- --with-mysql-dir=/usr/local/mysql
Links:
darwinports package
launchd item
OS X MySQL package
Use Mint on Lighttpd with Rails Caching
If you had to remove the line Rails needs for caching inorder to get Mint to work, heres the fix.url.rewrite = ( "/mint/?(.*)$" => "/mint/index.php?$1", "/mint/$" => "/mint/index.php", "/$" => "index.html", "([^.]+)$" => "$1.html" )
Rails and php on directories example of a lighttpd HOST conditional
$HTTP["host"] =~ "textdrive.(org|com)" {
server.indexfiles = ( "dispatch.fcgi", "index.php" )
server.document-root = "/users/home/website/web/public/"
url.redirect = ( "^/forum/(.*)" => "http://forum.textdrive.com/$1",
"^/support/(.*)" => "http://support.textdrive.com/$1" )
#url.rewrite = ( "^/$" => "index.html", "^([^.]+)$" => "$1.html" )
server.error-handler-404 = "/dispatch.fcgi"
fastcgi.server = (
".fcgi" =>
( "localhost" =>
(
"socket" => "/tmp/textdrive-new.socket",
"bin-path" => "/users/home/website/web/public/dispatch.fcgi",
"bin-environment" => ( "RAILS_ENV" => "production" )
)
),
".php" =>
( "localhost" =>
(
"socket" => "/tmp/textdrive-php5-fcgi.socket",
"bin-path" => "/usr/local/www/cgi-bin/php5-fcgi",
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "4",
"PHP_FCGI_MAX_REQUESTS" => "5000"
)
)
)
)
}
How TextDrive does both PHP and Rails FCGI in one thing-a-ma-bob
fastcgi.server = (
".fcgi" =>
( "localhost" =>
(
"socket" => "/tmp/textdrive-new.socket",
"bin-path" => "/users/home/website/web/public/dispatch.fcgi",
"bin-environment" => ( "RAILS_ENV" => "production" )
)
),
".php" =>
( "localhost" =>
(
"socket" => "/tmp/textdrive-php5-fcgi.socket",
"bin-path" => "/usr/local/www/cgi-bin/php5-fcgi",
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "4",
"PHP_FCGI_MAX_REQUESTS" => "5000"
)
)
)
)
Updated lighttpd control script to kill FCGIs
#!/bin/sh
LIGHTTPD_CONF=/home/USERNAME/etc/lighttpd.conf
PIDFILE=/home/USERNAME/var/run/lighttpd.pid
case "$1" in
start)
# Starts the lighttpd deamon
echo "Starting Lighttpd"
/usr/local/sbin/lighttpd -f $LIGHTTPD_CONF
;;
stop)
# stops the daemon bt cat'ing the pidfile
echo "Stopping Lighttpd"
kill -9 `cat $PIDFILE`
# kills the dispatch.fcgis
ps axww | grep dispatch | egrep -v 'grep' | awk '{ print $1 }' | xargs kill -9
;;
restart)
## Stop the service regardless of whether it was
## running or not, start it again.
echo "Restarting Lighttpd"
$0 stop
$0 start
;;
reload)
# reloads the config file by sending HUP
echo "Reloading config"
kill -HUP `cat $PIDFILE`
;;
*)
echo "Usage: lighttpdctl (start|stop|restart|reload)"
exit 1
;;
esac
Johan Sörensen's lighttpd control script
#!/bin/sh
LIGHTTPD_CONF=/home/jarkko/domains/piforienteering.fi/sites/piffen-new/config/lighttpd.conf
PIDFILE=/home/jarkko/var/run/lighttpd.pid
case "$1" in
start)
# Starts the lighttpd deamon
echo "Starting Lighttpd"
lighttpd -f $LIGHTTPD_CONF
;;
stop)
# stops the daemon bt cat'ing the pidfile
echo "Stopping Lighttpd"
kill `cat $PIDFILE`
;;
restart)
## Stop the service regardless of whether it was
## running or not, start it again.
echo "Restarting Lighttpd"
$0 stop
$0 start
;;
reload)
# reloads the config file by sending HUP
echo "Reloading config"
kill -HUP `cat $PIDFILE`
;;
*)
echo "Usage: lighttpdctrl (start|stop|restart|reload)"
exit 1
;;
esac
Daedalus Config to Keep Lighttpd Up Nicely
This daedalus config as well as my previous snippet is meant to supplement chapter 5 of "Lighttpd the painless way".This config is dependent on having a ~/lighttpd directory setup as described in that manual. Also, you must have the restart.rb script (again from my previous snippet) in the lighttpd folder.
As before, remember to swap out your USERNAME, DOMAIN, and PORT.
The first check here is that a lighttpd process is running. If not then it calls restart.rb which will kill any zombie dispatchers and restart lighttpd.
The second check is more of a departure from the original suggestion. Rather than checking that a specific file is generating the expected output, I go right to the source and verify that lighttpd is responding with an HTTP header on the port you were assigned. This is a pure indication of whether lighttpd is responsive on the correct port. It won't be fouled up by application errors or apache forwarding misconfiguration. More importantly, it won't generate a flood of restarts due to an unrelated code error.
Also, you will notice I set the checkinterval to 10 minutes. I felt this was a good compromise between keeping lighttpd up and saturating the server with unnecessary processing.
name: lighttpd checkcommand: /bin/ps axww checkregex: /lighttpd/ onfailcommand: /home/USERNAME/lighttpd/restart.rb checkinterval: 600 aftercommandwait: 120 name: lighttpd-external checkcommand: /usr/local/bin/curl -I http://YOURDOMAIN.com:YOURPORT checkregex: /^HTTP/s onfailcommand: /usr/bin/killall -9 lighttpd; /home/USERNAME/lighttpd/restart.rb checkinterval: 600 aftercommandwait: 120
Killing rogue dispatch.fcgi processes and starting lighttpd on TextDrive
By using this script to start lighttpd you can be sure you won't be leaving rogues dispatchers around sucking up memory and generally pissing jason off. Don't get caught with your pants down!Make sure to change USERNAME below, as well as any paths that may be different in your case.
#!/usr/local/bin/ruby
#Modified from Julik's original code posted to TextDrive forums.
pstab = `ps axww`
def kill_fcgi_proc(line)
its = line.strip.split(/\s+/)
pid = its[0]
puts "KILLING #{line}"
`kill -9 #{pid}`
sleep(3)
end
if pstab =~ /\/usr\/local\/sbin\/lighttpd -f/
puts "Lighttpd still running."
else
pstab.scan(/^.*dispatch\.fcgi\s*$/) do |line|
kill_fcgi_proc line
end
pstab = `ps axww`
if pstab =~ /dispatch\.fcgi/
puts "Error, rogue dispatch.fcgi's still pissing jason off."
else
puts "Rogue dispatch.fcgi's cleared, starting lighty!"
`/usr/local/sbin/lighttpd -f /home/USERNAME/lighttpd/lighttpd.conf`
end
end
Add a New Rails App (Textdrive & Lighttpd)
Based on: http://forum.textdrive.com/viewtopic.php?id=5094Get Lighttpd working on Textdrive first (http://manuals.textdrive.com/read/book/9), then to add new Rails apps (ex: typo.domain.tld) follow the steps below...
1. ssh into your account
ssh [email protected]
2. Create a new directory for your rails apps (if you don't have one already):
mkdir ~/apps/ (or whatever you want to name it)
3. Move into that directory:
cd ~/apps/
4. svn checkout the app you want:
Example: svn checkout svn://leetsoft.com/typo/trunk typo
5. Move into that new app's directory:
Example: cd typo
6. Change the first line of appname/public/dispatch.rb and appname/public/dispatch.fcgi to:
#!/usr/local/bin/ruby18
7. Set-up MySQL database:
a.
mysql -u username -p
b.
create database textdriveusername_appname;
c.
exit;
d.
mysql -u username -p textdriveusername_appname < db/schema.mysql.sql
8. Create a symbolic link to your app's public folder, inside of your public_html folder:
ln -s /home/username/apps/appname/public /home/username/public_html/appname
9. Add an $HTTP["host"] entry into your lighttpd.conf for the new app (ex: http://textsnippets.com/posts/show/6 and http://textsnippets.com/posts/show/187)
10. Kill all your dispatch.fcgi processes and your lighttpd process (ex: ttp://textsnippets.com/posts/show/206)
11. Restart lighttpd:
/usr/local/sbin/lighttpd -f /home/username/lighttpd/lighttpd.conf
12. Navigate to http://appname.yourdomain.tld
| « Earlier | 13 items total | Later » |