This page explains some things about the MFPL servers and how to use MFPL hosting tools to create and manage websites. This first draft is being written by Patrick Gibbs (and anyone who wants to) in December, 2012. First, appreciation for the MFPL support team! These fantastic humans do much of the nitty-gritty work of keeping this hosting infrastructure running. Learn more about the support team and see who's on it (though the list is a bit outdated) at [wiki:support-team Support Team]. So that you get an idea of why I find certain things seem worth mentioning about MFPL hosting -- my experience (says Patrick) includes the following: * setting up a Drupal + CiviCRM + Ubercart instance on cheap ($5/month) shared hosting. * administering a Moodle installation via the web interface. * doing basic command line work in GNU/Linux on my laptop. * writing a shell script once, and refining it. * playing with XAMPP when I used a Mac. I had very little experience with SSH, and had never used IRC. I joined May First / People Link in August 2012. == Understanding May First servers == === Start with the Members' Control Panel: === On previous hosting, I used cPanel. Here, there's custom software called `red` that runs a custom control panel. Look around and see what's possible. Things to notice: * On each page there's a line on the right side that says something like " Your primary host is: `marx.mayfirst.org (216.66.23.57)`". Knowing this enables connecting to the server via `ssh` (more on that later). Each website is a "hosting order": I currently have two hosting orders: one for my personal website, and one for an organization whose website I manage. Hosting orders are made automatically (I think, although maybe the === Connecting via ssh or ftp: === There are other pages that explain this in more detail ''(to do: find them and link to them)''. I do this: {{{ $ ssh patrickgibbs@marx.mayfirst.org }}} Wondering which server your site lives on? Look in the Members' Control Panel (see section above). I use Filezilla for FTP, and the connection details are the same as for ssh. === Welcome to your new `/home`: === Once logged in via ssh or ftp, you can look around and probably see something like this: {{{ 0 patrickgibbs@marx:~$ pwd /home/members/patrick0/sites/patrickgibbs.mayfirst.org/users/patrickgibbs 0 patrickgibbs@marx:~$ ls -Alh total 88K -rw------- 1 patrickgibbs patrickgibbs 3.6K Dec 7 17:29 .bash_history -rw-r--r-- 1 patrickgibbs patrickgibbs 220 Apr 10 2010 .bash_logout -rw-r--r-- 1 patrickgibbs patrickgibbs 3.2K Jan 30 2012 .bashrc drwxr-xr-x 2 patrickgibbs patrickgibbs 4.0K Nov 29 01:00 .drush drwxr-xr-x 3 patrickgibbs patrickgibbs 4.0K Dec 5 23:57 .emacs.d -rw------- 1 patrickgibbs patrickgibbs 7.2K Dec 14 18:37 .histfile drwxr-xr-x 2 patrickgibbs patrickgibbs 4.0K Jan 30 2012 .monkeysphere lrwxrwxrwx 1 patrickgibbs root 54 Aug 27 12:15 patrickgibbs.mayfirst.org -> /home/members/patrick0/sites/patrickgibbs.mayfirst.org -rw-r--r-- 1 patrickgibbs patrickgibbs 675 Apr 10 2010 .profile drwxr-xr-x 2 patrickgibbs patrickgibbs 4.0K Jan 30 2012 .ssh drwxr-xr-x 3 patrickgibbs patrickgibbs 4.0K Sep 10 20:56 .subversion -rw-r--r-- 1 patrickgibbs patrickgibbs 34K Dec 2 22:14 .zcompdump -rw-r--r-- 1 patrickgibbs patrickgibbs 393 Dec 2 22:14 .zshrc 0 patrickgibbs@marx:~$ }}} You might not have`.drush`, `.emacs.d`, or `.zshrc` until you use emacs, drush, or zsh. Things to notice: * .monkeysphere has something to do with SSH fingerprints and encryption keys, I think. I haven't investigated yet. ''(to do: link to page about ssh connecting and fingerprints)'' * the website directory `patrickgibbs.mayfirst.org` is a symlink (symbolic link) that points up a few directories, and right now I'm already inside it, in my home folder, `~`. Let's look inside that website directory: {{{ 0 patrickgibbs@marx:~$ pwd /home/members/patrick0/sites/patrickgibbs.mayfirst.org/users/patrickgibbs 0 patrickgibbs@marx:~$ cd ../.. 0 patrickgibbs@marx:/home/members/patrick0/sites/patrickgibbs.mayfirst.org$ ls -Alh total 32K drwxr-x--- 2 root patrickgibbs 4.0K Nov 7 04:35 backups drwxr-xr-x 2 patrickgibbs patrickgibbs 4.0K Aug 27 12:15 bin drwxrwxr-x 2 root patrickgibbs 4.0K Aug 27 12:15 cgi-bin drwxrwxr-x 4 root patrickgibbs 4.0K Dec 14 16:30 include drwxr-x--- 2 root patrickgibbs 4.0K Dec 16 06:26 logs drwxr-xr-x 3 root root 4.0K Aug 27 12:15 .red drwxr-xr-x 3 root root 4.0K Aug 27 12:15 users drwxrwxr-x 14 root patrickgibbs 4.0K Dec 7 17:15 web 0 patrickgibbs@marx:/home/members/patrick0/sites/patrickgibbs.mayfirst.org$ }}} ==== backups ==== I don't know what's in here. Probably backups... of what? {{{ 0 patrickgibbs@marx:/home/members/patrick0/sites/patrickgibbs.mayfirst.org$ ls -AlhR backups/ backups/: total 508K -rw-r----- 1 root patrickgibbs 190K Dec 16 01:33 patrickgibb_civi.sql.gz -rw-r----- 1 root patrickgibbs 89K Dec 16 01:33 patrickgibb_drup.sql.gz -rw-r----- 1 root patrickgibbs 188K Dec 16 01:33 patrickgibb_wprs.sql.gz -rw-r----- 1 root patrickgibbs 24K Dec 16 01:33 patrickgi_drup1.sql.gz 0 patrickgibbs@marx:/home/members/patrick0/sites/patrickgibbs.mayfirst.org$ }}} MySQL database backups so far. How did they get here? What's the schedule for backups? ==== bin ==== Don't know when I would use this. {{{ 0 patrickgibbs@marx:/home/members/patrick0/sites/patrickgibbs.mayfirst.org$ ls -AlhR bin/ bin/: total 4.0K -rwxr-xr-x 1 patrickgibbs patrickgibbs 123 Aug 27 12:15 php-cgi 0 patrickgibbs@marx:/home/members/patrick0/sites/patrickgibbs.mayfirst.org$ }}} ==== cgi-bin ==== I know this has something to do with websites. I've seen `cgi-bin` in URLs at other websites. Beyond that, I don't know. It's empty. ==== include ==== This directory is accessible by the `www-data` user (the Apache web server user, although '''most stuff gets executed by your user, not by www-data or some other Apache user'''). This is the place to put things that you want accessible by that user -- so far, the only thing I've put there is a `.htpasswd` file for a Trac instance. Looks like `php.ini` lives here too, and I remember editing that file a few times during past projects on other servers. {{{ 127 patrickgibbs@marx:/home/members/patrick0/sites/patrickgibbs.mayfirst.org$ ls -AlhR include/ include/: total 8.0K drwxr-xr-x 2 patrickgibbs patrickgibbs 4.0K Aug 27 12:15 php5 drwxr-xr-x 2 patrickgibbs patrickgibbs 4.0K Dec 14 16:30 trac include/php5: total 4.0K -rw-r--r-- 1 patrickgibbs patrickgibbs 110 Aug 27 12:15 php.ini include/trac: total 4.0K -rw-r--r-- 1 patrickgibbs patrickgibbs 46 Dec 14 18:19 trac.htpasswd 0 patrickgibbs@marx:/home/members/patrick0/sites/patrickgibbs.mayfirst.org$ }}} ==== logs ==== Useful logs and log backups here. {{{ 0 patrickgibbs@marx:/home/members/patrick0/sites/patrickgibbs.mayfirst.org$ ls -AlhR logs/ logs/: total 196K -rw-r--r-- 1 root adm 299 Dec 16 15:30 error.log -rw-r--r-- 1 root adm 16K Dec 16 04:32 error.log.1 -rw-r--r-- 1 root adm 1.6K Dec 8 22:27 error.log.2.gz -rw-r--r-- 1 root adm 319 Dec 1 22:13 error.log.3.gz -rw-r--r-- 1 root adm 374 Nov 24 17:48 error.log.4.gz -rw-r--r-- 1 root adm 3.7K Dec 16 15:30 web.log -rw-r--r-- 1 root adm 135K Dec 16 05:49 web.log.1 -rw-r--r-- 1 root adm 6.4K Dec 9 04:27 web.log.2.gz -rw-r--r-- 1 root adm 3.7K Dec 2 05:29 web.log.3.gz -rw-r--r-- 1 root adm 4.5K Nov 25 05:54 web.log.4.gz 0 patrickgibbs@marx:/home/members/patrick0/sites/patrickgibbs.mayfirst.org$ }}} I recently learned this command to use while troubleshooting: {{{ $ tail -f ~/patrickgibbs.mayfirst.org/logs/error.log [Sun Dec 16 06:27:46 2012] [error] [client 98.248.101.207] File does not exist: /home/members/patrick0/sites/patrickgibbs.mayfirst.org/web/favicon.ico ^C $ }}} ==== .red ==== This has something to do with the Members' Control Panel. I haven't touched anything in here, and it looks like I don't have permissions to anyways. {{{ 0 patrickgibbs@marx:/home/members/patrick0/sites/patrickgibbs.mayfirst.org$ ls -AlhR .red/ .red/: total 4.0K drwxr-xr-x 2 root root 4.0K Dec 14 16:34 apache2 .red/apache2: total 12K -rw-r--r-- 1 root root 1.1K Dec 14 16:34 apache.conf -rw-r--r-- 1 root root 1.2K Dec 7 12:58 apache.conf~ -rw-r--r-- 1 root root 1.1K Dec 14 16:34 apache.conf.bak 0 patrickgibbs@marx:/home/members/patrick0/sites/patrickgibbs.mayfirst.org$ }}} ==== users ==== This is like `home` on my laptop -- it has a directory for each user, and when you login you arrive in that directory by default, for me `users/patrickgibbs` is the `~` directory. We already looked inside. ==== web ==== This is where websites live! On those $5/month cPanel hosts I've used, this directory was called '''`public_html` or `www`'''. This starts out empty. == future changes to this page == * add links to the [wiki:participate] page and the "beginners instructions" page * add a section about how to ask questions, or link to an explanatory page if one exists. * add more detailed explanation of Members' Control Panel, with screen shots, and responses to questions like "Where is Fantastico?" (or does a page like that already exist?)