The Ultimate Web Hosting FAQ

In this document, you will find the answers to hundreds of questions related to web hosting. These range from choosing and managing a domain name to setting up a content management system to developing web applications. Use the Contents on the right if you want to learn about a general topic. Or just search the page anything you have questions about.

Domains

For more information, see our Ultimate Guide to Domain Names.

How to get a cheap domain name?

Many web hosting companies offer a free domain name when you purchase a hosting plan.

Unfortunately, these are usually only free for the first year. After that, you have to renew at a fee set by the hosting company — usually several dollars a year more expensive than if you were to pay for it separately directly from a domain name registrar.

Hosting companies also have a tendency to add-on additional charges like domain name privacy, which you can also get cheaper (or for free) from many good registrars.

If you'd rather purchase your domain name separate from your hosting plan (which is a very good idea), check out our list of domain name registrars for some of the better low-cost options.

How to get a .com domain?

Just about every domain name registrar will be able to sell you a .com domain name.

Do I need a .com domain?

No, there are many other options.

For example — if you are a non-profit organization, a club, a church, or another non-commercial entity, you may want to register as a .org domain name.

There has been a trend among tech-focused startups and open source projects in the last few years to use the .io extension.

For non-US entities, each country has its own country-code TLD, such a .uk and .ru. These are also popular for domain hacks — using the domain extension as part of the name of your site or brand.

There also, of course, the new "exotic" domain names, such as .ninja and .club. There are a number of these, and they might fit your brand very well.

You generally want to steer clear of second-tier gTLDs such a .biz and .info. These are not very well respected and tend to make savvy internet users suspicious.

Is .com domain still the best?

Even with all the additional options, .com seems to remain the gold standard for domain names. It carries a high-degree of trust with consumers, and communicates a sense of legitimacy that is hard to achieve with other domain name extensions. Because of this .com domains continue to have the highest sale price in the domain aftermarket.

How to buy domain names?

If you want to buy a domain name that no one else has registered before, that is very easy — just use any reputable domain name registrar.

If you are trying to purchase a domain name that has already been registered, you can do that as well. It can be a little more complicated than purchasing new registrations, though. Check out our in-depth guide to aftermarket domain purchasing for details.

How to sell domain names?

If you have registered domain names that you would like to sell, or are thinking about getting into the domain speculation business, there are a lot of details to consider. To get a good understanding of the issues, see the chapter on selling domain names in our Ultimate Domain Name Guide.

Do I need a domain name?

If you want to set up a website, you probably need a domain name.

Some people set up free blogs or other types of sites using a domain name that belong to a third-party service like WordPress.com or Tumblr. That's okay for small personal blogs — but if you want to build a serious online presence, you really should have your own domain name.

It isn't hard to get your own domain name, all you need to do is buy one from a good domain name registrar.

If you're having trouble finding a domain name you like, or you want to learn more about what makes a good domain name before you purchase one, see our Ultimate Domain Name Guide.

Do I need multiple domain names?

You usually want to focus your brand-building efforts on a single domain name. Especially if you're just starting to build an online presence for yourself or your organization, trying to build on multiple domain names can spread your efforts too thin.

However, it can be helpful to purchase additional domain names apart from your primary domain name. For example, if you have a .com, it's usually a good idea to go ahead and buy the .org version if it is available (and vice versa). It's also a good idea to buy common misspellings of your primary domain name, or other things people might accidentally type if they were looking for you.

Generally, when you buy these additional domain names, you don't want to set up whole sites on them — you just want to set up a simple 301 Redirect to your primary domain. (Make sure you set up wildcard redirects so that links to any URL with the wrong domain name will end up in the right place.)

How to pick domain names?

Trying to figure out the best domain name for your new website is one of the more difficult tasks when establishing a new online presence. You don't want to change domain names often — it's bad for branding and bad for SEO — so whatever you diecide is going to have to work well for a good long time.

If you are an organization with a primarily offline presence, the best thing is usually to pick a domain name that is a easy-to-remember version of your real-world name. That might be your full business name, or a common, conversational shortening.

If you serve a particular geographical area, it can be helpful to include the name of your city or town in the domain name. This is especially useful if your name is somewhat common. For example — there are a lot of churches named "St. John's" and a lot of private schools named "Excelsior Academy." Since schools and churches both serve local communities, it's a good idea to distinguish these with domain names like stjohnsfortworth.org or excelsiorwilkesbarre.academy.

How to make money on domain names?

Buying domains in order to sell them later is a multi-million dollar industry known as "domain name speculation."

Popular media has focused on the exceedingly rare high-value domain names that have commanded huge sums of money:

  • toys.com — $5.1 million
  • fund.com — $9.9 million
  • sex.com — $13 million

The vast majority of domain name sales — and really, the heart and soul of the domain speculation business — are in the less exciting, high-volume world of decently-valued domain names that sell for a few hundred or a few thousand dollars.

For information about how to get into the industry, read the chapter on domain name speculating in our Ultimate Domain Name Guide.

What is a domain registrar?

A domain name registrar is a company that manages the registration of domain names. When you buy a new domain name, you are buying it "from" a registrar (that is — you are paying the registration fee to a registrar).

How to become a domain registrar?

Becoming a domain name registrar is not easy — it requires a significant investment in capital and technology. (Let's put it this way: If you need to read this page to learn about it, you aren't qualified.)

However, that doesn't mean you can't sell domain names. Most people don't buy domain names directly from the actual registrar, but rather from retail domain name sales companies.

To become a domain name reseller, sign up for a reseller account at a registrar like Enom

How to search for domain names?

Any good domain name registrar will let you search for domain names.

Namecheap has a particularly good domain name search tool. It lets you search hundreds of domain name options based on provided keywords, including domain names with the new Top Level Domains.

Should I use a domain name generator?

A domain name generator is a tool that takes one or more keywords as inputs and provides a list of possible domain names based on combinations of your keywords and common affixes such as my, i, or best. Some will attempt to create new words by combining letters from your different key words. Usually these tools are combined with a domain name availability checker, so that only available options are presented.

Domain name generator tools can be a good way to brainstorm ideas, especially if you're stuck for a creative name or the name you really want is taken. However, ideas from a domain name generator need to evaluated to see if they would be a good fit for your site.

How to look up domain information?

Whoishostingthis.com is the best place to look up information about a domain name. Just go to the search form on our homepage and enter the domain name. From there you can see where the website is hosted and what its IP address is, and you can even get the site's WHOIS information.

How to lookup domain whois?

You can use our the search tool on our homepage.

If you have aMac or a Linux machine, and you're comfortable on the command line, you can also use the whois command directly on the terminal. Just type the command and the domain name ( whois example.com ), and all the info will be displayed right there. You can also access this command from scripts, if you want to incorporate WHOIS data into an app.

Remember, though, because of WHOIS privacy, you won't always get usable information from a WHOIS lookup.

How to search within a domain name?

If you're trying to find something on a site, and the site's own on-page search isn't working great — here's a little trick that works in Google, Bing, DuckDuckGo, and many other search engines:

Type site:example.com in front of your search terms. The search engine will only show you results from the domain name you enter after the site: command.

How to lookup who owns a domain name?

Sometimes, but not always, you can find the owner of a domain by looking at the WHOIS information.

You can search for WHOIS information, and find out other details of a website, by using the tool on our homepage.

Who owns the domain system?

The domain name system isn't owned by any one entity. It is, however, managed by the Internet Coorporation for Assigned Names and Numbers (ICAAN), a non-profit organization.

What is the best domain registrar?

There are several good domain name registrars — and several you probably want to avoid. See our list of domain name registrars for our favorites.

How to find available domain names?

Any good registrar will let you search for domain names.

Namecheap has a really great search tool for finding domain names. They let you domain name options based on keywords, including new Top Level Domains.

What to do when the domain names I want are not available?

You can pick a different domain name that is available, or you can try to buy the domain you want on the domain aftermarket.

What is domain backorder?

A domain backorder is a service provided by many domain name registrars that sometimes gives you the opportunity to buy domain names that have already been registered.

The registrar will watch the domain you want and attempt to register it immediately if it ever comes available.

This can be a good way to snag high-quality domain names, but it isn't a reliable way to acquire a domain name if you need one within a set period of time (for example, if you're about to launch a new web site).

How to backorder domain names?

Each domain registrar handles back orders a little differently. GoDaddy is one of the largest providers of domain backorder services, so they are a good place to start.

How to buy a domain?

All you need to do to buy a domain name is to find a good domain name registrar. We have a list to get you started.

Should I buy a domain?

Yes. They aren't that expensive, and a good domain name can become the basis of a great brand.

How much to buy a domain?

Prices for country code and new gTLD domains vary, but names with one of the "standard" domain extensions (.com, .org, etc.) should be under $10 per year. If they cost more than that, the reseller is charging too much

How to buy a lot of domain names?

GoDaddy and Namecheap both have excellent tools for bulk domain name purchasing.

Where to buy cheap domain names?

In our experience, the two domain registrars with the consistently lowest prices are Namecheap and Namesilo.

Should I use .co domain?

We don't really recommend it.

The .co domain name is often marketed as a good alternative to .com, primarily for use when the .com domain name is taken.

The problem with that is that it is confusing. Some people are likely to think it is a typo. Others may simply mistype it, adding the "m" and ending up at someone else's website.

It also communicates, to some internet users, that your site is low-quality — it carries the feeling of "knock-off," like those unlicensed cartoon character performers in Times Square.

Even if you can't get the exact domain name you want, you're almost always better of with a .com the .co domain name.

What is ttl?

TTL stands for "Time to Live." It is one of the settings on your DNS setup, and it refers to the amount of time a router or server will store the the IP address information in your DNS record.

This has an effect if you change your DNS record. IF you have a very high TTL, some servers will wait the full time before re-checking where requests should be sent. This may lengthen the amount of time domain name propagation lasts.

TTL is measured in seconds. The traditional value is 86400, which is 24 hours.

How to edit TTL?

TTL is one of the fields on a DNS record, so it is edited there. You can usually find it in your hosting control panel under something like Domain Tools or DNS Zone Editor.

Remember that TTL is one of the data points governed by TTL. If you change the TTL for a domain name from 864000 (24 hours) to 300 (five minutes), hoping that it will speed up global DNS propagation, servers and routers won't see the updated TTL until the check back for the entire DNS record. So, you might want to change the TTL a day or two before your change your IP address, if fast propagation is a high priority.

What is DDNS?

DDNS stands for Dynamic DNS. It is a way of automatically updating a name server in the Domain Name System.

This is useful in the case of web resources which may change IP addresses on a frequent basis (daily or even hourly). The DNS records are updated by a local router or server whenever the IP address of the resource changes.

This is usually not an issue for typical web hosting plans, as web hosting providers use blocks of static IP addresses. However, it is an expected feature of many internet-connected devices, since they are dynamically assigned a new IP address every time they are restarted.

What is DNS?

DNS is the Domain Name System. It is a distributed database of human-meaningful domain names mapped to network-meaningful IP addresses. Web browsers and other internet clients access DNS information through a series of recursive calls to various nodes in the DNS database.

How to edit DNS?

Your DNS records are usually managed at your domain registrar, unless you have changed the Name Servers to "point" them to your web hosting company (a common practice). Whichever set of Name Servers are specified for your domain is where you need to edit your DNS records.

Whether it is at your hosting company or your domain name registrar, you'll find it easy to edit your DNS records. There's usually a link to something like "DNS Records" or "DNS Zone Editor" on the control panel.

A DNS record has the following parts:

  • Type of record. The most common you will need to know about are:
    • A — the main record, used to identify the IP address that all requests should be sent to
    • CNAME — Used to map one domain onto another
    • MX — Mail exchange, used to identify the mail server for a domain
  • Domain name or subdomain
  • Address — In the case of most records, including A and MX, this is the IP address of the server that is going to handle requests for the domain or subdomain. In the case of CNAME records, this is another domain name or subdomain.
  • TTL — Time to Live. How long servers and routers should keep a cache of the record before rechecking.

What is a DNS server?

The DNS system is a distributed database system. It isn't kept in one location, but rather pieces of it are spread out all over the globe.

A DNS server is one node in the global DNS network — one particular computer that stores part of the DNS database.

What is domain WHOIS?

The domain name WHOIS system is a public database of contact information associated with each domain name. The manager for each Top Level Domain (.org, .com, .ninja) manages the WHOIS directory for their respective TLD.

The WHOIS directory keeps contact information for the owner of a domain name, including:

  • name
  • phone number
  • mailing address
  • email address

Naturally, this is directory is a prime target for marketers. Because of this, many domain name owners choose to use WHOIS privacy.

For more information on the WHOIS system, see the WHOIS chapter of the Ultimate Domain Name Guide

How to search expired domains?

You can find domain names that are expiring with JustDropped and SnapNames.

This can be a good idea because if a domain is expiring, it means that someone thought it was a good idea. A lot of people come up with clever domain names or great business ideas, register the name, and then never do anything with it and let the domain name expire. Other times, businesses just fail and their domain names expire because no one cares to renew them.

Sometimes these expired domains have a long history or even existing backlinks, which is a good way to get a new web project started off on the right foot.

What is a gTLD?

The abbreviation gTLD stands for "Generic Top Level Domain."

A Top Level Domain is the highest realm of administrative authority within the Domain Name System, and is represented by "domain extensions" like .com.

There are two types of Top Level Domains — country-code (ccTLD) like .us and .ru, and generic (gTLD) like .com and .org.

Some ccTLDs are commonly used as if they were actually generic TLDs, such as .ly (Libya), .me (Montenegro), and .tv (Tuvalu). Also, a few gTLDs are reserved and not available for use by the general public, like .gov and .edu.

How to buy gTLD names?

Pretty much every domain name registrar sells the original set of gTLD:

  • .com
  • .org
  • .net
  • .info
  • .net

How to register new gTLD names?

A few years, ICAAN allowed for the expansion of the gTLD system. Today, in addition to the conventional options of .com, .org, and the like, there is an almost limitless list of new gTLDs, such as:

  • .ninja
  • .lawyer
  • .club
  • .gold

Not all registrars sell all the different domain name options, but several do. You may want to try Namecheap.

What is InterNIC?

InterNIC, also known as the Network Information Center, was the governing body responsible for managing the domain name system. This responsibility is now handled by ICAAN.

Who uses .io domain?

The .io domain is, officially, the country-code Top Level Domain (ccTLD) for British Islands in the Indian Ocean.

However, it is frequently used by tech companies, particularly those whose primary audience is developers, because IO is a short-hand for "input-output" — an important concept in computer science and engineering.

How to buy .io domain name?

Several domain name registrars sell .io domains, including Namecheap.

What is the .me domain name for?

The .me domain extension is the country-code Top Level Domain (ccTLD) for Montenegro. However, because it is also the English word "me," it is marketed as if it were a generic Top Level Domain for personal sites.

Where to buy .me domain names?

Many domain name registrars sell .me domain names, including two of our favorites, Namecheap and Namesilo.

What is an SRV record?

SRV is one of the DNS record types (like A, CNAME, and MX).

Most DNS record types provide information about one particular type of service or protocol. For example, the MX record specifies the IP address of the server that handles email for a domain.

The SRV record is an open-ended record — it can be used to specify any type of service (including ones not invented yet). This gives the DNS record system flexibility, instead of having to create a new record standard for each new protocol that is invented and used.

SRV records are commonly used for identifying a number of different protocols. Most interestingly (we think) is Minecraft servers.

What is a subdomain?

A subdomain is a domain that is a part of a larger domain.

Since the Domain Name System is hierarchical, technically all domain are subdomains. The TLDs like .com are subdomains of the primary domain — the DNS system itself. Registered domains such as example.com are subdomains of the Top Level Domain represented in the domain extension (.com).

Normally, however, when we talk about "subdomains" we are talking about domains which are one more step below registered domains names, for example:

  • mail.example.com
  • blog.example.com

Should I use a subdomain?

That depends.

Subdomains can be very helpful for separating out different major aspects of domain usage. For example, some businesses like to have their main site at their primary domain (example.com), and then put their blog at a subdomain (blog.example.com).

Another common usage is for SaaS apps, especially when the public marketing site and the logged-in application are served from different computers or at least different code bases. Often the public site will be at the base domain, with the application on the subdomain (app.example.com).

The most common use of subdomains is when creating a network of sites which are individually manafged by other people, usually customers. This is the model for a number of popular blogging services, including WordPress.com and Tumblr.

Will a subdomain improve SEO?

It's possible, but it depends on how you use them.

Some SEO experts like to set up category-based subdomains for blogs. The advantage here is that the keywords in the category name are at the front of the URL, in the domain name.

So, for example, a post about using subdomains as blog post categories might then have the URL:

http://subdomains.example.com/subdomains-as-blog-categories

But, it's hard to see how this is significantly better than the more conventional approach of putting the category into the permalink structure:

http://example.com/subdomains/subdomains-as-blog-categories

This approach may be most helpful if you want your category pages ( http://category-name.example.com ) to be landing pages for Search Engine results.

How to setup subdomains in cPanel?

In cPanel, there is an icon labeled "Subdomains." Click that. It takes you to the subdomain management page. Here you can setup subdomains and associate them with specific folders in your file system.

If you are trying to setup wildcard subdomains (for example, for WordPress Multisite), use an asterisk ( * ) as the subdomain, and associate the subdomain with the same folder as your main WordPress install.

This is a different tool than the DNS editor. You will need to do this even if you manage your domain at a different registrar — cPanel uses these settings to route requests once they have arrived at the server. (It also updates the DNS records as required, but only if the domain uses the nameservers associated with your cPanel account).

If your site is actually hosted somewhere else, and you just manage the domains from this cPanel account, then ignore the instructions above and just use the DNS Zone Editor.

How to setup subdomains in WordPress?

There are two common uses for subdomains in WordPress: multisite and subdomain categories.

Subdomains are usually the preferred network structure for WordPress Multisite. You can make this selection in the configuration of your multisite network — just follow the options.

For using subdomains as categories, you'll need a plugin to do that.

In both cases you will also need to set up a DNS CNAME record for a wildcard subdomain. The domain name for the CNAME record will be *.example.com and the address will be the base domain name, example.com.

What is a TLD?

A TLD is a Top Level Domain (and sometimes gTLD, where the "g" refers to "generic"). They are also sometimes called "domain extensions." Common TLDs include .com and .org, but there are many more.

Which TLD is the best?

A better question is — Which TLD is the best for my website?

If you are running a non-profit, club, church, or other social group, you probably want to use .org. On the other hand, if you are setting up a website for an online store, .com might be the best option.

Is .com the best TLD?

While it isn't the best choice for all projects, .com continues to be the "gold standard" for commercial products and services, especially for direct-to-consumer brands.

All other things being equal, a .com domain name will fetch a higher price than its equivalent with any other extension.

How to get a free domain from hosting company?

Many hosting companies offer a free domain name when you buy a shared hosting plan. All you have to do is sign up.

Whether or not using a free domain name from your hosting company is a good idea is an entirely different question.

Should I use the free domain name from my hosting company?

We don't usually recommend it.

The free domain name that comes with your hosting plan is tied into your hosting plans billing. With some hosts, the domain name actually identifies your account.

The problem with this close tie between domain name and hosting is that it makes it more difficult to move your hosting later, which most people do eventually.

Another problem is that sometimes (not always, but sometimes) the Free Domain Name is only free the first year, and you have to pay for it after that. Usually, in this case, the renewal fee is several dollars more than it would be from a low-cost domain registrar.

It is much easier, and usually cheaper in the long run, to host your domain name with a decent, low-cost domain name registrar, and use the free domain just as a placeholder or identifier.

What is my EPP key?

You EPP key is an authorization code provided by your current registrar. It is used to verify your ownership of the domain name when transfering it to another registrar.

How to find my epp key?

This varies by registrar, and they are usually not easy to find. Many registrars make them deliberately hard to find in order to discourage transfers. Sometimes you can't even find it, they require that you request it be emailed to you.

You'll often find it somewhere labeled something like:

  • domain management
  • domain settings
  • domain profile
  • transfers

Is Network Solutions bad?

Many people have been frustrated by Network Solutions over the years, and they have been involved in a number of controversies concerning their business practices.

We would never come right out and say that they are bad. The truth is — Network Solutions has made a lot of changes to how they operate to address some of the common complaints.

Of course, its hard for us to judge whether any of those improvements have been successful, because none of us uses Network Solutions, in favor of other registrars and hosting companies we have had better experiences with.

Is NameCheap a good registrar?

Namecheap is one of the domain name registrars several members of the WhoIsHostingThis.com team prefer and use for their own work. They have good prices, an excellent interface, and one of the best domain name search tools available.

Is Directnic a good registrar? / Is Directnic a good host?

We don't have enough experience with Directnic to form an opinion on them as a registrar, and our users have not submitted any hosting reviews for them.

We do have a list of domain name registrars we recommend (you can also see some on that list we don't recommend).

For hosting companies, there are a lot of different things to consider when selecting one that is right for you. You can use our hosting features comparison tool to find the right hosting provider for you.

Hosting Types

What is hosting?

In our context, "hosting" refers to providing the hardware and software platform on top of which customers can deploy web sites and web-based applications.

What are different types of hosting?

There are several general categories of web hosting:

  • Shared Hosting is the most common. This involves many customers sharing a single machine.
  • VPS, or Virtual PRviate Server, is also very common. With VPS hosting, each customer has their own virtual machine. Several virtual machines are usually run on top of a cluster of hardware.
  • Dedicated server hosting, which is relatively rare outside of the Enterprise software world, involves the customer having complete use of an actual server, which is essentially rented from the hosting company.
  • Colocation hosting is not exactly web hosting, so much as facilities rental. With "colo" hosting, the customer providers their own server equipment, and the hosting company rents space in a datya center, providing access to power and network connectivity.
  • Cloud Hosting is a type of VPS hosting plan in which the Virtual Machines are running on large pools of computing power — dozens or hundreds of machines networked together into a "cloud." This is also sometimes called "scalable VPS" hosting, and is a fast growing sector of the hosting business.

How to choose hosting?

  1. Figure out what type of web site or web project you will be building.
  2. Make some estimates about traffic.
  3. Figure out what type of hosting plan you need.
  4. Use our hosting search tool to find hosting companies that provide the kind of hosting you need and support the type of software you want to use.
  5. Read hosting reviews before making a decision.
  6. Get a coupon.

For more detailed help, check out our Ultimate Hosting Guide.

Shared Hosting

What is shared hosting?

Shared hosting is a form of web hosting in which many web hosting customers share a single (virtual or physical) server.

The customers in a shared hosting environment are partitioned away form each other, so (when everything goes well), they have absolutely no access to each other's files, and are ideally not even aware of each other.

Shared hosting allows for a high customer-to-hardware density, which makes it a very inexpensive way to run a website — shared hosting is the cheapest form of hosting, and relatively high-quality shared hosting plans can be had for less than $10/month (sometimes less than $5/month, with a good coupon).

The problem with shared hosting is that a limited pool of computer resources is being shared by a large number of customers. This can cause slow-downs and site outages if one or more sites on a shared hosting server gets a lot a of traffic.

To prevent this, shared hosting providers usually institute some kind of throttling — even on so-called "unlimited plans." This usually kicks in if your traffic spikes, which makes shared hosting plans a terrible idea if you are trying to build a highly-scalable, well-trafficked website.

Can I host my website on shared hosting?

Usually, yes. The question is whether you want to.

If you are launching a more-or-less basic site which will have limited traffic — such as a personal blog, a homepage for a small offline business, or a website for local non-profit organization — then shared hosting is a great way to go. It will provide all the hosting power you need for up to several hundred visitors a day, for a reasonably low cost.

If you need a website that will work with larger traffic numbers — several thousand a day, especially highly engaged visitors on an interactive site (like a store or web app) — then shared hosting is going to be a terrible experience for you. You would be better off, in that case, with a VPS hosting plan.

Can I host WordPress on shared hosting?

Yes.

Because of its popularity, most shared hosting providers are well-equipped to handle a WordPress blog. Many even offer a simple one-click installation script, allowing you to get set up with a new WordPress site very quickly.

You can use our hosting features comparison tool to find hosting providers that support WordPress.

Can I host WordPress Multisite on shared hosting?

In theory, yes. In reality, probably not.

Most shared hosting providers that support WordPress can also handle the installation of WordPress Multisite. As long as you can edit the the .htacess file and the wp-config.php file, you can get Multisite working.

However, a well-functioning Multisite installation usually requires more active server management, and more custom configuration, than is usually available from a shared hosting provider.

Moreover, a successful Multisite installation will likely have dozens, perhaps even hundreds, of websites running at the same — each with their own set of users and administrators.

Even when a shared hosting provider advertises "unlimited sites," the resources you are provided with on a shared hosting account are allocated based on the assumption that you will be running one site. With WordPress Multisite, you are further dividing those resources up, attempting to host many sites on a platform intended for one. This is usually a recipe for disaster.

A better solution for WordPress Multisite is a VPS hosting plan.

Can I host Ruby on Rails on shared hosting?

In theory, yes. In real life, usually not.

Many shared hosting providers claim to support Ruby on Rails, and have it available to be installed. But that doesn't mean it will actually work well.

One problem is package management. Ruby on Rails depends on a complex automated dependency management system called the Ruby Gems system. This system makes sure that you have all the libraries, scripts, and third-party modules you might need installed are actually installed, and upgraded to the correct version. It's magical.

It also just doesn't work very well on shared hosting. Many of the shared hosting providers claim that it does, but after reading through too many help articles and forum postings, one starts to get the feeling that very few people have managed to deploy it successfully.

Another problem with Ruby on Rails and shared hosting is that Rails consumes a lot of resources, compared with other apps, like WordPress or Drupal. This makes the limited resource pool of (even an unlimited) shared hosting plan unlikely to keep up, especially as traffic and user engagement increases.

While there are other potential problems (server configuration, workflow management, automated testing), the biggest problem with Ruby on Rails in a shared hosting environment is really tied to the essential nature of Ruby on Rails and shared hosting.

Rails was designed, and is primarily used, to build SaaS (software as a service) applications. Shared hosting is designed to put up personal blogs and small business websites. The level of resource allocation, the types of access granted, the whole configuration of the shared hosting server as well as the tools and interfaces presented to customers are all geared toward mostly non-tech-savvy blogger or business owner.

So, even when you can run Rails on a shared hosting environment, you are almost certainly better off using VPS hosting.

Can I host [INSERT APP HERE] on shared hosting?

As long as your site traffic does not get too heavy, shared hosting is capable of handling a wide variety of popular applications, including:

If you're looking for a hosting provider that supports a specific application you are looking for, you can use our hosting features comparison tool to search for one.

Is shared hosting good?

It is good for some uses.

Most shared hosting providers have optimized their offerings to provide service to a fairly narrow user profile (which, though narrow, accounts for the vast majority of hosting customers). The typical shared hosting customer is:

  • running a blog or website using a popular PHPcontent management system like WordPress or Drupal
  • launching a website for their own personal use, or for the use of a small non-tech business, non-profit, church, or community group.
  • expecting to have less than a thousand visitors per day on most days
  • not planning need to rank high in search engines for extremely competitive search terms
  • not planning to do anything really weird
  • not running a mission-critical site

If you fit all those points, you will find shared hosting to be the easiest and most economical way to get online quickly. If you hit all but one of them, you can probably get by on shared hosting, at least to begin with. If two or more are not right, you are going to have a really bad time with shared hosting and should probably be looking at a VPS hosting plan.

Why is shared hosting bad?

Shared hosting is only bad if you need something different.

Shared hosting is intended as a platform for blogs, small organizations websites, and other similar functions. It is well-suited to those uses, but is not a good fit for high-traffic sites or SaaS web apps.

What's wrong with shared hosting?

There are several potential difficulties that shared hosting customers can face if they are trying to use for a project to which it is ill-suited.

The biggest problem is the lack of computing resources — memory, storage, bandwidth, processing cycles. If your site traffic gets too high, or if there is a large volume of concurrent requests, page load times can slow to a crawl. This negatively impacts both user experience and SEO ranking. If that starts to negatively impact other shared hosting customers on the same server, your hosting company may throttle your access — making the site unavailable when it is drawing the most attention.

While it's true that you can often upgrade directly to a VPS plan at that point, it's also true that the lag between the need to upgrade and actually upgrading can cost you in ways which are hard to recover from. You don't want to turn people away with Server Errors just as you are starting to see success.

If you expect that kind of traffic, or you need that kind of traffic for your site to be viable, then you should just opt for a VPS plan in the first place.

How to make shared hosting better?

There are some things you can do to make your shared hosting work as well as possible.

  • Use a Content Delivery Network — this is a way to offload the delivery of static files to faster servers. It will greatly increase your page speed and decrease your hosting resource usage.
  • Use a caching plugin — if you are running a WordPress site, or another CMS like Drupal, make sure you have application-level caching set up.
  • Minify and combine resources — there's usually no need to have a dozen different stylesheets and six different JavaScript files. These can usually be combined into single files, and minified.
  • Compress files — Use gzip to make files as small as possible.
  • Keep your apps updated — most security problems can be avoided by simply keeping all of your installed applications updated to their latest versions.
  • Don't host your own media — Use YouTube or Vimeo to host your videos. Use Soundcloud, iTunes, or another service for audio.

Cloud Hosting

What is the cloud? What is cloud computing?

The cloud is a wildly inaccurate metaphor, a marketing buzzword, and a legitimate approach to web hosting.

Web infrastructure providers have access to vast amounts of computing power — nearly countless stacks of server hardware and storage, connected together to form amorphous computer networks that can act as a giant supercomputers, and which can be then partitioned off into virtual computers of highly variable size and configuration.

This is "the cloud." It's a wildly inaccurate metaphor because there is nothing cloudy about it. It isn't a weightless mist of computer ability — it is stacks and stacks of very real computers, in gigantic air-conditioned rooms, connected together with copper cables and fiberoptics.

The cloud is also a marketing buzzword. Web hosting companies like to use it to cover over the fact that they are just renting their computing power from another provider — often from one you could rent from yourself for less money. Software companies sell software as a service subscriptions on top of "cloud based" infrastructure because it's cheaper for them, but they market this fact as if it seriously makes a difference to you, the end user.

All that being said, cloud computing is a completely legitimate approach to web site and web application hosting.

If you are building a new web application, or a for profit web site, and you need it to be able to scale up to handle large amounts of traffic, the most economical solution is probably to use cloud hosting. Because your site or app is being host on a virtual machine, running on top of a variable pool of computing power, cloud hosting makes it easier to increase or decrease the amount of available power as needed. This can keep your site running no matter what kind of traffic you experience, and can help keep your expenses down by allowing you to only pay for what you use, and only use what you actually need.

What is cloud hosting?

Cloud hosting is a type of web hosting where a Virtualized server (similar to those available in VPS hosting) is run on top of a variable pool of computing resources (a "cloud"). This allows you, the customer, to scale up your available computing power as needed.

Many (but not all) VPS hosting plans are actually cloud hosting plans, whether or not they are advertised that way.

Do I need cloud hosting?

That depends on what you are trying to accomplish.

If you are setting up a personal blog, or a website for a small non-technical business or local non-profit, you may be able to do everything you need on a shared hosting plan.

If you anticipate high traffic numbers, and you need to be able to scale your website's capabilities quickly, then you might benefit from a cloud hosting plan.

Will the cloud host my website?

There is not one cloud. In fact, "the cloud" doesn't really exist — it isn't a thing, but rather a type of thing, a way of doing something.

There are many different "clouds," run by many different web infrastructure companies. You can even set up your own cloud on your own server.

If you need cloud-based hosting for your web site or web application, use our hosting features tool to compare different cloud hosting providers.

How to host website in the cloud?

From a user perspective, a cloud-hosted website isn't very much different than a conventionally-hosted VPS hosting plan, or even a shared hosting plan.

To find hosting companies that offer cloud-based plans, use our hosting features tool to compare cloud hosting plans.

Where to get cloud server hosting?

Check out our list of hosting companies that provide cloud hosting.

What is SaaS?

SaaS is an acronym that means "Software as a service."

Usually, SaaS refers to subscription based applications in which a software application is accessed remotely via a web browser or other local client. The service provider maintains the application, and the customer doesn't need to install, upgrade, or maintain the application on their own local computer.

For an example of Software as a Service, consider the two different ways you can use WordPress:

One the one hand, you can run WordPress yourself on your own shared hosting or VPS hosting plan. You control your hosting, and you install WordPress on it yourself. This gives you complete control over how you run your site and what you do with it.

On the other hand, you can get a free blog at WordPress.com. You don't have to install the software or worry about upgrades. It's easier, but you also have less control over your site and your content. WordPress.com is a SaaS application.

VPS

What is VPS?

A VPS is a virtual private server. It is a type of hosting plan in which you, the customer, has complete control over a virtual server. Often (and increasingly so) the VPS runs on top of cloud infrastructure (in other words — a large pool of networked computing resources, rather than a single piece of hardware).

One way to think about hosting plans is that a shared hosting plan is like renting a small apartment and a dedicated server is like a house. From this perspective, a VPS plan is like a condo.

With a VPS plan you get most of the benefits of a dedicated server, at a much lower cost. In the case of cloud-based VPS hosting, you also have the ability to scale up available resources quickly as the need increases.

Do I need VPS?

Possibly.

There are two major reasons for needing a VPS hosting plan:

  • High traffic — a few thousand visitors a day consistently, with the possibility of a lot more from time to time
  • Highly customized configuration — often the case for a SaaS application, new development, or other projects that go beyond a strightforward blog

If either one of these describes your project, you probably need a VPS hosting plan. If both of them do, you definitely need a VPS plan.

Is VPS better than shared hosting?

That depends on what you mean by "better."

VPS is "better" from the standpoint that it is more customizable, has faster performance, and can handle more traffic than a shared hosting plan. Shared hosting is better from the standpoint that it costs less and is easier to set up.

A better way of asking this question is: Which type of hosting is more appropriate for me?

There are a lot of variables, but the simple answer is:

  • Small, simple websites and blogs with a limited audience — shared hosting
  • Large and/or complicated websites and web applications with a large user base — VPS hosting

Can I host WordPress on VPS hosting?

Yes.

WordPress works well in most VPS hosting environments, and many are specifically configured to make it easy to install and setup a WordPress site.

Can I host WordPress Multisite on VPS hosting?

Not only can you — you should!

WordPress Multisite works best on a VPS (or dedicated server), where the site administrator has full control over web server configuration and other environmental factors.

Also, the nature of a blog network, which contains many sites run by many different people, makes it somewhat difficult to predict things like traffic and resource usage. A scalable, or cloud-based, VPS plan will help you keep your network stable and running.

Can I host Ruby on Rails on VPS hosting?

Yes.

VPS plans give you full access to the root user and sudo, ssh access, and the ability to configure your server environment as you see fit.

Can I host [INSERT APP HERE] on VPS hosting?

Almost certainly.

A VPS is a full-fledged server, to which you have complete access. Though it is a virtual server, not a piece of physical hardware, it is otherwise equivalent to having access to a your own, "real" hardware. You can install anything you want, configure the server anyway you want, even mess with the operating system.

What is a virtual server?

A virtual server is a software emulation of an actual physical computer.

Is VPS hosting cheap?

Generally speaking, VPS hosting is a little more expensive than shared hosting, but significantly less expensive than dedicated server hosting. You can compare pricing on our list of VPS hosting companies. Also, if you're looking to save money, be sure to get a web hosting coupon.

What software to manage a virtual server?

Possibly the most common virtual machine software for hosting providers is HyperVM.

Dedicated Server

What is a dedicated server?

Dedicated server hosting is a type of web hosting plan where you rent an actual server (a rack-mounted, internet-connected computer).

Do I need a dedicated server?

Probably not, but maybe.

Most people who need a highly configurable web hosting server with full root access are better off with a VPS hosting plan. They are usually less expensive, and — if it is a cloud-based VPS plan — easier to scale.

The use-cases that specifically for a dedicated server plan, as opposed to a VPS plan, are increasingly rare — and if you have one, you probably know about it already.

The most likely reasons to need a dedicated server plan have to do with security and regulatory compliance — VPS plans may not satisfy certain types of privacy laws, such as HIPAA.

Is dedicated server the best?

Only if you need it.

Most of the advantages traditionally gained from dedicated server plans can be had today from high-end VPS plans.

The only reason to use a dedicated server is if you have a use case that requires control over the server hardware and/or personal knowledge of the hardware's physical state and location.

Can I run a website on a dedicated server?

Yes. But you probably don't need to.

If the only thing you are trying to do is set up a public-facing website, you are more likely to need a VPS hosting plan.

Colocation

What is colocation?

Colocation is a type of web hosting service where the customer provides their own server hardware, and rents space in a commercial data center.

Do I need colocation hosting?

If you are just trying to setup your own website or web app, and need web hosting, then — no, you almost certainly do not need colocation hosting.

You might benefit from colocation hosting if you currently own your own server hardware, and want to store it off-premises for reasons of security, economics, or faster connection to the internet. You may also want to look into colocation hosting if you need to purchase your own server equipment in the future, but don't want to (or cannot) provide your own network infrastructure and security at your present location.

You may also wish to look into dedicated server hosting, in which you rent both the hardware and the datacenter space.

Where to find colocation hosting?

If you are looking for colocation hosting, you can use out hosting features search tool.

Managed Hosting

What is managed hosting?

Managed hosting is a type of web hosting service that combines either a shared hosting or VPS hosting platform with a high level of customized support and management.

Managed hosting takes a number of different forms, so it's hard to make generalizations about it. But it usually involves some kind of active support for your installed applications, security monitoring, automated backups, software upgrades, and server configuration tweaks.

Some managed hosting providers have specialized services for one or another specific applications, such as WordPress. These providers have usually designed their server setup and support structure around the app, so they are able to provide a high level of satisfaction to a very narrow set of users.

Do I need managed hosting?

That depends. The average website owner doesn't, but some types of users can really benefit from it.

If you are a medium-to-large business that runs depends on a web-based application (such as an online store or an internal Sharepoint server), but you don't have an in-house SysAdmin, you probably would do well to have a managed hosting provider to help ensure a high level of uptime. This pretty much is the case with any kind of mission critical server.

Additionally, highly trafficked content websites or blog networks can usually see both an increase in performance and a decrease in administrative hassle by switching to Managed WordPress hosting.

What is WP Engine?

WP Engine is a Manage WordPress Hosting company. This means they provide web hosting only for sites built using the WordPress software. They provide a high level of support, as well as a server environment specifically optimized to work well with WordPress. They handle installation and upgrades, and a number of routine and specialized maintenance tasks.

Do I need WP Engine?

If you run a very high traffic WordPress site, WP Engine might be a great hosting choice for you.

Is WP Engine worth the price?

For mission critical WordPress sites with a lot of visitors — such as commercial blogs, multisite networks, and high-traffic content businesses, it probably makes sense. As compared to hosting with a non-managed VPS or shared hosting, you'll get faster load times (especially under load), fewer tech problems, and a lot less time spent on site management.

For personal blogs and small business sites, it probably isn't worth it.

Reseller Hosting

What is reseller hosting?

Reseller hosting is, essentially, wholesale hosting. You buy a large block of hosting resourcing at below-retail pricing, and sell it at a markup to regular hosting customers.

How do I become a hosting reseller?

The easiest way is to get started is to search for reseller providers and find one that offers the type of hosting plans you would like to sell.

How to set up hosting reseller business?

Most hosting companies that offer reseller hosting also provide tools for setting up your online business, such as AccountLab Plus, ClientExec, and WHMCS.

Web Servers

General Web Server Questions

What is a web server?

A web server is a software application that communicates between your computer or server and the internet at large.

Web servers are a critical piece of a website hosting platform — without a web server, there is no website at all.

The web server runs continuously on the computer (server) that hosts your website. It listens for requests coming from the internet, and then responds to those requests by delivering web pages, images, scripts, and other resources back to the requester.

For static pages and resources, the web server simply finds the file and sends it on to the user who wants to look at the web page or view the image. With dynamic web applications and sites like WordPress, the web server works together with a language interpreter to read PHP (or Ruby, Python, or another language), run the application, and then return the output back to the user who is trying to read your blog or buy from your ecommerce store.

Which web server do I need?

Most often, Apache.

Apache is the most common web server. It is free and Open Source. The vast majority of commonly-used web content management systems (like WordPress, Drupal, and Joomla) and other similar applications are written primarily with Apache in mind.

Within a Linux environment, there are two major competitors to Apache, but they each have their own cost associated with them:

LiteSpeed is the easiest replacement for Apache. It provides faster performance and better scaling, and it acts as a "drop in" replacement — which means that it (essentially) works the same as Apache. Anything that is compatible with Apache will be compatible with LiteSpeed, and the configuration settings should be mostly identical. However, LiteSpeed is proprietary software, so you have to pay for it.

The other popular alternative is Nginx. Nginx is faster than Apache, especially when serving static files or cached files, and can be made to be as fast (or faster) than Apache for interpreting PHP and other languages. Nginx is also free and Open Source, which makes it comparable to Apache from a financial standpoint. However, Nginx doesn't work the same way the Apache does. There is no guarantee of compatibility. Even when things are compatible, it can be difficult to find information — for example, it is possible to run WordPress with Nginx, but all the official tutorials and support documents assume you'll be using Apache.

Apache also runs on Windows, but most people running Windows server will use IIS, which is Microsoft's proprietary web server.

Some web applications and development frameworks, such as Ruby on Rails, have a built-in web server, and don't require a separate web server.

Apache

What is Apache?

Apache is a web server.

Apache is the most common web server in current use. It open source and freely available to use without cost.

Apache forms the "A" in the somewhat famous LAMP stack: Linux, Apache, MySQL, PHP. This is the software platform most commonly used for many popular web applications, such as WordPress, Drupal, and Joomla.

Do I have Appache web server?

Probably. Apache web server is the most popular one used in the world.

If you have purchased a shared hosting plan, or a preconfigured VPS, you almost certainly have Apache installed already.

If you have a dedicated server, or certain types of minimally configured cloud hosting, you may need to install Apache yourself.

Usually (but not always), if a hosting provider offers something other than Apache (such as Nginx), they will make it a major selling point in their advertising, and you would have noticed.

Do I need Apache to run a website?

No.

You need a web server of some kind, but it does not have to be Apache. You could use Nginx, IIS, LiteSpeed, or another one.

Some development frameworks (such as Ruby on Rails include a built-in web server, so you don't need a standalone one.

Should I get Apache web hosting?

Usually, but not always.

If you are trying to set up a simple WordPress blog, or another similar PHP-based app, and you have only moderate (or non-existant) technical skills, Apache is probably the best choice.

If you need to be able to scale up a large web application quickly, and if you have the technical skills to install, configure, and manage your web server yourself (or if you have a SysAdmin to do it), you may want to think about LiteSpeed or Nginx.

If you are using the .NET framework, or other proprietary Microsoft tools in a Windows server environment, you'll probably be using IIS.

How to restart Apache?

If you are using a typical shared hosting or even most VPS plans, you should almost never need to restart your Apache web server.

If you do have a problem that cannot be solved any other way — and you are not already actively managing and configuring your web server — your best bet is usually to call customer service.

If you are actively managing your web server from an SSH terminal, there are several different ways to restart Apache. The easiest, safest, way to do it is to restart gracefully:

apachectl graceful

(You may have to do sudo apachectl graceful.)

If this doesn't work, try:

apachectl restart

How to get modrewrite turned on? / How to enable modrewrite?

Most shared hosting providers have mod_rewrite enabled by default. If yours doesn't, or if you are having problems with it, the easiest thing to do is contact your hosting company's customer support.

Nginx

What is Nginx?

Nginx is a web server.

Nginx is free and open source, and is one of the more popular web servers in common use. Many people see it as a strong alternative to the more commonly used Apache web server.

Incidentally, Nginx is pronounced like "engine-ex."

Nginx vs Apache: Which is better?

Most "power" users would say that Nginx is better, but that depends on your needs.

For serving static files, or cached files, Nginx is faster than Apache (all other things being equal). Additionally, Nginx does not spawn new processes for each request, which means that it can handle more concurrent requests, which means that it will scale better for a highly trafficked site.

So, perhaps from a purely theoretical standpoint, Nginx could be considered better software. But, in practical use, Apache is sometimes the preferable option.

Apache is easier to configure and easier to manage. Because it is so much more common, there are more help topics, forum threads, and online tutorials to draw from. The developers of many web applications, especially popular ones like WordPress, assume their users will have Apache, so there is a higher degree of compatibility and automation.

Generally (not always), Apache is both good enough and much easier.

Should I get Nginx web hosting?

Possibly, but only if you need it.

Apache is much more common. It is easier to manage, and it is almost always good enough.

You should use Nginx instead only if it would provide a strong benefit to your website, and if you have the technical savvy to manage it properly.

Your site might benefit from Nginx if you expect a large number of concurrent users, especially if they are interacting with content that cannot be offloaded to a Content Delivery Network. If you need to shard your site across multiple servers, Nginx will usually work for that as well.

You don't need a great deal of technical savvy to setup and run a basic Nginx web server configuration, but you will need to be comfortable with the Linux command line and ssh, along with at least an introductory understanding of how a web server works.

Can I use Nginx with Apache?

No.

Nginx and Apache are both web servers. Using both would be redundant.

IIS

What is IIS?

IIS is the Windows web server.

Security

Is my website secure?

Probably not.

Unless you have actively thought about your sites security (or are using a managed hosting provider that thinks about it for you), you likely have at least a few potential security holes.

Here are a handful of basic security precautions you should be taking with any website:

  • Use a strong password for your hosting account, FTP accounts, email accounts, and any other accounts associated with your website.
  • Do not use the same password for all your different accounts.
  • Do not email your password or store it in plain text anywhere.
  • Restrict FTP and SSH access to your IP address.
  • Enable two-factor authentication on your hosting plan and your domain name registrar.
  • Keep all of your software and plugins up to date.
  • Back up your data regularly.
  • Use a CDN that provides DDOS protection.
  • Enable HTTPS on your site by getting an SSL certificate.

Since WordPress is the most popular content management system, here some WordPress-specific security tips:

  • Do not use the default "admin" as your administrator user name
  • Install the Bad Behavior and Akismet plugins to combat spam
  • change your user nickname, so that your login name isn't publicly visible in posts and URLs
  • Limit login attempts

How to protect customer data on website?

  • Use mature, Open Source software
  • Install an SSL security certificate
  • Force HTTPS for all connections (this requires a security certificate)
  • Use trusted payment processors
  • Follow all of the security precautions listed above.

What is a security certificate?

To understand a security certificate, you first have to understand Public Key encryption.

Public Key encryption works like this: there are two "keys" — a key is a very long string of seemingly random data that is used as a value in an encryption formula. One key is Private, known only to one party (in this case, the website owner). The private key has a "matching" Public key, which is published and available for anyone to use.

A message can be encrypted using the Public Key, and it can only be decrypted with the Private Key. This way you can send sensitive data securly, and only the one who is supposed to get it will be able to decrypt it.

The other interesting thing is that you can encrypt data with the Private key, and only the Public key will be able to decrypt it. This may seem meaningless — if the Public key is Public, then anyone can read the message. That's true, but this accomplishes something more important: it verifies that the message was in fact sent by the party who who says they sent it — only the owner of the Private Key could encrypt the data this way. (This is called "signing.")

When you use HTTPS, you are communicating with a website via a series of encrypted messages. Your messages are sent encrypted via the Public Key (ensuring only the website gets your data) and responses from the web server are sent signed by the Private Key (ensuring that they are authentic).

So what does the SSL certificate have to do with this?

Once you are certain that the Public Key you are using belongs to the website that you are visiting, and that the website is trustworthy, the rest of the process is secure. But the Public Key doesn't guarantee identity by itself — a malicious agent could create a fake Public Key and send it to site visitors, and intercept data between site and visitor.

You need some way of verifying that the Public Key is the right one, that it authentically identifies the correct party.

This is what an SSL Certificate does — it certifies the identity of the Public Key.

How to get a security certificate?

You buy one from an SSL certificate provider. Most hosting companies partner with an SSL certificate vendor, and make it easy to buy one as an account upgrade.

Can I use SSL certificate on shared hosting?

Yes, but you will need a Dedicate IP address.

Do I need SSL?

You need an SSL certificate if you are handling any sensitive customer data. Ecommerce sites, which usually handle credit card payments, definitely need an SSL certificate. A site that allows for personal or private communication — email, messaging, file storage — needs a certificate.

Even if you don't have a specific requirement for an SSL security certificate, you may want to get one anyway. A number of organizations have recognized that HTTPS promotes safer browsing generally. Google agrees with this, and actually provides an SEO benefit to sites that use HTTPS as an incentive to encourage more sites to adopt it.

What is HTTPS?

HTTPS is secure HTTP. It is the protocol used when communicating with a website over SSL.

Why do I get an error with HTTPS?

If visitors to your site are getting an error when they try to use HTTPS, it is likely a problem with your SSL certificate. Make sure you have one, that it is up to date, and that it is installed properly.

What security is needed for credit card transactions?

Credit Card transactions should always be run over SSL (HTTPS). Credit card numbers should only be stored in a highly secure, encrypted datastore (which usually means — not the application you are building currently, but with a mature, well-regarded payment processor).

Support

Hosting Support

What kind of support do I need from a hosting company?

That depends on your own needs and preferences. We recommend that you do not get hosting unless it has 24/7 phone support.

99% of the time, nothing goes wrong. But when something does go wrong, it will always be at the most inconvenient time. It is best to have phone support which is available to you anytime.

What is the most important feature of a hosting company?

This is a matter of opinion, but it is our opinion that the most important feature of a hosting company is support.

The reason is that, from a technical standpoint, most hosting providers are the same. They almost all use the same software, they almost all use one of a small handful of hardware configurations. Many of them are housed in the same datacenters, or rent their equipment from the same providers.

Price is a distinguishing factor — but not a huge one most of the time. Within the top five or sive web hosts, similar plans have remarkably similar pricing structures.

The thing that sets different hosts apart from each other is the level of support they offer — how much, how good it is, and when it is available.

Support can make the difference between a terrible experience with a hosting company and a great one. It can mean the difference between a minor inconvenience and business-destroying disaster.

Get a hosting plan with a good customer service and support plan.

Do I need 24 hour support for my website?

We recommend it.

If you website is critical to your business, you can't always wait until business hours to get it fixed.

Transfer Support

How to move my website?

If your old website is a collection of static files, then all you need to to is copy the files over to your new host.

That isn't usually how it happens, though.

If you are using a content management system (which you should be), then you will need to copy over your files, and also your database.

This can be done, but it can be very difficult.

Some hosting companies offer transfer support — helping to move your site onto their hosting. If you have a complex website, or you aren't comfortable with databases and config files, you'' want to find one that does this.

Specialized Servers

Video

How to host videos on my website?

Usually this is a bad idea.

Videos are very large. This means two things for your hosting:

  • they use up a lot of storage space
  • they use up a lot of bandwidth

Bandwidth for video becomes a big problem if you end up having a lot of visitors to your site — it can really slow down performance and create a bad user experience. On top of that, you'll run over your bandwidth limits a lot faster than with a mostly-text site.

On top of the bandwidth problem, there is also the problem of responsive video serving. Generally, it is a good idea to serve lower-quality videos to users on slower connections, or on smaller screens with lower resolution.

If you self-host your videos, you will have to:

  • generate several different versions of each video
  • use media-queries to determine which video to show, and automatically send the correct one to the user

This can get complicated very quickly.

In most cases, it is better to host your videos with YouTube or Vimeo. This will offload the bandwidth usage, and both services automatically handle responsive video playback.

An additional benefit of hosting your videos on YouTube or Vimeo is that this provides another pathway into your content — users may find your videos while browsing those sites (assuming your videos are public), and you can link from your videos to your site.

With either video site, you can embed videos onto your own website pages with simple embed codes.

How to setup a video blog?

The easiest way to do it is to upload your videos on YouTube and then embed them into blog posts in WordPress.

Minecraft

Can I host my own Minecraft server?

Yes.

Can I host Minecraft on shared hosting?

Minecraft is extremely resource intensive, so a [shared hosting] plan is unlikely to work well. You will likely get better results with a VPS hosting plan, especially if you are going to invite others to play with you.

Any other hosting considerations with Minecraft?

Gaming servers require low latency (the time lag between sending a request and receiving a response). Besides fast servers, it also helps to locate your hosting geographically close to you or your players.

Podcast

What is Podcasting?

Podcasting is the publishing of serialized audio content. In essence — it is blogging in audio.

How to Podcast?

There are three essential pieces to a Podcasting workflow:

  1. Creating audio content
  2. Publishing audio content
  3. Distributing audio content

All three of these tasks are easier than ever.

Creating audio content can be done with free and inexpensive tools. All you need is a microphone, a computer, and some recording software. On Macs, use Garage Band (it's really easy, and comes free with the OS). On Windows or Linux, use Audacity (it's free and Open Source).

To publish your content, you'll need a website.

If you are okay with having a third-party control your content, then you can publish on a Podcast hosting service like Lybsyn or Podbean.

However, if you want to control your own content — and integrate your podcast with text-blogging, videos, and your social media presense — you are better off self-hosting your podcast. The easiest way to do that is with WordPress. WordPress, a blogging-centric Content Management System, provides a great, easy-to-setup platform for all of your content: podcasts, blog posts, videos, and other media.

You can setup your WordPress site on either shared hosting or (if you expect a lot of traffic) a VPS plan. Use a podcasting plugin to easily integrate your audio content into your WordPress site.

Finally, you want to distribute your content — which mostly just means submitting your RSS feed to iTunes.

Best Podcasting software?

For creating podcast content:

  • GarageBand is the easiest to get started with.
  • If you aren't on a Mac, Audacity is a great free and open source application.

For publishing:

OwnCloud

What is ownCloud?

OwnCloud is a software suite similar to Dropbox. In fact, most people think of it as the open-source alternative to Dropbox.

How to make my own Dropbox?

Dropbox is a SaaS (Software as a Service) product which allows you to store files remotely, access them from anywhere, share files, and sync a local directory to your offsite file store.

This is a great feature to have, but you might be wary of letting a third-party service keep your files. You might have privacy concerns, or you might simply think that it is unwise.

No problem — you can set up a similar file-syncing service on your own server with ownCloud.

You can set up your own home or office computer to act as a web server, or set it up on your own VPS hosting plan (or dedicated hosting if you need it).

How to self-host Google Apps?

Google Apps provides a set of collaboration, file sharing, and productivity tools, including:

  • document authoring
  • calendaring
  • spreadsheets
  • email

For a variety of reasons (such as cost, privacy, control) you may prefer to "roll your own" productivity suite, which you would host on your own server — whether on hardware you own and maintain yourself, colocated hardware, or VPS hosting plan.

Currently, the best all-in-one option for building this kind of collaboration system is the Open Source ownCloud project.

Can I use ownCloud on shared hosting?

Not usually. OwnCloud requires server setup, special access permissions, and configurations that are not well supported or easy to achieve on shared hosting plans. Moreover, shared hosting Terms of Service usually indicate that customer plans are intended for website publishing, not file storage. Even if you can get ownCloud setup and configured, you may fall afoul of your user agreement.

If you want to setup ownCloud on a hosting plan, you will have a much better experience using a VPS plan.

Platforms

What operating systems are available?

For web hosting, there are two major operating systems: Linux and Windows. However, some hosts offer other operating systems like FreeBSD.

Where to host an exchange server?

Microsoft Exchange is a Windows-only software platform, used for email and other office productivity tools. You can host it yourself, but you must do so on a Windows hosting platform.

Most people who run an Exchange Server do so on a VPS or dedicated server hosting plan. Running Microsoft Exchange on shared hosting is relatively rare, but not entirely unheard of.

What is WebMatrix?

WebMatrix is a free web development tool built by Microsoft. It acts in a manner similar to (but not quite the same as) a Common Language Runtime, allowing development in several different languages (including PHP and ASP.NET, with access to Windows-specific APIs. WebMatrix also provides a number of development and deployment tools, such as an integration with git, templates, and modules that replicate the functionality of an IDE.

WebMatrix can be run only on Windows hosting.

What is SharePoint Designer?

SharePoint Designer is a free HTML authoring and web page design tool, specialized for the creation and editing of Microsoft Sharepoint sites. It is a successor to the FrontPage design tool, but limited specifically to SharePoint.

How to host SharePoint?

You will need a Windows hosting plan. Most SharePoint users prefer to host with a VPS hosting plan, or even a dedicated server plan.

While any Windows hosting plan can be made to work, for the best experience we recommend looking for web hosting companies the specialize in SharePoint hosting.

Where to host SharePoint Designer?

You don't usually host SharePoint Designer — you host SharePoint, and then use SharePoint Designer locally (on your own computer) to design and edit pages, which are then uploaded to your SharePoint site.

Can I host SharePoint on Linux?

No. SharePoint is Windows-only software.

How to add user to group in Linux?

Adding a user to an existing group can easily be done from the Linux command line.

useradd -G groupname username

For example, to add the user wesley to the group bridgecrew, just type:

useradd -G bridgecrew wesley

Operating Systems

General Operating System Questions

What is an operating system?

The operating system is the basic software system that all the other software on a computer runs on.

It provides an interface layer between your applications and the computer hardware, and also an user interface so that you can interact with and control your computer. Generally, the operating system is the most important factor in determining what kind of software you can run and what your experience as a computer user is going to be like.

There are three main operating system families in common use in most people's personal computers: Windows, Mac OSX, and Linux. Mac OSX and Linux are somewhat similar, since they both evolved from the Unix operating system (though they have diverged significantly).

Linux is available in many different "distributions" (such as Ubuntu, Red Hat, CentOS), which represent different bundles of components, packaged together — often with an underlying philosophy or use case in mind. Since Linux is Open Source (unlike either Mac or Windows), anyone can manage and distribute a Linux "distro," and there are many options because of that fact.

Apple typically prefers to keep all Mac users on the latest release of the MAC OSX operating system, and they update from version to version incrementally and automatically to keep everyone synced up. There are no disparate "distributions" of Mac.

With Microsoft Windows, each new version represents wildly different approaches to design and user interaction. While users often upgrade when new releases of the same version are available, they seldom transition from one major release to another on the same computer.

Phones, tablets, and other devices also have operating systems. Apple's mobile devices (iPhone, iPad) use the iOS operating system. Most other phones use the Android operating system, which is open source and is based on Linux. Windows-based mobile devices use the Windows Phone operating system.

What is a good operating system for a server?

That depends, but usually: Linux.

The decision about what operating system to use on a server depends entirely on what you are planning to use the server to do. For most use cases, one or another Linux distribution will usually be best.

If you are running a simple website using scripting languages such as PHP, Ruby, or Python, almost any Linux distribution would be appropriate. CentOS, Debian, and Ubuntu are the three most popular for this, abs several other distributions would work just as well. These would also work for common non-website server uses such as running an email server or a file-sharing server.

If you are running a large network server for an Enterprise, the most common Linux distribution for large organizations is Red Hat.

For running a shared hosting service, the relatively recent CloudLinux distribution is a good choice, as it provides a number of tools for virtualization and hosting plan management.

Windows Server is most commonly used by businesses that need some specific application infrastructure provided by Microsoft, such as Sharepoint, Exchange, or .NET.

Mac

What operating system is used on a Mac?

Mac desktops and laptops use OSX.

The OSX operating system is an official UNIX operating system (that is, they have paid the licensing fee and passed all required certification to be officially considered part of the UNIX family).

Since Linux was originally derived (at least conceptually) from Unix, there are many underlying similarities between Mac and Linux computers. Although the user interface design is very different, and Linux does not have access to the Apple App store, core functionality like terminal (command line) use, user permissioning, and other low-level activities, are very similar.

This is one of many reasons that Macs are popular among developers, especially developers that regularly deploy software to Linux servers.

Can I host a website on a Mac?

Not really, no.

It is, in theory, possible to host a website from any computer that is connected to the internet — so you could actually run a website from your home or laptop Mac.

However, the servers used for running serious, public-facing websites are generally much faster and more robust than a consumer-grade desktop or laptop computer. Additionally, internet bandwidth at conventional data centers is much wider and faster than in your home or office.

Since Apple doesn't manufacture any servers or data center equipment, running a website from a Mac is (at best) highly impractical.

Linux

What is Linux?

Linux is a family of Open Source operating systems.

The Linux project was created in the early 1990s, as a Free and Open Source alternative to Unix, which was proprietary and closed source.

Today, Linux is perhaps the most popular operating system in the world. While it is a fairly small player in the world of desktop and laptop personal computing, which is mostly dominated by Windows and Mac OSX, Linux has become the industry standard for web servers, super computers, "big metal" installations, and embedded devices. In its incarnation as "Android," it powers the majority of mobile phones.

Linux is called a "family of operating systems" because it is available in a large number of "distributions" (or "distros"), which package the Linux kernal with other low-level utilities, device drivers, user experience modules, and applications. Some of these distros have become very popular: CentOS, Ubuntu, Debian, Red Hat. Each distro has its own community of developers, supporters, and users. Some are backed by large for-profit or non-profit organizations, others are managed by a small team of dedicated volunteers. Many are created to fulfill a particular need — such as CloudLinux, which was created to help manage shared hosting servers.

Is Linux good for hosting websites?

Yes.

The majority of web hosting — whether shared, VPS, or dedicated server — is done on Linux machines. IT is so common as to be considered the "default" in almost all cases — using a non-Linux (usually, Windows) operating system for hosting is typically the "special case."

There are a handful of Linux features that contribute to it being an excellent choice for hosting web sites:

  • Excellent permissioning and user security — the user model of Linux helps keep websites secure and guards against both malicious attacks and accidental missteps by website administrators
  • Does not need to be powered down — Windows machines have a tendency to slow down the longer they are running (due to a phenomenon known as memory leak), which means that they must periodically be powered down and rebooted. This would interrupt service to a website. Linux is much less prone to this problem, so it is usually better suited to running constantly in an always-on environment.
  • Free — Linux is Open Source software, and has no licensing fees. This helps keep the cost of web hosting — especially shared hosting — as low as possible.
  • Large Linux web hosting community — Because Linux so popular for web hosting, there is a lot of support available, a huge body of documented knowledge, and a wide variety of tools and utilities.

Should I get Linux web hosting?

Probably, yes.

Linux is considered the standard for most forms of web hosting today. It powers the vast majority of websites on the internet.

The only other serious alternative to Linux is Windows. There are a number of reasons why Linux is often a better choice than Windows, there is one reason that usually trumps all the other reasons: Linux is free, and Windows costs money.

Since Linux is at least as good as Windows (and, many people think, better), there's really no reason to spend money on Windows unless there is a specific reason to do so.

The reason to choose Windows over Linux is if you need it to power one or more proprietary Microsoft technologies, such as .NET, Silverlight, or Exchange Server.

For the vast majority of web sites and web-based applications running on languages like PHP, Ruby, Python, or Perl — and this includes popular apps like WordPress, Drupal, Joomla — Linux is not just good enough, it's actually better.

Windows

Is Windows good for hosting websites?

Unless you need Windows for something specific, it usually isn't ideal.

The vast majority of websites and web applications on the internet today run on one or more Open Source technologies — languages like PHP or Ruby, apps like WordPress and Drupal, frameworks like Rails or Django.

It is possible to run any of these on a Windows machine. However — installation, package management, and administration are all going to be easier on Linux. The technologies are usually built and tested on Linux (or Mac, which is similar), there are more tools and utilities for Linux, tutorials and support documents tend to assume a Linux environment.

So — unless you need something specific, such as .NET — Windows does not tend to be a good choice for hosting most websites.

Can I host websites on Windows?

Yes.

First of all, some web technologies — .NET, Silverlight — require Windows.

Most web technologies — PHP, Ruby — do not require Windows, but can be run on Windows if needed.

Is Windows Server the same as Windows?

Sort of yes, but sort of no.

Windows Server is a family of operating systems. If you have a Windows PC, you may be running one of several versions — Windows XP, Windows 7, Windows 8, or Windows 10. All these are versions of Windows intended for personal or business computing on a desktop or laptop computer.

Windows Server is a version of Windows which is intended to be used in a server environment. It is (mostly) compatible with personal-computing version of Windows, and (mostly) works the same way — someone familiar with doing administrative tasks on one would find it easy to do similar tasks on the other, and software designed and run on a Windows PC can be deployed on a Windows Server, and be expected to run without problems.

So — Windows Server is very similar to the version of Windows you may have on your own computer, but they aren't exactly the same software.

Administration

Control Panels

Do I need a Control Panel?

That depends on your skill level (or your comfort level at the requirement of learning new things).

You will need to manage your hosting account and server somehow. From installing your content management system to setting up your email, there are a number of administrative tasks you'll need to take care of if you host your own web site.

The "advanced option" (and the only option before Control Panels were invented) would be to log into your web server via SSH and use the command line. This is a very powerful way to interact with your computer, but you have to know what you are doing. There's no graphical interface, no icons, no clicking — just typing text commands onto a black screen. Needless to say, many people find this a little daunting.

A control panel does for your hosting account what your desktop environment does for your computer — provides a graphical interface for performing various tasks.

Virtually all shared hosting plans come with a control panel. In fact, most shared hosting providers assume that most of their customers will only ever interact with the control panel.

Will a dedicated server come with a control panel?

Sometimes.

Most customers who need a dedicated server have the technical ability to manage a server from the command-line. In addition, most of them also need custom configuration and setup which can only be done on a command line.

Many dedicated server plans have some kind of server control panel which is especially suited to a dedicated server environment, and which is quite different than the type of web hosting control panel found in shared hosting plans.

Will a VPS hosting plan have a control panel?

VPS hosting often includes a control panel, but not always — some VPS customers do prefer to interact with their server primarily via the command-line, especially if they are doing new development or need a custom set up.

Why do I need a control panel?

So that you don't have to learn how to use the command line.

One Click Installs

What is Fantastico?

Fantastico is a one click installer. It provides an easy way to install a number of web applications and content management systems.

What is Simple Scripts?

Simple Scripts is a one click installer. It provides an easy way to install a number of web applications and content management systems.

What is Softaculous?

Softaculous is a one click installer. It provides an easy way to install a number of web applications and content management systems.

Virtuall all shared hosting plans, and many VPS plans, have one of these one click install tools. Whichever one the hosting provider has, it will be accessible from the web hosting control panel.

Email

See also our Email FAQ for more information.

How to get email at my own domain?

Most shared hosting providers offer one or more email accounts as part of your hosting package. They can be set up from your hosting control panel.

You can use one or another webmail applications (such as Squirrel Mail to access your email, or you can access it via a mail client such as Outlook or Apple Mail.

If you'd like to setup your domain email on another server — such as through a service like Google Apps — you'll need to setup a Custom MX Record.

How to build an email list?

There are a number of tools for building email lists. Most professional content management systems, such as WordPress or Drupal have plugins for managing email lists. Any good ecommerce application, such as Magento, will provide built-in or third-party email list features. There are SaaS subscription solutions, such as MailChimp. Finally some hosting providers have mailing list software as a feature.

How to stop email spam?

If you are using your web hosting account's email service, you can stop most email spam with Spam Assassin.

How to setup email forwarding?

In most hosting plans, you can set up email forwarding in the control panel.

How do I use domain email with a third-party service like Google Apps?

You have to "point" your domain name to the server specified by the app. This is done by adjusting the MX record on your DNS record.

How to edit MX records?

The MX record is a DNS record, so you will edit it in the same place that you edit any other DNS entries. In most control panels, this is done in a "Domain Management" tab or section. It will sometimes be labeled DNS zone editor.

IMAP vs POP3: Which is better?

IMAP. Whenever possible, you should use IMAP instead of POP3. If your webhost does not support IMAP, you should find one that does.

What is the difference between IMAP and POP3?

IMAP and POP3 are both email protocols, but they work differently. While the technical differences are a bit too detailed to go into, the practical difference for users is easy to understand.

With POP3, the client gets a copy of the email from the server. Once that happens, it is an independent copy. Usually, the email is deleted from the server (though not always). The server doesn't know if anything has happened with the client's copy. This makes it very difficult — nearly impossible, really — to use multiple clients (your desktop, your laptop, and your phone) to manage a single email account.

With IMAP, email messages — and their states (read, unread, replied to) — are synced between the server and all clients. This allows a single person with a single email account to use multiple clients without a problem.

Crontabs

What is a cron job?

A cron job is an automated task that set to run on a particular schedule.

Cron jobs are used for all sorts of things. A few examples:

  • automated backups
  • cache clearing
  • dead link checking

How to set up a cron job?

You can set up cron jobs manually by editing the crontab files. These are usually found in the /etc directory. Setting up a scheduled job requires adding somewhat arcane code bits to the file. (You can read a quick cron job tutorial here.)

An easier way is to use the cron job scheduler utility normally built into your web hosting control panel.

Misc

Can I view access logs in shared hosting?

You can if you have a hosting company that provides access to them. They will be accessible from the control panel.

How often should I backup my website?

That depends on how often the state of your website changes, and how critical your data is.

At the very least, you should back up your website's database about as often as you add content to it. And you should backup the code before and after any major changes.

If your website is interactive in any way — an ecommerce store, a project management site — you are probably acquiring new data constantly. In this case you should be backing up your database at least once a day, perhaps more.

How to backup my website?

Backing up your website is too important to leave to your memory. You should set up an automated backup of both your database and your code.

How to upload files on hosting account?

The most common way of dealing with file uploads on a hosting server is to use FTP. Virtually all hosting accounts allow you to set up an FTP account, which you use to access your hosting server's file directory via an FTP client.

Some web hosts simplify this by providing a browser based file manager.

How to access terminal in hosting account?

If you need command line access to your web hosting server, you will do that via SSH. You will do this using the ssh command in your own command line, along with the login credentials provided by your web host. These can usually be found in the control panel.

How to edit 404 page?

There are three ways to set up or edit your 404 page:

  • Use your hosting provider's built-in custom 404 page generator (if it has one).
  • Create an HTML page in your public directory to display when a visitor encounters a 404 error, and use htaccess to redirect any 404 errors to it.
  • Let your content management system handle it.

How to change DNS records?

You can usually edit your DNS records from your web hosting control panel. This is typically done from a tab or section labelled "Domain Management" or "DNS Editor" (or something similar).

How to point domain at different host?

There are two ways to do this:

  • Edit your A record to point to the IP address of your hosting server
  • Change your Name Server record to allow the other hosting company to manage your DNS records

Which one of these you need to do depends on the requirement of the other host — they will usually let you know which you need to do.

How to blacklist website visitors?

Typically, you blacklist website visitors by blocking requests from their IP address.

There are three ways to do this:

  • Most content management systems have some kind of IP-based blacklisting functionality, either as a plugin or as a core feature.
  • You can edit your .htaccess file to include blocking rules based on IP addresses.
  • If you hosting company has it available (most do), you can use their built-in IP Deny Manager from the control panel.

Performance

CDN

What is a CDN?

A CDN is a content delivery network.

A content delivery network is a service that stores static files (such as images and Javascript files) on your behalf and serves them to visitors of your website from a server other than your own primary website host.

This is done to speed up page loads and offload bandwidth from your primary host.

Why should I use a CDN?

Using a CDN will typically speed up your page load times significantly. This happens for two reasons:

  • CDNs deliver files faster, for a number of reasons:
    • faster internet connections
    • faster servers
    • predictive caching
    • physical proximity
  • When using a CDN, several files can be sent to a browser concurrently

In addition to faster page loads (which is good for your visitors), using a CDN reduces your bandwidth usage at your hosting service. If you are paying for bandwidth, this can save you money. Even if you aren't paying directly for bandwidth usage, this can save you money by allowing you to run on a lower-powered hosting plan than you may otherwise need if you had to serve all your content yourself.

On top of performance enhancement, CDNs usually reduce downtime and can help mitigate certain types of security threats. Some CDNs provide DDOS protection.

How to use a CDN?

This varies depending on the CDN. Most CDNs, though, make it very easy to setup. Often, all you need to do is set your DNS records to point to the CDNs proxy servers, and they take care of the rest.

Can I use a CDN with WordPress?

Yes. Any CDN will work along with WordPress — you don't need a WordPress-specific solution. However, there is one.

Built into the Jetpack plugin bundle is integration with the Photon CDN, powered by WordPress.com.

Do I need a CDN?

You don't need one, but it is foolish to not use one. CDNs can significantly improve your performance while lowering costs. They are easy to set up, and there are free CDN services available.

Dedicated IP

What is a Dedicated IP?

The vast majority of web hosting customers are using a shared hosting service. On shared hosting, many customers are sharing a single server. This usually means that all those customers share the same IP address.

The phrase "Dedicated IP" means that a customer has their own unique IP address which they do not share with any other customers.

Do I need a dedicated IP address?

That depends.

The biggest reason to use a Dedicated IP address is that you need one if you need an SSL security certificate.

You need an SSL certificate if you are doing any kind of ecommerce, or handling sensitive user data. Additionally, HTTPS increases security and privacy for any type of web site, so many people prefer to use an SSL certificate for all sites — and there is evidence that this provides a minor SEO benefit.

How to get a dedicated IP address?

If you use a VPS or dedicated hosting plan, you will have your own IP address automatically. With shared hosting plans, some of them offer a "Dedicated IP" upgrade.

What is the difference between dedicated IP address and dedicated server?

With a dedicated server plan, you are renting an entire server. This is usually the most expensive type of hosting plan.

A dedicated IP just means that you have your own IP address.

Can I get a dedicated IP address on shared hosting?

Yes. In fact, if you see "Dedicated IP" being advertised, you are looking at a shared hosting plan, because VPS and dedicated hosting plans automatically have their own IP address.

Will a dedicated IP address help with SEO?

Many people seem to think that Dedicated IP address are a good idea for SEO.

The reasoning here is that in a shared hosting environment, other customers sharing your IP address may engage in bad behavior which results in your site being punished by search engines.

This is not true at all, and has been addressed several times by Google. They understand the shared-hosting ecosystem and do not punish websites because of the actions of other websites.

However, a dedicated IP address can be a benefit to SEO for one reason: it allows you to get an SSL security certificate, which means that users can access your site via HTTPS. This does increase your SEP ranking, though probably only slightly.

Is a dedicated IP address good for security?

Only inasmuch as it allows you to get an SSL security certificate, which is very good for security.

SSD

What is an SSD?

SSD is a solid-state drive. This is a technology that replaces the more conventional spinning disk drive (the type of hard drive you might have in your desktop computer).

SSDs are more expensive than spinning magnetic disk drives, and they have a lower information density (they take up more room — making them more expensive to store en masse). But they have one big advantage: they are much faster than conventional spinning drives.

Will an SSD make might site faster?

Probably. SSDs have a much faster I/O rate. So, all other things being equal, SSDs will speed up your site's load times.

Is SSD hosting worth the expense?

That will depend entirely on your specific situation. The performance increase will depend on the structure of your app and what other sorts of enhancements are already in place. Moreover, the economic benefit of a speed increase is a highly specific calculation that only you can make.

However, with more and more hosting providers supporting SSDs (some of them for free), you can almost certainly find an SSD plan in your budget.

Zend

What is Zend Server?

Zend Server is a PHP distribution and web application platform that provides a complete set of PHP modules, utilities, and APIs. It makes PHP applications faster and more secure, and can be used to integrate them with other technologies such as Java.

Do I need Zend Server to use Zend Framework?

No, they are two different technologies. However, they are built to work well together.

Can I use Zend Server on shared hosting?

Generally not. If you want to use Zend Server, your best bet is a VPS hosting plan.

What is Zend Optimizer?

Zend Optimizer is a code optimization tool that speeds up the execution of PHP.

Is Zend Optimizer different than Zend Framework?

Yes. Zend Framework is an application development framework for writing web apps in PHP. This is a totally separate project from the Zend Optimizer.

Can I use Zend Optimizer without Zend Framework?

Yes. Zend Optimizer will speed up the execution of any PHP code. However, the best (fastest) results will be gained by using the tool products together, along with the Zend Server.

Applications

Blog

What should I do when starting a blog?

The first thing to do when deciding to start a blog is to write. If you can't bring yourself to sit down several times over the course of a few weeks and write a handful (five to ten) blog posts, then you probably shouldn't start a blog.

Once you've proven to yourself that you are at least moderately seriously about starting and keeping up with a blog, you should decide whether you want to run your own blog on your own hosting, or post your blog to blogging service like WordPress.com or Tumblr.

Hosting on with a blog network service is easier, and sometimes cheaper, but you don't have as much control over your site. It can be more difficult to customize or make money. The blog network can put restrictions on what type of content you can publish and what type of features you can add. If someone accuses your site of copyright infringements, the blog network owners can pull your site down without your consent.

It is a little more hassle, but it is often a much better choice to host your own blog.

To do so, you'll need to choose a blog software app or Content Management System. The most popular option is WordPress. Drupal is also popular, though not quite as much. There are other options too, but they aren't usually worth looking into unless you have some very specialized need, or really like supporting underdog projects.

Once you've decided on that, you should select a hosting company. For a small personal blog, you'll most likely want to start with a shared hosting plan. If you expect to get a lot of traffic very quickly, you may want to use a more powerful VPS plan instead.

If this is your first blog, or if you aren't particularly tech savvy, you'll want to pick a hosting company that provides one click installs, so that you can get your blog up and running without having to setup your database and CMS yourself, and get everything connected.

Use our hosting comparison tool to find the ones that support all the tech you need and provide the kind of plan you want. After that, check out hosting reviews to help you decide which option is the best. Be sure to get a coupon before you buy anything.

Once you've purchased your plan, you'll be able to log into your hosting control panel and install your blogging software pretty easily. Follow the instructions provided to log into your WordPress or Drupal application, add your content, and get going.

What's the most important thing about starting a blog?

Being able to write posts on a somewhat consistent schedule.

CMS

See also our CMS FAQ.

What is a CMS?

CMS stands for Content Management System.

What is a Content Management System?

A Content Management System is a software application that helps publishers write, edit, organize, and publish content on a website.

Typically, a CMS will provide:

  • a database for storing content, as well as additional information such as author details and category assignments
  • a file system for storing media, such as images
  • a templating system for displaying content on a website
  • an administration interface for writing and editing content and managing the site as a whole

Do I need a CMS for my website?

Probably.

Some websites aren't so much content websites as they are web applications — these sites are using some other type of software, not a Content Management System.

However, most sites could be considered "content" sites to one degree or another. A blog is a site with a chronologically-organized content. A social media network is a site with a bunch of tiny pieces of content and a mechanism for viewing the content created by other members. An online store is a system where product listings are the primary form of content.

Most websites are content websites.

It is possible to run a website without a content management system of some sort, but it is a terrible idea.

So, unless you are using some other software application instead, in order to do something on your website other than content, you do, in fact, need a content management system.

However, some people only use the term CMS to describe a particular kind of CMS — a general purpose Content Management System like Drupal, Joomla, or WordPress. They say things like "You don't need a content managment system — you just need a simple Wiki." Except a Wiki a type of CMS.

Photogalleries, shopping carts, wikis, project management applications, forums — these are all specialized forms of content management.

So — yes, you almost certainly need a Content Management System.

Why use a CMS?

The best way to answer that question is to think about what websites were like before the advent of CMS technology — what the alternative to using a CMS is.

When a browser views a page on a website, it is viewing a document with a lot of individual pieces — there's the HTML content, the CSS files, the Javascript files, the image files. The HTML file itself has a bunch of different sections — the header, the masthead, the menu, the sidebar, the main content, the footer.

Before CMS, this HTML document would have to be created and saved over and over again. Each page of the site would have its own copy of the header, the footer, the menu — all smashed together onto a single HTML file. If you wantes to make a change, you would have to edit dozens or hundreds of files (or simply not have the change reflected on old pages).

Content management solves this problem. The variable content — the stuff that is unique to each page — is stored, usually in a database. The individual pieces of the sites design are sotred in individual files. When a page is requested by a user, the system assembles all the pieces into a single HTML document, inserts the content, and serves it to the user.

Why use a CMS? Because it is the only sane way of managing a website.

How to set up a blog network like WordPress.com?

A blog network — a service where customers can set up their own blogs on a site you manage — can easily be setup by using WordPress Multisite.

What is WordPress?

WordPress is the most popular CMS in the world. Check out our WordPress FAQ for more information.

What is MODX?

MODX is a free and open source Content Management System.

Is MODX a good CMS?

It seems to be a fine piece of software with a small and dedicated community. It has won several awards, including being named the "Most Promising Open Source Management System" by Packt Publishing in 2007.

The problem you are likely to run into with MODX is that the it does not have the large ecosystem of plugins, themes, and community support systems that more popular and well-established content management systems have, such as WordPress and Drupal

What is Sitefinity?

Sitefinity is a proprietary (closed source) Content Management and customer analytics system built on the ASP.NET framework. It is geared toward enterprise clients.

What is Moodle?

Moodle an open source content management system used to connect students and instructors in an educational setting. It's mostly used in colleges and universities, but there's no reason it couldn't be used in junior high and high school, as well as in non-traditional learning environments, professional development courses, or other contexts.

It allows instructors and students to communicate, post course reading material , share documents, submit assignments, and collaborate on projects.

Can I run Moodle on shared hosting?

Yes. Whether or not you should do so depends on the size of your expected user base.

Unlike with other types of websites, Moodle sites are basically a closed ecosystem — the size of your educational institution dictates the number of users you will have.

A small private institution would likely be fine running Moodle on a shared server. A large college or university would quickly run into serious challenges if they tried to do so, and would be much better off with a VPS plan.

Even for small educational institutions, you should be careful about trying to use a shared server for everything. A small private school might be running a WordPress site for their public-facing website, a private internal site running Drupal with CiviCRM to manage their donor and volunteer database, and Moodle for classroom management. Each of these could, in theory, be run on shared hosting, and shared hosting might allow for all three sites to be run from a single plan, but the combined weight of all three may start to overburden the hosting plan.

When looking at a hosting plan for an organization with many different needs, be sure to think about more than just the public facing website when selecting a hosting plan.

Is Moodle free?

Yes. Moodle is free and open source software. It can be used without paying any licensing fees, even for commercial purposes.

How to setup Moodle?

Use our web hosting comparison tool to find a provider that supports Moodle (and don't forget to get a coupon).

Once you've purchased a plan, you'll be able to log into your hosting control panel and easily install Moodle with either Simple Scripts or Fantastico.

Ecommerce

How to build an ecommerce website?

You have two general choices for setting up an d ecommerce site. You can use a general purpose CMS system and use plugins to add ecommerce capabilities, or you can use purpose-built ecommerce software.

Starting with the general-purpose CMS way — both WordPress and Drupal have very strong ecommerce plugins. This is a good option if you plan to do a lot of other things on a website (blog, forums, etc.) and want to also sell products.

If you are trying to build a serious ecommerce site, and you need all the features of a heavy-duty platform, you should look at purpose-built ecommerce software like Magento, which is one of the most popular applications in that category.

What kind of hosting do I need for an ecommerce website?

Most online stores would be best served by using a VPS hosting plan. Shared hosting is ill-suited for most ecommerce uses because of scalability and security concerns.

What is a merchant account?

A merchant account is an account with credit card processor that lets you process credit card transactions.

Do I need a merchant account?

If you are going to be running a lot of credit card transactions, it might be a good idea to get a merchant account. Depending on volume, though, it may be better for you to simply use a third-party payment processor like PayPal.

What is Magento?

Magento is a popular ecommerce software package written in PHP. It is available in three different versions:

  • Magento Community — The Open Source version, available for anyone to use free.
  • Magento Enterprise — a premium edition with additional features, available for a licensing fee
  • Magento Go — a cloud-based SaaS (Software as a Service) application available on a paid subscription basis

Is Magento free?

The open source Community Edition of Magento is available to use free of charge.

Can I host Magento?

Yes.

Both the Community and Enterprise editions require a hosting plan. (You can use our hosting features comparison tool to find a web host that supports Magento.)

Can I use Magento on shared hosting?

Yes. However, it may not be a great idea.

An ecommerce site, by its nature, is resource intensive. Shopping cart pages and other dynamic features can't be cached or served from a CDN, so they have to be processed on each visit. There also tends to be a a lot more searching and browsing on an ecommerce site than on a less dynamic "content" site or blog — leading to a higher number of requests per visitor.

Because, on a per-visitor basis, online stores tend to be more resource intensive, they can tend to be slower under load — leading to page load delays. This can seriously impact conversion and cart abandonment rates.

Finally, an ecommerce site likely requires a high number of visitors (buyers) in order to be worthwhile as an endeavor. Lots of people and organizations set up blogs and don't expect the site itself to be profitable, but an online store probably needs to have enough traffic to be profitable or else it likely isn't worth running.

For all these reasons, a serious online store is probably better of running on a VPS hosting plan, rather than a shared hosting plan.

Shopping Carts

What is shopping cart software?

Shopping cart software refers to a web application that provides a simple ecommerce or online shopping functionality to a website.

How to add shopping cart to website?

The way you add a shopping cart to a website will depend on what type of Content Management System you are using.

How to add shopping cart to WordPress?

There are a number of excellent WordPress shopping cart and ecommerce plugins. The two most popular are:

  • WP Ecommerce
  • WooCommerce

How to add shopping cart to Drupal?

There are a number of popular shopping cart modules for Drupal, including:

  • Ubercart
  • Ecwid shopping cart
  • Drupal Commerce

Is a shopping cart the same as e-commerce?

Yes and no.

The word ecommerce covers all the different software for selling products and services online. Frequently, though, people use "ecommerce software" to talk about fully-featured, general purpose ecommerce applications, and they use "shopping cart" to refer to relatively low-featured, simple apps or plugins which can be used to sell a limited array of items.

Often, "shopping cart" will be used to mean a mini-store experience that can be added onto an existing site with a plugin.

There is no clear distinction between these categories, though.

How to take credit cards online?

In order to take credit cards online, you will need a Credit Card payment gateway or a merchant account with a credit card.

How to set up a PayPal shopping cart?

Paypal is an incredibly popular payment gateway, but they do not directly offer their own shopping cart software. However, almost all shopping cart applications (and certainly any high quality ones) will be able to integrate with PayPal fairly easily.

What is Zen Cart?

Zen Cart is a popular standalone shopping cart application written in PHP.

How to setup Zen Cart?

The first thing you need to do is find a hosting provider that supports ZenCart. (You'll want to use one of our coupons.)

From there, go ahead and log in to your hosting account's control panel. You should be able to install Zen Cart using either Fantastico or Simple Scripts.

Is Zen Cart free?

Yes. Zen Cart is free and open source software, available for use to anyone without any kind of licensing fee, even for commercial projects.

CRM

What is CRM software?

CRM is Customer Relationship Management. CRM software helps sales and marketing teams stay in touch with customers and potential customers.

CiviCRM

What is CiviCRM?

CiviCRM is an open source CRM system geared toward non-profit organizations. While it is based on traditional sales-oriented customer relationship management software systems, CiviCRM bills itself as a "constituent relationship management" system.

CiviCRM helps organizations coordinate and manage relationships donors, volunteers, and other stakeholders.

Can I use CiviCRM with WordPress?

Yes, although the integration with WordPress is not fully-featured, and is a little difficult to set up.

The biggest difficulty, though, is that CiviCRM has not been well-integrated with WordPress for nearly as long as it has been so with Drupal. Even though most of the WordPress integration is working, there isn't as much of a larger ecosystem of CiviCRM plugins for WordPress as there is for Drupal modules.

If you are trying to add CiviCRM to an existing website, and you are currently using WordPress, you'll encounter some difficulty but will mostly be okay. If you are starting from scratch on a new website which will incorporate CiviCRM, you would be better off using Drupal.

Can I use CiviCRM with Joomla?

No.

Can I use CiviCRM without Drupal?

Yes. CiviCRM is built to integrate with Drupal.

Can I use CiviCRM at a for-profit business?

Yes. Though CiviCRM is designed for non-profit use, there is nothing in the license which would prohibit for-profit use.

Can I run CiviCRM on shared hosting?

Yes, but you may encounter some difficulties with setup. Also, there may be problems depending on the size of your membership list.

Can I host SugarCRM?

Yes.

SugarCRM is available as a subscription SaaS (Software as a Service) service (which you do not host yourself), and also an Open Source software application which you can host yourself.

If you're looking to host it yourself, you can use our search tool to find hosting companies that support SugarCRM.

Forums

What is the best software for online forums?

That depends on what you are looking for. There are a number of excellent, open source online forum software project. The three most popular are:

  • Simple Machines Forum
  • phpBB
  • bbPress

How to host my own online forum?

The first thing to do is figure out which online forum software you plan to use. Once you have selected one, you can use our web hosting comparison tool to find a host that support the software you want to use (don't forget to get a coupon).

From there installation will depend on which software you are using, but all of the more popular options include some kind of one click install feature provided by Simple Scripts or Fantastico.

What is bbPress?

bbPress is an online forum software package available as a WordPress plugin.

Can I use bbPress without WordPress?

No. bbPress is a WordPress plugin, not a standalone software package. If you need a non-WordPress forum solution, you may want to consider phpBB or Simple Machines Forum.

How to set up bbPress?

First of all, find a hosting company that supports bbPress (almost any hosting provider that supports WordPress will also support bbPress). Use Simple Scripts or Fantastico to install WordPress. Once WordPress is installed, you can install bbPress from the plugins screen in the admin area.

Can I use bbPress on shared hosting?

Yes, but you may or may not want to.

bbPress runs on WordPress, which can easily be installed and run on shared hosting. The server environment and general config required for bbPress does not require any special access that you wouldn't normally be able to achieve on shared hosting.

The issue you may run into is general performance. Forums are highly interactive and a single visitor is likely to make a large number of requests in a single session, since they are likely to be viewing multiple threads and also contributing.

Because of this, the point at which a shared hosting package is going to become inadequate is going to be much lower (in terms of number of regular visitors) than a less interactive site (like a blog). If you expect a large community of forum contributors, you may want to think about using a VPS hosting plan instead of a shared plan.

Is bbPress free?

Yes. bbPress, and WordPress, are both free and open source software projects, and can be used without any licensing fee, even for commercial projects.

How to add forums to WordPress?

The easiest way to add a forum to a WordPress blog is to use the bbPress plugin.

What is Simple Machine Forum?

Simple Machines Forum, also known as SMF is an open source software package, written in PHP, used for running online forums or bulletin board systems.

Is Simple Machines Forum free?

Yes. SMF is a free and open source software project, and can be used without any licensing fee for any purpose.

How to setup Simple Machines Forum?

Use our hosting features comparison tool to find a provider the supports Simple Machines. Once you have chosen a hosting company (and saved some money with one of our coupons), you should be able to get SMF installed quickly with Simple Scripts, Fantastico, or another one click installer.

Can I use Simple Machines Forum with WordPress?

No. Simple Machines Forum is standalone software.

Many shared hosting providers (and virtually all VPS providers) allow you to run multiple websites from the same hosting plan. If you are already running a WordPress blog, and you really want to run Simple Machines Forum, you could set it up as a second website on a subdomain (forum.example.com). Alternatively, you could use bbPress to set up your forum, since it is a WordPress plugin.

Photo Galleries

How to display photos on my website?

Almost all Content Management Systems have some kind of image management feature.

If you need to embed an image in HTML yourself, the code looks like this:

<img src="http://example.com/image.png">

If you are using WordPress or another content management system, there are a number of photo gallery plugins available.

How to set up a photo blog?

When setting up a photo blog, you have two choices:

What is Zenphoto?

Zenphoto is a simple standalone photo-gallery management system written in PHP.

Is Zenphoto free?

Yes. Zenphoto is free and open source software, so it can be used without any licensing fee for any kind of project.

How to set up Zenphoto?

Once you find hosting that supports Zenphoto (and saved money with a coupon), you can usually install it directly from the control panel of your hosting account with a one click install tool like Simple Scripts or Fantastico.

Social Networking

How to build a social networking site?

There are approaches to building a self-hosted social networking site:

  • Use a plugin to add social networking features to a general-purpose content management system.
  • Use a standalone social networking application

With the first option, the best way to go is probably BuddyPress, a WordPress plugin created by the core development team of WordPress (they also develop bbPress).

For standalone social networking applications, there are several options, including:

  • Dolphin
  • Elgg
  • Oxwall

Misc

What is a wiki?

A wiki is an article-based collaborative content website in which any article can be edited by users.

How to build a wiki site like Wikipedia?

MediaWiki is the software used by Wikipedia. It is available free to use as open source software.

Is MediaWiki a good software application for organizational knowledge management?

Yes. In fact, it is one of the best tools for this task.

What is a knowledge base?

A knowledge base is a collection of articles and other types of media, created by members of an organization, as a means of organizing and saving valuable institutional knowledge.

For example — have you ever worked in an office where there was a weird procedure for something, or where the copy machine required a certain oddly specific maneuver to work? Conventionally, this information would be passed from employee to employee informally. A knowledge base is an attempt to get all of this informal (and, sometimes, formal) knowledge into a single place so that everyone can take advantage of it more efficiently. This also guards against the loss of important information that occurs when an employee leaves.

What software to use for a knowledge base?

One of the best choices for knowledge management software is a wiki (like Wikipedia), which allows all members of a community to contribute and edit content. You can easily set up your own wiki using the same software Wikipedia uses, the open source MediaWiki application.

How to build an FAQ site? / What software do I need for an FAQ site?

There are several software projects that you can use to set up an FAQ website. A few popular ones include:

Additionally, you can use a general purpose Content Management System such as WordPress or Drupal.

How to build a polling website, or add quizzes and surveys to my website?

There are several standalone software apps you can use to run a polling or quiz website, inluding:

  • PHPSurveyor
  • Advanced Poll
  • LimeSurvey
  • phpESP

Additionally, you can use a plugin or add-on module to add quiz or survey features to a WordPress or Drupal site.

What is SharePoint?

SharePoint is an enterprise collaboration tools made by Microsoft.

Can I run SharePoint on Linux?

No. Sharepoint is Windows software and will only run in a Windows environment.

Do I need Windows server for SharePoint?

Yes, if you are going to self-host it. However, if you do not want to host it (or if you cannot), you can use Microsoft's Office 365 SaaS subscription plan.

Can I run SharePoint on shared hosting?

In theory, yes. But there are very few hosting companies that offer Windows Server on shared hosting.

What kind of hosting do I need for SharePoint?

At a minimum, you need Windows Server with IIS. Most people who run SharePoint also use either a VPS hosting plan or a dedicated server.

CMS

See also our CMS discussion under Applications.

How to pick a CMS?

The easiest approach is to find a website that is similar in functionality to the one you want to create and find out what software they used to build it.

Beyond that, you should generally figure out what type of site you are looking to build and use the best-in-class application for that type of site.

A site primarily for publishing blog posts, pages, and media, along with other types of content, and connecting users to each other? WordPress

A content-driven application with a lot of custom types, custom relationships, and complicated business logic? Drupal

A wiki? MediaWiki

An online store? Magento

A forum or bulletin board system? PhpBB.

Keep in mind that WordPress and Drupal are both very good general-purpose systems, and are highly extensible with plugins. If you imagine a site that has several different types of subsection — a forum, a store, a blog — you should probably use one of those two systems.

Be careful of up-and-coming small CMS applications that make a big deal about how they are "revolutionizing" content management by "focusing on simplicity" and other buzz-word laden promises. The top-tier CMS systems seem large and unwieldy because a decade or more of experience has shown that all those little tweaks and additions were required. Developing a platform that works all over the web, on all sorts of different devices, for all sorts of different types of users, is hard — it cannot be done overnight. It takes time for a system to evolve, for the rough edges to be worn down. The big, popular systems have had that time. The cool new CMS with a funny name and beautifully-designed home page has not.

How to setup a CMS?

First you'll need hosting. Once you figure out which CMS you are going to use, you can search our hosting features comparison tool to find a hosting company that supports the software you need.

Decide on a provider, and don't forget to get a coupon before you buy hosting.

Once you have selected a hosting provider and bought a plan, you'll need to install the application. All of the major hosting providers have a way to do this from your hosting control panel, usually through one of two one-click installation wizards, Fantastico or Softaculous.

What is the best CMS?

The best Content Management System is the one that is the most appropriate for your needs.

WordPress

What is WordPress?

WordPress is an Open Source blogging and content management system written in PHP. It is free to use, and is one of the popular software applications for running websites. It powers about 25% of all websites on the internet.

How to install Wordpress?

The easiest way to install WordPress is to use a one click installer like Fantastico or Softaculous.

What is the difference between WordPress.com and WordPress.org?

WordPress.org is the main site for the Open Source WordPress project. If you want to use the software to power your own site, that site is the one you want to pay attention to.

WordPress.com is a commercial blog network run by Automattic, a for profit company run by the original developer of WordPress. They provide (among other things) a free blogging platform for personal blogs.

How to set up WordPress?

The first thing to do is find a hosting provider that supports WordPress.

Once you have bought a hosting plan (don't forget to use a coupon), you're hosting provider will almost certainly provide you access to a control panel for managing your hosting account. There you will usually find an installation wizard that will automatically set up WordPress (or one of many other applications) for you. The two most popular installation tools are Fantastico and Simple Scripts.

Once you have launched the WordPress installer, it will guide you through the rest of setup, and you'll be off and running in no time.

What is WordPress Multisite?

WordPress Multisite is a feature of WordPress that allows a single install of the software to power multiple sites. It can be used to build a blog network like WordPress.com or Tumblr, or as a way for a web designer to manage multiple client sites from a single place.

How to set up WordPress Multisite?

First of all, get good hosting. You are usually better of with a VPS hosting plan. You'll need to be able to edit your .htaccess file. In order to take full advantage of Multisite, you'll also need to be able to edit your DNS records, and be able to set up a wildcard subdomain.

Install WordPress as usual. Then once you have it up and running, use your FTP or SSH access to edit the wp-config.php file, which should be located in your site's root directory.

In the wp-config.php file, find the line that reads /* That's all, stop editing! Happy blogging. */. Just above the line, paste the following line to let WordPress know to enable Multisite:

define('WP_ALLOW_MULTISITE', true);

Make sure you save and/or re-upload that file (as needed) to the server.

Log into the admin section of your WordPress site, and you'll now find a new menu item under the Tools menu, labelled Network setup.

Follow the directions there (you probably want Subdomains, not Subdirectories) to configure and enable your network. Once you have finished there, WordPress will give you further instructions on how to get everything working right. You will need to add some more lines to your wp-config.php file, and edit your .htaccess file — the lines of code you need to add will be shown to you by WordPress itself.

What WordPress plugins do I need?

The depends entirely on what you are trying to accomplish. However, there are a few plugins that almost all WordPress sites can benefit from:

  • A caching plugin — use one (and only one) application-level caching tool like W3 Total Cache or WP Super Cache. This will help speed up your site by making it possible to deliver frequently-viewed pages without having to render PHP every single time.
  • An SEO plugin — use one (and only one) SEO plugin. The most popular is probably Yoast SEO
  • A Google analytics plugin — use one (and only one) plugin to integrate your WordPress blog with Google analytics. The most popular one is Google Analyticator.
  • A sitemap plugin — use one (and only one) sitemap plugin, which will create an XML siemap to help search engines understand your site better. The most popular one is Google XML Sitemaps
  • A backup plugin — use a plugin to back up your database and files on a regular basis. There are several good back up plugins available.
  • An antispam plugin — WordPress comes with Akismet, which is good. BadBehavior adds an additional layer of protection.

Is WordPress a CMS or a blog?

Yes.

Blog software is a subset of CMS software. Some people like to make the claim that WordPress is "just a blog," and not a full-fledged Content Management System like Drupal or Joomla. These people don't know what they are talking about.

WordPress is, and has been for several years, a fully-fledged content management system. While it has retained its blogging orientation, it is capable of handling any type of custom content or media.

WordPress is a blog-focused content management system.

Is WordPress everything?

It's better to think of WordPress as an applicaiton platform, which a great many things can be built on top of.

Drupal

What is Drupal?

Drupal is an Open Source content management system written in PHP. It is highly customizable, capable of being used for a variety of projects and applications.

Do I need Drupal on my website?

You need some kind of content management system, a Drupal is a good option. But no, you don't need it specifically — you could use a different app instead.

Is Drupal a blog?

Drupal can be used to run a blog, but it is not specifically oriented for that. If all you want to do is run a blog, Drupal might be overkill.

Is Drupal a CMS?

Yes. In fact, it is one of the more popular content management systems on the web. It powers around 2% of all websites.

Is Drupal an application framework?

Yes, but the problem with calling Drupal an application framework is that isn't really generic enough. It comes with a number of features already built-in. It can be used in the same way as a development framework, but it only makes sense to do so if the application being developed has a strong content focus.

What is a Drupal distro?

A Drupal distribution is a packaged set of Drupal modules created for a specific type of use case.

Broadly speaking, Drupal is structured somewhat similarly to Linux — Drupal core is a very bare-bones application seed, and all of the major functionality is built in modules.

Even the most basic Drupal installation is going to need several modules to do anything of any significance, but this modularity allows individual site owners to exercise a high degree of control and customization, even over very common features.

A distribution, or distro, is a packaged set of module that can be deployed for some specific application purpose — for example, there are distros for blogging, for education, for music publishing, and for customer relationship management.

Is Drupal free?

Yes.

Drupal is free and opens source software, and it can be used for any site — including commercial sites — without cost.

Is Drupal better than WordPress?

Drupal is more complicated than WordPress, and is more geared toward site administrators with strong technical skills. It can more easily be configured to do a wider range of things. But this does not make it a more appropriate choice for all situations.

How to set up Drupal?

The first thing you'll need to do is find a hosting provider that supports Drupal. Once you decide which company to use, don't forget to get a hosting coupon before you buy.

After getting your hosting account set up, you'll most likely run your Drupal installation from your hosting control panel. Look for either Fantastico or Softaculous.

What is Drush?

Drush is a command-line tool for managing a Drupal installation. It provides tools for quickly handling a number of common tasks such as updating plugins, installing patches, and backing up the database, which may otherwise have to be done with a cumbersome visual editor. Additionally, you can call Drush from other scripts, allowing you to automate many tasks or trigger them programatically.

Do I need Drush?

Only if you:

  1. Are using Drupal, and
  2. Want to run common Drupal maintenance tasks from the command line.

Can I use Drupal without Drush?

Yes. In fact, most Drupal sites aren't using Drush. (But they should be — it speeds up a number of common tasks.)

Can I install Drush on shared hosting?

Yes, but you might run into problems. Drush requires both git and the Composer dependency management system. These don't always work well on shared hosting because of various permissions issues that are often a hassle to work out.

If you plan to run a serious Drupal application and want to use Drush, you will likely have a better hosting experience with a VPS.

Will my hosting account support Drush?

Possibly. Check out our list of hosting companies that support Drush.

Joomla

What is Joomla?

Joomla is an open source content management system written in PHP.

Is Joomla a CMS?

Yes.

Should I use Joomla? Why use Joomla?

That depends. Joomla is one of the "big three" most popular open source, general-purpose content management systems (along with WordPress and Drupal).

Generally speaking, WordPress is easier to use while Drupal is easier to customize. Joomla is a sort-of middle ground between those two positions. Some people think of it as the best of both worlds, others the worst.

Is Joomla better than Drupal?

That's hard to say. It would be better to say each s better for certain types of projects.

Joomla is more popular than Drupal across the entire internet, but Drupal is more popular among the top-trafficked sites.

Is Joomla better than WordPress?

Historically, Joomla has been a better option than WordPress for complicated sites that require a lot of customization. With the last few generations of WordPress version upgrades, it is now a viable alternative for non-blog content sites.

At this point, the major distinguishing factors between WordPress and Joomla come down to personal preference. If you're trying to decide between the two, try setting them both up on two subdomains and see which one you prefer.

How to set up Joomla?

First of all, you're going to need to find a hosting provider that supports Joomla. (Don't forget to get a coupon before buying.)

Once you've gotten your new hosting set up and you're logged in, you'll use one of two one click install tools: Fantastico or Softaculous.

Is Joomla free?

Yes. Joomla is free and open source software, and is available to use at no cost for all types of projects.

Mambo

Is Mambo still active?

No.

Is Mambo available?

No.

What happened to Mambo?

Most of the original development team moved to Joomla, which began as a fork of Mambo.

Where can I learn more about Mambo?

We covered it here.

Blogging

What is a blog?

A blog is a type of website primarily defined by discreet pieces of content (posts) which are presented to the user in (usually reverse) chronological order (that is, with the most recent posts appearing at the top of the page).

The word "blog" is an abbreviation of the earlier term "web log," and the format originated as a type of online personal journal.

Today, blogs are nearly ubiquitous around the web, serving as a primary means of online communication for thousands, perhaps millions, of organizations and individuals.

How to set up a blog?

There are many ways to set up a blog.

If you just want to set up a personal blog, and you don't care about owning and controlling your online presence, then perhaps the easiest way to set up a blog is to get a free account at Tumblr or WordPress.com.

If you are setting up a site with a blog for a business or serious organization, you should want to own your data and control your online presence. For most people, the best way to do this is to use a blogging system like WordPress, or another content management system on a shared hosting or VPS hosting plan.

Can I start a free blog?

Yes. Services like WordPress.com and Tumblr, among many others, make it easy to set up and run a free blog.

You may, however, not want to set up a completely free blog. Using free and Open Source software like WordPress, you can set up a very low cost blog on shared hosting service, or (if you expect a lot of traffic) a moderate cost blog on a VPS plan.

The advantage to hosting your own blog is that you have a much wider range of available options and plugins — you can do anything you like with it. Free blogging platforms place limits on the kinds of things — especially the kinds of business activities and custom features — you can do with your blog.

If you want to monetize your blog in anyway, or if the blog is connected to a business, it is almost always a better idea to host it yourself.

How to host a blog?

First, you have to decide what type of blogging software you are going to use. The most popular choice is WordPress. Also very popular are Drupal and Joomla. If you don't like any of those, see our lists of blogging platforms and content management systems.

Once you have decided what software you are planning to use, you can use our hosting features comparison tool to find a hosting provider that supports the software you want to use. After that, make sure you get a coupon from us before buying hosting, and then you can be off and running.

What blogs should I read?

That depends on what you're interested in. But a lot of people really like our blog.

Email

How to check domain email on my Apple?

In your web hosting control panel you should have an area for managing Email accounts. This will have a tool for creating new email addresses.

On the same page, you'll usually see a list of current email addresses, along with IMAP credentials. Use these credentials to setup an new email account in your Apple Mail app.

How to use domain name for business email?

There a few different common ways of handling business email through your webhosting.

If you are using a Windows hosting account, you could set up an Exchange server, running email — as well as calendar and other office software — through your hosting.

More typically, you could simply setup several IMAP email addresses from your hosting control panel, and access them from the email client of your choice.

Another option, increasingly popular, is to run your email and other productivity apps through a service like Google Apps rather than through your own web hosting account. This is easy to do, but does require you to edit your DNSMX record.

How to check mail in cPanel?

Most cPanel installations on VPS or shared hosting include one or more webmail tools, such as SquirrelMail. These can be used to check your email from within the web browser, without leaving the cPanel.

Another option is to use an email client, such as Outlook or Apple Mail. To do that, you'll need the IMAP credentials available from the email accounts setup screen.

How to create an email account in cPanel?

The email accounts management screen is accessible from the mail cPanel screen with the Email Accounts icon. From there, simply add your email addresses and passwords.

In most cases, you'll want to set the inbox limit to Unlimited — the default is usually something else and that ends up causing a problem when your server stops accepting email without telling you why, or even alerting you that there is a problem.

Where to get email hosting?

For a small number of normal business or personal email accounts, just about any shared hosting plan will work just fine. They are all equipped to handle email at the typical volume for a handful of users.

If you have a large number of users, or if you need to send high volumes of email (such as marketing email), you will most likely want to use a VPS hosting plan. High volumes of email will quickly overwhelm a shared host.

One thing you probably want to keep in mind: high volume marketing email is easily mistaken for spam (especially when it basically is spam). For this reason, you almost never want to send marketing email from the same server and IP address as your normal business email. If your marketing email gets flagged as spam, you don't want your normal "doing business" email to become black listed and undeliverable. It's usually a good idea to use separate domains too.

What is an incoming mail server?

An "incoming" mail server is just a mail server. Some people specify "incoming" because any server that is connected to the internet can send email (for example, through the PHPmail() function, and similar tools in other languages), but a server needs to have special software (a mail server) in order to receive email. This is similar to how any computer can access websites via a browser (or cURL), but you have to specifically set up a web server like Apache to serve a public website.

When configuring an email client, you have to specify an incoming and an outgoing email server. This means the server your client will connect to for receiving (incoming) and sending (outgoing) email. Often these will be the same server, but they are sometimes different. For example — some people receive email from many different email addresses, hosted on many different servers, but reply to email at only one email address. Additionally, some ISPs and web hosts simply use different servers for incoming and outgoing mail, even for the same address.

What is jMail?

There are two email projects named "JMail."

The first (spelled "jMail") is an email component for the ASP.NET framework that provided a programming wrapper for sending email from within applications. This was needed because of some of the email restrictions commonly in place in shared hosting that are intended to foil spammers, but also make it difficult to send email from within hosted web apps.

The other JMail is an Open Source email client-server network written in PHP. It began as an experimental personal project and is currently not ready for production use.

What is SquirrelMail?

SquirrelMail is an open source web-based email client included in the cPanel (or other control panel) of most shared hosting plans.

What is IMAP?

IMAP (Internet Message Access Protocol) is one of two common email protocols used for retrieving messages from an email server.

With IMAP, messages are left on the server, while copies are made on the client. The state of these copies (read, unread, etc.) can also be recorded in both places. This allows for a user to sync several different email clients (desktop, laptop, phone) to the same email address via the central server without losing any messages or important information.

What is POP3?

POP stands for Post Office Protocol, and POP3 is the third (and current) version of the POP standard. POP3 is one of two common email retrieval standards for getting messages from the server to the client.

With POP3, copies of the email are not stored on the server. POP3 usage assumes that only a single client will be used to retrieve email from the server. This is somewhat common in web-based email systems, where the "client" is actually another (web) server which users log into to check email.

What is an MX record?

The MX record, or "Mail Exchange" record, is a type of DNS record that specifies the address of the incoming email server.

DNS records are used to map human-meaningful domain names to computer-meaningful IP addresses. When you type a URL into a browser, the browser asks one of several DNS servers for the IP address of the domain name, so that it knows where to send the request for the page you are trying to look at. The address for these types of requests is stored as an A record.

A similar thing happens with email. When the outgoing email server send an email to [email protected], it has to look up where it should send email bound for the example.com domain. The IP address for email service is stored in the domain's MX record.

(If you don't have a DNS record specifically labeled MX, the A record address will be used. So if you run your email through the same server where you host your website, you may not have a separate MX record.)

How to edit my MX record?

In your control panel or domain name manager, you'll find a DNS editor, which allows you to set up new DNS records. From there, just add a new DNS record (or edit the existing MX record if there is one). The type will be MX, the domain will be the domain you are setting up email for, and address (or IP) will be the IP address of your intended email server. You can also edit TTL (time to live), but the default setting is usually fine.

What is Postfix server?

Postfix is an open source SMTP email server — a piece of software that handles incoming and outgoing email. It is the standard email server in several operating systems and distributions, including Ubuntu.

How to setup postfix server?

Most hosting plans, including nearly all VPS and shared hosting have either Postfix or its major alternative Sendmail, installed and already configured.

If you need to install it on a Linux server that doesn't already have an email server installed, you can simply log in via SSH and run the following:

sudo apt-get install postfix

What is a good professional email address?

There are many schools of thought on this.

One nearly-univerally agreed upon rule is that you shouldn't use generic email service domain (@yahoo.com, @gmail.com) for business emails. This communicated amateurishness.

On the other hand, these types of domain names are fine for "personal professional" email addresses — that is, an email address you might use for things like job applications and other professional interactions.

For personal email addresses that you want to appear "professional," it is best to use your name. Do not use nicknames or funny names. No one wants to hire studmuffin69 or turdferguson.

Another thing to keep in mind with email addresses is that your domain email reveals thigns about you. For example, if you use the email address that is provided by your Internet Service Provider (for example, @comcast.com, or similar), people will assume you are middle-aged and not particularly tech-savvy. This can be a killer on a resume. The most "neutral" email address at the moment is probably @gmail.com. Better than that is email at your own domain.

For business and organizational email, some people like to use role-based email accounts. That usually sounds like a good idea early on, but is often a bad idea as time goes on. People tend to want to send email to other people, not to a role. The best way, for most organizations, is to assign name-based email addresses and then — if there is a need — set up role-based aliases that can be switched from person to person whenever needed.

As for how to format name-based email addresses, a lot of organizations try using first names only, or first name with initials, or last name with first initial. Any organization that is around long enough or has enough people will eventually run into a problem with that — duplicate email names. Then you end up with people adding numbers after names and all sorts of other problems. The easiest solution is to always use the format firstname.lastname. This doesn't guarantee there will be no duplicates, but it significantly reduces the likelihood.

When you do get a duplicate, add a middle name for either the second hire, or for both.

What port does SMTP use?

SMTP uses Port 25 by default, unless it is done over SSL. In that case, it usually uses Port 465 or 587.

How to change SMTP port?

On you email client, in your email account setup, you can change the port by which the client connects to the server. You can try 2525, 465, or 587.

What is an SPF record?

SPF is the Sender Policy Framework, a way of cutting down on email spoofing, by specifying which IP addresses can send email on behalf of a domain. It is implemented in the DNS record system.

How to set up SPF record checks?

SPF works by including the SPF details in a TXT DNS record. TXT is a type of record (like A and MX) which was created to hold any arbitrary text. The SPF protocol uses it to specify valid IP addresses for sending email.

The formatting used for SPF records is somewhat idiosyncratic. The easiest way to make sure you get it right is to use an SPF Configuration Wizard. Then, just copy the output into the text-area of a DNS TXT record.

How to setup email in Thunderbird?

Thunderbird is an email client made by Mozilla, the same team behind the popular FireFox web browser. To use it, just download it.

You'll need to connect it to your email account via IMAP. If you are using cPanel on most hosting accounts, you can find your email credentials in the Email Accounts screen where you set your addresses up.

What is DKIM?

DKIM is an email verification system similar to SPF which helps prevent email spoofing. It uses public-key cryptography to validate messages.

With DKIM, outgoing messages are signed using the domain owner's private key. Checking this against the public key published by the domain owner validates that the holder of the private key did, in fact, authorize the message.

Should I use DKIM?

It is a good idea. It provides the same type of protection as SPF, but is more secure and reliable.

Development

Markup

What is Dreamweaver?

Dreamweaver if a website design and HTML authoring tool developed by Adobe. It provides a visual editor in which to design and layout web pages, somewhat similar to Photoshop or Publisher.

Can I use Dreamweaver to build a website?

Yes. That is its primary purpose.

How to connect Dreamweaver to hosting account?

Most web hosting plans can easily support uploading Dreamweaver-based web sites and pages. All you reall yneed are PHP and MySQL.

What is BML?

BML stands for Broadcast Markup Language. It is an XML-based data standard for digital television broadcasting.

PHP

What is PHP cURL?

cURL is a tool for accessing the resource at a particular URL from within a program, as opposed to within a browser. The PHP version of this tool is called PHP cURL.

What is PHP fopen?

In PHP, fopen() is a function that opens a file, so that the PHP script can have access to its contents. Note — it opens the file, it does not run the file.

What is PHP include?

In PHP, include() is a function that includes the contents of another file into the current file. The result of this (in behavior as output) is as if the entire contents of the included file had been actually a part ("included") in the original file, at the point of inclusion. This function is one of the most common ways of organizing files in a PHP application — most CMS templates (for example, WordPress themes) — use include() to build a single web page out of its various components.

What is phpinfo?

The function phpinfo() is used to output complete details about the current PHP environment — what version of PHP is in use, what modules have been installed, how much memory is alloted to certain tasks — everything you might need to know about the currently running instance of PHP.

How to access phpinfo?

Create a file. It can be named anything you want as long as the file extension is .php. For this example, we'll call it info.php.

Inside the file, place:

<?php
phpinfo();

Place it in the web root of your hosting account. Then access the file from a web browser with the URL http://example.com/info.php

If PHP is running, you'll get the complete details of the PHP environment.

Another way to do this, if you have SSH access, is to type php -i from the command line. This will give you the same information, though in a different format.

What is php mail?

The PHP function mail() is used to send email from within an PHP script. It accepts three arguments — the to address, the subject, and the message.

How to do URL redirect in PHP?

The function for triggering a URL redirect in PHP is http_redirect(). This allows you to specify both the new URL and the specific status code.

The http_redirect() function should come before any other output is printed to the web server, including blank space before an opening PHP tag ( <?php ), because any output (even blank space) will trigger HTML headers to be generated, and the redirect can't be sent if the headers have already been outputed.

This is because (and this is important to understand) — the redirect itself doesn't happen in PHP. What PHP generates is a redirect error response, which tells browser to go find the content at the new URL

What is PHPfox?

PHPfox is a social networking application written in PHP.

What is ionCube?

IonCube Loader is a PHP script encoder.

PHP is an interpreted language. This means that source code is not compiled into an executable binary, but rather interpreted as runtime from the source. And that means that (usually), a computer running a PHP application (like WordPress) has a copy of the source code.

A lot of PHP applications are free and open source, but not all are. Some development companies do not want to hand over a fully viewable and editable copy of their source code to their users.

IonCube provides a tool for encrypting a PHP application so that the source code is obscured. To run the application on your own server, you need the IonCube Loader.

How to use ionCube?

If you have ionCube installed on your server, any scripts that need it should run fine. Sometimes you will need a license key from the developer (they will let you know when you purchase a product).

Can I use ionCube on shared hosting?

Usually, yes. Just to be sure, you may want to use our hosting features comparison tool to find a hosting provider that supports ionCube.

How to install ionCube Loader?

In most cases, you can simply install it from your web hosting control panel.

What is a LAMP stack?

LAMP refers to the typical combination (stack) of server-side technology used by many web applications:

  • Linux — operating system
  • Apache — web server
  • MySQL — database
  • PHP — programming language

WordPress, Drupal, and many other applications are written to be deployed on a LAMP stack.

Technologies

What is an API?

An API is an "Application Programming Interface."

An API is an organized set of commands for accessing an application of library programatically from within another program.

The phrase is often used interchangeably with "Web Service," or assumed to mean "public, web-accessible API" or "REST API" — all of which are various names for essentially the same concept: a software program that is made accessible to the public via HTTP requests over the web. (Though that is only one very specific type of API, it is often what people are talking about when they say API, especially in a web development context.)

For example — imagine a calculator API. Perhaps there is a publicly accessible web service at calc.example.com. I could send an HTTP request to http://calc.example.com/add?2+2, and the response should come back as 4.

This is a bad example because any computer that can send that request can also do addition — but it illustrates the point somewhat. All applications have specific functions, those functions take input, and provide back some kind of output. You can use HTTP requests as a way to access the functions of a application, and receive output in (for example) JSON, XML, or HTML.

Another example involves Facebook. You can post status updates by logging in, clicking on the update box, and typing in your update. But you can also create a status update by sending the text of the message, along with key identifying information, to a particular URL via an HTTP request. The request is caught by the FB application and the message is posted. If you have ever used a "Share This to Facebook" button, you've used this type of API.

What are cloud services?

Cloud services is vague marketing term that can mean a lot of different things. What it usually means is a something like a set of programming tools (for example, for data analysis or file backups) which are hosted "in the cloud" (that is — somewhere you don't have to think about it), and which you can access via a web browser or through a set of web services (RESTful APIs).

What is cgi bin?

CGI stands for Common Gateway Interface. It is an environment for running scripts on a web server.

The cgi_bin directory is a directory on your web hosting server that contains executable scripts to be run by the CGI utility. CGI scripts can be written in a number of common scripting languages.

How to use cgi bin?

On most shared hosting plans, CGI will already be set up. If you want to use it, all you would need to do is put your scripts into the folder, and the web server will understand that they are scripts, and should be interpreted as appropriate, with the output of the script being sent as the server response to the client (as opposed to the contents of the file, which would normally happen with .html and other files.

Should I delete the cgi bin folder?

No. You should normally leave it in place.

What is the cgi bin folder for?

The web server needs to know which files should be returned in their entirety to the client, and which should be interpreted as scripts. The cgi-bin folder provides an easy solution to this problem: everything in the folder is treated as a script, everything outside the folder is treated as a document.

(Most contemporary web servers use other methods as well.)

Version Control

How to deploy a website with git push?

That really depends on what type of Content Management System you are using. For example — in WordPress, you could keep your theme in a git repo, and push changes to the theme, but that wouldn't work with content, because it's stored in a MySQL database, which can't be stored (easily) in git.

The easiest CMS to use in conjuction with git is Jekyll, a flat-file CMS built in Ruby. With Jekyll, the entire website (including the content) is kept plain-text files which can all easily be stored in a git repository. It is a simple manner to use git push to deploy a Jekyll website to a remote server.

What to put up in .gitignore file?

There are two types of files to specify in a .gitignore file:

  • files automatically created by your build and testing processes
  • files that contain environment specific configuratoin details (especially if those are sensitive — like usernames and passwords)

What is git?

Git is a version control system that allows groups of programmers to manage complex projects.

Can I use git with shared hosting?

Yes. As long as you have SSH access, you should be abe to install git on your shared hosting plan. Some hosts, however, do not work well with git, for a variety of reasons (usually having to do with dependency management and permissions).

To make sure you have the best experience possible, use our hosting features comparison tool to find a service provider that specifically supports git.

Additionally, if you are doing the kind of new application development that typically calls for using git in the first place, you will likely have a better experience with a VPS hosting plan.

Databases

How to create table in MySQL?

The command for adding a table in MySQL is CREATE TABLE, followed by the name of the table. Additional parameters for the table, such as columns to include, can be specified as well.

For example:

CREATE TABLE example_table (
 key INT,
 value VARCHAR(100)
);

How to use MySQL from the command line?

On your web hosting account, you'll first need to log in via SSH. From there, you should be to simply launch MySQL with the mysql command. You'll need to provide user login credentials:

mysql -u USERNAME -p PASSWORD

You can then run any SQL commands from within a mysql> prompt. To exit, type quit.

Ajax

What is Ajax?

Ajax is an web application interaction paradigm in which server requests occur asynchronously with page reloads.

Ajax was originally an acronym for "Asyncronous Javascript and XML." The name has persisted even though, today, XML is not typically used as the data-transport language. More often JSON (Javascript Object Notation) is used, because it is easier to parse in Javascript (it's native) and has a higher information density. (It helps that it is also easier for humans to read.)

To understand the benefit of Ajax, consider a common web app you probably use everyday: Facebook.

Without Ajax — following the old convention of only receiving new data when a page is reloaded, your experience would be drastically different:

  • you would only receive new notifications when you loaded or refreshed the page
  • your newsfeed would be paginated
  • you would never get see new posts in the top of your newsfeed unless you refreshed the page

Instead, your browser and Facebook's server are in constant communication, and the page updates whenever there is new information to add to it. As you scroll down the page, more posts are retrieved and displayed — so you never run out of posts to view (infinite scroll).

How to use Ajax?

A typical Ajax application makes "behind the scenes" HTTP calls to the server and then manipulates the DOM (Document Object Model) to display whatever updated information has been received.

How to build a website with Ajax?

Most developers building new Ajax-based web applications will use a Javascript framework such as Angular or Backbone for the front-end client application.

On the server, any number of development frameworks (such as Ruby on Rails, Laravel, or Python can be used to build an application that returns JSON data instead of HTML pages.

How to fix same origin problem with Ajax?

The same origin problem is a difficulty encountered because of a security restriction built-in to standard-compliant browsers.

Put simply — scripts from one domain cannot access data received from another domain.

This is fine if all of your Ajax calls are being sent to the same domain as the main web page. But there are instances where this is not going to be the case:

  • static client hosting with dynamic server — The client application might be deployed as a set of static files which are hosted at a low cost file server or CDN, leaving the dynamic server-side scripting on a separate host.
  • aggregated application — sometimes you might build an app that consumes and remixes data from several different sources, perhaps handling data from many different, independently published APIs.

There are a few different ways to handle this. The two most common are:

  • JSONP — This is a technique where the returned JSON data is accessed via a <script> element on the client page. The server has to return a fully-compliant JS document, not just a single JSON object. The JS document is usually named with a random string generated by the client and sent to the server with each request. The <script> element is added to the DOM and accessed as if it was a typical JS document, but it actually contains JSON data.
  • Server side access — a less elegant solution is to simply make sure that all requests for third-party APIs are made by the server, while all browser-based requests are sent to the same server. This often the only solution in cases where third party APIs are not setup to return JSONP.

Can I use JSON with Ajax?

Yes, of course. In fact, it is more common than XML in new applications. We all just still call it Ajax because Ajaj sounds bad.

Languages

General Questions

What language should I use for new website?

That's a complicated question.

First of all, it's important to realize that the primary language a website — the language that will be delivered to your visitors' web browsers — isn't, for the most part up for negotiation. Websites use HTML (HyperText Markup Language). And, moreover, they should be using HTML5.

The other two languages that websites are delivered in are CSS and Javascript. CSS, or Cascading Stylesheet, is used to control the presentation (visual design) of a website. Javascript controls the interactivity and dynamic functionality of the site.

Most websites today are not written directly in HTML, though. They are written in one of a handful of other languages which can output HTML. The most popular of these languages is PHP. Other languages include Ruby, Python, and Perl.

For content-based websites (as opposed to web applications), most web developers would not build the website from scratch in one of these languages, but rather use a Content Management System, which will inevitably have been built in one of those languages.

The most popular CMS applications — WordPress, Drupal, Joomla, among many others — all use PHP. While there are other CMSes written in other languages (arguably, better languages), for 99% of users, it makes the most sens to use one of these applications (really, either WordPress or Drupal) because they have the largest communities of developers and users.

Building a website is different than building a whole new web application. When you're building a website, you shouldn't be worried about typical development issues — you should be focused on content and design.

Which language to build web app in?

That is an even more complicated question than selecting a language to build a website in. There are several popular web languages, and no one of them is the best in every situation.

The two things to look at when deciding on a language are:

  • your current resources
  • the type of app you are trying to build

The fact of the matter is, almost any type of application can be built in any of the major web app languages, so the easiest way to decide is: what language do you (or your developers) already know and like? Ruby might be marginally better than PHP for a certain type of project, but if you already know PHP, then you'll probably be able to get a lot more done quickly than trying to learn a language while also building your app. (Of course, this doesn't apply if you're specifically trying to learn a new language, and building an app is part of that learning process.)

If you have several options, or if you are going to be hiring developers (and you can hire based on your preferred language or tool set), then you might want to think about whether one or another language fits the needs of your app better.

To dive into that question, it's important to realize that a language is more than just the language. When you select a language, you are also selecting a tool set: You can't use Ruby on Rails without Ruby, you can't use Node.js without Javascript.

So look at the various frameworks for each language before deciding. Each major languages has one or two popular frameworks, and the choice of framework will — to a large extent — determine the overall structure of architecture of your application.

Top languages for web development? / What programming language should I learn?

The most important web programming language is probably Javascript. Whatever other languages are being used server-side, there will almost always be client-side programming, and that will almost always mean Javascript. Javascript also provides a good introduction to programming generally, and there are a lot of resources for learning it.

For server-side programming, you can use Javascript as well (via Node.js), but the more popular languages are PHP and Ruby.

PHP is especially important because of popular apps like WordPress and Drupal — and countless others. To generalize, PHP is a great language to learn if you want to build plugins to existing applications, design themes, and generally work with business owners and publishers. If you want to build something that users easily install on their own hosting account, PHP is usually the best way to go.

Ruby, especially with Rails is particularly popular with Saas businesses — software applications that aren't distributed to consumers but deployed to a single server.

These are generalizations, and there are plenty of contrary examples — but it's good to get a general idea of how people are using each language.

Remember, though — if you actually want to become a good programmer, you need to learn multiple languages. Each one requires you to think a little differently, and provides a different set of solutions and problems. Don't worry about what language you should learn, just figure out what language you should learn right now.

PHP / PHP 4 / PHP 5

Is PHP a good language?

Yes.

PHP, like all languages, has some problems. But it is a perfectly fine language and many, very successful applications have been written using it.

What is wrong with PHP?

PHP was originally invented to do a very limited set of tasks related to HTML preprocessing: filling in variables, including document snippets, pulling content in from a database. It was little more than a personal project, and not much thought was given to overall syntax and structure.

Though it developed and evolved into a fully-featured programming language, its early history continues to cause problems in two ways:

  • Some people continue to think of it as if it is little more than a glorified templating language.
  • Remnants of its original syntax persist in ways that make some aspects of the language inconsistent or inconvenient.

The first problem isn't really a problem of the language — it is a problem of perception of personal hangups that don't have anything to do with reality. Many of the people who make these claims about PHP also have a general antipathy towards "scripting languages" and make distinctions between scripting languages and so-called "real programming languages." This is absolute nonsense. PHP (along with other scripting languages like Ruby, Python, Perl, and Javascript) are as real as Java or C++.

The second problem — remnants of inconsistent syntax and weird ways of doing things — is truly a problem. But — as one blogger noted — it doesn't matter. PHP runs Wikipedia. Facebook was built in PHP. WordPress and Drupal are built in PHP. The majority of websites on the internet are written in PHP.

How to learn PHP? / How to learn to code PHP?

The best way to learn any language is to jump into a mature project and figure out how things work. Pick a popular, open source PHP app (like WordPress) and starting figuring out how it works. Try building a plugin.

How to build a website in PHP?

Most of the popular Content Management Systems are written in PHP. Use one of them.

Is PHP Turing Complete?

Yes.

But that is a mostly irrelevant question. Turing completeness refers to a computer's ability to solve generalized computational problems. A "Turing complete" language is theoretically capable of being used for any type of application — but that doesn't mean it would actually be easy, practical, or even realistic to do so. There are Turing complete computers made out of Legos and Lincoln Logs.

Is PHP a real programming language?

Yes.

Some people make a an artificial distinction between "scripting languages" and "real programming languages." This is wrong. At best, it is an outdated way of thinking about things. Usually, though, it isn't outdated — it's just wrong.

A language is referred to as a "scripting" language if it is not compiled, but rather interpreted from source at run time. It would be better to call these "interpreted" languages, because some people confuse the idea of a scripting language with the notion of scripting — writing short, low-powered utility programs in a simple interpreted language.

Of course, just because you can write a small utility script in a language doesn't mean you can't write other, more complicated programs. In fact, the three most common languages used for shell scripting, aside from Bash, are probably Ruby, Perl, and Python. All three are high-level, powerful languages used is a number of serious software applications. And PHP is hardly used for this type of scripting, at all.

Is PHP a scripting language?

Yes.

A scripting language is a language that is interpreted at run time, rather than being compiled into an executable binary. This is how PHP works — it is interpreted by the PHP interpreter (which is usually written in C) at run time.

There are, however, PHP compilers, which will compile PHP into an executable binary. These are a later development — an evolution of the language — and are still not widely used by PHP developers.

Is PHP object oriented?

Yes, but not strictly so.

The first several version of PHP were not object oriented at all. PHP 4 added minimal support for classes and objects, but it was missing some key OO features such as reflection. With PHP 5 the language became fully capable of supporting object orientation.

For a handful of reasons many PHP developers do not write fully object oriented code, and so there are a lot of non-OO applications.

Some people claim that the primary reason is that it is too easy to write non-OO code in PHP, and they see that as one of the primary weaknesses of the language. Other people see this flexibility as one of PHP's strengths.

Python

How to build a website in Python?

Python is not an especially web-oriented language, but there are a number of libraries and tools that have been developed to make it work well as a server-side scripting language for both web applications and content-based web sites.

For content sites, the most popular Python-based CMS is Plone. For web applications development, there are a number of frameworks, notably:

  • Django
  • TurboGears
  • web2py

Can I use Python on shared hosting?

Most of the time, yes. But before you commit to a plan, make sure you use our hosting features comparison tool to find a provider that supports Python.

Is Python better than PHP?

Probably yes. Though such a judgement is highly subjective, there are very few experts who would claim PHP is superior to Python.

But that doesn't really matter. PHP is the reigning king of web development languages, and that doesn't seem to show any signs of slowing down.

Why is Python better than PHP?

Judging whether one language is "better" than another is tricky — it is a very subjective matter. However, it seems that most developers who have done extensive work in both languages prefer Python and think it is the better of the two languages. Some of the reasons commonly offered for this are:

  • Python is more consistent than PHP.
  • Python has a better standard library.
  • Python makes it easier to do non-web server-side computing (without giving up web-facing convenience).
  • Python is easier to read.
  • Python has more intuitive (or natural) syntax.
  • Python has better package and dependency management
  • Python has better support for Unicode

How to learn Python? / How to learn to code in Python?

The best place to start with learning to write code in Python is the Beginner's Guide on the Python Wiki.

Ruby

How to build a website in Ruby?

Ruby is not an especially web-oriented language, but there are a number of libraries and tools that have been developed to make it work well as a server-side scripting language for both web applications and content-based web sites.

Ruby is very popular as a web development language for Saas application, and most people using Ruby on the web use the Ruby on Rails framework.

For content sites, all of the most popular Ruby-based Content Management Systems are built on Rails, including:

As one might expect, Rails-based CMSes are a little more developer-focused than typical PHP apps like WordPress and Drupal. These are not one-click install scripts for bloggers, but content-focused platforms for custom site development.

Can I use Ruby on shared hosting?

Usually, yes. But it isn't always easy to do. Ruby (along with Rails and the Gem packagae manager) is somewhat notorious for being hard to setup. Shared hosting typically makes it difficult (or impossible) to make certain configuration changes needed for get everything working right. It is usually much easier to get a Ruby app running on a VPS hosting plan.

If you do need to use shared hosting, be sure to use our comparison tool to find web hosting that supports Ruby.

How to learn Ruby? / How to learn to code with Ruby?

There is an ongoing debate about whether it is best to learn Ruby alone, or to learn Ruby together with Ruby on Rails. If you are a web developer, or want to be a web developer, it probably makes the most sense to jump right into Rails. The most popular Ruby on Rails tutorial was written by Michael Hartl.

Why is Ruby better than PHP?

Language quality is inherently subjective, so it's difficult to make absolute statements about whether one language is better than another. However, most developers who have experience with both Ruby and PHP tend to prefer Ruby and see it as the better language of the two. There are a lot of reasons for this, including:

  • Ruby is designed to be easy to write
  • Ruby is consistent
  • Ruby is intuitive

Besides the language itself, the Ruby ecosystem provides a generally better experience for developers:

  • Ruby has excellent package management
  • Ruby on Rails, which is the context for many developers' only experiences with Ruby, is an excellent framework that takes away most of the annoying aspects of coding
  • There are a number of Ruby tools which promote contemporary best practices with regards to Test Driven Development, Continuous Integration, Automated Deployment, and Service Oriented Architecture.

Is Ruby better than Python?

Both languages have their fans and detractors. Looking only at the languages themselves, and ignoring the larger development ecosystem, they are are approximately equal in intrinsic quality and usefulness. However, programming languages don't exist in a void — you must look at the larger culture of each language to get a sense beyond just what is possible, but what is actually practical.

Because of Ruby on Rails, Ruby is usually going to be the better option for SaaS applications, especially in a rapid-development environment, and especially for data-centric CRUD (Create Read Update Delete) apps.

Python, on the other hand, has better tools and better support for math and science applications, which makes it a better choice for most types of data analysis, scientific computing, and engineering tasks.

Python is also popular as a general "scripting language" for automating everyday computing tasks. Ruby can be (and is) used for this as well, by Python is more popular for this sort of thing.

Javascript

Is Javascript a real programming language?

Yes.

While Javascript's origins are as a low-powered language for in-browser animation effects, it has evolved over the last decade or more into a full-fledged language, useful for nearly any type of application development.

Is Javascript Turing complete?

Yes, but that isn't a very meaningful question.

Turing Completeness means that a computer can solve any kind of computing problem — it doesn't mean that it would be practical, or even physically possible, for it to be used in any kind of particular application. There are Turing Complete mechanical computers built out of Tinker Toys.

What most people are trying to find out when they ask that question is something more like: Is Javascript a fully-featured, general purpose computing language that could be used for any number of specific applications?

Yes.

Is Javascript a scripting language?

Yes. Javascript is interpreted at run-time, rather than being compiled into executable binaries.

Can I use Javascript on a server?

Yes. While Javascript was originally built as a client-side scripting language to be used in-browser, there is no reason it cannot be used server-side.

Most people writing server-side Javascript are using Node.js, an event-driven web development framework.

How to build a website with Javascript?

Most website use at least a little bit of Javascript for interaction purposes. But you can actually use Javascript as the basis for an entire web application.

Javascript can be used server-side with Node.js. Client-side, there are several popular Javascript frameworks, including:

  • Angular
  • Backbone
  • Ember

If you just need some client-side templating, but don't need an entire development framework, you can try:

  • Handlebars
  • Mustache

Is Javascript Object oriented?

Yes. But it doesn't behave like most other object-oriented languages. Though everything in Javascript is an object, there are no classes.

What is JQuery?

JQuery is a popular Javascript library that provides easy-to-use methods for the most common Javascript web developement tasks. It can be thought of as the unofficial standard library for Javascript (which has no official standard library.

Frameworks

General Questions

What is a Framework?

A framework is software development tool that provides a kind of template for an application. At the least, it provides a skeleton application which provides the overall structure or architecture for the app. A framework will also usually provide pre-written "boilerplate" features which almost all apps need, such as user management or database connectivity. Some frameworks (such as Ruby on Rails) provide additional tools such as automated code generation.

How to use a web framework?

A framework is a development tool, so you have to know something about web development in order to use it. That being said, someone with only limited development experience can usually get a lot further with a framework than they would trying to build an application from scratch.

As far as using a web framework, each one is different. Some of them can simply be downloaded (or forked from a git repo) into your application directory, giving you the starter template you need. Others require you to actually install the framework as an application on your development and production machines.

Best Framework for Python?

The most popular framework for Python is Django.

Best framework for Ruby?

The most popular framework for Ruby is Ruby on Rails.

Best framework for PHP?

PHP has more web development frameworks than any other language, which makes sense because it is the most popular web development language.

The "gold standard" for PHP frameworks is Zend, which is made by the company that underwrites most of the development on the PHP language itself. The most popular "independent" PHP framework is Laravel. Other very popular frameworks include Symfony and CodeIgniter.

Do I need a framework?

Well, that depends on what you are doing. If you are trying to build a standard content-based website, then: No, you do not need a web development framework, you need a Content Management System.

If you are building a new web application, you don't absolutely need to use a development framework, but it is usually a bad idea not to. Without a framework, you end up having to re-develop dozens of standard features which every application needs. This wastes time and also creates a lot of opportunities for low-level bugs and compatibility problems.

Frameworks give you the ability to jump right into building the features you actually need, which saves a lot of time and makes development an enjoyable experience instead of a frustrating chore.

Is WordPress a framework?

Not really. WordPress is a content management system.

WordPress can be used as a development framework, but it doesn't really fit the generally-accepted definition of a framework, because it is too specific.

A framework is usually thought of as a generic app template, with few — if any — application-specific features. WordPress, on the other hand, is already a full-fledged CMS application.

However, it can be used as if it were a development framework, building new features as plugins. This can be a useful approach for applications that have a strong "content orientation" — such as (for example) project management or social networking applications.

Is Drupal a framework?

Not really, but it could be thought of and used as one.

It is generally understood that a development framework is a general-purpose application template. Almost by definition, a content management system like Drupal shouldn't be considered a framework because it is already a full-fledged application with a specific purpose.

However, Drupal is a highly modular system — all features, including key content management features — are built as independent modules.

For this reason it works especially well as an application development platform, and could even (sort of) be thought of as a framework.

Can I use a framework on shared hosting?

That depends on the framework. Some frameworks are just application skeletons, containing nothing but code to be included into the application. These types of frameworks can pretty much be used in any deployment environment that supports the underlying language and libraries.

Some frameworks (notably, Ruby on Rails, but also many others) provide development tools and an application platform which needs to be installed on a server. These may or may not work on a shared hosting environment, depending on whether you, the customer, have the ability to install applications, adjust server settings, and otherwise manage your environmental configuration.

Which framework is better?

No one framework is best — different frameworks work better for different types of applications, different development methodologies, and different programmer personalities.

Why use a framework?

A framework simplifies the task of building an application in several ways:

  • A framework eliminates the need to write boilerplate application features that nearly every app needs, such as user management, password hashing, and database connection.
  • A framework provides a "packaged" solution to cross-browser and/or multi-environment compatibility.
  • A framework provides an architecture for an applicaiton.
  • A framework offers a standard way of accomplishing most programming tasks, allowing developers to think about high-level functionality rather than low-level implementation.

Taken all together, these benefits can add up to faster development, better applications, and happier coders.

What is Model View Controller?

Model-View-Controller is a type of applicaiton architecture. It is one of the most common architectures, and most popular development frameworks use it.

The MVC architecture pattern separates application code into three major components:

  • Model — The data model. This manages the way records are represented in the system.
  • View — This manages how records and interactions are represented to the user.
  • Controller — This manages business logic as well as the system itself.

Usually, each major architectural component has an individual component for each practical piece of the application. For example: if you are building a blogging content management system, there would likely be (among many other things)

  • a Post model, which defines all the data fields associated with a piece of content
  • one or more Post views, representing different ways that users see and interact with a piece of content, such as a full-page view and an editing view.
  • a one or more Post controllers that handle operations like editing, saving, and accessing post data as well as additional functionality, like sending a Tweet whenever a new post is published.

.NET Framework / ASP.NET

What is ASP?

ASP originally stood for Active Server Pages. It was a server-side scripting and templating language developed by Microsoft, to be used for web development, somewhat similar in conception to PHP.

While ASP (now called "Classic ASP") is still supported on Windows Servers running IIS, the language is no longer under active development — the last release was in 2000.

Today, "ASP" usually refers to ASP.NET, a web development framework built on top of the .NET platform.

Should I learn ASP.NET?

That depends on your career trajectory.

ASP.NET is part of the larger .NET platform, which in turn is part of the larger Microsoft Windows ecosystem, which include the Microsoft Common Language Runtime.

As opposed to technologies favored by startups and rapid-development teams (such as PHP and Ruby), the .NET platform is favored by large organizations such as corporations, enterprises, and government entities (especially defense contractors).

Can I use ASP.NET on Linux hosting?

Usually not. ASP.NET is designed to work only on Windows servers. There are Linux-based .NET clones, but they are not well-supported by the software.

Can I host ASP.NET on shared hosting?

Usually not. Most shared hosting is Linux based. However, there are some Windows-based shared hosts. The .NET platform should work fine on these, and some of them specifically provide installation and support for it.

Why use .NET framework?

The .NET framework runs on Windows machines and can be used for both in both server and desktop environments.

It has a few advantages over PHP and Ruby based frameworks, including:

  • Access to the larger Windows / Microsoft ecosystem. If you need to integrate with other Microsoft applications like Sharepoint or Silverlight, then a Microsoft framework is going to provide better tools for doing so.
  • Speed. .NET code is compiled into IL (Intermediate Language), which is then compiled into machine-runnable code at runtime. Run-time compiled code is cached and used each time a resource is requested. Compared to interpreted scripting languages, this is much faster.

Is .NET a framework?

Yes, but not a specifically web-oriented one. It can be used to build all sorts of applications to be run in a variety of (Windows) environments.

Is ASP.NET a framework?

Yes. ASP.NET layers a web-specific development framework on top of the underlying .NET framework.

Grails

What is Grails framework?

Grails is a web application development framework for the Groovy programming language.

What is Groovy?

Groovy is a programming language for the Java platform. IT compiles to Java bytecode and can be run on any Java Virtual Machine.

Is Grails like Rails?

Grails was originally called "Groovy on Rails," and seems to have been inspired in part Ruby on Rails (the name was changed after a request by the Ruby on Rails founder).

Grails, like Rails, uses the MVC architecture pattern, and also has other similarities:

  • a focus on "convention over configuration."
  • command line tool for rapid development
  • scaffolding (automated code generation) for CRUD database operations

How are Grails and Rails different?

The most obvious difference is that they are built on different technologies altogether. Grails is built on top of Groovy, which itself is part of the Java ecosystem. Rails is built with Ruby. While the two frameworks share a philosophical core, this underlying technology difference means that they are implemented very differently.

One major practical difference is that Ruby on Rails has access to the Ruby Gems system, while Grails has access to the plugins and modules of the Java ecosystem.

Can I use Grails on shared hosting?

That depends. Grails requires Java, so you need to be able to install the Java Virtual Machine in order to run a Grails application. You can use our web hosting feature comparison tool to find a service provider tha specifically supports Grails.

Zend Framework

What is Zend?

Zend is an application development framework written in PHP.

Why use Zend?

This question can really be broken into two separate questions:

  • Why use an application development framework at all?
  • Why use Zend specifically (as opposed to some other application development framework)?

The first question — why use an application development framework — is easy to answer: Less code. Less code to write, less code to test, less code to maintain.

Every application has a lot of "boilerplate" code — code which is used over and over again: database communication, user management, security, session management.

In the absence of frameworks, most developers do two things:

  • build up their own library of code snippets and reusable object to handle these things.
  • rely on a collection of third-party libraries and components

A framework, at the very least, provides a coherent solution — a collection of such reusable application bits that are either built together or curated and tested together.

Most, including Zend, go even further and provide an application template with an architectural pattern sketched out. This helps developers get into writing new application features quickly, instead of wasting time building foundational features.

As far as the second question — why Zend in particular — Zend is the most popular PHP web development framework. It is built by the company that is the primary underwriter of ongoing development on the PHP language. It is as close to a "standard" framework as there is.

Do I have to know PHP to use Zend?

Yes.

Zend is an application development framework, not a drag-and-drop site builder. It makes development easier and faster, but it does not replace the need to actually know how to code or understand how a web application works.

Is Zend object oriented?

Yes. Zend itself is written in 100% Object Oriented code, and the structure of the framework encourages developers to follow Object Oriented practices.

Is Zend service oriented?

It can be. Service orientation is an architectural paradigm where discreet functionality is separated into independent (or semi-independent) services.

In a web-development environment, this usually involves the creation of REST web-services which can be accessed via HTTP calls and which return data in a format such as JSON or XML which is consumable by nearly any type of client application.

Zend easily supports this type of application architecture, but it does not require it.

Is Zend an MVC framework?

Yes.

Model view controller is a type of architectural paradigm in which Application functionality is divided into three major components:

  • model — defines the data model of the application, including the various types of records and their attributes, relationships, and taxonomies.
  • View — defines one or more interfaces for each model
  • controller — defines business logic and Application functionality.

Zend framework is designed to support the model view controller architecture.

Can I use Zend to build a website?

Yes, but it might be overkill.

Zend is an application development framework, not a content management system. For a basic content-driven website, you would be better off with a content management systems such as WordPress or Drupal.

Can I use Zend for web services?

Yes. Zend supports REST based web services, and can return any type of output, including JSON, XML, or HTML pages.

Can I use Zend on shared hosting?

Yes. Zend functions as a collection of PHP libraries which are included into a PHP application. So Zend can usually run on any server that can run PHP. If you want to be extra certain, you can use our web hosting comparison tool to find hosting companies that specifically support Zend.

Can I use Zend without PHP?

No. Zend is a PHP framework. It is written in PHP. New development on top of it is written in PHP. You cannot use Zend without PHP.

Is Zend better than Cake?

Zend is much more popular than CakePHP, especially among established Enterprise users. CakePHP is somewhat more popular with rapid development teams and startups, and has a more devoted user base.

Can I use Zend with Mongo?

Yes. MongoDB is well supported in Zend.

Does Zend support CouchDB?

Yes. CouchDB is well supported in Zend.

Laravel

What is Laravel?

Laravel is a web development framework for PHP.

Do I have to know PHP to use Laravel?

Yes. Laravel is a PHP-based web development framework. It speeds up a lot of development tasks, but it doesn't eliminate the need to actually know how to write code in PHP.

Is Laravel object oriented?

Yes. Laravel is an object oriented development framework.

Is Laravel service oriented?

Service orientation is a design pattern where discreet functionality is packaged into "services" which can be accessed by any system with sufficient permissions.

Laravel can be used to implement as service oriented architecture, but it does not force developers to adopt this approach.

Is Laravel an MVC framework?

Yes. Laravel follows the Model-View-Controller architecture pattern and encourages developers to follow it as well.

Can I use Laravel to build a website? / How to build a website with Laravel?

Yes, but for a simple content-based website it is probably overkill. For a PHP-based content management system for typical websites, look at WordPress or Drupal. Laravel is for building new web applications.

Can I use Laravel for web services?

Yes. Laravel employs a REST-based architecture. This can be used several different ways. One way is to build web services which give client applications the ability to perform CRUD operations, and to trigger other app functionality, via HTTP requests, returning some data format (like JSON or XML) which is consumable by the client.

Can I use Laravel on shared hosting?

Usually. Laravel is built with PHP, which is well-supported on most shared-hosting environments. To be sure, you can use our hosting comparison tool to search for service providers that specifically support Laravel.

Can I use Laravel without PHP?

No. Laravel is built in PHP, and development on top of Laravel is done in PHP.

Why use Laravel?

Like all applications frameworks, Laravel speeds development by eliminating or automating a number of common programming tasks.

Is Laravel better than Zend?

Zend is actually more popular than Laravel, in terms of number of projects. Laravel seems to have a more devoted user base. Points in favor of Laravel include:

  • Better documentation
  • Support for more templating languages
  • Higher levels of developer satisfaction

Zend tends to be favored by Enterprise clients running large, mission-critical systems. Laravel is more geared toward rapid-development and new apps. However, this has more to do with the culture and history of the two projects rather than their inherent merits.

Is Laravel better than Cake?

Laravel and CakePHP are conceptually very similar, both of them converging on a set of core best practices in terms of architecture, scaffolding, and database abstraction. Laravel may have an edge in terms of better documentation and more third-party tutorials, and there is evidence that a lot of CakePHP developers have switched over to Laravel.

If you are learning to use a framework for the first time, or want to generally increase your employability, Laravel is a bit "hotter." But if you are deciding on which framework to use for your own project, and you already know CakePHP well, there isn't a strong technical reason to switch.

Can I use Laravel with Mongo?

Yes. As of this writing, Laravel doesn't support MongoDB "out of the box," but there are several packages which provide MongoDB support. The most popular one at the moment is simply title Laravel MongoDB.

Does Laravel support CouchDB?

Not really. There are a few packages (plugins) which provide CouchDB support to Laravel, however none of them are mature as of this writing. If you need to use Laravel with a non-relational database, you'll likely have better luck with MongoDB.

CakePHP

What is CakePHP?

CakePHP is a web development framework written in PHP.

Why use CakePHP?

CakePHP provides a scaffold, or skeleton, for a PHP-based web application. It provides boiler-plate code for a number of typical application features, such as database connectivity, records editing, and user management — eliminating the need for developers to re-invent the wheel on every application. It provides rapid-development tools, package management, and deployment.

In short, CakePHP makes building web application faster and easier, and allows developers to focus on value-added new features.

Do I have to know PHP to use CakePHP?

Yes.

CakePHP is a web development framework, built on top of PHP. While Cake will significantly reduce the amount of code you have to write in order to build a web application, you will still need to understand and code in PHP in order to make any use of it.

Is CakePHP object oriented?

Yes. CakePHP is built using object-oriented design principles, and encourages OO programming. However, since PHP itself allows for non-object-oriented (or "functional") programming, it is possible to write non-OO code in a CakePHP application. However, the main structural elements of CakePHP cannot be accessed without writing Object Oriented code.

Is CakePHP service oriented?

Not specifically, but it can be used that way.

Service orientation is an architectural paradigm that operated on a "higher level" than the architecture provided by CakePHP. In a SOA ecosystem, individual chunks of functionality are deployed as semi-independent "services" which are accessed by one or more client applications.

CakePHP can be used to build SOA-style web services, which could then be accessed via a client such as a Javascript-based in-browser application, or other server-based applications.

To accomplish this, the View would need to provide output in a consumable data format, such as JSON or XML. There are PHP libraries and CakePHP modules to accomplish this easily.

Is CakePHP a MVC framework?

Yes. CakePHP follows the Model-View-Controller architectural paradigm in which application functionality is segregated into three major components:

  • Model — The data model, which defines how records are represented in the system, what attributes they may have, and their relationships with other records.
  • View — One or more interfaces for each model.
  • Controller — Application functionality as well as business logic.

Can I use CakePHP to build a website?

Yes, but depending on what type of website you are thinking of, you probably shouldn't.

Most websites are simply a way to deliver content to a visitor. If this is the kind of website you need to build, you are probably much better off using an established Content Management System, such as WordPress or Drupal.

Likewise, if you are trying to build an ecommerce site, a wiki, or a bulletin board site — there is plenty of good, already built software for running these types of websites.

CakePHP — and really any development framework — is best used for building new web applications, not for simply deploying a website.

Can I use CakePHP for web services?

Yes.

CakePHP uses Views to define interfaces. In a typical web application, these views would generate HTML pages to be viewed in a web browser. However, they can just as easily be set up to output a consumable data format like JSON or XML. This would allow client applications to access the application as a web service.

Can I use CakePHP on shared hosting?

Yes, but you may run into some configuration and set up problems if your hosting restricts your ability to change server settings and configuration.

CakePHP provides command line utilities (such as bake — a build routine) which requires ssh access. Also, you will need to be able to edit your .htaccess file.

Can I use CakePHP without PHP?

No.

CakePHP is a PHP-based web development framework. It greatly speeds up development tasks, and reduces the amount of code you have to write — but you still have to write some code.

Does CakePHP support Mongo?

Not directly, but there is an open source database driver for Mongo and Cake.

Does CakePHP support CouchDB?

Not directly, but there is a plugin to provide CouchDB support to CakePHP.

CodeIgniter

What is CodeIgniter?

CodeIgniter is a web application development framework written in PHP.

Why use CodeIgniter?

All web development frameworks aim to reduce the amount of code that a developer has to write, and speed the creation of new web applications. They do this by providing:

  • well-tested, cross-platform compatible components for universally-required application features, such as routing, object relationship mapping, and user management.
  • a skeleton app template
  • an architectural paradigm
  • a development philosophy

CodeIgniter is a light-weight framework that provides only essential features needed for building a web app. It provides an MVC architecture, and a tight collection of low-level utilities. Additional features can be added through plugins.

Do I have to know PHP to use CodeIgniter?

Of course! CodeIgniter is a PHP-based development framework for web applications. It isn't app in itself, but a tool for building apps. While it reduces the amount of work a developer has to do, it still requires a developer who understands (and can write in) PHP.

Is CodeIgniter object oriented?

Yes. CodeIgniter is 100% object oriented.

Is CodeIgniter service oriented?

No and yes — it could be.

Service orientation is a way of architecting a system. Each major piece of functionality or server interaction is separated into a semi-autonomous "service" which can be called by a third-party client application (usually a Javascript-powered webpage) over the web. The service returns data is a consumable format such as JSON or XML, as opposed to rendered HTML.

CodeIgniter can be used this way, to build web services, or it can be set up to generate browser-usable HTML on the server (or both). In either case, the interface will be defined in a View.

Is CodeIgniter a MVC framework?

Yes. In fact, the MVC architecture is almost the only thing that CodeIgniter provides "out of the box" — it is, intentionally, a "lightweight" framework that provides only the "essentials," and the developers of CodeIgniter consider the MVC architectural pattern to be the most essential element of all.

Can I use CodeIgniter to build a website?

You can, but there are better options available if all you are trying to do is publish a normal website.

Most websites fall into one of a handful of typical categories: blogs, CMS based, wikis, forums, ecommerce. If you need one of these types of standard websites, you don't need to build a whole new site on CodeIgniter — you can use one or another standard applications and content management systems like WordPress for a blog, Magento for an e-store, or bbPress for an online forum.

CodeIgniter is useful for building novel web applications.

Can I use CodeIgniter for web services?

Yes.

Building an application in a service-oriented manner requires two changes to the way most PHP web-apps are designed:

  • Application features needs to be segregated into discreet chunks of stateless functionality
  • The output of calls to these application services needs to be provided in a consumable format such as JSON or XML, as opposed to HTML pages.

The first issue is a matter of developer skill and planning. The second is a feature (or not) of an individual framework. CodeIgniter can be used to provide output in any format, including JSON and XML, as well as HTML.

Can I use CodeIgniter on shared hosting?

Yes. In fact, CodeIgniter is one of the few PHP frameworks to specifically to consider shared hosting limitations in its development philosophy. The core files for CodeIgniter are relatively small and require no special configuration to use.

Can I use CodeIgniter without PHP?

No. CodeIgniter allows a developer to write less code, and to write code faster — but it still requires code, and that code must be PHP.

Is CodeIgniter better than Zend?

Neither is better in absolute terms, but each may be better in different situations.

Zend is a more fully-featured framework, providing more tools and utilities in the core. This is probably better for large, complicated enterprise apps — but it comes at the price of more bulk and the potential for problems on shared hosting. It also has a large learning curve, because it can do so much.

CodeIgniter is specifically designed to be small and lightweight, providing only the essential features. It is easy to learn, too. This makes it ideal for smaller projects, apps that need to be hosted on shared hosting, and rapid development work.

Is CodeIgniter better than Laravel?

Laravel and CodeIgniter are somewhat similar in that they are both MVC-based PHP web development frameworks. But their development is guided by two different philosophies.

Laravel is an all-inclusive framework. It includes a large number of components, as well as a command line interface for rapid development and a package management system.

CodeIgniter has, by design, a smaller set of features. It is deliberately lightweight.

Fewer features and tools makes CodeIgniter, in some ways, a less powerful framework, but it does provide some advantages. CodeIgniter is easier to learn. It takes up less storage and memory. It can be more easily deployed on shared hosting.

Can I use CodeIgniter with Mongo?

Yes. CodeIgniter doesn't directly support Mongo, but there are third-party libraries that provide Mongo support in CodeIgniter. You can also simply use the standard PHP driver provided by Mongo.

Does CodeIgniter support CouchDB?

Not directly, but it is easy to access Couch directly with PHP.

Django

What is Django?

Django is a web application development framework written in Python.

Why use Django?

This question requires answering three different questions:

  • Why use a framework (instead of building from scratch)?
  • Why use Python (instead of another language like PHP or Ruby)?
  • Why use Django (instead of a different Python framework)?

A framework speeds up application development by eliminating the need to implement common application features over and over. Additionally, many frameworks provide an architectural pattern, such as the popular MVC pattern, which helps developers organize their application code.

Using a framework means less code to write, and less code to test. It gets you into writing new functionality right away, rather than low level development tasks.

While using a framework for development should be a no-brainer, you still have a lot of choices for development languages.

Python does not get as much attention as PHP and Ruby, but it is a great language. It is highly readable, easy to learn, and has a wide range of tools and an excellent standard library.

Perhaps one of the best reasons to use Python is that, as compared to other high-level interpreted languages (like PHP and Ruby) is has great tools for math, science, music, and other sorts of analysis and data processing. For web applications in one of those domains, it is probably the best choice.

If you're going to build a web application in Python, Django should be the first framework you look at. It is the most popular framework for Python, providing a number of tools for rapid web development. Python provides a CLI (command line interface) which automates a number of development tasks. It has a very strong DRY (don't repeat yourself) philosophy, and it is very well documented.

Do I have to know Python to use Django?

Yes. Django is a web development framework for Python — you have to be able to write Python to make use of it.

Is Django object oriented?

Yes. Python itself is fully object-oriented, though it doesn't enforce all of the concepts of object-oriented. (For example, if a programmer wants to write code that can access an object's variables directly, Python will allow that. On the other hand, a Python developer can just as easily write classes that follow all conventional OOP practices.)

Core features of Django are provided in various classes which are then extended by the developer. For example, there is a Model class which is then extended into child classes by the developer for each type of record.

Is Django service oriented?

It can be, but it does not have to be.

The key to building a service oriented web application is to package discreet sets of functionality into RESTful services. From a Django perspective, this entails the creation of specific views that can be accessed via HTTP class and which return data in a usable format such as JSON.

This can be built from scratch in Django, but there is a lot of "boilerplate" involved, so a better solution would be to use something like the Django REST Framework.

Is Django an MVC framework?

Yes.

MVC, or Model View Controller, is an architectural paradigm in which application code is organized into three major sets of components:

  • Models — which handle the data model for the various types of records handled by the application. Each model defines one record type (such as Person or Post), and all of its associations and attributes.
  • Views — A View represents a particular interface to a Model. Each Model has at least one View, but may have more: for example, in a blogging application the way a Post appears when it is by itself on a single page may be one View, while the way it appears in a list of posts on an index page is another View.
  • Controllers — Controllers handle application functionality, business logic, routing, and other tasks. For example, if a blogging application is going to send a Tweet every time a new post is published, this functionality would be built into a Controller (perhaps the TweetPost controller, which is called by the Publish controller).

Django includes Model, View, and Controller classes, and most of the development task involved extending these into new child classes that define app functionality. For example, building a blogging application would involve extending the Model class into a Post class, extending the View class into Single and Index classes, and one or more Controller child classes to handle things like automation, social sharing, and syndication.

Can I use Django to build a website?

Yes.

Django is an application development framework, not a content management system. This means that, by itself, Django does not provide everything you need to launch a basic content-driven website without doing a bit of development — development which would really be overkill for most standard website projects (in terms of reinventing the wheel).

However, there is a Content Management System built in Django, called django CMS. This is a good option for a content-focused website that also will need custom functionality that would benefit from Django and Python.

Can I use Django for web services?

Yes, by using the Django REST Framework.

Can I use Django on shared hosting?

Yes, but many developers have run into frustrations with the limitations of shared hosting, particularly the difficulty of changing server configurations. Still, it is possible. To make sure you start off on the right foot, use our comparison search tool to find web hosting companies that specifically support Django.

Can I use Django without Python?

No. Django is built in Python and developers must use Python to build apps on top of it.

Can I use Django with Mongo?

Yes. The easiest way to implement this is to use the Django MongoDB Engine.

Does Django support CouchDB?

Not natively, but there are some libraries and utilities to support it, although none of them are as mature and well-supported as support for MongoDB.

Are there any other good Python frameworks?

There are two other popular web development frameworks for Python are:

But Django is by far the most popular.

node.js

Can Javascript be used server-side?

Yes.

Javascript was originally created as an in-browser scripting language. Now, with Node.js, it can be used server-side as well.

What is node.js?

Node.js is a server-side Javascript application platform built on top of the Chrome Javascript runtime.

Is Node.js an application development framework?

Not exactly. Node.js provides the ability to run Javascript applications on a server, but it does not — by itself — provide the kind of architectural support or boilerplate application code that is typically associated with a development framework.

Are there application development frameworks that can be used with Node.js?

Yes, several:

  • Low-level frameworks include:
    • Express.js is a minimalist framework that provides the tools needed to build for web application development. It is the de facto standard web framework for Node.js, but it doesn't provide much in the way of an application skeleton.
    • Socket.io — a "real-time" framework enables two-way communication between a client application and a server application.
  • MVC application frameworks include:

Is node.js event driven?

Yes. Javascript itself is event-driven, so Node.Js is as well.

Is node.js a MVC framework?

No. Node.js is application platform, not a framework. There are, however, several application development frameworks that have been built on top of it. (See above.)

Is node.js service oriented?

No. Node.js is not, itself, an application. You can use it, however, to build servce-oriented applications.

Can I use node.js to build a web site?

That's probably a bad idea.

How to build an app with node.js?

Most developers building on top of Node.js use one or more frameworks to speed development.

Can I use node.js on shared hosting?

Generally, no. Node.js is a fairly low-level utility, and runs its own web server. No shared hosting providers (that we know of) offer the type of access and configuration control needed to run Node.js.

If you want to build a Node.js application, you will be much better off using a VPS hosting plan.

Can I use node.js on Linux?

Yes.

Can I run node.js locally?

Yes.

Can I run node.js on Windows?

Yes.

Can I run node.js on Mac?

Yes.

Ruby on Rails

What is Ruby on Rails?

Ruby on Rails is a web application development framework written in Ruby.

Why use Ruby on Rails?

Rails provides a number of benefits.

Like any web application framework, Rails provides a lot of boilerplate functionality. You don't have to write classes to get your app to talk to a database — Ruby on Rails handles that for you. Even better, Ruby abstracts database connectivity to that you can use it with any database — MySQL, PostgreSQL, SQLite — without having to worry about the differences between their various implementations.

Rails provides an structural skeleton in the form a Model-View-Controller architecture. When you sit down to write a Rails app, it is clear where things should go and which things should be done first:

  • You want to define how data is stored or how to types of records relate to each other? That's in the model.
  • You want to define how data is displayed on a page? That's a view.
  • Trigger an action when a new post is published? Controller.

Because Rails is built on Ruby, it has access to the Ruby Gems system, which provides a very easy-to-use solution to dependency management. The Gem system automatically detects which packages you need and installs them for you. It also provides a fairly extensive ecosystem of third-party, open source plugins.

Rails features scaffolding, or automated code generation. You can quickly sketch out the rough elements of your application very quickly using the command line tool. Tell Rails that you want to keep a record of an asset called a Post, and with a single command you've a Post Model, a Post View, a Post Controller, an index of Posts, and URL routing. It speeds things up quit a bit.

Finally, Rails encourages Test Driven Development (TDD) with a well-integrated, built-in unit testing suite (and support for other unit testing frameworks besides the default).

Do I have to know Ruby to use Ruby on Rails?

Yes. Ruby on Rails is built in Ruby and code written to build features on top of it is in Ruby.

However, because Ruby on Rails is relatively easy to use and is very popular, it is possible to learn to write Ruby code while learning to use the Ruby on Rails framework.

The most popular, and perhaps the best, Ruby on Rails tutorial — which also teaches basic Ruby programming — was created by Michael Hartl.

Is Ruby on Rails object oriented?

Yes, because Ruby itself is object oriented.

Is Ruby on Rails service oriented?

It can be, and it lends itself well to that type of architecture.

Rails provides a RESTful interface to each of the data models created in an application. CRUD (Create, Read, Update, Destroy) operations are all handled via HTTP requests. Output from these requests (usually some representation of the asset in question) is handled via Views, which — by default — are HTML templates written in Embedded Ruby.

To turn these operations into discreet web services, all that is needed is to provide output in a consumable data format such as JSON or XML. Ruby Gems (plugins) exist already to handle this.

Many developers use Ruby on Rails this way, and build their client-side application in the browser using Javascript tools such as Angular.js.

Is Ruby on Rails an MVC framework?

Yes. Ruby on Rails follows the Model View Controller architectural pattern.

Can I use Ruby on Rails to build a website?

Yes, but it would require quite a bit of development work that might not be called for if all you are doing is launching a basic, content driven website.

If you want to use Rails to power a mostly standard content site (because, for example, you plan to add on additional content features), you can use one of many Rails-based Content Management Systems, such as:

Can I use Ruby on Rails on shared hosting?

In theory, yes. Several shared hosting providers claim to support Ruby on Rails. However, they tend not to be well suited to running the framework. Rails requires the Ruby Gems package management system, which automatically installs and update any required dependencies. The permissions in place on most shared hosting plans makes this system awkward at best

Most people who are running Ruby on Rails applications have a much better experience on VPS hosting where thet have complete control over the environment.

Can I use Ruby on Rails with Mongo?

Yes, but Rails does not support MongoDB "out of the box" — you need third-party support for it. There three Ruby gems which provide Mongo support for Rails. (You only need one of them.)

Does Ruby on Rails support CouchDB?

Not by default, but you can use CouchDB with Ruby on Rails by importing the CouchRest Gem.

Databases

SQL

What is SQL?

SQL is the Structured Query Language. It is a language used to interact with relational databases systems (RDBMS).

While there are other query languages, SQL is the most widely used (by a long shot), and is the de facto standard relational query language. Because of that, it is common to use "SQL" to refer to the type of database (relational) rather than just the language itself.

What is a relational database system?

In a relational database, information is stored in tables, according to a well-defined data structure.

Each type of record has its own table. For example, you would expect a database for an online store to have a table for products and a table for customers (among many others).

These tables relate to each other, usually by way of additional tables. In our online store example, you would also assume there would be a table for orders, and that items in the Orders table would refer to items in the Products and Customers tables.

MariaDB

What is MariaDB?

MariaDB is an Open Source, relational database management system (RDBMS) that uses the SQL. It was originally a fork of the popular MySQL database, and is a "drop-in" replacement for it.

Is MariaDB better than MySQL?

That's the idea.

MariaDB has a number of enhancements which make it faster than MySQL, it supports more database storage engines, and has many new features not found in MySQL, such as:

  • Microsecond precision in datatime fields
  • Virtual columns
  • Extended User statistics

Moreover (and this was, in large part, the original impetus for MariaDB) — MariaDB is developed and released under a more permissive Open Source license than MySQL is. While MySQL is Open Source, it has a number of closed-source, proprietary modules only available in the "Enterprise" edition from Oracle. MariaDB provides all the features of the Enterprise edition in a permissive Open Source license.

How to convert from MySQL to MariaDB?

You will need to export your database schema and content form MySQL. Then you should simply need to install MariaDB, import the database, and keep running. MariaDB is a fully-compatible drop-in replacement for MySQL.

Why use MariaDB?

Most people who switch to MariaDB from MySQL do so because it is faster. This is especially important if you have a site with a lot of users and need a high-availability system.

Some developers want access to the additional features MariaDB provides, or need the features of MySQL Enterprise, but don't want to have to pay for proprietary software.

Finally, some developers and sysadmins prefer to use MariaDB over MySQL because, for philosophical reasons, they prefer to use fully open source software.

Is MariaDB free?

Yes. MariaDB is free and open source software and can be used by anyone, for any purpose, without having to pay a licensing fee. You are also free to modify the software as you see fit.

Can I install MariaDB on shared hosting?

In theory, yes. But you may have problems installing with automated installers if (for example) you want to use MariaDB with WordPress, since the installer will set up a MySQL database by default.

To ensure the best experience, use our web hosting features comparison tool to find a provider that specifically supports MariaDB.

Can I run MariaDB on Windows?

Yes. MariaDB runs on Windows, and there are installers for setting it up easily.

Can I run MariaDB on Linux?

Yes, MariaDB runs on Linux.

MySQL

What is MySQL?

MySQL is the most popular open source relational database system in the world. It is the default database for hundreds of popular open source web applications, including:

  • WordPress
  • Drupal
  • Magento
  • MediaWiki
  • Zen Cart

MySQL is the "M" in the popular LAMP development stack (Linux, Apache, MySQL, PHP).

How to setup MySQL database on shared hosting?

Most of the time, shared hosting users won't need to worry about setting up a MySQL database. This is because the most common web applications and Content Management Systems — everything from WordPress and Drupal to Magento and MediaWiki — can be set up automatically with a one click installer like Simple Scripts or Fantastico.

When you use these installer programs to set up your website, it automatically creates a database for you, and handles the connection. You hardly have to think about it.

If you do need to set up your database on your own, most shared hosting providers have phpMyAdmin, which lets you easily manage MySQL databases. This is usually accessible from the web hosting control panel.

How to manage MySQL database?

If you are comfortable with the command line and SQL, you can login into your hosting server with SSH and manage it from there.

Otherwise, you can use phpMyAdmin, which is most likely available from your hosting control panel.

How to manage MySQL database?

The most popular tool for managing MySQL databases is phpMyAdmin. It is available in most shared hosting plans.

PostgreSQL

What is PostgreSQL?

PostgreSQL is an advanced, standards compliant object-relational database system.

Is MySQL better than PostgreSQL?

Well, they're different.

The big draw for PostgreSQL is that it has advanced features and is (more) standards compliant than MySQL.

On the other hand, MySQL tends to be faster.

For new development, you will need to balance these benefits against each other.

For existing web applications (installing WordPress on your shared hosting server) — you don't have the option. You need to use the database that works with the app you want to use. They cannot be easily swapped out.

Is MariaDB better than PostgreSQL?

MariaDB provides many (not all) of the additional features that PostgreSQL offers but which MySQL leaves out. On top of that, MariaDB is much faster.

How to convert from MySQL to PostgreSQL?

For most applications, this is not recommended. You cannot simply swap out different database management systems.

Why use PostgreSQL?

PostgreSQL is a good choice for new development if you need a standards-compliant object-relational database that supports transactions.

Is PostgreSQL free?

Yes. PostgreSQL is free and open source software.

Can I install PostgreSQL on shared hosting?

Most shared hosting providers include it as an option. To make sure you find one, use our hosting features comparison tool to look for providers that offer PostgreSQL.

Can I run PostgreSQL on Windows?

Yes.

Can I run PostgreSQL on Linux?

Yes.

Can I run PostgreSQL on Mac?

Yes.

SQLite

What is SQLite?

SQLite is a SQL-based relational database management system. It is unique in that it isn't an application that runs on system. Rather, it is a library that is included into another application. It is very light weight.

Is SQLite a real database?

Yes.

Some people disparagingly refer to SQLite as a "toy" database, or treat it as if it is a low-powered database useful for students and amateurs, but not adequate for "real" applications.

This is nonsense, really.

SQLite isn't a simplified version of MySQL — it is a wholly different type of tool.

Why use SQLite?

SQLite is a good choice when you need storage within an application, and you want to use SQL relational conventions, but you don't need an actual database management system.

One example of this is using SQLite databases as document storage. SQLite saves its database to a file. For complex file types (audio or video mixing projects, for example) it might make sense for a single project/document to be a complete database.

IF you wanted to create that type of functionality using MySQL, you would have to make customer or end users set up a the database system. There would be a new MySQL database — with users, connection credentials, database schema, and all the attendant overhead — for each project.

With SQLite, an application can store data using SQL's relational data formatting, but without the overhead of a second database application.

Why does Ruby on Rails use SQLite?

Ruby on Rails is a rapid development framework, that supports several different database systems through a database abstraction layer (Active Record).

Rails uses SQLite for a variety of reasons, but perhaps the biggest one is that it makes it easy to start building something right away, and it makes Rails completely self-contained.

You can, though, setup a regular database management application with Rails. The most common is PostgreSQL.

NoSQL Databases

What is a NoSQL database?

A NoSQL database is a non-relational database.

While there are relational databases that do not use SQL (very few, but they exist), the strong association of SQL with relational database systems has meant that all of the new generation of non-relational database systems have been dubbed "NoSQL."

NoSQL databases usually don't use tables. Rather they store data assets in some other way — for example as objects, or documents. Some NoSQL databases are strictly key-value stores.

Is a NoSQL database better than a SQL database?

They're different.

Relational databases are designed to implement a very structured and regimented philosophy of data storage. In a SQL database paradigm:

  • The data model (what is to stored and how data relates to other data) is well-defined ahead of time.
  • Any piece of knowledge has a single-source of truth.
  • Records are related via reference — because of single-source of truth, data is never copied into multiple locations within the database
  • Database transactions are ACID:
    • Atomic
    • Consistent
    • Isolated
    • Durable

Relational database theory is well developed, and well implemented in the most popular SQL database management systems.

However, there are downside to so much consistency and perfection. It requires a lot of overhead — processing power and memory. It can also be complicated to develop and design application that make full use of the features of a fully-mature database system. There's also the problem of inflexibility — it can be difficult to change the data model once the application has been running and data has been stored.

NoSQL databases give up one or more of the "ideals" of relational databases in order to achieve some other benefit. This doesn't make either one better than the other — it just makes them suited for different types of applications.

MongoDB

What is MongoDB?

MongoDB is an open source NoSQL database. It is probably the most popular non-relational database available.

It uses a document-oriented paradigm. This means that each record in a Monggo database is a document, with all the stored information on it. For example — if Mongo were used in a blog application, each blog post would be a document in the Posts collection. Moreover, two different documents written by the same author would each store the name of the author independently. This is different than the SQL way of doing things, where each record would refer to a separate table that stores the author's information.

MongoDB documents are written and stored in a verison of JSON, which is Javascript based. This makes it relatively easy to use Mongo with a client-side application written in Javascript. If combined with Node.js, the entire application can be Javascript-based.

Can I install MongoDB on shared hosting?

In theory, yes — but most people who attempt to do so end up having bad experiences. You are better of using a VPS hosting plan.

Can I use MongoDB with PHP?

Yes. MongoDB is supported in PHP, and there are also tools for integrating Mongo into some of the more popular PHP frameworks and content management solutions, including:

  • Drupal
  • Laravel
  • Drupal
  • CodeIgniter

For a full list of PHP tools for Mongo, see the Mongo documentation.

Why use MongoDB?

MongoDB is often seen as a good option where an application needs a flexible data scheme — that is, where each record has the potential to have a completely different data structure than every other record.