Tcl/Tk 2003. Using Starkits for Easy Deployment of Server Applications Mark Roseman courseforum T E...
-
Upload
adrian-watson -
Category
Documents
-
view
218 -
download
0
Transcript of Tcl/Tk 2003. Using Starkits for Easy Deployment of Server Applications Mark Roseman courseforum T E...
Tcl/Tk 2003
Using Starkits for Easy Deployment of Server Applications
Mark Roseman
courseforumT E C H N O L O G I E S
The Canonical Tcl Server App
socket -server Accept $portnum
proc Accept {sock args} {
fconfigure $sock -blocking 0
fileevent $sock readable “Readable $sock”
}
proc Readable {sock} {
# … do something interesting
}
That was easy! On to the next application….
Ummm….forgetting something?
Oh yeah, better post it on SourceForge so others can take advantage of my brilliance!
“If it was hard to develop, it should be hard to install!” Download the latest source Unpack in Sites directory of your home dir Configure Apache
Open Terminal.app, type “sudo vi /etc/httpd/httpd.conf” Remove the leading “#” from these lines:
LoadModule php4_module libexec/httpd/libphp4.so AddModule mod_php4.c
Modify the DirectoryIndex line to read: DirectoryIndex index.html index.php index.htm index.php3
index.cgi
And so on…
Keep configuring Apache… AddType application/x-httpd-php .php AddType
application/x-httpd-php-source .phps Then ‘sudo apachectl restart’
Install MySQL (luckily someone packaged that up nicely.. Download it here…) Check if its running: /usr/local/mysql/bin/mysqladmin status Oh yeah and set a root password on it /usr/local/mysql/bin/mysqladmin -u root password sniggle
Oh, but the fun has just begun!
Better set up MySQL for your Wiki /usr/local/mysql/bin/mysql -uroot -p mysql > grant
select, insert, update, delete, lock tables on wiki.* to wiki@localhost identified by 'password'; > create database wiki; > \q
…. Hack hack hack hack hack…. …. Tell PHP about it….. Hack hack… Modify the Wiki code to include the database… hack
hack hack hack….
Glad we spent all that time developing our application.
QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.
A New Breed of Server Apps
Personal / Small Group Server Apps SOHO market adopting:
Broadband, WiFi, Bluetooth… Windows XP, Mac OS X
Weblog, Wiki, webmail, file sharing, calendars, MP3 streaming, document management…
Normal users, not network admins
Deploying Tcl Server Apps The Starkit story so far Deployment Requirements Dependencies Installation / Configuration Starting and Stopping Platform Issues
particularly Mac and Windows Miscellaneous Issues
- packaging, builds, obfuscation, integration…
The Starkit story so far
Tclkit: Tcl, Tk, incr Tcl, Metakit, TclVFS Starkits and Starpacks
Platform-neutral or platform-specific Package up your whole development tree Way beyond simple code wrapping
Jean-Claude Wippler [Tcl’2000] Steve Landers [Tcl’2002] Gets you pretty far (e.g. wikit)…
CourseForum / ProjectForum
Wiki-like app Non-tech users
Education Business
Cross-platform Unix, Win, OS X Web Browser
Easy to use tool Try before you buy
Dependencies
Typical Wiki: Apache/IIS, scripting engine, other libraries, external database, CVS, … Trend is towards more layers (app servers)
Barriers to entry Initial install (don’t screw up!) Upgrade can break your app
Tradeoffs must be taken into account early! Developer benefit from external packages Increased complexity for end users Understand the context you’re running in
Reducing Dependencies
Solution #1: bundle everything Setup script to automate install Can make sense for larger systems
Solution #2: roll your own (subsets): TclHttpd (or mini-variants) Metakit (or SQLite) Build subset libraries (e.g. version control)
CF/PF: one file, no externals, < 2mb
Installation
Install = copy Uninstall = delete
Well maybe…
Configuration
Get rid of the text based configuration files!
Web-based configuration
Starting and Stopping
Start the application, stop the application
Consider a simple GUI for this — yes, even for a server! New Users Feedback Choosing ports
Running as a Daemon
Different than initial use Unix: rc.d / inittab Windows: services Mac OS X: StartupItem more later…
Unix Platform Issues
Not a lot of extra issues here Running as ‘setuid’
Windows Platform Issues
Start / Stop GUI Installers / Uninstallers Windows Services
TclSvc Tcl Dev Kit
Service Mgr FireDaemon
“Unix for the Masses” Opportunity for
smaller developers Rewards innovation Culture of supporting
small shops Actually pay for software Easy to get the word out Free High-Quality Developer Tools and Docs
Beware — “port” is a four letter word!
QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.
Mac OS X
Mac OS X GUI
Tk not quite there yet (sniff!)
Small Cocoa app ~200 lines ObjC InterfaceBuilder A few hours
to develop
Mac OS X Application Bundles
App is a directory
Cocoa launcher Starpack “guts” Communicate via
Unix pipes (!) Setuid
Application Bundles Disk Images Installers if needed StartupItem
Known location Shell scripts Run (Unix-style)
executable
Mac OS X Packaging
So we have a Starpack [a virtual file system
in a file] in an Application Bundle [which looks like a file
system in a file], inside a Disk Image [a virtual
file system in a file] … yikes!!!
Other Issues
Integration Avoiding port conflicts Firewalls Proxy / Virtual Hosting Branding
Development Process Builds Testing Code obfuscation (procomp / tbcload)
CourseForum / ProjectForum
Full power of Tcl, Metakit, etc.
With Starkit, drop development tree on user’s machine
Small app, quick to download, code protected
Runs like native apps, easy to setup and use
QuickTime™ and aTIFF (LZW) decompressorare needed to see this picture.
Remember that O’Reilly Article?
“I’ve got one of those if-only-I’d-known-that-before sort of feelings…
Nice work. You're right, it couldn't be simpler.”
Deployment is a Tcl Strength
Cross platform Easy to embed/extend Code hiding when needed Starkit goes way beyond simple wrapping Network server apps run by end users
Important new niche Tips here to ease deployment further Start thinking about deployment early!
Thanks!
www.markroseman.com/tclwww.courseforum.com
And announcing…
tcl.projectforum.comFree, powerful collaborative workspaces
for Tcl/Tk based open source projects and their teams.
Yes it’s easy to install — but we do hosting too!