LAMP编译安装






一、服务器环境


  [root@fang ~]# cat /etc/redhat-release


  Red Hat Enterprise Linux Server release 5.8 (Tikanga)


  [root@fang ~]# uname -a


  Linux fang 2.6.18-308.el5 #1 SMP Fri Jan 27 17:21:15 EST 2012 i686 i686 i386 GNU/Linux




二、基础环境安装


yum install gcc gcc-c++  bison autoconf automake  zlib-devel ncurses-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel pam-devel openssl-devel libxml2-devel



三、APACHE安装


  1、下载并解压


wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.2.26.tar.gz


tar xzvf httpd-2.2.26.tar.gz


cd httpd-2.2.26


2、编译安装


    ./configure \


   -prefix=/data/apache \


   -enable-module=so \


   -enable-deflate=shared \


   -enable-rewrite=shared \


   -enable-cache \


   -enable-file-cache \


   -with-mpm=worker  \


-enable-threads \


Make && make install


相对来说,prefork方式速度要稍高于worker,然而它需要的cpu和memory资源也稍多于woker。


3、启动apache服务


  ./apachectl start


  启动报错:httpd: Could not reliably determine the server's fully qualified domain name,  


  using 127.0.0.1 for ServerName


4、修改配置文件


  vi httpd.conf


  #ServerName www.example.com:80


   ServerName localhost:80


5、重新启动apache服务


  [root@hrd bin]# ./apachectl start


  [root@hrd bin]# ps -ef|grep httpd


  root      5189     1  0 16:04 ?        00:00:00 /data/apache/bin/httpd -k start


  daemon    5190  5189  0 16:04 ?        00:00:00 /data/apache/bin/httpd -k start


  daemon    5191  5189  0 16:04 ?        00:00:00 /data/apache/bin/httpd -k start


  daemon    5193  5189  0 16:04 ?        00:00:00 /data/apache/bin/httpd -k start


  daemon    5195  5189  0 16:04 ?        00:00:00 /data/apache/bin/httpd -k start


  root      5276 14464  0 16:04 pts/1    00:00:00 grep httpd


  如上表示启动成功。


6、配置虚拟站点


      a.开启虚拟站点功能。取消Incldue前的注释#


      [root@hrd conf]# grep vhost httpd.conf


      Include conf/extra/httpd-vhosts.conf


      b.配置虚拟站点配置文件


      cd  /data/apache/conf/extra


  <VirtualHost *:80>  端口为80


   ServerAdmin webmaster@dummy-host.example.com  管理员邮箱


   DocumentRoot "/home/www/wwwroot"   站点目录


   ServerName fang.com   站点域名


   ServerAlias www.fang.com   站点别名


   ErrorLog "logs/fang-error_log"  站点错误日志


   CustomLog "logs/fang-access_log" common   站点日志


  </VirtualHost>


      C.创建网站目录和首页文件


      Mkdir www


      Echo www  >index.html


  7、重启apache服务,并检查授权文件


  [root@hrd bin]# ./apachectl graceful



  [root@hrd bin]# vi httpd.conf


  <Directory /home/www/wwwroot>   网站目录


  Options FollowSymLinks  


  AllowOverride None   浏览目录


  Order allow,deny     允许访问


  Allow from all


  </Directory>


 8、域名访问显示正常


四、apache优化


  1、启用网站缓存功能


  如果已经编译完成,没有编译mod_expires参数,手工添加


/usr/local/apache/bin/apxs


-i -a -c /usr/local/soft/httpd-2.2.26/modules/metadata/mod_expires.c


   chmod 755 /usr/local/apache/modules/mod_expires.so


  2、检查是否安装成功


    [root@fang conf]# grep mod_expires.so  httpd.conf


    LoadModule expires_module     modules/mod_expires.so


  3、添加缓存文件类型到配置文件,缓存时间设置为1


<IfModule mod_expires.c>


      ExpiresActive On 激活缓存功能
      ExpiresDefault "access plus 12 month"
      ExpiresByType text/html "access plus 12 months"  文本
      ExpiresByType text/css "access plus 12 months"   样式
      ExpiresByType p_w_picpath/gif "access plus 12 months"  动态
      ExpiresByType p_w_picpath/jpeg "access plus 12 months" 图片
      ExpiresByType p_w_picpath/jpg "access plus 12 months" 图片
      ExpiresByType p_w_picpath/png "access plus 12 months" 图片
      EXpiresByType application/x-shockwave-flash "access plus 12 months"
      EXpiresByType application/x-javascript "access plus 12 months"
      ExpiresByType video/x-flv "access plus 12 months"


</IfModule>


4、启动网站压缩功能


     如果已经编译完成,没有编译mod_expires参数,手工添加


    /usr/local/apache/bin/apxs -i -a -c  


     /usr/local/soft/httpd-2.2.26/modules/filters/mod_deflate.c


     chmod 755 /usr/local/apache/modules/mod_deflate.so


5、检查是否安装成功


  [root@fang conf]# grep mod_deflate.so httpd.conf


  LoadModule deflate_module     modules/mod_deflate.so


6、添加压缩文件类型到配置文件


     <ifmodule mod_deflate.c>


      DeflateCompressionLevel 3


SetOutputFilter DEFLATE      


BrowserMatch ^Mozilla/4 gzip-only-text/html      


BrowserMatch ^Mozilla/4\.0[678] no-gzip      


BrowserMatch \bMSIE !no-gzip !gzip-only-text/html      


SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary      


      Header append Vary User-Agent env=!dont-vary  


</ifmodule>


7、检查配置文件时报错


    /usr/local/apache/bin/apachectl  -t


Invalid command 'Order', perhaps misspelled or defined by a module not includedin the server configuration


    原因:是因为LoadModule authz_host_module modules/mod_authz_host.so


这个模块没有加载


  8、编译安装mod_headers.c


   /usr/local/apache/bin/apxs  


-i -a -c /usr/local/soft/httpd-2.2.26/modules/metadata/mod_headers.c



9、重新启动apache


   [root@fang ~]# /usr/local/apache/bin/apachectl  -t


Syntax OK


/usr/local/apache/bin/apachectl  graceful


10、测试压缩与缓存,如下图,压缩率为3倍,缓存时间为一年


spacer.gif



五、MYSQL安装与优化


1MYSQL下载地址http://mirrors.sohu.com/mysql/


2、下载源码包   wget http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.34.tar.gz


3MYSQL5.5X以上版本均采用CMAKE安装方式,需要先安装CMAKE工具


  #wget http://www.cmake.org/files/v2.8/cmake-2.8.12.1.tar.gz        


  # tar zxvf cmake-2.8.12.1.tar.gz


  # cd cmake-2.8.12.1


  # ./configure


  # make


  # make install


3、解压源码包并进入目录


   tar xzvf mysql-5.5.33-linux2.6-x86_64.tar.gz


   cd mysql-5.5.33-linux2.6-x86_64


4、确认编译环境是否具备


   yum -y install gcc* gcc-c++* autoconf* automake* zlib* libxml* ncurses-devel* libgcrypt* libtool*


5、创建mysql安装目录及数据目录


  安装目录mkdir /usr/local/mysql


  数据存储mkdir /usr/local/mysql/data


6、创建用户和用户组与赋予数据存放目录权限


 groupadd mysql


 useradd -g mysql mysql


 chown mysql.mysql -R /usr/local/mysql


7、进行编译安装,配置编译参数


  cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \


 -DMYSQL_DATADIR=/usr/local/mysql/data \


 -DMYSQL_TCP_PORT=3306 \


 -DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysqld.sock \


 -DMYSQL_USER=mysql \


 -DDEFAULT_CHARSET=utf8 \


 -DDEFAULT_COLLATION=utf8_general_ci \


 -DEXTRA_CHARSETS=all \


 -DWITH_READLINE=1 \


 -DWITH_EMBEDDED_SERVER=1 \


 -DENABLED_LOCAL_INFILE=1 \


 -DWITH_INNOBASE_STORAGE_ENGINE=1


   make && make install



8、初始化数据库


  /usr/local/mysql/scripts/mysql_install_db \


  --defaults-file=/etc/my.cnf \


  --basedir=/usr/local/mysql \


  --datadir=/usr/local/mysql/data \


  --user=mysql


9、复制配置文件到/etc目录下并初始化数据库


  cp /data/mysql/support-files/my-medium.cnf  /etc/my.cnf


10、配置启动脚本


   cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysql



11、赋权并修改MYSQL启动位置


   chmod +x /etc/init.d/mysql


   cp  /usr/local/mysql/bin/mysql  /usr/bin/


12、启动数据库并配置数据库密码


  service mysql start


  /usr/local/mysql/bin/mysqladmin -u root password  '123456'


  [root@hrd ~]# mysql -u root -p


  Enter password:


  mysql>


  或者修改密码


  UPDATE user SET password=PASSWORD("new password") WHERE user='root';


13、授权用户本地与远程访问数据库的权限


   grant all privileges on *.* to root@'%' identified by 'hrdtech2013';


   flush privileges;


14my.cnf优化


   [client]


   #password       = your_password


   port            = 3306


   socket          = /usr/local/mysql/data/mysqld.sock


   default-character-set = utf8


   # The MySQL server


   [mysqld]


   port            = 3306


   socket          = /usr/local/mysql/data/mysqld.sock


   character-set-server=utf8


   log-error = /usr/local/mysql/data


   pid-file = /usr/local/mysql/data/hrd.pid


   skip-external-locking


   key_buffer_size = 256M


   max_allowed_packet = 4M


   table_open_cache = 1024


   sort_buffer_size = 2M


   net_buffer_length = 8K


   read_buffer_size = 1M


   tmp_table_size = 16M


   read_rnd_buffer_size = 8M


   myisam_sort_buffer_size = 8M


   back_log = 200


   skip-name-resolve


   max_connections = 1000


   wait_timeout = 120


   thread_concurrency = 8


   long_query_time = 2


   slow-query_log


   slow-query_log_file = /usr/local/mysql/data/slow.log


   lower_case_table_names = 1



15mysql字符集优化


   SHOW VARIABLES LIKE 'CHARACTER%';  查看字符环境
















六、PHP安装与配置


 1、安装PHP需要的支持文件,检查编译环境


  [root@fang soft]# rrpm -qa zlib-devel libxm12-devel libjpeg-devel


  freetype-devel


  libjpeg-devel-6b-37


  zlib-devel-1.2.3-4.el5


  zlib-devel-1.2.3-4.el5


  freetype-devel-2.2.1-28.el5_7.2


  libjpeg-devel-6b-37


  freetype-devel-2.2.1-28.el5_7.2


  2、下载并安装libconv


 wget http://ftp.gnu.org/gnu/libiconv/libiconv-1.14.tar.gz


 tar xzvf libiconv-1.14.tar.gz


 cd libiconv-1.14


  ./configure


  make && make install


  3、安装并编译PHP


  wget http://cn2.php.net/get/php-5.4.23.tar.gz/from/this/mirror


  tar xzvf php-5.4.23.tar.gz


./configure \
--prefix=/usr/local/php \
--with-mysql=/usr/local/mysql \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-jpeg-dir \


--with-freetype-dir \


--with-libXML-dir \


--with-png-dir \


--with-zlib \


--enable-pdo \


--with-pdo-mysql \


--with-mysql


     Make && make install


  4、增加apache支持PHP配置文件


     在/usr/local/apahce/conf/httpd.conf173行添加首页支持类型


     DirectoryIndex index.html index.shtml index.cgi index.php index.phtm


     在httpd.conf结尾增加如下内容支持PHP


     AddType application/x-httpd-php .php .phtml


     AddType application/x-httpd-php-source .phps


     AddType application/x-httpd-php .php


  5、复制配置文件到PHP目录下


     /usr/local/soft/php-5.4.23/cp php.ini-production  /usr/local/php/lib/php.ini


  6、修改默认用户,在配置文件7273


    cd /usr/local/apache/conf/


    ls


    vi httpd.conf


    useradd ett -M -s /sbin/nologin


    grep ett /etc/passwd


  7、创建php测试文件,测试php正常访问


  [root@fang www]# cat index.php


  <?php


  phpinfo();


  ?>


  8、创建PHP连接MYSQL测试文件


  cd www


  vi testmysql.php


  <?php


  /*


  #this scripts is created by fang


  */


       //$link_id=mysql_connect('主机名','用户','密码');


       $link_id=mysql_connect('localhost','root','123456') or mysql_error();


       //$link_id=mysql_connect('localhost','test','');


       if($link_id){


               echo "mysql successful by oldboy !";


       }else{


               echo mysql_error();


       }



  ?>


   9、打开浏览器http:192.168.1.200/testmysql.php,返回mysql successful by oldboy !


  表示Php连接mysql成功


spacer.gif


七、PHP扩展


    1memcahe缓存扩展


memcache 的工作就是在专门的机器的内存里维护一张巨大的 hash 表,来存储经常被读写的一些数组与文件,从而极大的提高网站的运行效率,减轻后端数据库的读写压力。


     2、下载并安装


     wget http://pecl.php.net/get/memcache-2.2.6.tgz


     tar zxvf memcache-2.2.6.tgz


     cd memcache-2.2.6


     3、检查PHP是否支持


     [root@fang memcache-2.2.6]# /usr/local/php/bin/phpize


   Configuring for:


   PHP Api Version:         20100412


   Zend Module Api No:      20100525


   Zend Extension Api No:   220100525


4、进行编译安装


[root@fang memcache-2.2.6]#


 ./configure --with-php-config=/usr/local/php/bin/php-config  --enable-memcache


  Make && make install


  安装时报/usr/local/soft/memcache-2.2.6/memcache.c:2232: 错误:提供给函数 ‘zend_list_insert’ 的实参太少


打开memcache.c文件,


将所有的:zend_list_insert(pool, le_memcache_pool);


改为:zend_list_insert(pool, le_memcache_pool TSRMLS_CC);


保存,退出继续编译,成功搞定


  Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20100525/


     5、安装测试make test



    6、在php.ini中添加memcahe扩展


    将729行扩展目录地址修改如下:


     extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20100525/"


    在尾行添加扩展


     extension = "memcache.so"


    7重启apache,然后再访问phpinfo.php 就看到支持memcahe


spacer.gif