|
Posted by Rasmus Lerdorf on 08/14/05 10:41
Sebastian wrote:
> so i am 'afraid' of going with php5 in fear it will break my website.
It's rather trivial to test it. Set up a second Apache server with php5
loaded that listens to port 81 or some other port and point it at the
same document_root. Then you can switch back and forth by just changing
the port number in the URL.
Or, if you, or your application, doesn't like having :81 in the url
everywhere, you can set up a VirtualHost on your port 80 server just
like you set up virtualhosts for anything else and in it add a ProxyPass
to port 81. Like this:
<VirtualHost *>
ServerName name1.yourdomain.com
DocumentRoot /var/www/html
.... other standard config lines...
</VirtualHost>
<VirtualHost *>
ServerName name2.yourdomain.com
DocumentRoot /var/www/html
ProxyPass / http://name2.yourdomain.com:81/
</VirtualHost>
In your httpd81.conf or whatever you call it you have your regular
VirtualHost block for the name2.yourdomain.com. The only real
difference is that at the top you have a "Listen 81" line instead of
"Listen 80".
So now you can point your browser at http://name1.yourdomain.com and you
get the PHP4 version of your site and if you go to
http://name2.yourdomain.com you get the PHP5 version.
I typically run at least 2 versions of PHP on my main server, sometimes
more. You have to fiddle a bit with whatever mechanism you use to start
and stop your server so it will start and stop the different versions.
I tend to just cheat and copy my /etc/init.d/apache to
/etc/init.d/apache81 and edit it appropriately changing the name of the
conf file and the pid file. So I can start and stop the different
versions manually.
Building multiple versions of PHP isn't very hard either. The only real
trick is to use the --prefix configure flag. Something like
--prefix=/usr/local/php5. Then when you "make install" it will not
overwrite any of your PHP4 stuff, with the one exception that it will
try to modify your main httpd.conf by adding a LoadModule mod_php5.c
/usr/libexec/apache/libphp5.so (or some similar path). Just go abd get
rid of that line after your make install and move it to the httpd81.conf
file. Also remember to add something like:
--with-config-file-path=/etc/php5
So you can have separate php.ini files.
Someone also mentioned the lack of decent opcode acceleration for PHP5.
pecl/apc has come a long way over the last couple of months. Give it a
try. I'd love to get some more feedback on it. To install it:
pear install apc
Will work if you are lucky. I tend to prefer doing it a bit more manually:
cvs -d:pserver:cvsread@cvs.php.net:/repository login
password: phpfi
cvs -d:pserver:cvsread@cvs.php.net:/repository co pecl/apc
cd pecl/apc
phpize
../configure --enable-apc-mmap --with-apxs
--with-php-config=/usr/local/php5/bin/php-config
make install
Then add this to you /etc/php5/php.ini file:
extension=apc.so
apc.enabled=1
apc.shm_segments=1
apc.optimization=0
apc.shm_size=32
apc.num_files_hint=1000
apc.mmap_file_mask=/tmp/apc.XXXXXX
Obviously you can do a "make clean" and run ./configure again but this
time point it at your php4 php-config file and build yourself an apc.so
that you can use for your PHP 4 setup as well. Then copy the apc.php
script that is included to your document_root and point your browser at
it. You may want to password protect it. Or edit the top of the script
where you can set a password. You will end up with something that looks
like this: http://buzz.progphp.com/apc.php
I don't really do Windows, but most of this will work on Windows as well
(I think). You can find APC builds for Windows on http://snaps.php.net.
But save yourself some headaches and grab a spare PC and install Linux
(I prefer Debian, but it is a hassle to install for newcomers, the
Ubuntu installer makes life easier), FreeBSD, or heck even the newly
available OpenSolaris-x86 (I need to do that soon so I can play with the
ultra-cool DTrace they have).
Long rambling email, but hopefully it will inspire a few people to go
push the edges a bit. Don't forget to report any bugs you find. For
APC bugs, report them here: http://pecl.php.net/bugs/report.php?package=APC
For APC docs, see the INSTALL file in the source, or go to:
http://livedocs.phpdoc.info/index.php?l=en&q=ref.apc
Which is mostly the same thing webified.
-Rasmus
Navigation:
[Reply to this message]
|