Category Archives: LAMP architecture

Unit 11: Course Retrospective

This (SIRLS 672) was my first course in the DigIn certificate program, so I did not quite know what to expect of myself or of the program, especially because I do not have professional experience in a library or with collections, except as a frequent user. Although I have a technical background, I had not worked as a programmer or database administrator in years. I discovered that although the course was more technical than I had anticipated, it was still within my capabilities. The examples of digital collections and the library-specific assignments were enlightening as to the scope of the kinds of projects involved and the kinds of skills needed to manage digital collections in a library or archival environment. 

I have learned new technical concepts and skills in this course that will form the basis of a new and expanded conceptualization of digital collections. For example, I knew little about the inner workings of the internet before taking this class; now I understand the various data protocols and standards used, and the procedures used to get data from one node to another. I also did not know anything about the component parts underlying a digital collection (except a little about databases): now I understand, using the LAMP (Linux, Apache, MySQL, PHP) stack as an example, the basic relations between the operating system, the web server, the database management system, and the scripting language underlying a digital collection. I already knew some HTML but I learned a little more, and I learned about XML as a way of describing and structuring data, which was completely new to me. I had professional experience with the concepts underlying relational databases and database design, but it was a good review; and I was introduced to the specifics of MySQL and the scripting language PHP.

In addition to the technical aspects of the course, I learned about the controversies and issues surrounding digital information, such as the argument for open-source software, and the advantages/disadvantages of various system interfaces, such as the CLI  (command line) versus a GUI (graphical user interface). I especially appreciated the opportunity to try tasks using a variety of methods and interfaces so that I could come to my own conclusions about my preferences.  I also learned skills and methods related to project management, the importance of a technology plan, and a little about how technology projects are funded, especially through the e-rate program.  Through the examples and the discussions, I learned about how all of these issues affect libraries, and the issues surrounding the creation and maintenance of digital collections in a library or archival setting. I have also learned about some of the initiatives in the digital humanities.

I especially have a new appreciation for the technical aspects underlying digital collections, and the prodigious amount of work that goes into designing, creating, and maintaining such collections. This knowledge gives a counterweight to the arguments in favor of free access for digital collections: while I agree that access should be as free as possible, I realize that digital collections do not come into being without a large price tag in terms of people-hours and expertise. I think that librarians will have a increasingly large role to play in creating and maintaining these collections, especially in this era of financial constraints.

As I write this I am impressed with how much I have learned, yet I feel a little trepidation because I’m afraid I may have learned just enough to be dangerous.  I realize how far I am from being really proficient in any of these areas; but since the course description states that “this is not a course in network administration, web development or programming!” I feel a little better. I feel that I have achieved the stated goal, which is to learn “about server technology supporting digital collections in libraries, archives, cultural heritage organizations and other institutions.”  I think I have indeed “gain[ed] confidence in [my] ability to learn new technologies as they are developed” and I have come to “understand basic information management architecture.”  I hope and expect that this course will prove to be a firm foundation to build upon as I pursue my future in the digital humanities.

Leave a comment

Filed under Digital Humanities, LAMP architecture, Library science, Project Management, SIRLS 672, Ubuntu Linux

Unit 10: SQL and relational databases

Learning SQL was not conceptually difficult for me, mainly because of my past experiences with relational databases. The different kinds of joins are also not difficult for me because I understand set theory. The inner/outer/full joins are really references to a Venn diagram. See the above diagram, which is based on the exercise Bruce had us do in the Images database.

The left (red) oval is the table images. The right (blue) oval is the table photographers. As the diagram shows, some images have no associated photographer. Some photographers have no associated images. The part where the two ovals intersect consists of those images that have associated photographers (or those photographers that have associated images).

So an INNER JOIN between these two tables would return those rows in the overlapping (inner) part of the diagram: those rows that have both a photographer and an image. A LEFT OUTER JOIN contains all the image records in the left (red) oval, including those that do not have a photographer as well as those who do. A RIGHT OUTER JOIN contains all the photographer records in the right (blue) oval, including those that have no images. A FULL JOIN will return all the records in both ovals.

Getting the syntax right is the hardest part of SQL, and getting the right results is mainly dependent upon having normalized tables and understanding the table structure in a database.

Leave a comment

Filed under LAMP architecture, SIRLS 672

Unit 9: Relational Database Design and MySQL

In  your  blog  this  week  talk  briefly  about  what  concepts  in  this  unit  you  found  most  difficult.  Are  there  still  things   that  are  unclear?  How  might  you  go  about  furthering  your  understanding  of  these  topics?

The topic that was most complex was the process of normalizing relational databases. Fortunately, it was mostly review for me, since I worked for a few years designing and managing databases for research projects and small businesses. Since I was a math minor in college, the math was much more accessible to me then; I have forgotten much of the math I once knew, so the equations are much harder now. Fortunately you don’t need to understand the math to understand the concepts. This has been a good refresher, and of course the theory has progressed since then.

MySQL was pretty straight-forward; since I have used database queries and programmed them before, (although in older PC-based DBMSs like dBaseIV and rBase) the concepts are quite similar. I also had no problems setting up some sample tables on my virtual machine and running through the tutorials.

I plan to continue studying this topic (since I see myself probably creating and working with databases in the future) by trying out different database designs on my system and continuing to read about and do tutorials about MySQL. I would eventually like to end up making the ultimate database of George Eliot resources available on a webpage called Everything Eliot (or something like that). She is one of the few remaining major Victorian figures lacking a major web portal.

A George Eliot knowledge base would be very interesting. I wonder about making it wiki-based, though; I did a little exploratory research about open source knowledge base management systems and there seem to be a few available that are based upon wikis rather than tables. I have an interest in expert systems and knowledge base design  from long ago, especially developing heuristic models of knowledge rather than statistical.

Leave a comment

Filed under LAMP architecture, SIRLS 672

Unit 7 – learning XML and getting web site up and running

Discuss briefly how you went about learning XML and which resources you used. Comment briefly on helpful they were (or not), and indicate any intermediate or advanced modules you reviewed. Provide a brief status report on the installation of your optional practice system, if you have one.


I learned XML by reading the lecture notes and links provided by Bruce and using the W3Schools XML tutorial  I found the tutorial adequate for my needs, especially since I can try out examples live. I also looked at two books I own called XML by Example, and XSLT: Working with XML and HTML. I did not watch the videos, since I don’t generally find videos helpful. The site was fascinating. I also began the tutorials on DTD and XML schemas. I learned more about XML by reading about the TEI guidelines for digital humanities, including the “Gentle Introduction to XML” provided by the site.

My practice system (VM) status: operational and up to date. I was able to connect remotely and run “headless” using a terminal session and opening a secure shell.  I set up my server’s website, and when I went to change the permissions, I found I had already added the group webdev and changed the permissions when I set up the practice system (I followed all the installation directions from the standard install document, which included this, I think). I continued by using fugu to transfer the website and XML files onto my new web server, and I was able to display it properly in the web browser.   I made a personal web space for user mebell on my server, and was able to find it in the browser successfully as well.

Leave a comment

Filed under LAMP architecture, SIRLS 672

Unit 6 – Learning HTML and practice system update

Discuss briefly how you went about learning HTML and which resources you used. Comment briefly on how helpful they were (or not), and indicate any intermediate or advanced modules or sections you reviewed. Provide a brief status report on installation of your practice system, if you have elected to try to bring one up.

LEARNING HTML: I used the recommended tutorial
I had previous exposure to HTML, but it was long ago, so I did all of the HTML basic sections. I found the tutorial very useful. I especially like how it allows you to test the HTML you are writing and see the result immediately in a split screen. I intend to go on and do the more advanced sections. I see that this site also has a CSS tutorial. So I guess that’s next!

PRACTICE SYSTEM: I elected to install another virtual machine on my computer rather than to use another physical machine. I followed the standard install instructions, and everything worked as described. I was then successful in assigning static IP addresses to each of my two VMs, and ping each of them as well as access the Apache web server on each of them. I also tried to access webmin, and could not for the new VM, so I had to go back to the Unit 4 instructions and install webmin on the new VM. That worked fine, and then everything tested OK. I then edited the HOSTS file, and now each VM has a name in the file. I was able to access each VM by using the host name in the browser address bar.

Leave a comment

Filed under LAMP architecture, Operating systems, SIRLS 672, Ubuntu Linux

Unit 4 – adding users

We were instructed to add a user to the system in three different ways, so we could compare the methods to each other. Here is a summary of what each method entailed in my experience:

Assignment 2: Adding a user at the command line with adduser

This went as described. The plethora of different switches available for the commands was a little intimidating; I needed to go back and review them and to have the .pdf files open in front of me to make sure I understood what I was doing.  And of course I had to use sudo in order to make these changes because I needed superuser powers!

  1. The order of commands made sense: I had to use groupadd to create a new group before I could add a user, since each user needs to be assigned to a group when created, and the group needs to exist first.  I named the group the same as the new user, which I named userme.
  2. Then I used useraddto add the new user. The switch –g defines the user’s initial login group; this was the group I created previously with groupadd. The switch –G defines additional groups that the user belongs to; the command line we were instructed to use indicated that my new user also belonged to a group named users. The switch –m makes the user’s home directory if it doesn’t already exist.
  3. Then I used the passwd command to give the new user a password.
  4. As the assignment suggested, after I logged out and then logged in again as the new user (userme) , I found I could not use the sudo command because my new user was not listed in the group sudoers, which meant I did not have administrator privileges.
  5. So I logged out and back in as mebell.  I used the grep command to do a string search of the /var/log/auth.log file for the string “userme” and I found an entry in the auth.log file that showed I tried to execute a command using sudo privileges from an unauthorized account.

I found using the command line easy and powerful, since I could tell it exactly what I wanted. But I had to know what I wanted, and I had to understand all the switches in order to use it properly, and had to understand the order of commands (for example, that I had to create the group first before I created the user. Also, when there is an error message, I have to know where to look to fix the problem (like the auth.log file).  Fortunately one can use the usermod command to change settings later for a user.

 Adding a user with Webmin

I had no trouble logging into Webmin. Finding the correct menu items was also easy and fairly intuitive. I found it easy to create a group and a user (which I named useryou), and the default settings made it fast, but powerful. I like that the settings on the groups and users tabs had default values but also gave me drop-down menus so I could see the available choices. This would be handy if I had to configure several users and groups; I especially liked that you could create a user and have webmin create a group for you, so that you didn’t have to know the order of the commands like you do with the command line.  It seems that it would be easier to do the tasks without making a mistake, especially if you had several tasks to do, or if you had many users and groups; it would help avoid making typos as one could at the command line.  Also, although we didn’t do this in the assignment, from the reading it seems that the webmin batch commands could also be very powerful, if I wanted to create multiple users and groups and execute commands before/after creating new users.

Leave a comment

Filed under LAMP architecture, SIRLS 672, Ubuntu Linux


Hi, my name is Mary, and I’m excited to begin the DigIn (Digital Information) graduate certificate offered through the UA School of Information Resources and Library Science. I’m a Ph.D. Candidate in British literature, and I intend to move into the exciting field of digital humanities. Hence the blog title.

My technical background includes a minor in math and computer science (albeit many moons ago); work experience as a database specialist/statistical analyst for research data; and an interest in exploring new data technologies, especially as they apply to the digital humanities. My Ph.D. research uses digital collections and repositories of nineteenth century materials to aid in my assessment of the discourse of shame in the nineteenth century novel.

Anyway, I’m excited to begin this course and look forward to blogging about my experiences.

Leave a comment

Filed under Digital Humanities, LAMP architecture, SIRLS 672, Ubuntu Linux