Anonymous

Changes

WSO web development

4,560 bytes added, 00:26, May 18, 2019
no edit summary
{{outdated}}[[Category:How-To]] [[Category:Computers]] [[Category:WSO]][http://wso.williams.edu WSO's web site] is a work in progress. You can always see "the next step" at http://wso.williams.edu:3000, where the latest "stable" (stable being a relative term) version of the next update to the site lives. If you're impatient about the new facebook, or you know web design or PerlRuby, or if you just want to see how it's done, you're welcome to check out a copy of the code and go to work. This page will tell you how to get started.
== Get a Subversion account ==
==SSH Email root at wso.williams.edu to WSO==get an account and password so that you can checkout a copy of the code from our Subversion repository. You'll need this when running any of the svn commands below.
If you don't have a WSO account, email [http://wso.williams.edu/facebook/view?unix=07mg_2 Mike], [http://wso.williams.edu/facebook/view?unix=07jmc Jessica], or [http://wso.williams.edu/facebook/view?unixChoose your environment ==08bpw Ben]. One of them will hook you up. A WSO account is not your 06abc account. It is the first letter of your first name followed by seven letters of your last name. Once you have an account, go ahead and log in:
'''Windows''': get yourself a Working on the WSO site will require running your own development copy of [httpthe site. There are two basic ways to go about this. 1. Run your development server in your account on WSO's user server. This requires the following://www* A WSO shell account.chiark* A WSO subversion account.greenend* A computer with an ssh client (ssh on *nix or Mac OS X, PuTTY on Windows).org* Some familiarity with the command line.uk/~sgtatham/putty/download2.html Putty]Run your development server on your machine. This requires the following:* A WSO subversion account. wso* A computer.williams* Familiarity with installing command line software (preferably via a package manager).edu  Though setting up a dev server on your own machine may require more investment of time up front, it is the hostultimately more flexible, since you have more control over and easier access to your environment==Option 1: Set up a development server in your WSO account==
'''Mac/Linux''': Open up a Terminal or a console, and type===SSH to WSO===
ssh If you don't have a WSO account, email root at wso.williams.edu. One of them will hook you up. A WSO account is not your 06abc or abc1 account. It is the first letter of your first name followed by up to seven letters of your last name. Once you have an account, go ahead and log in:
==Set up '''Windows''': get yourself a web server==copy of [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html Putty]. wso.williams.edu is the host.
This part sounds scary'''Mac/Linux''': Open up a Terminal or a console, but most of the configuration has been done for you already. First we copy the server files into your home directory:and type
cp -R /var/web ssh username@wso.williams.edu
Now we just change the configuration files to work for where username is your personal accountWSO username (remember, not your 06abc OIT id). Change directory into your new "web" directory:
cd web===Check out the code===
NextOnce you've logged in with SSH, type these instructions EXACTLYyou're ready to check out your very own copy of the WSO code. Note In your home directory, or wherever you'd like to keep your copy of the back-ticks in WSO site, run the second following commandto use Subversion to check out the code. ( ` Don't forget the dot at the end!)This will spew a whole log of output onto your screen, listing all the files it's checking out. The backYou can replace "wso-tick is on the key right above tab on devel" with whatever name you want for your local copy of the keyboardcode.
sed -i .bak "ssvn checkout svn:/USER/$USER/g" apache/*wso.williams.conf apacheedu/apache_test apachectl sed wso-i .bak "son-rails/UID/`expr 50000 + $UID`/g" apache/*.conf rm apache/*.baktrunk wso-devel
So Now change directory into the mysterious second command will tell the web server what port to listen on. Programs listen on different ports so that when you make a network request of WSO (SSH, the web, e-mail), it knows which program should handle the request. Your server will listen on the port number 50000 plus your user id. (That makes sure everyone has a unique port.) To find out what that is, typecode directory:
expr 50000 + $UIDcd wso-devel
We need to create a log file for your site so it doesn''Write that number down for latert complain directly to you.''
==Get the code== touch log/development.log
Let's get a fresh copy of Now your site is ready to run! If you just want to poke around you can do that without starting the code. On server (check out [[How to transfer files to WSO]]), typebut if you want to make changes and see what happens, keep reading.
svn co file:///var/svn/wsonet ~/web/wsonet svn co file:///var/svn/wsorails ~/web/wsorails===Start the server===
If But first you just want need your own personal port to see what the code is like, you can poke around those two foldersrun it on. "wsonet" contains the part of Find this by running the site written in Perlfollowing command. "wsorails" contains the part of You'll want to save the site written in Ruby. Most output of the site is currently in Perl, but new services will be in the wsorails folderthis for future reference.
For those of you afraid of the command line, you can now look at the files by logging into WSO over SFTP. Check out the bit on SFTP at [[How to transfer files to WSO]]. expr 50000 + $UID
Of courseTo start the server run the following command in the wso-devel directory, to actually work on replacing your_port with the code, you'll want to know what effects your changes havenumber we generated above. That's why we want to
==Start the /opt/local/bin/ruby script/server==-p your_port
OKIf you see something like the following, wethen you're ready to start the web serverin business. Type this:
~=> Booting Mongrel (use 'script/webserver webrick' to force WEBrick) => Rails application starting on http:/apachectl start/0.0.0.0:your_port => Call with -d to detach => Ctrl-C to shutdown server ** Starting Mongrel listening at 0.0.0.0:your_port ** Starting Rails with development environment... ** Rails loaded. ** Loading any Rails specific GemPlugins ** Signals ready. TERM => stop. USR2 => restart. INT => stop (no restart). ** Rails signals registered. HUP => reload (without restart). It might not work well. ** Mongrel available at 0.0.0.0:your_port ** Use CTRL-C to stop.
If everything went well, it'll say "httpd started", or something to that effect. Hooray!
Before breaking out the champagne, we need to check to see that the server actually works. Unfortunately, you can't just pop open a web browser and surf to your new site. WSO's servers are behind a firewall. The firewall only allows connections on certain ports. Yours is not one of them.
===Setting up port forwarding== The way through the firewall is to pretend that the web server is running on your computer and not on WSO. We'll use a technology called ''port forwarding'' to send web requests to your machine ''through an SSH connection'' to your server on WSO. This is, simply, awesome.=
And The way through the firewall is to pretend that the web server is running on your computer and not on WSO. We'll use a technology called ''port forwarding'' to send web requests to your machine ''through an SSH connection'' to your server on WSO. This is simply awesome, and not too hard.
====Mac/Linux====
Open up a Terminalon your own machine, and type
ssh -N -p 22 -f -2 -L 80003000/127.0.0.1ursula/53717 emilleryour_port username@wso.williams.edu
EXCEPT instead of 53717your_port, put the port number that you wrote down, and instead of "emillerusername", type your WSO account name. Unfortunately, you'll have to run this command somewhat frequently, since SSH connections close when your computer reboots or goes to sleep (or WSO crashes, or whatever...). To make this a little less tedious, open the file called .bashrc in your home directory on your own machine and add this line:
alias wso8000wso3000='ssh -N -p 22 -f -2 -L 80003000/127.0.0.1ursula/53717 emilleryour_port username@wso.williams.edu'
Again, make the substitutions for your own port your_port and username. Close the Terminal window and open a new one. Now, if you need to establish the connection, just type "wso8000wso3000" in a terminal window. You can pick a different alias, of course.
====Windows====
Putty lets you do port forwarding, too. You can read more about it here:
Here are the settings you'll need:
Source port: 80003000
Destination port: (your special port)
Destination host: localhostursula Continue to the Common Instructions. == Option 2: Run on your own machine== Disclaimer: The author has done this on various flavors of *nix and on Mac OS X, but knows nothing about Windows. It is possible on Windows, but no guarantees that it will just work. Google is your friend. ===Install software=== ====With your package manager==== Using your favorite package manager, install the following: * subversion* sqlite3* ruby (1.8.6)* ruby ldap (rb-ldap 0.9.1)* ImageMagick* ruby gems, a package manager for ruby packages =====Notes=====Make sure that these appear in your $PATH. On Mac OS X Leopard, the built-in ruby comes with ruby gems installed, so you may be able to skip those two. On Tiger and earlier, use MacPorts to install all of the above (mongrel is still optional). ====With ruby gems==== Using gem install the following: * rails* RedCloth* simple-rss* sqlite3-ruby* rmagick* optional: mongrel You can install all of this with the command  gem install rails RedCloth simple-rss sqlite3-ruby mongrel -y On any *nix system or Mac OS X, you'll probably need to run this with sudo. No idea about Windows. If you have any trouble with this, post to [[Talk:WSO web development]] or email bwood at wso. ===Check out the code=== In your home directory, or wherever you'd like to keep your copy of the WSO site, run the following command to use Subversion to check out the code. This will spew a whole log of output onto your screen, listing all the files it's checking out. You can replace "wso-devel" with whatever name you want for your local copy of the code.  svn checkout svn://wso.williams.edu/wso-on-rails/trunk wso-devel Now change directory into the code directory:  cd wso-devel We need to create a log file for your site so it doesn't complain directly to you.  touch log/development.log Now your site is ready to run!  ===Start the server=== To start the server run the following command in the wso-devel directory.  script/server If you see something like the following, then you're in business. (This is what you'll see if you installed mongrel, otherwise, you'll see similar output from WEBrick, the default server.)  => Booting Mongrel (use 'script/server webrick' to force WEBrick) => Rails application starting on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server ** Starting Mongrel listening at 0.0.0.0:3000 ** Starting Rails with development environment... ** Rails loaded. ** Loading any Rails specific GemPlugins ** Signals ready. TERM => stop. USR2 => restart. INT => stop (no restart). ** Rails signals registered. HUP => reload (without restart). It might not work well. ** Mongrel available at 0.0.0.0:3000 ** Use CTRL-C to stop.  ==Common Instructions== ===Build your database=== The development version of the WSO site uses SQLite, a file-based database to make it easy to deploy anywhere. To create your database and setup the structure we'll need, just run  rake db:schema:load in the root directory of your copy of the code (e.g. wso-devel). ===Add yourself as a user=== Also in the root directory of your site, run  rake data:dev:addusers ===Optional: update caches=== On the production server, these scripts are run every so often to keep the info on the front page up to date. You get some pregenerated caches with the code, but if you want something more realistic, run these.
==Try out the server== ruby script/cron/rss.rb ruby script/cron/weather.rb
'''On-campus''': Open up a web browser and point it to "http://localhost.williams.edu:8000/". The WSO site should show up. Congratulations!===Try out the server===
'''Off-campus''': On Open up a Mac or Linux box, add this line browser and go to the file http:/etc/hostslocalhost:3000/
127Of course, if it doesn't work, please describe your problem on [[Talk:WSO web development]].0.0.1 localhost.williams.edu
That makes your machine think its address is localhost.williams.eduNow, you can change a file in wso-devel, which is necessary for cookies to work and the way change will show up on your development server is configured. Now point at this address the next time you reload the page in your web browser to http://localhost.williamsSweet. (Some changes esp.edu:8000/to controllers or libraries will require restarting the server, and check but it out's simple.)
===Making changes===
Of course, if it doesnNice work getting this far. So now you actually want to ''do''t worksomething with the code. For now, please describe your problem on [[Talkcome to a WSO meeting Tuesdays at 9:How to hack 30pm in the vicinity of TCL 202, or email wso at wso.williams.edu with questions/interest. With the new Facebook finished, our next big prospect is rewriting old PageKit services (Factrak!) in Ruby on the WSO site]]Rails.
Now, you can change It's a file in ~/web/wsonet/site, and the change will show good idea to run an update every so often so that your local working copy picks up on changes that other people have made. Change directory into your development server at this address. Sweet.wso-devel directory and run
==Making changes== svn update
Nice work getting this far. So now you actually want to ''do'' something with the code. Check out [[How to write a web service on WSO]]; it'll give you a nice overview of how things work, and also point you to references where you can learn Perl and HTML.
Contact [http://wso.williams.edu/facebook/view?unix=07mg_2 Mike], [http://Email root at wso.williams.edu/facebook/view?unix=07jmc Jessica], or [http://wso.williams.edu/facebook/view?unix=08bpw Ben] if you'd like to change the WSO site, add a new service, or fix a bug. If they give you get the go-ahead, you're in good shape, so go to work. Once you think your change is ready for the world, you'll need to get permission to commit add your changes to our code repository, where it will be tested and deployed. Email [http://wso.williams.edu/facebook/view?unix=07mg_2 Mike], [http://wso.williams.edu/facebook/view?unix=07jmc Jessica], or [http://root at wso.williams.edu/facebook/view?unix=08bpw Ben] about that. They'll take care of you.