{"id":217,"date":"2010-05-10T07:50:48","date_gmt":"2010-05-10T14:50:48","guid":{"rendered":"http:\/\/35.225.155.113\/blog\/index.php\/2010\/05\/10\/a_step_beyond_a_red_hat_enterprise_linux_apache_mysql_php_how_to\/"},"modified":"2019-10-13T12:45:14","modified_gmt":"2019-10-13T19:45:14","slug":"a-step-beyond-a-red-hat-enterprise-linux-apache-mysql-php-how-to","status":"publish","type":"post","link":"https:\/\/www.weinstein.org\/blog\/index.php\/2010\/05\/a-step-beyond-a-red-hat-enterprise-linux-apache-mysql-php-how-to.html","title":{"rendered":"A Step Beyond a Red Hat Enterprise Linux, Apache, MySQL and PHP How To"},"content":{"rendered":"<div class=\"zemanta-img mt-image-right\" style=\"margin: 1em; display: block; float: right; width: 250px;\"><a href=\"http:\/\/www.flickr.com\/photos\/37182874@N04\/4265060082\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/farm3.static.flickr.com\/2753\/4265060082_71ae718c53_m.jpg\" alt=\"Server Room\" height=\"180\" width=\"240\"><\/a><\/p>\n<p class=\"zemanta-img-attribution\" style=\"font-size: 0.8em;\">Image by <a href=\"http:\/\/www.flickr.com\/photos\/37182874@N04\/4265060082\">pdweinstein<\/a> via Flickr<\/p>\n<\/div>\n<p style=\"margin-bottom: 0in;\">It seems quite a bit of my time has<br \/>\nbeen taken up with system administration related tasks these days. If<br \/>\nI&#8217;m not contemplating system monitoring solutions for one client, I must be busy migrating a mail service from one server location<br \/>\nto another.<\/p>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\">Naturally, I was hardly surprised when<br \/>\nI got an email from an old high school friend recently asking for<br \/>\nassistance in setting up a Linux, Apache, <a property=\"ctag:label\" resource=\"http:\/\/rdf.freebase.com\/ns\/en\/mysql\" typeof=\"ctag:Tag\" xmlns:ctag=\"http:\/\/commontag.org\/ns#\" class=\"zem_slink rdfa\" href=\"http:\/\/www.mysql.com\/\" title=\"MySQL\" rel=\"ctag:means homepage\">MySQL<\/a> and <a href=\"http:\/\/www.php.net\/\">PHP<\/a> (LAMP) server<br \/>\non <a property=\"ctag:label\" resource=\"http:\/\/rdf.freebase.com\/ns\/en\/red_hat_enterprise_linux\" typeof=\"ctag:Tag\" xmlns:ctag=\"http:\/\/commontag.org\/ns#\" class=\"zem_slink rdfa\" href=\"http:\/\/www.redhat.com\/rhel\/\" title=\"Red Hat Enterprise Linux\" rel=\"ctag:means homepage\">Red Hat Enterprise Linux<\/a> (RHEL).<\/p>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\">Now said friend is hardly a technical<br \/>\nnovice and <a href=\"http:\/\/www.google.com\/\">Google<\/a> is happy to provide one with <a href=\"http:\/\/www.google.com\/#hl=en&amp;source=hp&amp;q=lamp+howto&amp;aq=0&amp;aqi=g1g-m3&amp;aql=&amp;oq=lamp+how&amp;gs_rfai=&amp;fp=d7b9185308fd57b6\">plenty of step-by-step<br \/>\nhow to&#8217;s on the subject<\/a>. So instead of running down the usual I<br \/>\nfigured, since he understands the technical side, but is probably<br \/>\nmore at home with Microsoft-based solutions, that I would give him<br \/>\nsome tips to orient himself.<\/p>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\">Thus here is a quick and dirty &#8220;what&#8217;s<br \/>\nhappening&#8221; (instead of the more common how to) on installing LAMP<br \/>\non a RHEL based system.<\/p>\n<p style=\"margin-bottom: 0in;\">\n<ul>\n<li>\n<p style=\"margin-bottom: 0in;\"><a href=\"#tools\">Helpful Tools<\/a><\/p>\n<\/li>\n<li>\n<p style=\"margin-bottom: 0in;\"><a href=\"#installing\">Installing Software<\/a><\/p>\n<\/li>\n<li>\n<p style=\"margin-bottom: 0in;\"><a href=\"#config\">Configuring Software<\/a><\/p>\n<\/li>\n<li>\n<p style=\"margin-bottom: 0in;\"><a href=\"#executing\">Executing a Service<\/a><\/p>\n<\/li>\n<li>\n<p style=\"margin-bottom: 0in;\"><a href=\"#more\">More Resources<\/a><\/p>\n<\/li>\n<\/ul>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\" align=\"LEFT\"><b><a href=\"editor-content.html?cs=utf-8\" name=\"tools\">Helpful Tools<\/a><\/b><\/p>\n<p style=\"margin-bottom: 0in;\">Since most, if not all, of these<br \/>\ncommands deal with system-wide alterations first and foremost one<br \/>\nwill need to have &#8220;superuser&#8221; access. That can be<br \/>\naccomplished in one of two ways:<\/p>\n<p style=\"margin-bottom: 0in;\">\n<ul>\n<li>\n<p style=\"margin-bottom: 0in;\">root user: root is the<br \/>\nconventional name of the user who has rights to all files and<br \/>\nprograms on a Unix-based system such as Red Hat Enterprise Linux.<br \/>\nIn other words root is the main administrator for the<br \/>\nsystem and can do anything at anytime.<\/li>\n<li>\n<p style=\"margin-bottom: 0in;\"><i>sudo<\/i>: <i>sudo<\/i> is a<br \/>\ncommand that allows users to run programs with the security<br \/>\nprivileges of another user (normally the superuser, root). <i>sudo<\/i><br \/>\nusage needs to be granted to a user before it can be used and can be<br \/>\nlimited to a subset of privileges if needed.<\/li>\n<\/ul>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\">There are plenty of commands that one<br \/>\ncan execute at the command line. Just remembering them all can be<br \/>\nhard, let alone remembering how exactly each command works, in what<br \/>\ncontext and with what arguments. For that alone one should always<br \/>\nremember that help is always one command away:<\/p>\n<p style=\"margin-bottom: 0in;\">\n<ul>\n<li>\n<p style=\"margin-bottom: 0in;\"><i>man<\/i>: <i>man<\/i> is a<br \/>\ncommand (and format) for displaying the on-line <a property=\"ctag:label\" resource=\"http:\/\/rdf.freebase.com\/ns\/en\/manual_page\" typeof=\"ctag:Tag\" xmlns:ctag=\"http:\/\/commontag.org\/ns#\" class=\"zem_slink rdfa\" href=\"http:\/\/en.wikipedia.org\/wiki\/Man_page\" title=\"Man page\" rel=\"ctag:means wikipedia\">manual pages<\/a>. The<br \/>\nman command followed by the name of the command who&#8217;s documentation<br \/>\nyou wish to view will provide an display of that documentation.<\/p>\n<p style=\"margin-bottom: 0in;\">\n<\/li>\n<\/ul>\n<p style=\"margin-bottom: 0in;\" align=\"LEFT\">For example to view the<br \/>\nmanual pages in regards to the man command itself:<\/p>\n<p style=\"margin-bottom: 0in;\" align=\"LEFT\">\n<p style=\"margin-bottom: 0in;\">\n<div style=\"padding: 10px; background-color: rgb(0, 0, 0); color: rgb(23, 240, 23);\">\n<pre>$ man man\n<\/pre>\n<\/div>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\">A key characteristic of Unix-centric<br \/>\nsystems is the use of plain text for data storage. This means that<br \/>\nthe focus of data manipulation is based on the fundamentals of text<br \/>\nprocessing. It also means that data can be &#8220;piped&#8221; from one<br \/>\ncommand-line tool to another for performing a task that might be more<br \/>\ncomplicated for just one tool to complete.<\/p>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\">While text processing isn&#8217;t necessary<br \/>\nfor setting up a LAMP server what is necessary to know and have ready to use is at least one general, text-based tool; a <a href=\"http:\/\/en.wikipedia.org\/wiki\/Text_editor\">text<br \/>\neditor<\/a>.<\/p>\n<p style=\"margin-bottom: 0in;\">\n<ul>\n<li>\n<p style=\"margin-bottom: 0in;\"><i>vi: vi, vim, emacs or pico e<\/i><span style=\"font-style: normal;\">ach<br \/>\nis a command line text editor and while I try to be agnostic in the<br \/>\neternal debate about which is better, I will mention that for as<br \/>\nlong as I&#8217;ve been a Unix user\/admin (some 15 years now) no matter<br \/>\nwhat system I am on, be it a Red Hat distribution of Linux or a<br \/>\nproprietary system chances are <\/span><i>vi<\/i><span style=\"font-style: normal;\"><br \/>\nor <\/span><i>vim<\/i><span style=\"font-style: normal;\"> has been<br \/>\ninstalled and is available.<a class=\"sdfootnoteanc\" name=\"sdfootnote1anc\" href=\"#sdfootnote1sym\"><sup>1<\/sup><\/a><\/span><\/li>\n<\/ul>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\"><b><a href=\"editor-content.html?cs=utf-8\" name=\"installing\">Installing Software<\/a><\/b><\/p>\n<p style=\"margin-bottom: 0in;\">Red Hat Enterprise Linux uses a<br \/>\nsoftware package format called <i>rpm<\/i>. Each software package<br \/>\nconsists of an archive of files along with information about the<br \/>\npackage like its version and a description of the software within.<\/p>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\">As a general practice packages are<br \/>\nbroken up into two separate packages; One contains the compiled<br \/>\nexecutable, while a second one contains the source files for building<br \/>\nthe software from scratch<a class=\"sdfootnoteanc\" name=\"sdfootnote2anc\" href=\"#sdfootnote2sym\"><sup>2<\/sup><\/a>.<br \/>\nThe source code packages will usual have a &#8220;-devel&#8221;<br \/>\nappended to their name field.<a class=\"sdfootnoteanc\" name=\"sdfootnote3anc\" href=\"#sdfootnote3sym\"><sup>3<\/sup><\/a><\/p>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\">However, back in the early days of <i>rpm<\/i><br \/>\nit was discovered that managing individual <i>rpm<\/i> packages is a<br \/>\npain and time consuming<a class=\"sdfootnoteanc\" name=\"sdfootnote4anc\" href=\"#sdfootnote4sym\"><sup>4<\/sup><\/a>.<br \/>\nAs such, a number of rpm-based <a property=\"ctag:label\" resource=\"http:\/\/rdf.freebase.com\/ns\/en\/linux_distribution\" typeof=\"ctag:Tag\" xmlns:ctag=\"http:\/\/commontag.org\/ns#\" class=\"zem_slink rdfa\" href=\"http:\/\/en.wikipedia.org\/wiki\/Linux_distribution\" title=\"Linux distribution\" rel=\"ctag:means wikipedia\">Linux distributions<\/a> have adopted tools<br \/>\nsuch as <i>yum. yum<\/i> assists in managing the identification of<br \/>\ndependencies for a given software package as well as installing said<br \/>\npackages, tracking updates for a given package from a specified<br \/>\nrepository and removing installed software from the system as<br \/>\ndesired.<\/p>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\"><u>Identification<\/u><\/p>\n<p style=\"margin-bottom: 0in;\">Using <i>yum <\/i><span style=\"font-style: normal;\">with<br \/>\nthe <\/span><i>list<\/i> argument will provide information about a<br \/>\ngiven package&#8217;s availability. For example to check on the Apache Web<br \/>\nServer, which is officially known as the <a property=\"ctag:label\" resource=\"http:\/\/rdf.freebase.com\/ns\/en\/apache_http_server\" typeof=\"ctag:Tag\" xmlns:ctag=\"http:\/\/commontag.org\/ns#\" class=\"zem_slink rdfa\" href=\"http:\/\/httpd.apache.org\/\" title=\"Apache HTTP Server\" rel=\"ctag:means homepage\">Apache HTTP Server<\/a>:<\/p>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\">\n<div style=\"padding: 10px; background-color: rgb(0, 0, 0); color: rgb(23, 240, 23);\">\n<pre>$ yum list httpd\nLoaded plugins: fastestmirror\nInstalled Packages\nhttpd.i386     2.2.3-31.el5.centos.2     installed\nAvailable Packages\nhttpd.i386     2.2.3-31.el5.centos.4     updates\n<\/pre>\n<\/div>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\">As you can see httpd is not only<br \/>\navailable, but is also already installed<a class=\"sdfootnoteanc\" name=\"sdfootnote5anc\" href=\"#sdfootnote5sym\"><sup>5<\/sup><\/a>.<\/p>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\"><u>Installing<\/u><\/p>\n<p style=\"margin-bottom: 0in;\">If, however, the Apache HTTP Server<br \/>\nwasn&#8217;t the <i>install<\/i> argument for <i>yum <\/i><span style=\"font-style: normal;\">would<br \/>\ndo the trick<\/span><i>.<\/i><\/p>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\">\n<div style=\"padding: 10px; background-color: rgb(0, 0, 0); color: rgb(23, 240, 23);\">\n<pre>$ yum install httpd\nLoaded plugins: fastestmirror\nLoading mirror speeds from cached hostfile\n* addons: mirror.cisp.com\n* base: yum.singlehop.com\n* extras: mirror.sanctuaryhost.com\n* updates: mirrors.liquidweb.com\nSetting up Install Process\nResolving Dependencies\n--&gt; Running transaction check\n---&gt; Package httpd.i386 0:2.2.3-31.el5.centos.4 set to be updated\n--&gt; Finished Dependency Resolution\nDependencies Resolved\n==================================================================\nPackage     Arch     Version               Repository       Size\n==================================================================\nInstalling:\nhttpd       i386     2.2.3-31.el5.centos.4 updates         1.2 M\nTransaction Summary\n==================================================================\nInstall      1 Package(s)\nUpdate       0 Package(s)\nRemove       0 Package(s)\nTotal download size: 1.2 M\nIs this ok [y\/N]:\n<\/pre>\n<\/div>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\">Now it so happens that installing of<br \/>\nApache HTTP Server on the example system at the given time, didn&#8217;t<br \/>\nrequire any additional software packages to for the installation.<br \/>\nThis might not always be the case and as such, <i>yum <\/i><span style=\"font-style: normal;\">will<br \/>\nidentify and list any packages it determines are missing from the<br \/>\nsystem to be installed at the same time, for the Apache Software<br \/>\nFoundation&#8217;s web server to be useful. <\/span><\/p>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\"><u>Updating<\/u><\/p>\n<p style=\"margin-bottom: 0in;\">One of the key advantages of a package<br \/>\nmanagement system such as <i>yum<\/i> in the ability to easily track<br \/>\nupdates. The <i>update<\/i> feature can be used in two distinct<br \/>\nmanners. If used without explicitly naming a given packages,<br \/>\nupdate will check for and then update every currently installed<br \/>\npackage that has a newer package available from the repository.<\/p>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\">If, on the other hand, one or more<br \/>\npackages are specified, <i>yum <\/i>will only  update  the  listed<br \/>\npackage.   As with installing the initial package, while updating,<br \/>\n<i>yum<\/i>  will  ensure that all dependencies are installed.<\/p>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\"><u>Removing<\/u><\/p>\n<p style=\"margin-bottom: 0in; text-decoration: none;\">Of course if <i>yum<\/i><br \/>\ncan install and update software, it only makes sense that it can also<br \/>\nremove the installed software from a given system. The <i>remove<\/i><br \/>\n<span style=\"font-style: normal;\">argument<\/span> is used to remove a<br \/>\nspecified package  from  the  system  as well  as removing any<br \/>\npackages which depend on the package being removed.<\/p>\n<p style=\"margin-bottom: 0in; text-decoration: none;\">\n<p style=\"margin-bottom: 0in; text-decoration: none;\">Note that this<br \/>\nis basically the exact opposite of the install option. Install will<br \/>\nadd any software the package requires to run and the requested<br \/>\nsoftware itself. Remove, however, removes the requested software and<br \/>\nany software that depends on it.<\/p>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in; font-style: normal;\"><b><a href=\"editor-content.html?cs=utf-8\" name=\"config\">Configuring Software<\/a><\/b><\/p>\n<p style=\"margin-bottom: 0in;\">Once each component is installed, it&#8217;s<br \/>\ntime to go about configuring each one. The general convention for<br \/>\nUnix-based systems such as Red Hat&#8217;s Enterprise Linux is to place<br \/>\nsystem-wide configuration files in the \/etc directory. If fact, while<br \/>\nthe specifics can vary, the <a href=\"http:\/\/en.wikipedia.org\/wiki\/Unix_directory_structure\">directory structure from Unix system to<br \/>\nUnix system will general follow the same over all pattern<\/a>.<\/p>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\">Again staying with our web server<br \/>\nexample, the main Apache HTTP Server configuration file can be found<br \/>\nat \/etc\/httpd\/conf\/httpd.conf on a Red Hat Enterprise Linux system.<br \/>\nTo open the configuration file for review and possible modification<br \/>\nusing the <i>vi<\/i> text editor is as simple as:<\/p>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\">\n<div style=\"padding: 10px; background-color: rgb(0, 0, 0); color: rgb(23, 240, 23);\">\n<pre>$ vi \/etc\/httpd\/conf\/httpd.conf\n<\/pre>\n<\/div>\n<p style=\"margin-bottom: 0in;\">Another common directory convention<br \/>\nis \/var for variable files. Here are files whose content is expected<br \/>\nto continually change during normal operation of the system. This is<br \/>\nof note in regards to Apache and MySQL  since \/var is where database<br \/>\n(\/var\/db) or website file hierarchies reside (\/var\/www).<\/p>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\"><b><a href=\"editor-content.html?cs=utf-8\" name=\"executing\">Executing a Service<\/a><\/b><\/p>\n<p style=\"margin-bottom: 0in;\">Last, but not least is starting these<br \/>\nvarious services. For that there is the <i>service<\/i> command which<br \/>\nruns a standardized script created for controlling the operation of<br \/>\nthe software in question. Thus to start the httpd web service the<br \/>\ncommand would be&#8221;<\/p>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\">\n<div style=\"padding: 10px; background-color: rgb(0, 0, 0); color: rgb(23, 240, 23);\">\n<pre>$ service httpd start\nStarting httpd:                                            [  OK  ]\n<\/pre>\n<\/div>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\">Of course starting a service manually<br \/>\nand having it automatically start when the system boots are two<br \/>\ndifferent realities. The <i>chkconfig<\/i> command provides a simple<br \/>\ncommand-line tool for denoting if a service is to start at boot time<br \/>\nor not. To turn on the Apache httpd service at boot:<\/p>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\">\n<div style=\"padding: 10px; background-color: rgb(0, 0, 0); color: rgb(23, 240, 23);\">\n<pre>$ chkconfig --add httpd\n$ chkconfig httpd on\n<\/pre>\n<\/div>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\">As noted in its man page, <i>chkconfig<\/i><br \/>\nhas five distinct functions: adding new services for management,<br \/>\nremoving services from management, listing  the  current  startup<br \/>\ninformation  for  services,  changing  the startup information for<br \/>\nservices, and checking the startup state of a particular service.<\/p>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\">Thus if <i>service<\/i> is akin to <i>rpm<\/i><span style=\"font-style: normal;\"><br \/>\nform manually controlling a specific service via its control script,<br \/>\nthan <\/span><i>chkconfig<\/i><span style=\"font-style: normal;\"> is akin<br \/>\nto <\/span><i>yum<\/i><span style=\"font-style: normal;\"> for managing a<br \/>\ngroup of services, controlling the when and how of availability.<\/span><\/p>\n<p style=\"margin-bottom: 0in; font-style: normal;\">\n<p style=\"margin-bottom: 0in;\"><span style=\"font-style: normal;\">The<br \/>\n<i>&#8211;add<\/i> argument for <\/span><i>chkconfig<\/i><span style=\"font-style: normal;\"><br \/>\nadds a new  service  for  management. Equally, the <i>&#8211;del <\/i>will remove a service from management and the <i>&#8211;list<\/i> will list all of the<br \/>\nservices which <\/span><i>chkconfig<\/i><span style=\"font-style: normal;\"><br \/>\nknows about or, if a name is specified, information only about the<br \/>\nnamed service.<\/span><\/p>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\"><span style=\"font-style: normal;\">One of<br \/>\nthe key concepts in regards to services, such as a web or database<br \/>\nservice on a Unix-centric system, is the concept of a runlevel.  <\/span>In<br \/>\nstandard practice, runlevel relates to the state the system is in and<br \/>\nwhat is enabled for execution. Runlevel zero, for example, halts all<br \/>\nexecution of any running service, an denotes a halted, off, system.<\/p>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\">Runlevels 1 to 5 differ in terms of<br \/>\nwhich drives are mounted and which services, such as a web server<br \/>\nare started. Default runlevels are typically 3, 4, or 5. Lower run<br \/>\nlevels (1) are useful for maintenance or emergency repairs, since they<br \/>\nusually don&#8217;t offer any network services and can help in eliminating<br \/>\nsources of trouble.<\/p>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\">This is important to note since in<br \/>\nmanaging a service, <i>chkconfig<\/i><span style=\"font-style: normal;\"><br \/>\nneeds to know at which runlevels a service should run. Moreover, it<br \/>\nis important to note what runlevels other depended services are<br \/>\nenabled for. That is, if runlevel 1, which is single-user state akin to a &#8220;safe mode&#8221; is configured to not run any networking<br \/>\nservice, it makes little sense to enable the Apache HTTP server to<br \/>\nexecute at this runlevel.<\/span><\/p>\n<p style=\"margin-bottom: 0in;\">\n<p style=\"margin-bottom: 0in;\"><b><span style=\"font-style: normal;\"><a href=\"editor-content.html?cs=utf-8\" name=\"more\"> More Resources<\/a><\/span><\/b><\/p>\n<p style=\"margin-bottom: 0in; font-weight: normal;\"><span style=\"font-style: normal;\">Just<br \/>\nas other how-tos are entry points into getting going, this little<br \/>\nwhat&#8217;s happening is a quick &#8220;step beyond&#8221; the how to&#8217;s last step,<br \/>\nmoving one towards understand what is going on &#8220;behind the scenes.&#8221;<br \/>\nHopefully this next step  provides a helpful point of moving into a<br \/>\ngreater understanding and into the grand world of system<br \/>\nadministration.<\/span><\/p>\n<p style=\"margin-bottom: 0in; font-weight: normal;\">\n<p style=\"margin-bottom: 0in; font-weight: normal;\"><span style=\"font-style: normal;\">To<br \/>\nthat end here is a quick list of books on subject of system<br \/>\nadministration for Unix systems such as Red Hat Enterprise Linux:<\/span><\/p>\n<p style=\"margin-bottom: 0in; font-weight: normal;\">\n<p><iframe src=\"http:\/\/rcm.amazon.com\/e\/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=08620B&amp;t=weinsteinorg-20&amp;o=1&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=10FE9736YVPPT7A0FBG2&amp;asins=0764579940\" style=\"width: 120px; height: 240px;\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\" scrolling=\"no\"><\/iframe><br \/>\n<iframe src=\"http:\/\/rcm.amazon.com\/e\/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=08620B&amp;t=weinsteinorg-20&amp;o=1&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=10FE9736YVPPT7A0FBG2&amp;asins=0596100299\" style=\"width: 120px; height: 240px;\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\" scrolling=\"no\"><\/iframe><br \/>\n<iframe src=\"http:\/\/rcm.amazon.com\/e\/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=08620B&amp;t=weinsteinorg-20&amp;o=1&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=10FE9736YVPPT7A0FBG2&amp;asins=0596003439\" style=\"width: 120px; height: 240px;\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\" scrolling=\"no\"><\/iframe><br \/>\n<iframe src=\"http:\/\/rcm.amazon.com\/e\/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=08620B&amp;t=weinsteinorg-20&amp;o=1&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=10FE9736YVPPT7A0FBG2&amp;asins=0071545883\" style=\"width: 120px; height: 240px;\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\" scrolling=\"no\"><\/iframe><\/p>\n<p style=\"margin-bottom: 0in; font-weight: normal;\"><span style=\"font-style: normal;\"><br \/>\n<\/span><\/p>\n<hr>\n<div id=\"sdfootnote1\">\n<p class=\"sdfootnote\"><a class=\"sdfootnotesym\" name=\"sdfootnote1sym\" href=\"#sdfootnote1anc\"><br \/>\n<\/a><\/p>\n<p class=\"sdfootnote\"><a class=\"sdfootnotesym\" name=\"sdfootnote1sym\" href=\"#sdfootnote1anc\">1<\/a> More<br \/>\non using vi:<br \/>\n<a href=\"http:\/\/heather.cs.ucdavis.edu\/%7Ematloff\/UnixAndC\/Editors\/ViIntro.html\">http:\/\/heather.cs.ucdavis.edu\/~matloff\/UnixAndC\/Editors\/ViIntro.html<\/a><\/p>\n<\/div>\n<div id=\"sdfootnote2\">\n<p class=\"sdfootnote\"><a class=\"sdfootnotesym\" name=\"sdfootnote2sym\" href=\"#sdfootnote2anc\">2<\/a> Remember<br \/>\none of the major tenets at the heart of GNU\/Linux is the ability to<br \/>\nhave access to view and modify the source materials.<\/p>\n<\/div>\n<div id=\"sdfootnote3\">\n<p class=\"sdfootnote\"><a class=\"sdfootnotesym\" name=\"sdfootnote3sym\" href=\"#sdfootnote3anc\">3<\/a> More<br \/>\nabout the rpm naming convention can be found here:<br \/>\n<a href=\"http:\/\/en.wikipedia.org\/wiki\/RPM_Package_Manager#Package_label\">http:\/\/en.wikipedia.org\/wiki\/RPM_Package_Manager#Package_label<\/a><\/p>\n<\/div>\n<div id=\"sdfootnote4\">\n<p class=\"sdfootnote\"><a class=\"sdfootnotesym\" name=\"sdfootnote4sym\" href=\"#sdfootnote4anc\">4<\/a> Often<br \/>\nrefereed to as RPM Hell<\/p>\n<\/div>\n<div id=\"sdfootnote5\">\n<p class=\"sdfootnote\"><a class=\"sdfootnotesym\" name=\"sdfootnote5sym\" href=\"#sdfootnote5anc\">5<\/a> A<br \/>\ntrained eye will note that this command was actually executed on a<br \/>\nCentOS system. CentOS, as noted on <a href=\"http:\/\/www.centos.org\/\">their site<\/a>, is a &#8220;CentOS is an<br \/>\nEnterprise-class Linux Distribution derived from sources freely<br \/>\nprovided to the public by a prominent North American Enterprise<br \/>\nLinux vendor.&#8221; Can you guess which one?<\/p>\n<\/div>\n<div style=\"margin-top: 10px; height: 15px;\" class=\"zemanta-pixie\"><img decoding=\"async\" style=\"border: medium none ; float: right;\" class=\"zemanta-pixie-img\" alt=\"\" src=\"http:\/\/img.zemanta.com\/pixy.gif?x-id=79561c1a-ea4f-4cd1-84f1-5c6f336b3800\"><span class=\"zem-script more-related pretty-attribution\"><script type=\"text\/javascript\" src=\"http:\/\/static.zemanta.com\/readside\/loader.js\" defer=\"defer\"><\/script><\/span><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Image by pdweinstein via Flickr It seems quite a bit of my time has been taken up with system administration related tasks these days. If I&#8217;m not contemplating system monitoring solutions for one client, I must be busy migrating a mail service from one server location to another. Naturally, I was hardly surprised when I [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,66,82],"tags":[12,288,285,6,286,287,67,283,284],"_links":{"self":[{"href":"https:\/\/www.weinstein.org\/blog\/index.php\/wp-json\/wp\/v2\/posts\/217"}],"collection":[{"href":"https:\/\/www.weinstein.org\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.weinstein.org\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.weinstein.org\/blog\/index.php\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.weinstein.org\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=217"}],"version-history":[{"count":2,"href":"https:\/\/www.weinstein.org\/blog\/index.php\/wp-json\/wp\/v2\/posts\/217\/revisions"}],"predecessor-version":[{"id":697,"href":"https:\/\/www.weinstein.org\/blog\/index.php\/wp-json\/wp\/v2\/posts\/217\/revisions\/697"}],"wp:attachment":[{"href":"https:\/\/www.weinstein.org\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=217"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.weinstein.org\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=217"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.weinstein.org\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=217"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}