130 likes | 237 Vues
Learn how to deploy and maintain websites, utilize revision control systems, and share code effectively. Explore deployment methods, revision control techniques, and collaboration strategies for successful website development.
E N D
Information Systems 337 Prof. Harry Plantinga Development and Deployment
Developing and Deploying • These lab VMs will be going away after the semester ends • How will you deploy the site? • How will you save the source code so that you or others can work on it later?
Site Maintenance • Your web site is up and running, and people are using it • You want to change a page • You edit the page.tpl.php file. Syntax error! Site goes down! • You can't remember how to fix it. Site stays down! • You have two people editing the same file. Site down! Work lost! • What to do?
Development Strategies • You will need live and development sites • Devel site on your own VM • Deploy site on calvincs.com • Live site on client’s dreamhost account • Ideally: one-button deployment
Deployment • Deployment means uploading your site (www directory, databases) to a host • Host must support PHP, MySQL, etc. • Next lab: deployment on dreamhost (calvincs.com). Other hosts – same idea, different details • Load your database onto their server • Use FTP to load your /var/www/ directory onto their server • Adjust configuration… • Point your domain name to the new host • Turn on caching • Test • Deploying your term project…
Deploying to Dreamhost • Upload your database • Create a database on host • Export development Drupal database with mysqldump • Import your database into Dreamhost server • Upload your Web directory • Zip your /var/www directory • Copy to dreamhost server • Unzip in appropriate directory • Modify settings as needed • settings.php – for logging in to the 1and1 database • .htaccess – for finding your files
Revision Control: the problem… • Have you ever lost work while writing a term paper? • How do you collaborate on writing projects? • Have you ever made changes to a computer program that caused it to stop working? • How would you collaborate on a development project like a website? • What if you have two versions of your website and need to manage merges and synchronization?
Revision Control • Revision control (or source control or version control) systems help you • maintain old and new versions of code • view and reconcile difference between versions • check out and check in code • keep track of every change: who, why? • revert to previous versions of your code
Revision Control Systems • Popular revision control systems • CVS • old, stable • used by Drupal, sourceforge • Subversion (SVN) • newer, quite popular • Install on your own PC! • Git • Newest, maybe becoming most popular? • Many others…
Drupal and CVS • Check out the latest version of a drupal release: • cvs -d:pserver:anonymous:anonymous@cvs.drupal.org:/cvs/drupal checkout –r DRUPAL-5 drupal • See what releases are available: • cvs -d:pserver:anonymous:anonymous@cvs.drupal.org:/cvs/drupal status -v CHANGELOG.txt • Tags and Branches: • Each new version of Drupal is a new branch • Tags are snapshots at a point in time of a particular branch • Hint: use CVS to get code from drupal.org and use git or SVN to do revision control on your own code!
Git • Designed for speed • Originally designed and developed by Linus Torvalds for Linux kernel development • Very popular • GUI support on various operating systems
Git Commands • git-init(1) to create a new repository. • git-show-branch(1) to see where you are. • git-log(1) to see what happened. • git-checkout(1) and git-branch(1) to switch branches. • git-add(1) to manage the index file. • git-diff(1) and git-status(1) to see what you are in the middle of doing. • git-commit(1) to advance the current branch. • git-reset(1) and git-checkout(1) (with pathname parameters) to undo changes. • git-merge(1) to merge between local branches. • git-rebase(1) to maintain topic branches. • git-tag(1) to mark known point.
Sharing your Code • When you pass off the website to your client, they will also need access to the source code. • They could download it from the host via FTP or scp • You could set up a repository on github.com • This would allow multiple people to work on the site • Free for open source projects • Dreamhosthas git – use push or clone to upload or download your site