What do I need to know about Servers?

What Do I Need To Know About Servers In a Web Development Role?

  • I know that may sound a little vague, so I'll try and explain a little further... After being self employed developer for many years I'm now in search of a commercial web developer role. My only experience with servers and hosting is uploading through FTP and playing around with CPanel/WHM a little. The role's I'm going for are web development PHP, MySQL, HTML, CSS type roles, but in recent interviews I've been asked questions about setting up things on the server, that I had no idea what was being said... which wasn't ideal! Without knowing more than I do, it's hard to explain what exactly I'm looking to learn, but it's basically just the server elements I should know as a web developer? If you're a web developer, do you have any dealing with the server apart from uploading files, and if so, what? Are things like Subversion(SVN) and version control systems often set up by the web development team, could that be what they were talking about?

  • Answer:

    This is a big set of questions, but I suspect one that a lot of folks need to address, particularly as they start to advance in a career that started with a heavy front-end focus. You mention that you are going for a role that includes PHP and MySQL development. These are things that need to execute on the server. Being able to make good technical judgments as a developer requires that you gain an understanding of how these things work on the server and how they interact with the web front-end. So, you clearly need to develop an understanding of the server. Rather than trying to figure out up front the exact body of knowledge that you might need about the server, I would recommend diving in and building something including installing all of the server side software yourself. A great way to get your feet wet is to install Linux on your computer. You can use something like VirtualBox to let it run alongside your current OS. Install MySQL, install and set up the server for PHP and try to get everything working together. The great thing is, these days, a moderately well equipped laptop can run all of this and be the "server". This could be tough at the beginning, particularly if you don't have experience using Linux and the command line. As a developer, you should at least know enough to be able to get through this exercise and it will give you a jump start in figuring out how to further your knowledge. There are three areas where you will probably need to get up to speed: The basics of the Linux operating system. Maybe start with an easy to install distribution like Ubuntu. Setting up a web server and PHP. Installing Apache is a good place to start. There are other alternatives, but this is where most people start. Learning the basics of installing and running MySQL. At the very least, as a developer, you will probably need to be able to write DDL to create tables and other structures in the database and you will definitely need to be able to query the database on the server to explore data and ensure what your application is spitting out matches what is in the database. If you were to go with Ubuntu, you could follow the basic instructions https://help.ubuntu.com/community/ApacheMySQLPHP to get yourself up and running. Note, you will have to do quite a bit of ramp up on Linux basics before starting to install and play with the web servers/database components. In terms of how developers need to interact with the server, beyond uploading files, I think this varies a lot from organization to organization. The developers are often dealing with the administration of at least the development environment. Sometimes, it is developers who are setting up the revision control system (for example SVN) and the deployment process (moving code across environments). To your point, at the very least developers will need to use revision control system that is living on the server. You will also need to do things like look at the logs on a server to see what messages are being generated to help diagnose and resolve problems. You may need to work with an infrastructure team to determine things like the network configuration or storage configuration of the server. Often, application issues are a combination of the configuration and the code. The point is that there is not a single answer for exactly how you will need to touch the server, but in the course of your career, it will certainly go beyond just uploading files via something like FTP. Getting started by learning the basics now will help.

john at Programmers Visit the source

Was this solution helpful to you?

Other answers

My first point of advice is to not exclusively limit yourself to any one role. It's great to be a specialist and have a deep knowledge in a particular skill set (PHP, for instance). However, it is just as important to have a broad knowledge that spans across the rest of your domain. In my experience most teams are not looking to hire someone that has the knowledge to rewrite the core functionality of PHP, but rather someone that can handle any problem that is thrown at them (although having that level of knowledge would certainly not hurt). Or at least someone that can help solve any issues that the team encounters. For instance, imagine a situation where your application goes down and customers are being affected. You can either throw your hands up and say "I have no idea what to do..." or you can SSH into the server, start scanning logs, notice that the diskspace of a particular filesystem is full and proceed to clean it out. This is a minor example but I think the point is clear. With that basic knowledge, as a developer, you could write a script that monitors that particular filesystem and cleans it out once it reaches a certain threshold. You have now become that much more valuable to your manager. Another thing I have learned during my career, is that things move fast, and if you don't keep up you are going to be left behind. The more you know about your entire environment (including the business aspects) the better off you are. That's not to say you need to be an expert in everything you do, but at least have the knowledge to not be labeled as clueless. The more familiar you are, the more adaptable you are, and the more valuable an asset you are to your company. To specifically answer your questions... What server elements should I know as a developer? Be familiar with the entire application stack. Know what web server, database, caching mechanisms, etc. that are being used. And which versions, too. Have enough familiarity that you can recreate the environment on your own server. Which, in and of itself, is vitaly important. You should strive to more or less have the same environments in development and production, as it reduces surprises (http://12factor.net/dev-prod-parity). As a developer what dealings do you have with the server? This really depends on the team. In my particular case, the developers play a huge role in staging the environments. We are the most familiar with the inner workings of the application and so are in the best position to determine what server technologies are in place to run it. I imagine not all teams have such a hands on approach, but to have enough familiarity to be able to involve yourself in the discussions is a great advantage. Specifically, in regards to version control, you as the developer are highly affected by which technology is chosen (Git, Subversion, Mercurial, etc.), and therefore should strive to involve yourself in the decision process. So, now what? As for my suggestion as to how best to approach learning all of this? http://mdswanson.com/blog/2012/08/27/move-your-feet.html. Don't worry about trying to read everything you can on the subject, most of it will probably just leak out of your brain by the time you are finished. Instead start developing something from the ground up. Start with http://www.vagrantup.com/; it will allow you to easily create and manage a virtual machine that you can use as your new playground. Then, install a web server and a database and start creating. If you have an idea for an app, perfect, go for it... if not, find a tutorial or try to recreate an existing app. The point is just to become familiar with the entire process. Also, as a PHP developer, be sure to check out http://www.phptherightway.com/... it really contains a lot of excellent info. And most importantly, don't stress yourself out. I imagine you followed the path of a developer because it's something you enjoy and are passionate about... don't lose sight of that!

jonyamo

Focusing on What do you need to know about servers to be a web developer?... Actually surprisingly little. Your main areas of knowledge should be programming, html, php, etc. What you to need to know is how to run things locally and when you do this you are using your box as a 'server'. So when running locally you use a web browser to view the pages, just as with any internet site... except yours will be http://localhost or http://127.0.0.1 As for configuring cgi, http, etc. I don't expect you need to know that. You can always work through any general book on setting up a web server for the OS you work in and that would be enough coverage to know the general terms. For the bigger picture I recommend getting into Linux and learning how to set up and configure machines such as web servers. But only if you actually have an interest in the stuff. Not just to impress in interviews. Finally I would recommend you consider making notes during interviews about areas you don't know enough about. It would help if your question was more specific about just which terms, etc. you didn't know.

Michael Durrant

You need to know below things to complete the web development cycle. 1) IDE (Netbeans and Eclipse etc.) 2) Any programing language for coding. (PHP, java, etc. ) 3) Front technology for page designing (HTML, CSS etc.) 4) Backed database to store and retrieve data. (MySQL etc) 3) Version controlling system for checking and retrieve you code form repository. 4) build tool to compile you code with dependent files. (Ant, Maven) 6) Web server to deploy and run you code. 7) Need to know basic deployment process over servers to run and test you web and ejb component. (Tomcat, Web-Logic server)

Ratnesh Dubey

In addition to DemetriKots answer, I'd also add looking at solutions for automated deployment and continuous integration. Setting up the server initially is only one step, and deploying over FTP is painful and error prone, with no proper solution for rolling back bad deploys. http://hudson-ci.org/ - Continuous integration server http://www.phing.info/ - automated build tool, specifically for PHP, based on Ant http://ant.apache.org/ - automated build tool http://www.capify.org/ - create deployment scripts to automate and ease deploying your web application.

Kikimac

Related Q & A:

Just Added Q & A:

Find solution

For every problem there is a solution! Proved by Solucija.

  • Got an issue and looking for advice?

  • Ask Solucija to search every corner of the Web for help.

  • Get workable solutions and helpful tips in a moment.

Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.