LAMP构建----基于FCGI的轻量级WEB服务器全手动编译安装

一、编译安装apache

 
1、解决依赖关系
 
httpd-2.4.4需要较新版本的apr和apr-util,因此需要事先对其进行升级。这里我们事先下载好了apr-1.4.6.tar.bz2和apr-util-1.5.2.tar.bz2的包。
 
(1) 编译安装apr
  
  
  
  
  1. # tar xf apr-1.4.6.tar.bz2 
  2. # cd apr-1.4.6 
  3. # ./configure --prefix=/usr/local/apr 
  4. # make && make install 
(2) 编译安装apr-util
  
  
  
  
  1. # tar xf apr-util-1.5.2.tar.bz2 
  2. # cd apr-util-1.5.2 
  3. # ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr 
  4. # make && make install 
3、修改httpd的主配置文件,设置其Pid文件的路径
  
  
  
  
  1. 编辑/etc/httpd/httpd.conf,添加如下行即可: 
  2. PidFile  "/var/run/httpd.pid"                               #此步骤是为了我们下一步的脚本使用的 
4、提供SysV服务脚本/etc/rc.d/init.d/httpd,以便于我们能够使用service httpd start开启和关闭服务,脚本我们已经写好了,这里就给大家共享一下:
  
  
  
  
  1. #!/bin/bash 
  2. # 
  3. # httpd        Startup script for the Apache HTTP Server 
  4. # 
  5. # chkconfig: - 85 15 
  6. # description: Apache is a World Wide Web server.  It is used to serve \ 
  7. #          HTML files and CGI. 
  8. # processname: httpd 
  9. # config: /etc/httpd/conf/httpd.conf 
  10. # config: /etc/sysconfig/httpd 
  11. # pidfile: /var/run/httpd.pid 
  12.  
  13. # Source function library. 
  14. . /etc/rc.d/init.d/functions 
  15.  
  16. if [ -f /etc/sysconfig/httpd ]; then 
  17.         . /etc/sysconfig/httpd 
  18. fi 
  19.  
  20. # Start httpd in the C locale by default. 
  21. HTTPD_LANG=${HTTPD_LANG-"C"
  22.  
  23. # This will prevent initlog from swallowing up a pass-phrase prompt if 
  24. # mod_ssl needs a pass-phrase from the user. 
  25. INITLOG_ARGS="" 
  26.  
  27. # Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server 
  28. # with the thread-based "worker" MPM; BE WARNED that some modules may not 
  29. # work correctly with a thread-based MPM; notably PHP will refuse to start. 
  30.  
  31. # Path to the apachectl script, server binary, and short-form for messages. 
  32. apachectl=/usr/local/apache/bin/apachectl 
  33. httpd=${HTTPD-/usr/local/apache/bin/httpd} 
  34. prog=httpd 
  35. pidfile=${PIDFILE-/var/run/httpd.pid} 
  36. lockfile=${LOCKFILE-/var/lock/subsys/httpd} 
  37. RETVAL=0 
  38.  
  39. start() { 
  40.         echo -n $"Starting $prog: " 
  41.         LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS 
  42.         RETVAL=$? 
  43.         echo 
  44.         [ $RETVAL = 0 ] && touch ${lockfile} 
  45.         return $RETVAL 
  46.  
  47. stop() { 
  48.     echo -n $"Stopping $prog: " 
  49.     killproc -p ${pidfile} -d 10 $httpd 
  50.     RETVAL=$? 
  51.     echo 
  52.     [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile} 
  53. reload() { 
  54.     echo -n $"Reloading $prog: " 
  55.     if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then 
  56.         RETVAL=$? 
  57.         echo $"not reloading due to configuration syntax error" 
  58.         failure $"not reloading $httpd due to configuration syntax error" 
  59.     else 
  60.         killproc -p ${pidfile} $httpd -HUP 
  61.         RETVAL=$? 
  62.     fi 
  63.     echo 
  64.  
  65. # See how we were called. 
  66. case "$1" in 
  67.   start) 
  68.     start 
  69.     ;; 
  70.   stop) 
  71.     stop 
  72.     ;; 
  73.   status) 
  74.         status -p ${pidfile} $httpd 
  75.     RETVAL=$? 
  76.     ;; 
  77.   restart) 
  78.     stop 
  79.     start 
  80.     ;; 
  81.   condrestart) 
  82.     if [ -f ${pidfile} ] ; then 
  83.         stop 
  84.         start 
  85.     fi 
  86.     ;; 
  87.   reload) 
  88.         reload 
  89.     ;; 
  90.   graceful|help|configtest|fullstatus) 
  91.     $apachectl $@ 
  92.     RETVAL=$? 
  93.     ;; 
  94.   *) 
  95.     echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}" 
  96.     exit 1 
  97. esac 
  98.  
  99. exit $RETVAL 
而后为此脚本赋予执行权限:
  
  
  
  
  1. # chmod +x /etc/rc.d/init.d/httpd 
加入服务列表:
  
  
  
  
  1. # chkconfig --add httpd 
  2. # chkconfig --level 35 httpd on 
  3. # service httpd restart 
将httpd服务命令添加到环境变量中去:
  
  
  
  
  1. # vim /etc/profile.d/httpd.sh 
  2.     export PATH=$PATH:/usr/local/apache/bin 
如此我们的APACHE服务器就算是搭建好了!此时我们启动服务器,查看一下网页!

 
二、安装mysql-5.6.10
 
1、准备数据存放的文件系统
 
新建一个逻辑卷,并将其挂载至特定目录即可。这里不再给出过程。
 
这里假设其逻辑卷的挂载目录为/mydata,而后需要创建/mydata/data目录做为mysql数据的存放目录。
   
   
   
   
  1. # fdisk /dev/sda                        #创建一个20G的分区 
  2. # partprobe /dev/sda                    #刷新重读 
  3. # pvcreate /dev/sda6                    #创建PV 
  4. # vgcreate myvg /dev/sda6               #创建VG 
  5. # lvcreate -n mydata -L 5G myvg         #创建LV 
  6. # mke2fs -j /dev/myvg/mydata            #格式化为ext3 
  7. # mkdir /mydata -pv                     #创建挂载点 
  8. # vim /etc/fstab                        #修改为开机挂载 
  9. # mount -a                              #挂载至挂载点 
  10. # mkdir /mydata/data                    #创建一个数据存储目录 
  11. # chown -R mysql.mysql /mydata/data/    #修改存储目录的属主属组 
  12. # chmod o-rx /mydata/data/              #修改其他用户的读写权限 
2、新建用户以安全方式运行进程:
  
  
  
  
  1. # groupadd -r -g 306 mysql 
  2. # useradd -g 306 -r -u 306 mysql 
  3. # less INSTALL-BINARY                   #可以用来查看软件自带的安装说明 
  4. # chown -R mysql.mysql /usr/local/mysql/*  #修改安装文件的属主属组 
  5. # chown -R mysql:mysql /mydata/data 
3、安装并初始化mysql-5.5.10
 
在这里我们已经下载好了mysql-5.6.10-linux-glibc2.5-i686.tar.gz的软件包
   
   
   
   
  1. # tar xf mysql-5.6.10-linux-glibc2.5-i686.tar.gz -C /usr/local 
  2. # cd /usr/local/ 
  3. # ln -sv mysql-5.6.10-linux-glibc2.5-i686 mysql 
  4. # cd mysql 
  5.  
  6. # chown -R mysql:mysql  .                               #修改文件的属主属组 
  7. # scripts/mysql_install_db --user=mysql --datadir=/mydata/data 
  8. # chown -R root  . 
4、为mysql提供服务启动脚本
  
  
  
  
  1. # cd support-files/ 
  2. # cp mysql.server /etc/init.d/mysqld 
  3. # chmod +x /etc/init.d/mysqld 
  4. 添加到服务启动列表中 # chkconfig --add mysqld # chkconfig mysqld on
5、为mysql提供配置文件
  
  
  
  
  1. # cd /usr/local/mysql/support-files 
  2. # cp my-default.cnf /etc/my.cnf 
这里需要指定mysql数据文件的存放位置:
datadir = /mydata/data
 
为了系统更加安全,这里我们修改文件的属主为root
# chown -R root /usr/local/mysql/*
 
至此就可以启动服务了,只是为了使mysql的使用更符合系统的规范,需要添加环境变量、man文件和头文件;
 
6、输出mysql的man手册至man命令的查找路径:
 
编辑/etc/man.config,添加如下行即可:
MANPATH  /usr/local/mysql/man
 
7、输出mysql的头文件至系统头文件路径/usr/include:
 
这可以通过简单的创建链接实现:
# ln -sv /usr/local/mysql/include  /usr/include/mysql
 
8、输出mysql的库文件给系统库查找路径:
 
# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
 
而后让系统重新载入系统库:
# ldconfig
 
9、修改PATH环境变量,让系统可以直接使用mysql的相关命令。
# vim /etc/profile.d/mysql.sh
export PATH=$PATH:/usr/local/mysql/bin
 
 
三、编译安装php-5.4.13
 
1、手动编译安装
    
    
    
    
  1. # tar xf php-5.4.13.tar.bz2 
  2. # cd php-5.4.13 
  3. # ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --enable-sockets --enable-fpm --with-mcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 
  4. # make 
  5. # make install 
为php提供配置文件:
# cp php.ini-production /etc/php.ini
 
2、配置php-fpm
 
为php-fpm提供Sysv init脚本,并将其添加至服务列表:
   
   
   
   
  1. # cp sapi/fpm/init.d.php-fpm  /etc/rc.d/init.d/php-fpm 
  2. # chmod +x /etc/rc.d/init.d/php-fpm 
  3. # chkconfig --add php-fpm 
  4. # chkconfig php-fpm on 
为php-fpm提供配置文件:
  
  
  
  
  1. # cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf  
编辑php-fpm的配置文件:
  
  
  
  
  1. # vim /usr/local/php/etc/php-fpm.conf 
  2. 配置fpm的相关选项为你所需要的值,并启用pid文件(如下最后一行): 
  3. pm.max_children = 50                                #同时允许在线人数 
  4. pm.start_servers = 5                                #开始启动进程数 
  5. pm.min_spare_servers = 5                            #最少空闲进程数 
  6. pm.max_spare_servers = 8                            #最多空闲进程数 
  7. pid = /usr/local/php/var/run/php-fpm.pid  
接下来就可以启动php-fpm了:
# service php-fpm start
 
使用如下命令来验正(如果此命令输出有中几个php-fpm进程就说明启动成功了):
# ps aux | grep php-fpm
 
默认情况下,fpm监听在127.0.0.1的9000端口,也可以使用如下命令验正其是否已经监听在相应的套接字。
   
   
   
   
  1. # netstat -tnlp | grep php-fpm 
  2. tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      689/php-fpm  
三、配置httpd-2.4.4
 
1、启用httpd的相关模块
 
在Apache httpd 2.4以后已经专门有一个模块针对FastCGI的实现,此模块为mod_proxy_fcgi.so,它其实是作为mod_proxy.so模块的扩充,因此,这两个模块都要加载
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
 
vim /etc/httpd/httpd.conf
注释掉中心主机:DocumentRoot 
启用Incude /ect/httpd/extra/httpd-vhosts.conf
 
2、配置虚拟主机支持使用fcgi
 
vim /ect/httpd/extra/httpd-vhosts.conf
 
在相应的虚拟主机中添加类似如下两行。
ProxyRequests Off   关闭正向代理功能
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1
这里的虚拟地址配置文件我已经做好了:
    
    
    
    
  1. <VirtualHost *:80
  2.     ServerName www.1.com 
  3.     DocumentRoot "/web/1.com" 
  4.     <Directory "/web/1.com"
  5.         Options none 
  6.         AllowOverride none 
  7.         Require all granted 
  8.     </Directory> 
  9.     ProxyRequests Off 
  10.     ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/web/1.com/$1 
  11.     ErrorLog "/var/log/httpd/1.com/error_log" 
  12.     CustomLog "/var/log/httpd/1.com/access_log" combined 
  13. </VirtualHost> 
  14.  
  15. <VirtualHost *:80
  16.     ServerName www.2.com 
  17.     <Directory "/web/2.com"
  18.         Options none 
  19.         AllowOverride none 
  20.         Require all granted 
  21.     </Directory> 
  22.     ProxyRequests Off 
  23.     ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/web/2.com/$1 
  24.     DocumentRoot "/web/2.com" 
  25.     ErrorLog "/var/log/httpd/2.com/error_log" 
  26.     CustomLog "/var/log/httpd/2.com/access_log" combined 
  27. </VirtualHost> 
ProxyRequests Off:关闭正向代理
ProxyPassMatch:把以.php结尾的文件请求发送到php-fpm进程,php-fpm至少需要知道运行的目录和URI,所以这里直接在fcgi://127.0.0.1:9000后指明了这两个参数,其它的参数的传递已经被mod_proxy_fcgi.so进行了封装,不需要手动指定。
 
3、编辑apache配置文件httpd.conf,让apache能识别php格式的页面,并支持php格式的主页
   
   
   
   
  1. # vim /etc/httpd/httpd.conf 
  2. 1、添加如下二行 
  3.   AddType application/x-httpd-php  .php 
  4.   AddType application/x-httpd-php-source  .phps 
  5.  
  6. 2、定位至DirectoryIndex index.html  
  7.   修改为: 
  8.    DirectoryIndex  index.php  index.html 
  9.  
  10. 充:Apache httpd 2.4以前的版本中,要么把PHP作为Apache的模块运行,要么添加一个第三方模块支持PHP-FPM实现。 
安装xcache,为php加速:
 
1、安装
  
  
  
  
  1. # tar xf xcache-3.0.1.tar.gz 
  2. # cd xcache-3.0.1 
  3. # /usr/local/php/bin/phpize 
  4. # ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config 
  5. # make && make install 
  6.  
  7. 安装结束时,会出现类似如下行: 
  8. Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20100525
2、编辑php.ini,整合php和xcache:
 
首先将xcache提供的样例配置导入php.ini
   
   
   
   
  1. # mkdir /etc/php.d 
  2. # cp xcache.ini /etc/php.d 
3,重启php-fpm 加载模块
  
  
  
  
  1. #  service php-fpm  restart  
4、刷新页面看 Xcache是否加载进来

最后我们为给PHP添加phpMyAdmin的站点,以便于通过网页来访问和管理我们的数据库:
  
  
  
  
  1. 1, tar xvf  phpMyAdmin-3.5.1-all-languages  -C /www/a.com   ##这里是网站目录下 
  2. 2,cd /www/a.com/ 
  3. 3, mv phpMyAdmin-3.5.1-all-languages  pma 
  4. 4,cd pma 
  5. 5,cp config.sample.inc.php  config.inc.php 
  6. 6,vim config.inc.php  添加随机数 大概在17行 
  7. 7,mysqladmin  -uroot  password 'redhat' 
  8. 8,登陆 www.1.com/pma 
至此,一个完整的能够通过网页管理MySQL的LAMP的轻量级WEB服务器就搭建好了!

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

你可能感兴趣的:(安装,服务器,lamp,web服务器)