Pre-installed Linux for Web Developers? [closed] - php

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
Does anybody know an ISO image of a up-to-date Linux distribution aimed at web developers with one, some or all of the following features:
LAMP stack readily set up (Readily installed Apache 2, virtual sites directory structure (hosting), PHP installed, mySQL installed)
Ruby/RoR set up for a beginner to start with
Subversion set up for multiple repositories
Firewall configured for functioning as a web server (Port 80 open, not much else)
Python and Trac installed and integrated with Apache (Multi-environment capable)
Background:
I have a powerful new workstation and would like to set up a number of virtual machines for testing, development and version control, preferably on Linux. The machines will not be exposed to the public.
I would like to save as much installation and set up work as possible - setting up everything from the above list would cost me weeks if I'd do it alone.
Bounty
I have had to put this on the shelf for the time being due to other, more pressing projects. The suggestions made are already a brilliant list; I'm putting a bounty on the question to try and gather as much input as possible, so this can be the reference question on the issue for future generations.
I will be awarding the bounty either based on popular vote or on a whim, from what looks the best solution to me.

Seriously, I think the best thing to do is create your own. Some people for example use Redmine instead of Trac. Finding a pre-configured VM with these specific installations is going to be difficult.
So, having the "create your own" as a precondition, I believe you have the following options:
Use a a "VM Aware" distro
Ubuntu Server comes to mind: it has an option to install a minimal installation specific to VMs.
Download the server ISO image, boot from it, press F4 on the first screen and select "Install a minimal virtual machine".
Less than 380MB installed footprint
Specialized server Kernel (-virtual)
Optimised for VMWare ESX, VMWare Server and KVM Intel or AMD x86 architecture
Minimum memory 128MB
No graphical environment preloaded as it is aimed at server virtual appliance
IMHO, you're going to spend at most a day configuring your VM to your tastes, not weeks. Using apt-get is going to save you some time in almost all packages in your feature list.
...and if you want even more customization, you can even try to use vmbuilder.
vmbuilder is a script that automates
the process of creating a ready to use
VM based on Ubuntu. There is no need
for a JeOS CD image. The currently
supported hypervisors are KVM, Xen and
VMware.
Use a well known distro and "strip it down"
Install a minimal Debian system and strip down some features, or create a small live image and use it.
Use Linux From Scratch (LFS) and build a system only with essential software
This is the most difficult one and you're going to spend a lot of time.
But you'll be able to have a really small distribution and understand how a Linux system really works. Understanding how everything works you can install just what is needed in your setup, and use lighter binaries like Busybox.
There's an old project called Debian From Scratch (last update is from 2006, so I don't know if it's reliable) that aims to do the same LFS does but using Debian.
(...) is a unique distribution that
allows you to install a Debian system
with almost the same level of control
as what you would get with a Linux
From Scratch installation but with the
Debian advantages (easy to update and
maintain).
You just want a Damn Small Linux out-of-box solution
Well, you can try Damn Small Linux, it's only 50mb and Debian Based and I believe it's the most famous minimal distribution (you can check more distros in this list). I just don't know how it would perform in a Web Server Development scenario.
Final advice
To all situations above, after configuring, save your VM as a default one for future use. Or better, use snapshots, each one with minor differences you may have with your installation (beware though that controlling too many snapshots may be a little cumbersome).
"I don't want to configure my own"
If for some reason you didn't like my approaches or don't have too much time to follow my advice ("create your own VM") you can check this question on ServerFault. There's a list for a bunch of appliances from different distros.
...but if you're going to test a bunch of them, to see if they fit your needs, why not just use the time spent with them creating your own?
Icing on the cake: use Vagrant to manage your vms.
Vagrant is a tool for building and distributing virtualized
development environments.
By providing automated creation and provisioning of virtual machines
using Oracle’s VirtualBox, Vagrant provides the tools to create and
configure lightweight, reproducible, and portable virtual
environments.
This means Vagrant helps you automating a lot of things you usually do when creating a new VM (these features are from the official website):
Automated virtual machine creation using Oracle’s VirtualBox
Automated provisioning of virtual environments using Chef, Puppet, or just shell scripts!
Full SSH access to created environments
Assign a static IP to your VM, accessible from your machine
Forward ports to the host machine
Shared folders allows you to continue using your own editor
Package environments into distributable boxes
Completely tear down environment when you’re done
Easily rebuild a complete environment with a single command
I would create a vm with the same configuration (well, almost the same) as my production server, so some platform problems would not appear just when deploying.

Set up a Debian or Ubuntu Server Edition. Easy to set up, and it takes one day to install/configure everything that you listed above with tutorials, even if you are beginner, and nothing is buggy.

That's a very specific list! A quick exercising of my Google-fu leads me to Noys, which has the following software pre-installed.
Apache 2.2
MySQL 5.0
MySQL Administrator
MySQL Query Browser
PHP 5.2 with some important extensions (PDO, MySQL, PEAR)
XDebug
NetBeans 6.5
Subversion with Nautilus integration
Firefox 3.0.7 with some great extensions (Firebug, Web Developer Toolbar, Greasemonkey)
gFTP
GIMP 2.6
Any distribution with a decent package manager should take care of a lot of the grunt work for you though.

Try searching in the VMWare appliances directory. Choose 'Operating Systems' and search for 'LAMP'

I don't know of one. I would suggest building your own distribution or image. If you do, please distribute it.

You may want to try turnkeylinux. They have all the images you need from LAMP stack to ROR.

Why don't you use one of the BitNami stacks depending on the specs of the project? It seems to be a waste of resources to install everything on one VM (unless you really need everything all the time).
http://bitnami.org/stack/
Personally, I would create a VM with an Ubuntu (or Debian) server install, and just apt-get the necessary packages needed for the project. If you have problems installing a full LAMP stack have a look at the tutorials on HowToForge. Installing most projects - with standard configs - is really not that hard.
BTW "Subversion setup for multiple repositories" - you can create as much repositories as you want using svnadmin, the only thing you have to do is install subversion itself (apt-get install subversion), and configure your repo's once you created them.

There is one that I know of called Excelixis 1.0 (previously Workbench linux). Check it here:-
http://excelixis.wordpress.com/excelixis-details/
It is based on Ubuntu 8.04, and the ISO developer seems to suggest that with the next Ubuntu LTS (10.04), there could be an update for it.
It has the following preinstalled:-
Development
* GCC, G77, Sun JDK, FPC, Python
* Eclipse (+ All Callisto Repository Plugins)
* NetBeans 6
* Monodevelop
* Anjuta
* Glade
* Gambas 2
* Lazarus
* wxGlade
Web Design & Development
* Apache, PHP, MySQL Servers (XAMPP)
* Kompozer
* Bluefish
* gPHPEdit
* Cssed Editor
Development Utilities
* SVN WorkBench
* Geany
* PoEdit
* HexEditor
* ManEdit
* Umbrello UML Modeler
* regExxer (advanced search & replace tool)
Graphics
* GIMP
* Inkscape
Network
* Firefox Web Browser
* Thunderbird Mail/News Client
* Filezilla FTP Client
* Transmission Bittorrent Client
* Wireshark Packet Sniffer
* Pidgin Instant Messenger

Turnkey linux is a solution ;)
http://www.turnkeylinux.org/

As I know no bounds there, I just bugged my provider. He sent me his servers apt.list and package selection (Debian Linux). Additionally I got a stripped down Apache httpd.conf, so I could set up a near-100% emulation of my actual webserver.
That's not a turnkey solution, but quite useful if you want to test deploy things. Though I used that rarely, and ooops IIRC it was on the stolen laptop..

You may want to checkout our project, BitNami You can get either individual virtual machines or installers for Trac, LAMP, MySQL, Rails, etc. The beauty of it (apart from being free) is that you can mix and match the installers via the module system and build your perfect environment (aka "stack"). The stacks are self-contained, so when you don't need them you can simply uninstall them. You can keep multiple stacks around simultaneously and they won't interfere with each other

I'm not aware of one which specifically meets these requirements, however I have experimented with PCLinux OS bootable CDs where you can extensively customize the system after starting it up (installing direct from the internet with easy to use tools) - I'm not sure if it directly supports saving the resulting image, but if you were to run it within vmware then snapshotting the system is a no-brainer.
If you wanted to create your own image (e'g' if you needed to redistribute a natively bootable image) then I'd suggest you have a look at puppy linux - which is very easy to customize.
C.

Take a look at eBox and it's features

Am not aware of whether it is available !
Actually as per the above answers, most probably it is not available. A team can be formed to do this..
The requirement has to improvised, and team can work on that, and release it as a open source..
What do you guys feel ? ( i would be happy to be a part of that team. )

You said you were looking for virtual machines so I looked around the VMWare appliances and found two you might be interested in
http://www.vmware.com/appliances/directory/289
Trac
Python
Subversion (Client and server components)
Apache web server
PostgreSQL
MySQL
SQLite
The underlying operating system is OpenBSD.
ruby18-base-1.8.4nb1 Ruby 1.8 based release minimum package
ruby18-subversion-1.3.0nb3 Ruby bindings for Subversion
Only thing this is missing is PHP and Ruby on Rails which shouldn't be to hard to install on your own.
http://www.vmware.com/appliances/directory/134
Apache2 (2.0.54)
PHP (4.4.0)
MySQL (4.1.12)
PostgreSQL (8.1.2-1)
phpPgAdmin (3.5.6)
Ruby 1.8.4
Ruby on Rails (1.1.2)
They both seem to contain most but not all of what your looking for.
This last link seems to have Ruby and php but I'm not sure what else. Not going to check a torrent site a work lol.
http://www.kickasstorrents.com/ubuntu-php-ruby-on-rails-django-web-development-vmware-appliance-t3040351.html
Hope this helps

How about this one?
http://lamppix.tinowagner.com/

SuseStudio.com
Build an appliance — or your own custom Linux distro — with a few mouse clicks. Customize it to your heart's content, and share it with the world!
SUSE Studio is an online Linux image
creation tool by Novell. Users can
develop their own Linux OS, software
appliance or virtual appliance, mainly
choosing which applications and
packages they want on their "custom"
Linux and how it looks. In addition,
they can choose between openSUSE, SUSE
Linux Enterprise Server and SUSE Linux
Enterprise Desktop bases, GNOME and
KDE desktops, and a plethora of other
features. The user can create a fully
functional system with Firefox, 3D
graphics, and whatever apps he or she
can find installed. SUSE Studio is
what powered the fan-made "Chrome OS",
which was a semi-stripped-down system
loaded with the developers' version of
Google Chrome, Google web application
links, and OpenOffice.

Not exactly fitting your question, but maybe still what you were asking for:
You can create linux servers that perfectly fit your needs with a graphical user interface called PuPHPet.com. This let's you choose everything, from PHP version to mysql password, phpmyadmin, packages, etc.
The resulting config file can be used to setup a real server (see the page) within minutes and one click or create a local virtual machine with exactly these settings automatically via Vagrant (which is a technology that creates virtual machines from little config files that you create for example with puphpet.com).
I've written an extremely detailed tutorial on this.
Even if you are totally new to PuPHPet and Vagrant, you'll be able to setup professional (!) linux servers.
How to setup a (or multiple) server/LAMP-stack inside a virtual machine for local development with Vagrant and PuPHPet

Clinker
It touches every aspect of software development and they call themselves a Software Development Ecosystem.
It includes;
Repositories (Git + SVN)
Continous Integration (Jenkins)
Source Code Inspection (Sonar)
Repository Management (Nexus)
Project Management (Trac + Redmine)
Deployment Environment (Jelastic + Engine Yard + Heroku)
They have both a hosted solution and a free of charge installation package.

Use Puphet Gui tool its perfect for linux web developers with customization settings you can just select the packages ,it creates bundle on ur environment and u can just execute it .It creates virtual machine and install all the packages into this machine.
Handy:
https://puphpet.com/

Related

VirtualBox Ubuntu LAMP Stack development, with SVN and CruiseControl/phpUnderControl?

I've got a Windows 7 machine upon which I do both PHP/MySql Dev, and .NET/C#/Sql Server coding. Due to a recent re-install, I thought it might be an ideal time to try and keep my machine a bit cleaner rather than install both Apache and IIS, etc.
I installed VirtualBox, with Ubuntu 10.04 as the guest OS, with the plan to move my PHP development from my old Windows/Apache/MySql platform onto this virtual image. In addition to this, I want to add CruiseControl/phpUnderControl to my PHP development process.
So far I've got Ubuntu 10.04 installed with a LAMP stack, plus Netbeans for PHP, MySQL Workbench, etc, which is effectively the same as my old Windows dev set up, but I've now also installed SVN and CruiseControl (I've not installed phpUnderControl yet, but that is the next step).
My question is, can I use this virtual image as both my "local" development environment and as a build server, so that I don't need to clutter my native windows machine with MySql/PHP related software (meaning I can keep it nice and clean for .NET development)?
I imagine I'd need the virtual webserver to be able to serve both a "local" dev version of any given project I'm working on, as well as a staging version, which would build using cruisecontrol/svn commits?
Or should I separate my dev and build servers, perhaps keep the local development in windows, and only use the virtual image for the build server? or perhaps have two separate virtual machines for different purposes?
I'd appreciate some advice on the best way to set this up. One of the projects I want to work on is quite complex so I want to make sure I get this up in the right way before I start the project, so that I can ensure the project is well maintained with versioning, unit tests and continuous integration, should I ever need to involve other developers on the project.
If you are looking to keep your Windows box clean of MySQL/PHP tools then I'd strongly recommend the two VM approach. One desktop linux distribution for development with LAMP etc on it for the quick code/debug turnaround and one that mirrors your real server install (with the addition of svn etc) for your test builds.
This gives you huge benefits for both having a nice dev environment and more importantly having a test server that will reflect operation of your code on the live server. This way you can keep your dev environment VM up to date with the latest updates for the distribution (kernel, tools, etc) and hold the build VM at whatever application versions are on the live machine. This takes a lot of the guesswork out of "is it the new version of library X or my code?".
If you want to go slightly overkill you'd actually want 3. One for dev, one for SVN/continuous integration and one that exactly mirrors your server so you can test deployment/system configuration.
If you are considering having your VM for dev why not set it up exactly as you would setup your staging/production environment?
Furthermore you can setup your VM to host the code repository, and the web server, and then connect your tools that are local to your host machine (Windows). That way you can develop on your Windows box, connected to the VM.
This gives you the ability to do everything in your local environment while simulating the server environment in your VM.
VirtualBox does networking really well too, and you should be able to make your Windows host connect via the network to the server as if it were really another node on the network.

Building a CMS in PHP: Development tools

I'm planning to build a CMS in PHP and MySQL, mainly for my own amusement and education. (Though who knows, I may come up with something useful and cool. Anything's possible.) I'll be asking questions about code architecture etc. later. For now, I'm more interested in development tools.
So far, all my playing with code has been done on a web server, and I've edited over FTP. I was thinking it might be quicker to use a localhost. Also, that way, I could use version control (which I've never done before).
So,
A. How do I set up a localhost server with many subdomains on an Ubuntu 9.10 computer. Is XAMPP for Linux the way to go, or should I use a standard Apache distro? (Or another webserver altogether?) For that matter, is it possible to set up more than one webserver on the same computer, and to use them for different localhost subdomains?
B. How do I set up a version control thingy covering all the code (which will be on several subdomains of localhost, and in a few shared folders)? I've read Joel Spolsky's HgInt tutorial, and it makes Mercurial look good. And simple, especially if you're working on your own.
C. Should I continue to use gEdit to write HTML/CSS/JS/PHP, or is there a better free editor out there for these languages?
A. Why would you use XAMPP when installing a LAMP stack is as easy as sudo tasksel install lamp-server? You can add as many domains to the configuration as you want using VirtualHosts for example (well theoretically anyway, in practice the amount will be limited by the available resources), you don't need multiple servers for that.
B. sudo apt-get install mercurial maybe? Of course, how to create a repository and add your projects is up to you - you should read the documentation of Mercurial.
C. Use Eclipse or NetBeans if you're planning to do any serious development work.
I'd recommend against using XAMPP, particularly if you're inexperienced as this would bypass all the package management functionality integrated in Ubuntu (so you need to manually track and apply security changes, if you need extensions not in the XAMPP distro you'll need to compile from scratch, similar for most of the external admin tools which might interact with the Apache install).
Yes - you can have lots of virtual hosts on the same webserver (rcently worked somewhere with 1200 named virtual hosts on each Apache webserver - start up took about 2 seconds rather than 0.5 - but after that you'd never have known the config files were HUGE).
If you're working on your own, then this is about the only scenario where using a distributed version control system offers no benefits over concurrent version control system, and a concurrent version control system offers no benefit over a conventional version control system. But even though it offers no advantage in the technology, it may be of benefit to you to acquire specific product skills.
What editor you use is matter of personal choice. Though personally I would list gEdit in my recommendations (I'd suggest NetBeans or Zend Studio for people who like standalone IDEs, otherwise vim, Eclipse, emacs).
A php documentor is (IMHO) a must (I like phpxref) along with some sort of testing toolkit.
HTH
C.
A: I've used Xampp for Linux successfully on Ubuntu. It's not hard to setup a normal apache installation, but I like the advantage of having a "temporary" web server where the changes are easy to reverse without affecting my normal installation.
If you want subdomains, configure apache to use virtualhosts.
B: I suggest subversion, but VCS is something of a religious issue. It doesn't matter what you use particularly. Once you've made a choice, then research the usage of a VCS.
C: Netbeans is much better than gEdit. That or Eclipse would be my preference. I use Netbeans under Ubuntu myself. A full IDE though will make development much easier than a text editor. Mostly because of code completion/integrated debugger.
I think stackoverflow.com is for programming questions. You'd want to ask those server questions on serverfault.com. Then again, they'd probably ask you to google it. Give it a try.
The editor question is cool. I use Kate, just because it comes with KDE and has syntax coloring.

PHP website, should I develop into a Linux distribution instead of Windows?

In few months I start a project in PHP and I am hesitating to do like usual : develop on my Windows Vista 64bits machine. Since I know few things on Linux, I think it can be a good way to learn by working on a Linux distribution.
Do you think it's a good idea or not? I would run a VirtualBox with Ubuntu (on my Vista64bits). I was thinking to install XAMPP to be able to develop in PHP.
If you think it's a good idea, feel free to suggest me some tutorial about what I should know with Virtualizing an OS, or Linux/dev.
Update
I have build many website in PHP with Windows, the question is more about if it's a good way to start learning Linux by developing on it via a Virtual machine? I have 4 gigs rams, will it be smooth if I install Eclipse in the Virtual Machine? etc.
You should really develop on the same platform where you are going to deploy. I'm not saying it is bad to do differently, but it can save you some pain in the long run. OTOH, you might learn faster about platform differences that way. So, the main question is: do you want to have a production system running ASAP without much headache? Or, you want to spend some time and make some effort to learn how to develop cross-platform stuff?
And yes, there are differences. For example, case sensitive and case in-sensitive filenames. Then, some PHP functions use native C functions that have different implementation. For example, printf() does not produce the same amount of whitespace for some of the types. Resolution of time measurement (milliseconds vs microseconds) can be different, etc. Then, you have different ways filesystem permissions are handled. These are just some recent problems I've found that I can remember off the top of my head.
PHP should be the same on any platform - so where you develop shouldn't matter.
However, in my experience and observation,more sites running PHP are running on Linux than Windows.
Getting Apache and PHP setup on something like Ubuntu or Fedora is a cinch, and testing everything is pretty simple, too.
Also, when you go live with your site, what platform will it be running on? I prefer to do development on the platform it will be running on whenever possible.
Personally, I don't think that for local production you should be using a VM. Would you be running your IDE inside the VM too?
If you are aware enough of the pitfalls of moving between Windows and Linux environments (such as case sensitivity and permissions), you should have no problem developing on Windows and deploying on Linux.
Working on a Linux distribution is defnitely the easiest way to learn it. And setting up some servers and doing some dev work is an excellent start.
Virtualising Linux is also really easy. I've done it quite a few times and it's really obious. Also, going this way will ease you into using Linux, much better than just jumping in and finding out your wireless card is unsupported like I did :)
As for PHP development on Linux... I've done some PHP coding on Windows and on Linux and I can tell you there's very little difference between the two. I use Eclipse on both platforms and Apache &MySQL / XAMPP. The only major difference I've seen is that Linux is much more finicky about permissions and case.
PHP is not the same on all platforms, and until very recently the windows versions had problems which were not found in the Linux versions. Lots of useful features are *nix specific.
I would echo #Milan's sentiments about developing in the deployment environment. You learn a lot more about the deployment environment by doing so too.
On the VM issue, if you want all your Windows tools and your windows machine, setup a linux server in your VM (can have a GUI if you want, but you're going to mainly use it as a server). Set it up so that windows can view the apache install running in your VM and you use samba shares to access the vm's files like a drive in windows. That way, you develop in windows but are testing deploy / setup on a running linux server. While two devs at my shop run Ubuntu, a third needs to use Photoshop and various other bits of windows software all the time, so she uses this method of running a server in a VM but developing from windows.
Oh, and if you're running on Linux, don't use XAMPP! A few simple commands will have you up and running and you'll get a much better understanding of your deploy. XAMPP is fine, but it's for OS's that don't have Linux's package management.
while XAMPP works great, running Apache and PHP on Linux is a given; while on Windows it's something extra you have to do... and support. Also, most parts of the stack are far more optimised and mature for a POSIX environment. The database engine(s) performance is particularly sensitive to the available primitives.
Most OSS runs on windows, but it's a round peg whammed on a square hole.
On principle, I would advise against "learning by doing" in a real project - unless it it really small, or you have doen very similar projects before, so that the learning curve on project related issues would not be steep. In that case you may have ressources free for learning about the developing environment.
Generally I like the Linux environment better than Windows. Mainly because all the CLI tools you would need are provided and Bash beats cmd.ext any time. But with Cygwin I find even Windows a comfortable development environment.
Regarding PHP development I can't really see how it would be much different. Maybe there is some benefit in being forced to make the code more portable (things like line endings, forward slashes in filenames and such) if you use booth systems.
As a desktop or workstation there isn't much difference between the two. I find that the biggest differences lies in how you administer them, but hopefullt you have some other people doing that for you.
In my opinion you needn't to develop in a linux distribution.
Web Development can be done from any OS. I don't know, why you are programming for the web... as a professional? for your personal homepage?
I think, it's enough to get some free webspace running a PHP Server and to upload your files there... it doesn't take you much time and there are less things to manage.
a german student ;)
Use the OS your deployment server will be running, and it is highly probable to be linux. I have recently seen a deployment gone ultra bad cuz it was developed using wampserver and deployed on CentOS. With major differences in apache and PHP config. So know your deployment server and match it as closely as possible.
Try creating a development environment using VmWare Player. I have several Linux environments that I run on my Vista laptop. You could also just dual boot. I use Ubuntu, it is easy.
The side effect of developing inside a VM: more overhead and eventually the needs of additional tools to make the development more comfortable.
Often people need special tools for their development like Photoshop or some vector design tools not available on Linux. If the working copy of the project is inside the VM, it makes sense to have easy access to it. So you will setup SAMBA (which makes often problems with the login from XP) or setup SSL(SFTP)/FTP.
Also you must learn how to use networking with the VM (NAT, bridging, port forwarding).
On the other side, developing on another platform as the target can give some headache. I found myself often confused with .htaccess files for password protection, because oft the different path on Windows/Linux. If you forget to change this entries later on the production server, you have a problem...
A better solution: use the best of both worlds.
A VM eventually running later headless (no gui, more like a "remote server") with Ubuntu/Debian/FreeBSD) and only running the needed servers (Apache, MySQL, FTP, SSH...).
Eclipse or the other development tools on Windows/Mac.
5 years later: My opinion is to use the Linux solution. There are many advantages for using PHP in Linux. The primary reason is the level of help available from the community. PHP seems to be optimized for Linux environments as well.
There is also safety in numbers as an overwhelming number of sites are hosted and run with LAMP solutions. There are a wide range of frameworks and CMS' that run best on Linux with Apache2.
Make your life easier and start learning PHP straight away.

Setting up Subversion on a Red Hat system

I'm fairly new to the world of versioning but would like to introduce Subversion into our small development team as we're finding that more and more we are working on the same projects/files. We primarily code in PHP on a LAMP environment (Red Hat Enterprise).
What I'm looking for are some starting points to get me up and running such as installation/configuration guides for Red Hat. I use Dreamweaver CS3 (I see that Subversion functions will be introduced in CS4) so would be willing to look at other PHP IDEs with Subversion integration, do you have any preferences? I'm open to suggestions.
It depends on what version of RHEL you are running. Setting up Subversion in general is very easy you just have to install the binaries and run svnserve or adapt the Apache configuration.
Get it: http://subversion.tigris.org/getting.html
Install it
svnadmin create --fs-type=fsfs
After that you have a repository which you can serve via apache or svnserve. I can recommend Apache because it scales better, is easier to maintain and allows you to access the repository via DAV.
Example configurations are here: http://svnbook.red-bean.com/en/1.0/ch06s04.html
Installing subversion is likely not going to be the hardest part, what's going to be the difficult part is how you access the repository. There's a variety of options (file share on the network, subversion over SSH, through an http connection). Each has their own pro's and con's. How are you currently developing? If you are all using the same webroot for instance, version control is not going to help, as you'd still be changing each others files, so you'll have to create separate sites for each developer.
As for the IDE, there's a great shell integration for Windows in the form of TortoiseSVN, which would still allow you to work with your favourite tools and still have easy access to the SVN features.
On a RHEL system, the easiest way to install subversion is by using yum:
yum install subversion
These are good for Linux + Subversion:
http://articles.slicehost.com/subversion
Plus it goes into multiple repositories, WebDAV and a lot of other things. Useful for Windows devs too as most of the info can be used in Windows too.

PHP Deployment to windows/unix servers

We have various php projects developed on windows (xampp) that need to be deployed to a mix of linux/windows servers.
We've used capistrano in the past to deploy from windows to the linux servers, but recent changes in architecture and windows servers left the old config not working. The recipe works fine for the linux deployment, but setting up the windows servers has required more time than we have right now. Ideas for the Capistrano recipe are valid answers. obviously the windows/linux servers don't share users, so this complicates it a tad (for the capistrano assumption of same username/password everywhere).
Currently we're using svn-update for the windows servers, which i dislike, since it leaves all the svn files hanging on the production servers. (and we still have to manually svn-update them on windows) And manual updating of files using winscp and syncing the directories with their linux counterparts.
My question is, what tools/setup do you suggest to automatize this deployment scenario:
"Various php windows/linux developers deploying to 2+ mixed windows/linux machines"
(ps: we have no problems using linux tools or anything working through cygwin, we simply need to make deployment a simple one-step operation)
edit: Currently we can't work on a all-linux enviroment, we have to deploy to both linux and windows server. We can start the deploy from anywhere, but we'd prefer to be able to do it from either enviroment.
I use 4 different approaches depending on the client environment:
Capistrano and similar tools (effective, but complex)
rsync from + to Windows, Linux, Mac (simple, doesn't enforce discipline)
svn from + to Windows, Linux, Mac (simple, doesn't enforce discipline)
On-server scripts (run through the browser, complex)
There are some requirements that drive what you need:
How much discipline you want to enforce
If you need database (or configuration) migrations (up and/or down)
If you want a static "we're down" page
Who can do the update
Configuration differences between servers
I strongly suggest enforcing enough discipline to save you from yourself: deploy to a development server, allow for upward migrations and simple database restore, and limit who can update the live server to a small number of responsible admins (where the dev server is open to more developers). Also consider pushing via a cron job (to the development server), so there's a daily snapshot of your incremental changes.
Most of the time, I find that either svn or rsync setups are enough, with a few server-side scripts, especially when the admin set is limited to a few developers.
This will probably sound silly but... I used to have this kind of problem all the time until I decided in the end that if I'm always deploying on Linux, I ought really to at least try developing on Linux also. I did. It was pain free. I never went back.
Now. I am not suggesting this is for everyone. But, if you install VirtualBox you could run a Linux install as a local server on your windows box. Share a folder in the virtual machine and you can use all your known and trusted Windows software and techniques and have the piece of mind of knowing that everything is working well on its target platform.
Plus you'll be able to go back to Capistrano (a fine choice) for deployment.
Best of all, if you thought you knew Linux / Unix wait until you use it everyday on your desktop! Who knows you may even like it :)
Capistrano is the nicest deployment tool I've seen. Do the architecture changes make it impossible to fix the configs so it works again?
Why you can't use capistrano anymore?
Why you dislike svn-update?
What things in your app requires an special deployment ?
You can setup svn:ignore property on configuration files, so that svn update doesn't erase them, and then use svn export /target/path/ to get rid of .svn files in your Subversion repository.

Categories