I understand LAMP, MAMP and XAMP are solution stack. I also understand there are frameworks like Laravel and Symfony.
If I have to start PHP development in a proper manner, Is it required to have a solution stack installed first and then the framework to have a professional set up?
If the answer is yes, then I am assuming the versions of the software inside the package is quite important for compatibility with the framework. Is there a popular combination out there?
And In Live, I suppose, I just to need to have the solution stack installed for the package to run.
My dev machine is a MAC with OSX 10.9.5 and my Live is going to be in Linux. I need to make sure these fundamental knowledge is concrete before I start the work. Any help is much appreciated.
Laravel has a all-in one virtual box solution. It's called as Homestead. Homestead works on many platforms such as Linux, MAC, Windows and contains everything you needed:
Ubuntu 14.04
PHP 5.6
HHVM
Nginx
MySQL
Postgres
Node (With Bower, Grunt, and Gulp)
Redis
Memcached
Beanstalkd
Laravel Envoy
Blackfire Profiler
If you decide to go with other solutions you will probably face with many problems like enabling essential extensions and with changing some system settings.
Besides you can use this solution for pretty much every kind of php framework or code.
Just follow the steps in the guide and almost everything will be ready to use just in few minutes after download finishes.
Laravel is good choice as there is big community and Google trends show it is growing very fast.
As it is PHP then you need to have server which processes the PHP. Usually it is Apache2.
Many people like to use MAMP, XAMP to simplify their development. I prefer to use standard Apache2 myself and you can even just rely on Laravel/PHP builtin server that you can start with php artisan serve, It will be enough for defelopment purposes.
I created an extension for djondb, it's a wrapper of the library which is a C++ Library, I compiled it and it's available to be downloaded from djondb site, I'm not an expert on PHP and I've been having some problems with the distribution, mainly I realize that I need to do each compilation for each platform and create an installer for each one, which is time consuming, what I want it's a to ditribute the source code and allow the user to install it in the easiest way,
What I already tried:
Using phpize, configure, make, sudo make install the user can install the library very easy on Linux and Mac, the problem with this is that users need to have g++, make, etc installed on their computers, and this process of installation does not work on Windows.
Compile for each platform (Linux x86, x64, Mac, Windows, etc), and upload each tar.gz to the site, the user download it and place each file in the correct folder. the problem here is that the configuration is too manual and the users tend to miss some step, and it's not user friendly. The other problem is that I need to compile each version using a virtual machine and that's time consuming. (Now I'd to include versions for PHP 5.3 and 5.4, this means 8 virtual machines to create all the binaries)
I tried to create an account on PEAR but the registration screen always said that I dont need an account for the purpose I'm creating... (seems that it's a common problem in PEAR system but didnt find how to create the account to propose the package).
Did a proposal on PECL but nobody answered to the mailing list, seems that it's very common too.
So I'm stuck at this moment with the 1 and 2 ways to distribute, what is the best way to distribute a PHP extension that is created using C++ in a user friendly manner and easy to install?
Thanks in advance, you can see the code of the project at https://github.com/djondb/djondb_phpext if you have more questions about how the project is structured or the full explanation of the phpize/configure/make process.
Take the middle road: Distribute the source for Linux / OS X users, who can build it themselves, and offer compiled DLLs for Windows users. That will at least limit the number of versions you need to compile.
As a PHP developer who maintains the extensions we use in our company, it is PERFECTLY fine to give only the source code and expect the users to compile it on their machines.
If you want to be nice, compiling a version for each machine you support yourself, is also an accepted way (See Zend for example) and leave it somewhere easy to download (like sourceforge/github etc).
Then, just listen to the users and improve your (release) system as you go.
I create php application for small businesses. Some of the clients may prefer running the app on a local server, therefore my requirement is to create/bundle an app with apache/mysql/php with all the necessary confirguration and one click executable (be it a batch file) such that when the user opens it, it runs the apache server on some port say localhost:1234 and mysql as well.
and opens up the application in the default web browser.
To be more exact, Im looking for something like http://www.simpleinvoices.org/go, check their Simple Invoices for Windows which come budled with apache/php/mysql.
P.S - Im not sure if this question should be at SO or Superuser.
If you actually want to install a web server and a SQL server then Lars' solution would be a way to go. On windows you can generate a .msi installer containing the dependencies you need (like WAMP). An installer executable would be a cleaner solution than a batch file in my opinion, as it will also provide the user with an option to uninstall your software if they wish.
If you want to distribute your application in a standalone version, then you might also want to check a solution like NuSphere's PHPDock - http://www.nusphere.com/products/phpdock.htm
I had the same challenge and came across Uniform Server:
http://www.uniformserver.com/
You download it, add your application to it, start it and everything runs. Lovely.
Superuser would have been better. But depending on your requirements, you should just create a package to install. On windows, package it with WAMP, on linux, package it with either one-click-install or creating packages for the two biggest systems, namely APT and RPM. With the dependency-system on all of them you can make sure, that your application runs right off the bat.
PHP Desktop is the best option I found when researching this.
https://github.com/cztomczak/phpdesktop
PHP Nightrain is also an option:
https://download.cnet.com/PHP-Nightrain/3000-10248_4-76169308.html
Bitnami WAMP stack looks good as well:
https://docs.bitnami.com/installer/infrastructure/wamp/
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/
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.