I have put together a few web pages (html,css,jQuery) but am very new to Web Development. I have only done front-end design. I am comfortable with Linux but don't know Apache or MySQL but am in the process of learning Rails as my framework. Will learning Rails be better then learning a LAMP stack for getting a website online? Or am I comparing apples and oranges? And what would be some different hosting options for each?
I'd say the stack to learn depends on what you want. Basically, the best bet for a job anywhere is knowing LAMP plus frontend (which you already can). I think rails/ruby is prolly going to be harder but if thats what you like then go for it :) As far as apache goes if you just want a job as a developer basically all you need to know is mod_rewrite aka regex, and some really basic other stuff like virtualhosts, etc that you can learn in a day. On the other hand SQL is going to be harder, learning "enough" shouldn't be a problem, but to know how to use joins,views,triggers,migrations , etc is something you should start on in tandem with your programming language. I know too many developers who don't concentrate enough on knowing/managing their data when this is always the heart of your application. As far as hosting goes, with LAMP you all you need is a nix machine somewhere, I'd suggest getting a linode (http://www.linode.com/). This also has the added bonus of great docs and you can try out and teach yourself everything on your own machine w/out crappy cpanel stuff.
Thanks! That's good to know about Apache. I haven't even had a chance to look into it thoroughly. Maybe I'll dive into it this weekend :) So if I want to get up and running quickly my best bet would be to grab a linode with a LAMP stack?
yep :) I'd suggest getting your linode with the distro you want, then going through one of these tutorials http://library.linode.com/lamp-guides. Also have a look at all the other docs on library.linode.com there really good and you can learn a lot.
Lastly, if you happen to decide to learn PHP instead of Ruby, I'd highly recommend starting out "the right way" with a framework like Symfony2 (http://symfony.com/) or Flow3 (http://flow.typo3.org/) that uses namespaces, good OOP techniques, ORM, and encourages / will teach good programming techniques. Also, have a look at composer (http://getcomposer.org/) - which is the modern PHP equivalent of Ruby Gems.
Choice of language is pretty much a matter of comfort when you're first learning. The question is, do you want to be using Ruby/Rails or PHP/Wordpress/Codeigniter/etc. If you're just learning, you're going to want to code in whatever language you choose.
I'd say use Ruby/Rails if you want to create webapps and PHP/etc if you want to create Wordpress sites.
Someone more experienced than me in these languages can comment further.
Heroku.com supports Ruby and from using it with Clojure and node.js apps, I highly suggest this route even if you enjoy setting up your own servers.
You can also use providers like Amazon EC2/Joyent/Rackspace and set up your own box to be either a LAMP stack or Ruby/Rails.
There is a long list of Databases to choose from these days, including: MySQL, PostgreSQL, Riak, CouchDB, MongoDB, Cassandra, etc.
Truly the answer you're looking for is "Just start somewhere". The amount of tech you can choose between is dizzying and you'll eventually get to a point where you can make your own decisions if you just keep hacking.
Thanks for the great reply to start. I clearly am a little over my head and am always looking for the "right direction" to go and end up getting caught up in buzzwords. I only have a few web pages that I need hosted, so frameworks aside...would hosting options such as linode or rackspace be the best option?
If you want to get into designer/developer mode for clients you are likely going to have to learn to host your own servers (note: I don't mean physically, I mean services like Rackspace, etc).
If they're a couple static (ie: no server-side language) pages that won't get hit very often, you might use github's pages functionality.
I'd go with Rackspace over linode due to the great feedback I've heard about Rackspace, whereas I've heard relatively little about linode.
Personally I use Heroku as they have a free tier that helps when just "getting stuff out there". The problem with Heroku is they don't have explicit support for PHP, so that could be an issue for you.
If you're going to go after big client work, Amazon Web Services (EC2) familiarity is a nice checkbox to tick.
Remember a server is just a computer. If you can set it up to run on your computer, you can set it up to run on a server.
P.S. Get used to being in over your head. It's the fastest way to get up to speed, just learn how to swim underwater.
I do want to be able to host my own servers..one day..as for now I think I will "just get this project out there". I think I've got enough Rails under my belt to get the few pages I need up, and Heroku's free-tier seems perfect to learn and practice on.
A LAMP stack will be easier to deploy simply because pretty much any cheap hosting you get as a playground will support it out of the box. Rails is a little more tricky to deploy. That said, Ruby and Rails is, in my opinion, more fun than an equivalent in PHP (pure opinion though so don't let that colour your experience).
I would suggest taking one bite at a time - find the easiest deployment possible for your chosen stack (if it's rails, then deploy some test projects to heroku). Learn to program a little before trying to jump in and do the Apache setup etc. Nothing is more frustrating than wanting to see your creation on-line but you just keep hitting your head against a brick wall because you can't deploy. I'll also put in a good word for webfaction for good cheap hosting that supports rails, django, and php very nicely without you having to do a lot of server admin - perfect for a playground.
I second that, if you're new to Rails you should definitely check out deployment with Heroku, they made an awesome job making it really smooth and they have great documentation on how to do it. Michael Hartl covers this exceptionally well on this section of his book: http://ruby.railstutorial.org/ruby-on-rails-tutorial-book#se...
I definitely am enjoying Heroku's free-tier to test and practice on. And I have gone through a good bit of Michael Hartl's tutorial, at least enough to get up and running. I do like being able see my end result immediately with little setup..for now at least. I'll be sure to check out Webfaction. Thanks!
I would just begin to expand on your back-end skills. Since you have HTML/CSS/JQUERY under your belt. Continue to work on those, and also begin with a database (MySQL works fine), once you learn basic database-ing, then begin working on the controlling logic between the two. I would recommend PHP only because it's a quick language to learn and get busy with. This gives you a solid set of skills and a good view of the process. From there you can begin to enhance what you do with the two.
Nothing needs to be super-advanced, get down and dirty and learn quickly; more advanced work will come with time. As biscarch said 'just start somewhere'.
Yeah, LAMP seems to be the best route to get up and going faster, I think I'll start with that. I need to be learning those DB and process skills to begin with, which makes taking the LAMP approach probably the best option. Thanks.
You have to decide what kind of developer you want to be. A hobbyist would probably go with the most out of the box stuff, so would use something like rails. You could be a specialist developer who only knows one framework and language. Or if you want to be a total pro you will want to learn all the frameworks because you are very adverse to your coworkers knowing anything you don't.
I completely agree and I do want to be a total pro but am too spread out. I need to start focusing on certain aspects...maybe learn the ins-and-outs of a complete framework?..like Rails while continually learning more and more in-depth HTML, CSS, and JS? I guess my aim is to be a full-stack developer but am struggling finding my footing on the server-side of things.