SysAdmin skills for PHP developers                          Pablo Godel @pgodel - March 13, 2013                          ...
Agenda                          - Why SysAdmin Skills                         - Introduction to LAMP                      ...
Who Am I?    ⁃ Born in Argentina, living in the US since 1999    ⁃ PHP & Symfony developer    ⁃ Founder of the original PH...
Who Am I?    ⁃ Born in Argentina, living in the US since 1999    ⁃ PHP & Symfony developer    ⁃ Founder of the original PH...
Thursday, March 14, 13
ServerGrove!      ⁃ Founded ServerGrove Networks in 2005      ⁃ Provider of web hosting specialized in PHP,        Symfony...
Community is our teacher            ⁃ Very active open source supporter through code              contributions and usergr...
Who needs them?                         Sysadmin SkillsThursday, March 14, 13
Text                         IT is busy / Different PrioritiesThursday, March 14, 13
!Rocket ScienceThursday, March 14, 13
Lack of controlThursday, March 14, 13
Less downtimeThursday, March 14, 13
Better PerformanceThursday, March 14, 13
What do you prefer?Thursday, March 14, 13
Or this?Thursday, March 14, 13
I am limited to line               commands.               I don’t do line commands               in Linux.               ...
What is                         LAMPThursday, March 14, 13
Thursday, March 14, 13
Thursday, March 14, 13
Thursday, March 14, 13                         LAMP
Thursday, March 14, 13                         LAMP
Thursday, March 14, 13                         LAMP
Scott BealeThursday, March 14, 13                         LAMP
Thursday, March 14, 13                         LNMP
Thursday, March 14, 13                         LNMP
Thursday, March 14, 13                         LNPP
Thursday, March 14, 13                         LANMMPP
Why?                         LANMMPPThursday, March 14, 13
Why LANMMPP                          ProvenThursday, March 14, 13
Why LANMMPP                           StableThursday, March 14, 13
Why LANMMPP                          SecureThursday, March 14, 13
Why LANMMPP                            FreeThursday, March 14, 13
Why LANMMPP                           Free*Thursday, March 14, 13
Why LANMMPP                         InexpensiveThursday, March 14, 13
Why LANMMPP                         Easily AvailableThursday, March 14, 13
Hosting OptionsThursday, March 14, 13
Hosting Options                         Shared Hosting                         +                -    - Inexpensive        ...
Hosting Options                         Dedicated Servers                         +                  -  - Full control    ...
Hosting Options                         Virtual Servers / VPS                                    -                        ...
Hosting Options                         Virtual Servers / VPS                          +                 +     - Inexpensi...
Hosting Options                              Cloud Hosting                          +                   -                 ...
Hosting Options                            Cloud Hosting                         Some are a shared hosting                ...
Hosting Options                            Cloud Hosting                         Some are a shared hosting                ...
Hosting Options                            Cloud Hosting                         Some are a shared hosting                ...
Hosting Options                           Cloud Hosting                         Most suffer from some of the              ...
Hosting Options                    Which one to choose?Thursday, March 14, 13
Hosting Options                         Which one to choose?                            IT   DEPENDSThursday, March 14, 13
Linux DistributionsThursday, March 14, 13
Distributions                          RedHat based                    - Fedora                    - RedHat Enterprise Lin...
Distributions                           Debian based                    - Debian                    - UbuntuThursday, Marc...
Distributions                                    Others                    - Gentoo                    - Slackware        ...
Distributions                         Key differences                         - Configuration files                         ...
Distributions                         Key differences   - Configuration files           CentOS            /etc/sysconfig/net...
Distributions                         Key differences   - Package Manager            CentOS             yum install php-cl...
Distributions                         Key differences   - Package Manager           CentOS             yum search php-cli ...
Distributions                         Key differences   - Managing Services          CentOS           service restart http...
Distributions                         Key differences   - Software versions         CentOS           httpd-2.2.3        Ub...
Distributions                         Key differences   - Updates           CentOS 5.x            PHP 5.1.6          Ubunt...
Distributions                             Key similarities                         - Based on Linux Kernel                ...
Distributions                         Which one to choose?                            IT   DEPENDSThursday, March 14, 13
Distributions                         Which one to choose?                         - Best feeling                         ...
Sysadmin skills for                             PHP DevsThursday, March 14, 13
First ExperienceThursday, March 14, 13
First Experience                         - Run Linux natively                         - Mac OSX                         - ...
First Experience                            #!/bin/bashThursday, March 14, 13
First Experience                            #!/bin/bashThursday, March 14, 13
First Experience                            #!/bin/bashThursday, March 14, 13
First Experience                            #!/bin/bashThursday, March 14, 13
First Experience                            #!/bin/bash       Recommended Books:       - Learning the bash Shell       - b...
First Experience                                #!/bin/bash                         Most Common Commands:                 ...
First Experience                             #!/bin/bash                         User`s config files:                     ...
First Experience                            #!/bin/bash                         Most common directories:                  ...
Installing Apache/PHPThursday, March 14, 13
Installing Apache/PHP                   # CentOS                   $ yum install httpd php-cli mod_php                   #...
Installing PHP                            CentOS                    Third Party Repositories                         - Rem...
Installing PHP                            CentOS                    Third Party Repositories   cd /etc/yum.repos.d/   wget...
Installing PHP                            Ubuntu                    Third Party Repositories                              ...
Installing PHP                            Ubuntu                    Third Party Repositories  echo “deb http://repos.serve...
Installing PHP                         From Source   wget http://us2.php.net/get/php-5.4.12.tar.bz2/from/   www.php.net/mi...
Installing PHP                         Recompiling  php -i |grep configure  ./configure --with-apxs2=/usr/sbin/apxs --pref...
Installing PHP                         Compiling for Apache    ./configure --with-apxs2=/usr/sbin/apxs    make && make ins...
Installing PHPCompiling for Nginx / PHP-FPM                   ./configure --enable-fpm                   make && make inst...
Installing PHP                         Compiling extension                   ./configure --with-curl --enable-ftp         ...
Installing PHP                         Compiling extension                            (dynamic)                   cd ext/c...
Installing PHP                         Compiling extension                            http://pecl.php.net/Thursday, March ...
Installing PHP                         Compiling extension                              (PECL)    pecl install apc    # or...
Installing PHP                           Automate!                           - Chef                           - Puppet    ...
Installing PHP                                Configuration                  Default location                         /usr/...
Installing PHP                         Configuration  php -i | grep php.ini  Configuration File (php.ini) Path => /usr/local...
Installing PHP                         Configuration  php -i | grep mongo   /usr/local/php5/php.d/50-extension-mongo.ini,  ...
Installing PHP                         Configuration          php -m           [PHP Modules]           apc           bcmath...
Installing PHP                         Configuration                           php.ini             extension_dir=/usr/lib/p...
Installing PHP                         Configuration                           php.ini   php -i | grep extension_dir   exte...
Installing PHP                              Configuration                                php.ini                         da...
Installing PHP                            Configuration                              Security                         memor...
Installing PHP                      Configuration                File uploads on .htaccess                           php_va...
Installing PHP                             Configuration                           Include .htaccess                       ...
Installing PHP                               Configuration                                 Apache                          ...
Installing PHP                              Web Server User            Permissions issues with clear cache            and ...
Installing PHP                         Web Server User            Permissions issues with clear cache            and uploa...
Deploying PHPThursday, March 14, 13
Deploying PHP                         Before going live                                       Make sure ntpd is           ...
Deploying PHP                          Before going live          - Disable PHP in specific directories                   <...
Deploying PHP                          Before going live          - Limit access by IP                   <Location /admin>...
Deploying PHP                          Before going live         - Add HTTP Authentication                   <Location /ad...
Deploying PHP                         Before going live                  - Quiet down Apache                  ServerTokens...
Deploying PHP                          Before going live                  Move document root with .htaccess               ...
Deploying PHP                         Before going live               - Case senstive filesystem               IPCheck_Form...
Deploying PHP                         - server-side vi                         - plain old FTP                         - S...
Deploying PHP                         - server-side vi                         - plain old FTP                         - S...
Deploying PHP                         Effing Package Management              Build packages for multiple platforms (deb, rp...
Deploying PHP                         Capistrano / Capifony            - multiple servers            - multiple environmen...
Deploying PHP                            Setting up SSH            $ ssh-keygen -t dsa               ~/.ssh/id_dsa.pub    ...
Deploying PHP                                Setting up SSH            ~/.ssh/config                   Host *              ...
Deploying PHP                               Setting up SSH            /etc/ssh/sshd_config                   Port 22       ...
Deploying PHP                                                   Automate!      <?php      exec(/usr/bin/env	  -­‐i	  HOME=...
DNS TipsThursday, March 14, 13
DNS Tips           The Power of the hosts fileThursday, March 14, 13
DNS Tips                     The Power of the hosts file                         /etc/hosts                         10.0.1....
DNS Tips           The Power of the hosts file          /etc/hosts          10.0.1.1 example1.com example2.comThursday, Mar...
DNS Tips                         Virtual Document Root   UseCanonicalName Off   VirtualDocumentRoot /var/www/vhosts/%0/web...
DNS Tips                         Nameservers/Expiration   whois servergrove.com   ...   Name Servers:      ns1.servergrove...
DNS Tips                         DNS records   dig -t A google.com   ;; ANSWER SECTION:   google.com.       184 IN A   74....
DNS Tips                         DNS records   dig -t A servergrove.eu @ns1.servergrove.com   ;; ANSWER SECTION:   serverg...
DNS Tips                                          DNS Delegation                         http://www.simpledns.com/lookup-d...
DNS Tips                                   traceroute   traceroute google.com   traceroute to google.com (173.194.37.33), ...
DNS Tips                         http://whereisitup.comThursday, March 14, 13
DNS Tips                            mtrThursday, March 14, 13
MonitoringThursday, March 14, 13
Monitoring                            Apache Requests                         <Location /server-status>                   ...
Monitoring                         Apache RequestsThursday, March 14, 13
Monitoring                         - Cacti                         - Ganglia                         - Zabbix             ...
Monitoring                         statsd / StatsDBundle / GraphiteThursday, March 14, 13
Monitoring                         CPU / Memory / IO                                topThursday, March 14, 13
Monitoring                              IO                            iotopThursday, March 14, 13
Monitoring                           Network                            iptrafThursday, March 14, 13
Monitoring                               Handling logs           - Centralize logs with syslog                         err...
Monitoring                         Handling logs         $ grep POST /var/log/apache2/access_logThursday, March 14, 13
Speeding upThursday, March 14, 13
Speeding up                         - nginx/php-fpm                         - APC                         - ZendOptimizer+...
BackupsThursday, March 14, 13
Backups                         - rsync                         - rdiff-backup                         - Unison           ...
Backups                              Don’t forget to                              backup your DB!http://blog.servergrove.c...
Reading List    - Automating UNIX and Linux Administration    - Running Linux    - Learning the bash Shell: Unix Shell Pro...
The End              Questions?                          Sysadmin skills for PHP developersThursday, March 14, 13
Sysadmin skills for PHP developers                          http://joind.in/8376                              Thank you!  ...
Upcoming SlideShare
Loading in...5
×

Soflophp 2013 - SysAdmin skills for PHP developers

5,766

Published on

A developer is not a complete one without basic server/system administration skills. We will go over linux and network administration tips, Apache and MySQL configuration, basic security and other related topics.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,766
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
11
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Soflophp 2013 - SysAdmin skills for PHP developers

  1. 1. SysAdmin skills for PHP developers Pablo Godel @pgodel - March 13, 2013 South Florida PHP Users Group http://joind.in/8376Thursday, March 14, 13
  2. 2. Agenda - Why SysAdmin Skills - Introduction to LAMP - Hosting options - Linux distributions - Installing PHP options - Deploying PHP - Various production tips - Monitoring - BackupsThursday, March 14, 13
  3. 3. Who Am I? ⁃ Born in Argentina, living in the US since 1999 ⁃ PHP & Symfony developer ⁃ Founder of the original PHP mailing list in spanish ⁃ Master of the parrillaThursday, March 14, 13
  4. 4. Who Am I? ⁃ Born in Argentina, living in the US since 1999 ⁃ PHP & Symfony developer ⁃ Founder of the original PHP mailing list in spanish ⁃ Master of the parrillaThursday, March 14, 13
  5. 5. Thursday, March 14, 13
  6. 6. ServerGrove! ⁃ Founded ServerGrove Networks in 2005 ⁃ Provider of web hosting specialized in PHP, Symfony, ZendFramework, and others ⁃ Now with servers in Miami, FL and Dublin, Ireland ⁃ Mongohosting.com!Thursday, March 14, 13
  7. 7. Community is our teacher ⁃ Very active open source supporter through code contributions and usergroups/conference sponsoringThursday, March 14, 13
  8. 8. Who needs them? Sysadmin SkillsThursday, March 14, 13
  9. 9. Text IT is busy / Different PrioritiesThursday, March 14, 13
  10. 10. !Rocket ScienceThursday, March 14, 13
  11. 11. Lack of controlThursday, March 14, 13
  12. 12. Less downtimeThursday, March 14, 13
  13. 13. Better PerformanceThursday, March 14, 13
  14. 14. What do you prefer?Thursday, March 14, 13
  15. 15. Or this?Thursday, March 14, 13
  16. 16. I am limited to line commands. I don’t do line commands in Linux. Either they can install the Centos desktop, or they can just send me the files. An example...Thursday, March 14, 13
  17. 17. What is LAMPThursday, March 14, 13
  18. 18. Thursday, March 14, 13
  19. 19. Thursday, March 14, 13
  20. 20. Thursday, March 14, 13 LAMP
  21. 21. Thursday, March 14, 13 LAMP
  22. 22. Thursday, March 14, 13 LAMP
  23. 23. Scott BealeThursday, March 14, 13 LAMP
  24. 24. Thursday, March 14, 13 LNMP
  25. 25. Thursday, March 14, 13 LNMP
  26. 26. Thursday, March 14, 13 LNPP
  27. 27. Thursday, March 14, 13 LANMMPP
  28. 28. Why? LANMMPPThursday, March 14, 13
  29. 29. Why LANMMPP ProvenThursday, March 14, 13
  30. 30. Why LANMMPP StableThursday, March 14, 13
  31. 31. Why LANMMPP SecureThursday, March 14, 13
  32. 32. Why LANMMPP FreeThursday, March 14, 13
  33. 33. Why LANMMPP Free*Thursday, March 14, 13
  34. 34. Why LANMMPP InexpensiveThursday, March 14, 13
  35. 35. Why LANMMPP Easily AvailableThursday, March 14, 13
  36. 36. Hosting OptionsThursday, March 14, 13
  37. 37. Hosting Options Shared Hosting + - - Inexpensive - Shared resources - Widely available - No/Limited Shell - Easy to use - Many restrictions - No maintenance - No control - No updates - Fixed versions - Instant provisioning - Multitude of CPs - DNS/Email servicesThursday, March 14, 13
  38. 38. Hosting Options Dedicated Servers + - - Full control - Hard to plan - No sharing - Software updates - Best performance - SysAdmin skills - Software / Hardware - Expensive to start to specs - Parts replacements - Control Panel licensesThursday, March 14, 13
  39. 39. Hosting Options Virtual Servers / VPS - - Shared resources - Software updates - SysAdmin skills - Limited/No CP - Lack of emailThursday, March 14, 13
  40. 40. Hosting Options Virtual Servers / VPS + + - Inexpensive - Custom configurations - Widely available - Snapshots - Choice of OS - Multiple Envs - Root access - Full shell - Fast provisioning - Custom softwareThursday, March 14, 13
  41. 41. Hosting Options Cloud Hosting + - Depends on implementationThursday, March 14, 13
  42. 42. Hosting Options Cloud Hosting Some are a shared hosting with a fancy new nameThursday, March 14, 13
  43. 43. Hosting Options Cloud Hosting Some are a shared hosting with a fancy new name Others let you start small and scale easilyThursday, March 14, 13
  44. 44. Hosting Options Cloud Hosting Some are a shared hosting with a fancy new name Others let you start small and scale easily Gets really expensive at scaleThursday, March 14, 13
  45. 45. Hosting Options Cloud Hosting Most suffer from some of the shared hosting problems: - vendor lock-in - lack of control - high learning curve - limited environmentThursday, March 14, 13
  46. 46. Hosting Options Which one to choose?Thursday, March 14, 13
  47. 47. Hosting Options Which one to choose? IT DEPENDSThursday, March 14, 13
  48. 48. Linux DistributionsThursday, March 14, 13
  49. 49. Distributions RedHat based - Fedora - RedHat Enterprise Linux (RHEL) - CentOS - Scientific LinuxThursday, March 14, 13
  50. 50. Distributions Debian based - Debian - UbuntuThursday, March 14, 13
  51. 51. Distributions Others - Gentoo - Slackware - OpenSuse - Archlinux - any many many more! http://distrowatch.com/ http://en.wikipedia.org/wiki/Linux_distributionThursday, March 14, 13
  52. 52. Distributions Key differences - Configuration files - Package Manager - Managing Services - Software versions - UpdatesThursday, March 14, 13
  53. 53. Distributions Key differences - Configuration files CentOS /etc/sysconfig/network-scripts/ifcfg-eth0 Ubuntu /etc/network/interfacesThursday, March 14, 13
  54. 54. Distributions Key differences - Package Manager CentOS yum install php-cli Ubuntu apt-get install php5Thursday, March 14, 13
  55. 55. Distributions Key differences - Package Manager CentOS yum search php-cli Ubuntu apt-cache search phpThursday, March 14, 13
  56. 56. Distributions Key differences - Managing Services CentOS service restart httpd chkconfig --list httpd chkconfig httpd on Ubuntu service restart apache2 sudo update-rc.d apache2 enableThursday, March 14, 13
  57. 57. Distributions Key differences - Software versions CentOS httpd-2.2.3 Ubuntu apache-2.2.17Thursday, March 14, 13
  58. 58. Distributions Key differences - Updates CentOS 5.x PHP 5.1.6 Ubuntu 11 PHP 5.3.5Thursday, March 14, 13
  59. 59. Distributions Key similarities - Based on Linux Kernel - Screwed up or ancient PHP - Lack of PHP extensionsThursday, March 14, 13
  60. 60. Distributions Which one to choose? IT DEPENDSThursday, March 14, 13
  61. 61. Distributions Which one to choose? - Best feeling - Previous experience - Workplace selection - Coworker / friend knowledgeThursday, March 14, 13
  62. 62. Sysadmin skills for PHP DevsThursday, March 14, 13
  63. 63. First ExperienceThursday, March 14, 13
  64. 64. First Experience - Run Linux natively - Mac OSX - Virtual Machine: - VirtualBox - Parallels - VMware - VPSThursday, March 14, 13
  65. 65. First Experience #!/bin/bashThursday, March 14, 13
  66. 66. First Experience #!/bin/bashThursday, March 14, 13
  67. 67. First Experience #!/bin/bashThursday, March 14, 13
  68. 68. First Experience #!/bin/bashThursday, March 14, 13
  69. 69. First Experience #!/bin/bash Recommended Books: - Learning the bash Shell - bash CookbookThursday, March 14, 13
  70. 70. First Experience #!/bin/bash Most Common Commands: $ ls -l /path/ $ cd /path $ pwd $ cat /etc/passwd $ less /etc/resolv.conf $ tail -f /var/log/* $ last $ lastb $ vi /etc/hostsThursday, March 14, 13
  71. 71. First Experience #!/bin/bash User`s config files: ~/.bash_history ~/.bash_logout ~/.bash_profile PATH=$PATH:$HOME/bin export PATH ~/.bashrc alias rm=rm -i alias cp=cp -i alias mv=mv -iThursday, March 14, 13
  72. 72. First Experience #!/bin/bash Most common directories: /etc /tmp /var/log /var/run /root /home /usr/local /optThursday, March 14, 13
  73. 73. Installing Apache/PHPThursday, March 14, 13
  74. 74. Installing Apache/PHP # CentOS $ yum install httpd php-cli mod_php # Ubuntu $ apt-get install apache2 libapache2-mod-php5 Mac OSX - MAMP - Native Apache + Liip PHP installation - Zend Server CE Windows - WAMP - IIS + PHPThursday, March 14, 13
  75. 75. Installing PHP CentOS Third Party Repositories - Remi RPM http://blog.famillecollet.com/ - Webtatic http://www.webtatic.com/ - ServerGrove: PHP 5.3.x / 5.4.x (always latest) http://repos.servergrove.comThursday, March 14, 13
  76. 76. Installing PHP CentOS Third Party Repositories cd /etc/yum.repos.d/ wget http://repos.servergrove.com/servergrove-centos-5/ servergrove-centos-5.repo yum install php53 # or php54Thursday, March 14, 13
  77. 77. Installing PHP Ubuntu Third Party Repositories PHP 5.3.x / 5.4.x - Dotdeb: http://www.dotdeb.org/ - ServerGrove: (always latest) http://repos.servergrove.comThursday, March 14, 13
  78. 78. Installing PHP Ubuntu Third Party Repositories echo “deb http://repos.servergrove.com/servergrove-ubuntu- precise precise main” >> /etc/apt/sources.list.d/ servergrove.list apt-get install php53 # or php54Thursday, March 14, 13
  79. 79. Installing PHP From Source wget http://us2.php.net/get/php-5.4.12.tar.bz2/from/ www.php.net/mirror tar jxvf php-5.4.12.tar.bz2 cd php-5.4.12 ./configure make && make installThursday, March 14, 13
  80. 80. Installing PHP Recompiling php -i |grep configure ./configure --with-apxs2=/usr/sbin/apxs --prefix=/usr/local/ php53 --with-config-file-scan-dir=/etc/php53/conf.d -- enable-bcmath --enable-ctype --enable-exif --enable- mbstring --enable-ftp --enable-intl --enable-sockets -- enable-sysvmsg --enable-pcntl --with-bz2 --with-curl -- with-gettext --with-gd --enable-gd-native-ttf --enable-exif -- with-freetype-dir=/usr --with-jpeg-dir=/usr --with-t1lib=/usr --with-mcrypt --with-openssl --with-kerberos --with-iconv --with-xsl --with-xmlrpc --with-zlib --with-mysql=mysqlnd -- with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd make && make installThursday, March 14, 13
  81. 81. Installing PHP Compiling for Apache ./configure --with-apxs2=/usr/sbin/apxs make && make installThursday, March 14, 13
  82. 82. Installing PHPCompiling for Nginx / PHP-FPM ./configure --enable-fpm make && make installThursday, March 14, 13
  83. 83. Installing PHP Compiling extension ./configure --with-curl --enable-ftp make && make installThursday, March 14, 13
  84. 84. Installing PHP Compiling extension (dynamic) cd ext/curl phpize ./configure make && make install echo “extension=curl.so” >> php.iniThursday, March 14, 13
  85. 85. Installing PHP Compiling extension http://pecl.php.net/Thursday, March 14, 13
  86. 86. Installing PHP Compiling extension (PECL) pecl install apc # or pecl download apc tar zxvf APC-3.1.13.tgz cd APC-3.13 phpize ./configure make && make install echo “extension=apc.so” >> php.iniThursday, March 14, 13
  87. 87. Installing PHP Automate! - Chef - Puppet - ...Thursday, March 14, 13
  88. 88. Installing PHP Configuration Default location /usr/local/lib/php.ini Other common locations /etc/php/php.ini /etc/php5/cli/php.ini /etc/php5/apache2/php.iniThursday, March 14, 13
  89. 89. Installing PHP Configuration php -i | grep php.ini Configuration File (php.ini) Path => /usr/local/php5/lib Loaded Configuration File => /usr/local/php5-20110426-093151/ lib/php.ini Scan this dir for additional .ini files => /usr/local/php5/php.d Additional .ini files parsed => /usr/local/php5/php.d/10- extension_dir.ini,Thursday, March 14, 13
  90. 90. Installing PHP Configuration php -i | grep mongo /usr/local/php5/php.d/50-extension-mongo.ini, mongo mongo.allow_empty_keys => 0 => 0 mongo.allow_persistent => 1 => 1 mongo.auto_reconnect => 1 => 1 mongo.chunk_size => 262144 => 262144 mongo.cmd => $ => $ mongo.default_host => localhost => localhost mongo.default_port => 27017 => 27017Thursday, March 14, 13
  91. 91. Installing PHP Configuration php -m [PHP Modules] apc bcmath bz2 Core ctype curl date dom eregThursday, March 14, 13
  92. 92. Installing PHP Configuration php.ini extension_dir=/usr/lib/php/extensions/no- debug-non-zts-20090626 extension=apc.so extension=mongo.soThursday, March 14, 13
  93. 93. Installing PHP Configuration php.ini php -i | grep extension_dir extension_dir => /usr/local/php5/lib/php/extensions/no-debug- non-zts-20090626Thursday, March 14, 13
  94. 94. Installing PHP Configuration php.ini date.timezone=UTC display_errors = off log_errors = on error_log = /var/log/php.logThursday, March 14, 13
  95. 95. Installing PHP Configuration Security memory_limit = 128M max_execution_time = 30 display_errors = off expose_php = off mail.log = /var/log/phpmails.log disable_functions = exec allow_url_fopen = offThursday, March 14, 13
  96. 96. Installing PHP Configuration File uploads on .htaccess php_value memory_limit 128M php_value max_file_uploads 20 php_value max_input_time -1 php_value post_max_size 8M php_value upload_max_filesize 2M php_value max_execution_time 0 AllowOverride=All in Apache!Thursday, March 14, 13
  97. 97. Installing PHP Configuration Include .htaccess <Directory /path/to/document/root> Include /path/to/.htaccess </Directory> AllowOverride=None in Apache!Thursday, March 14, 13
  98. 98. Installing PHP Configuration Apache php_value date.timezone UTC php_flag display_errors 1 php_value memory_limit 128M php_value max_execution_time 0 Don’t forget to restart ApacheThursday, March 14, 13
  99. 99. Installing PHP Web Server User Permissions issues with clear cache and uploads, Anyone? Possible users - apache - nobody - www-data - ftp / ssh user (sometimes)Thursday, March 14, 13
  100. 100. Installing PHP Web Server User Permissions issues with clear cache and uploads, Anyone? Fix: rm -rf app/cache/* rm -rf app/logs/* sudo chmod +a "www-data allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs http://symfony.com/doc/current/book/installation.htmlThursday, March 14, 13
  101. 101. Deploying PHPThursday, March 14, 13
  102. 102. Deploying PHP Before going live Make sure ntpd is installed and running to ensure accurate server time yum install ntp chkconfig ntpd on ntpdate pool.ntp.orgThursday, March 14, 13
  103. 103. Deploying PHP Before going live - Disable PHP in specific directories <Location /uploads> php_admin_flag engine off </Location>Thursday, March 14, 13
  104. 104. Deploying PHP Before going live - Limit access by IP <Location /admin> Order Deny,Allow Deny from all Allow from 1.2.3.4 </Location>Thursday, March 14, 13
  105. 105. Deploying PHP Before going live - Add HTTP Authentication <Location /admin> Require valid-user AuthType Basic AuthName "SG" AuthUserFile /path/users </Location>Thursday, March 14, 13
  106. 106. Deploying PHP Before going live - Quiet down Apache ServerTokens ProdThursday, March 14, 13
  107. 107. Deploying PHP Before going live Move document root with .htaccess RewriteEngine On RewriteRule ^.htaccess$ - [F] RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^.*$ - [NC,L] RewriteCond %{REQUEST_URI} !^/web/.*$ RewriteRule ^(.*)$ /web/$1Thursday, March 14, 13
  108. 108. Deploying PHP Before going live - Case senstive filesystem IPCheck_Form_Index_Login != IpCheck_Form_Index_Login /path/to/file/IpCheck_Form_Index_Login.php <?php class IPCheck_Form_Index_Login { ...Thursday, March 14, 13
  109. 109. Deploying PHP - server-side vi - plain old FTP - SFTP - scp - rsync + ssh - git - tar / gzip - rpm / deb packages - capistrano / capifonyThursday, March 14, 13
  110. 110. Deploying PHP - server-side vi - plain old FTP - SFTP - scp - rsync + ssh - git - tar / gzip - rpm / deb packages - capistrano / capifonyThursday, March 14, 13
  111. 111. Deploying PHP Effing Package Management Build packages for multiple platforms (deb, rpm, etc) with great ease and sanity. fpm -s dir -t rpm -n "sfapp" -v 1.0 /var/www/sfapp fpm -s dir -t deb -a all -n sfapp -v 1.0 /etc/apache2/ conf.d/my.conf /var/www/sfapp https://github.com/jordansissel/fpmThursday, March 14, 13
  112. 112. Deploying PHP Capistrano / Capifony - multiple servers - multiple environments - setup shared folders (vendors, cache, logs, etc) - copy files - update vendors - multi versions - rollback - restart apacheThursday, March 14, 13
  113. 113. Deploying PHP Setting up SSH $ ssh-keygen -t dsa ~/.ssh/id_dsa.pub $ ssh-copy-id user@remote-host ~/.ssh/authorized_keys ~/.ssh/authorized_keys2 $ ssh-addThursday, March 14, 13
  114. 114. Deploying PHP Setting up SSH ~/.ssh/config Host * ForwardAgent yes Port 22123 Host gh HostName github.com Port 22 PreferredAuthentications publickey IdentityFile ~/.ssh/me_rsaThursday, March 14, 13
  115. 115. Deploying PHP Setting up SSH /etc/ssh/sshd_config Port 22 Port 22123 PermitRootLogin no PasswordAuthentication noThursday, March 14, 13
  116. 116. Deploying PHP Automate! <?php exec(/usr/bin/env  -­‐i  HOME=/var/ www/vhosts/m.sunshinephp.com/m-­‐ sunshine  git  pull  origin  master); http://m.sunshinephp.com/deploy.php https://github.com/pgodel/m-sunshinephp/blob/master/web/deploy.phpThursday, March 14, 13
  117. 117. DNS TipsThursday, March 14, 13
  118. 118. DNS Tips The Power of the hosts fileThursday, March 14, 13
  119. 119. DNS Tips The Power of the hosts file /etc/hosts 10.0.1.1 www.lottery.comThursday, March 14, 13
  120. 120. DNS Tips The Power of the hosts file /etc/hosts 10.0.1.1 example1.com example2.comThursday, March 14, 13
  121. 121. DNS Tips Virtual Document Root UseCanonicalName Off VirtualDocumentRoot /var/www/vhosts/%0/web <Location /var/www/vhosts> AllowOverride All Options +FollowSymLinks </Location> example.com => /var/www/vhosts/example.com/web example2.com => /var/www/vhosts/example2.com/webThursday, March 14, 13
  122. 122. DNS Tips Nameservers/Expiration whois servergrove.com ... Name Servers: ns1.servergrove.com ns2.servergrove.com ns3.servergrove.com Creation date: 19 May 2005 23:34:36 Expiration date: 19 May 2014 23:34:00Thursday, March 14, 13
  123. 123. DNS Tips DNS records dig -t A google.com ;; ANSWER SECTION: google.com. 184 IN A 74.125.230.227 google.com. 184 IN A 74.125.230.228 google.com. 184 IN A 74.125.230.229 google.com. 184 IN A 74.125.230.230 google.com. 184 IN A 74.125.230.231 google.com. 184 IN A 74.125.230.232 google.com. 184 IN A 74.125.230.233 google.com. 184 IN A 74.125.230.238 google.com. 184 IN A 74.125.230.224 google.com. 184 IN A 74.125.230.225 google.com. 184 IN A 74.125.230.226Thursday, March 14, 13
  124. 124. DNS Tips DNS records dig -t A servergrove.eu @ns1.servergrove.com ;; ANSWER SECTION: servergrove.eu. 3600 IN A 149.5.47.100Thursday, March 14, 13
  125. 125. DNS Tips DNS Delegation http://www.simpledns.com/lookup-dg.aspxThursday, March 14, 13
  126. 126. DNS Tips traceroute traceroute google.com traceroute to google.com (173.194.37.33), 30 hops max, 40 byte packets 1 2.69-195-222.static.servergrove.com (69.195.222.2) 0.360 ms 0.365 ms 0.432 ms 2 t0-1-0-5.br2.mia.terremark.net (66.165.161.45) 1.558 ms 1.546 ms 1.532 ms 3 core1-1-0-0.mia.net.google.com (198.32.124.133) 0.238 ms 0.224 ms 0.230 ms 4 209.85.253.74 (209.85.253.74) 0.266 ms 0.283 ms 0.312 ms 5 209.85.254.252 (209.85.254.252) 12.764 ms 12.757 ms 12.749 ms 6 64.233.175.92 (64.233.175.92) 14.177 ms 14.257 ms 14.359 ms 7 atl14s07-in-f1.1e100.net (173.194.37.33) 13.653 ms 13.606 ms 13.618 msThursday, March 14, 13
  127. 127. DNS Tips http://whereisitup.comThursday, March 14, 13
  128. 128. DNS Tips mtrThursday, March 14, 13
  129. 129. MonitoringThursday, March 14, 13
  130. 130. Monitoring Apache Requests <Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from .your_domain.com </Location> ExtendedStatus OnThursday, March 14, 13
  131. 131. Monitoring Apache RequestsThursday, March 14, 13
  132. 132. Monitoring - Cacti - Ganglia - Zabbix - collectd - statsd / StatsDBundle - graphiteThursday, March 14, 13
  133. 133. Monitoring statsd / StatsDBundle / GraphiteThursday, March 14, 13
  134. 134. Monitoring CPU / Memory / IO topThursday, March 14, 13
  135. 135. Monitoring IO iotopThursday, March 14, 13
  136. 136. Monitoring Network iptrafThursday, March 14, 13
  137. 137. Monitoring Handling logs - Centralize logs with syslog error_log = syslog - Monolog supports syslog - logstash, logster, loggly, logioThursday, March 14, 13
  138. 138. Monitoring Handling logs $ grep POST /var/log/apache2/access_logThursday, March 14, 13
  139. 139. Speeding upThursday, March 14, 13
  140. 140. Speeding up - nginx/php-fpm - APC - ZendOptimizer+ - Memcache - nginx reverse proxy cache - VarnishThursday, March 14, 13
  141. 141. BackupsThursday, March 14, 13
  142. 142. Backups - rsync - rdiff-backup - Unison - Bacula - AmandaThursday, March 14, 13
  143. 143. Backups Don’t forget to backup your DB!http://blog.servergrove.com/2012/01/24/backup-your-mysql- database-using-mysqldump/Thursday, March 14, 13
  144. 144. Reading List - Automating UNIX and Linux Administration - Running Linux - Learning the bash Shell: Unix Shell ProgrammingThursday, March 14, 13
  145. 145. The End Questions? Sysadmin skills for PHP developersThursday, March 14, 13
  146. 146. Sysadmin skills for PHP developers http://joind.in/8376 Thank you! Pablo Godel @pgodelThursday, March 14, 13
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×