教你源码编译制作LAMP详细过程

时间:2022-12-28 09:04:16

教你源码编译制作LAMP详细过程LAMP是什么呢?就像SHE、羽泉、凤凰传奇等众多著名歌手组合一样,LAMP其实也是一个组合。这个组合在linux界甚至整个IT界可是相当的出名,其实现的功能很是强大。待会给你个图表,你看一下就知道LAMP有多强大了。说了这么多,那LAMP到底是什么呢?既然是组合,那就先介绍下各自代表什么吧。L,即linux操作系统;A,即Apache服务器;M,即MySQL数据库;P,即PHP/Perl/Python等脚本语言。Linux+Apache+Mysql+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。随着开源潮流的蓬勃发展,开放源代码的LAMP已经与J2EE和.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个IT界的关注。从网站的流量上来说,70%以上的访问流量是LAMP来提供的,LAMP是最强大的网站解决方案。

下面是一个图表,介绍几个比较出名的网站的架构。


System

Server

Storage

Script

Yahoo

FreeBSD   + Linux

Apache

MySQL

PHP

Facebook

FreeBSD

Apache

MySQL   + Memcached

PHP

Wikimedia

Linux

Apache   + Lighttpd

MySQL   + Memcached

PHP

Flickr

Redhat   Linux

Apache

MySQL   + Memcached

PHP+   Perl

Sina

FreeBSD   + Solaris

Apache   + Nginx

MySQL   + Memcached

PHP

YouTube

Suse   Linux

Apache   + Lighttpd

MySQL

Python


从上表你应该已经看出来LAMP的强大之处了吧。因为是源码编译安装,下面就介绍下我们所使用的各个软件。此次介绍的源码编译安装LAMP,这里我们是在VMware虚拟机里实现的。linux系统使用的是RedHat5.8发行版;Apache服务器主要提供http服务,使用的是 httpd-2.4.4.tar.bz2源码包,httpd-2.4.4需要较新版本的apr和apr-util,这里我们使用的是apr-1.4.6.tar.bz2源码包,及apr-util-1.5.2.tar.bz2源码包;MySQL用来提供数据库支持,使用的是mysql-5.6.10-linux-glibc2.5-i686.tar.gz源码包;这里我们使用PHP脚本语言,主要用来提供动态网页效果,使用的版本为php-5.4.13.tar.bz2源码包。各源码包这里不再提供,请各位自行搜索下载。既然都是一个个的源码包,这里我们先来介绍下各自的安装次序,这可不是随便安装哪个都可以的,所以请各位看好了,记好了,不按要求安装,弄错了自行负责啊。 安装次序为:apr --> apr-util --> httpd --> MySQL --> Php --> XCache

下面介绍下为何是这样的安装次序。上边已经提到了,在linux上安装httpd,但其依赖apr和apr-util,所以我们需先安装apr和apr-util。而apr-util是apr的工具包。安装过apr和apr-util及httpd后,因php安装时需mysql的支持,所以需先安装mysql然后安装php。XCache是为php提供加速功能的。到时候我们看情况,如何允许介绍如何安装。在安装mysql后会介绍一个软件,该软件可实现在图形化界面下管理我们linux中的数据库。php安装完成后介绍一个基于php的开源的动态网站,该网站所显示的界面我们在很多地方都见过。 在开始我们的源码编译安装前,请确保你的linux系统已经安装过开发工具和开发库,即:Development Libraries和Development Tools。安装方法为,先确保本机有yum源然后使用该命令yum groupinstall "Development Libraries" "Development Tools"即可。因我们是在虚拟机里实现,因此,请确保你的虚拟机时间正确,因我们使用的各个软件版本基本上都是最新版的,如果你虚拟机的时间不对,可能会显示该软件来自未来,无法识别。因此,在编译安装前请确保你的时间是正确的。下面我们就开始吧。 这里我们先下载好所有我们需要的各源码包,包括:apr-1.4.6.tar.bz2,apr-util-1.5.2.tar.bz2,httpd-2.4.4.tar.bz2,mysql-5.6.10-linux-glibc2.5-i686.tar.gz,php-5.4.13.tar.bz2,xcache-2.0.0.tar.bz2。还有两个我们先下载下来,phpMyAdmin-3.4.10.1-all-languages.tar.bz2和Discuz_X2.5_SC_GBK.zip。 这里我将各源码包放在了/root目录下了,放哪个目录下无所谓,好,下面我们一步步来编译安装各软件包。 首先解压apr-1.4.6.tar.bz2软件包。
  
 
 
  1. tar xf apr-1.4.6.tar.bz2   #解压软件包

  2. cd apr-1.4.6#进入该目录

  3. ./configure --prefix=/usr/local/apr   #指定我们源码编译的软件包安装目录

  4. make  

  5. make install

注意,这里我们之所以将我们的软件包安装在/usr/local/apr目录下,是因为我们的linux上自带有apr软件包,可使用rpm -q apr命令查看下,只是版本比较老而已。可能有些人会问,为什么不先卸载了在安装或者干脆升级呢,这样不会冲突么?其实我们是不能卸载自带的apr的,因为可能有些其他软件需要依赖老版本的apr,如果我们卸载了,可能导致这些依赖老版本apr的软件无法使用。这里我们采用的是多版本共存的方式编译安装的,只要将我们编译安装的新版本安装在不同目录下即可。因此,这里我们选择安装在/usr/local目录下。 同样的方式解压apr-util-1.5.2.tar.bz2源码包。
  
 
 
  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   #指定我们该软件包的安装目录,这个是工具包,还需使用另一个选项告诉它apr软件包的位置

  4. make

  5. make install  

这两个安装完毕,下面我们去安装我们的httpd源码包。在安装该软件包之前,先解决其依赖关系,首先安装pcre-devel开发包。可使用yum命令,即yum install pcre-devel,或先用rpm -q pcre-devel查看是否已安装过该软件包。这里不再介绍。下面解压源码包。
  
 
 
  1. tar xf httpd-2.4.4.tar.bz2   #解压该源码包

  2. cd httpd-2.4.4

  3. ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-mpms-shared=all --with-mpm=event

  4. make && make install  #上边的两个命令也可写成这样

  5. 介绍下部分选项的含义:

  6. --prefix                                 #指定安装目录

  7. --sysconfdir                             #指定配置文件安装目录

  8. --enable-so                              #支持动态共享对象

  9. --enable-ssl                             #支持ssl认证

  10. --enable-cgi                             #支持cgi模块

  11. --enable-rewrite                         #支持URL重写

  12. --with-zlib                              #使用特殊的zlib库

  13. --with-pcre                              #支持扩展pcre库

  14. --enable-mpms-shared=all                 #构建MPM为动态模块,指定所有模块为共享模块

  15. --with-mpm=event                         #默认使用event,这里我们主要介绍event模型,可以自行修改为其他模型,如worker

  16. 想了解更多选项含义,可在该目录下使用如下命令:

  17. ./configure --help | less    #less是分频显示,可去掉

  18. 好吧,插播个广告,补充个知识点:

  19. MPM: Multi Path Modules,多道处理模块(至关重要),包含以下几个模块:

  20.    mpm_winnt:windows专用,这里不再介绍;

  21.    prefork:一个请求用一个进程响应;

  22.    worker:一个请求用一个线程响应。系统启动多个进程,每个进程生成多个线程。该模型下,每个web服务器会生成多个进程,而每个进程还可以生成多个线程,用每个线程来响应用户请求,默认web服务器启动两个进程。因linux对线程支持不好,测试发现在linux上worker没有prefork性能好,因此默认在linux上启用prefork。

  23.    event:一个进程处理多个请求,该模型是基于事件驱动模型实现,在所有模型中该模型最强大。

  24. 想深入了解以上各模型请查阅相关资料,或关注我的博客,这里不再介绍。

  25. 回归正题,继续来完成编译安装我们的httpd。

  26. 修改httpd的主配置文件,设置其Pid文件的路径

  27. vim /etc/httpd/httpd.conf     #修改配置文件,在配置文件中添加如下信息

  28. PidFile "/var/run/httpd.pid"#添加该行信息,指定我们的httpd进程文件所在位置

  29. 我们知道,在我们启动RedHat5.8时,当开机启动某个服务时,会显示OK的字样,现在我们也实现这种效果。为我们的httpd提供SysV服务脚本。

  30. vim /etc/rc.d/init.d/httpd    #编辑该文件,添加如下内容

  31. #!/bin/bash          #脚本首行,必须有,其他‘#’的均为注释信息

  32. #

  33. # httpd        Startup script for the Apache HTTP Server

  34. #

  35. # chkconfig: - 85 15       #SysV风格脚本必须有该行信息,指定在2345级别写启动该服务

  36. # description: Apache is a World Wide Web server.  It is used to serve \     #SysV风格脚本必须有该行信息

  37. #          HTML files and CGI.

  38. # processname: httpd

  39. # config: /etc/httpd/conf/httpd.conf      

  40. # config: /etc/sysconfig/httpd

  41. # pidfile: /var/run/httpd.pid      #这三行均为httpd配置文件相关信息,帮助理解该脚本

  42. # Source function library.

  43. . /etc/rc.d/init.d/functions      #调用系统自带函数

  44. if [ -f /etc/sysconfig/httpd ]; then    #如果存在该文件,读取该文件

  45.    . /etc/sysconfig/httpd      

  46. fi

  47. # Start httpd in the C locale by default.

  48. HTTPD_LANG=${HTTPD_LANG-"C"}

  49. # This will prevent initlog from swallowing up a pass-phrase prompt if

  50. # mod_ssl needs a pass-phrase from the user.

  51. INITLOG_ARGS=""

  52. # Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server

  53. # with the thread-based "worker" MPM; BE WARNED that some modules may not

  54. # work correctly with a thread-based MPM; notably PHP will refuse to start.

  55. # Path to the apachectl script, server binary, and short-form for messages.

  56. apachectl=/usr/local/apache/bin/apachectl

  57. httpd=${HTTPD-/usr/local/apache/bin/httpd}

  58. prog=httpd

  59. pidfile=${PIDFILE-/var/run/httpd.pid}          #如果PIDFILE为空或未定义,则使用/var/run/httpd.pid,假如上边配置的进程文件不在该目录下,此处需修改

  60. lockfile=${LOCKFILE-/var/lock/subsys/httpd}    #锁文件

  61. RETVAL=0

  62. start() {

  63.        echo -n $"Starting $prog: "

  64.        LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS

  65.        RETVAL=$?    #取上条命令的执行状态结果

  66.        echo

  67.        [ $RETVAL = 0 ] && touch ${lockfile}   #命令执行成功就创建锁文件

  68. return $RETVAL

  69. }

  70. stop() {

  71.    echo -n $"Stopping $prog: "

  72.    killproc -p ${pidfile} -d 10 $httpd

  73.    RETVAL=$?

  74.    echo

  75.    [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}

  76. }

  77. reload() {

  78.    echo -n $"Reloading $prog: "

  79. if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then

  80.        RETVAL=$?

  81.        echo $"not reloading due to configuration syntax error"

  82.        failure $"not reloading $httpd due to configuration syntax error"

  83. else

  84.        killproc -p ${pidfile} $httpd -HUP

  85.        RETVAL=$?

  86.    fi

  87.    echo

  88. }

  89. # See how we were called.

  90. case "$1"in

  91.  start)

  92.    start    #调用start函数

  93.    ;;

  94.  stop)

  95.    stop      

  96.    ;;

  97.  status)

  98.        status -p ${pidfile} $httpd    

  99.    RETVAL=$?

  100.    ;;

  101.  restart)

  102.    stop

  103.    start

  104.    ;;

  105.  condrestart)

  106. if [ -f ${pidfile} ] ; then

  107.        stop

  108.        start

  109.    fi

  110.    ;;

  111.  reload)

  112.        reload

  113.    ;;

  114.  graceful|help|configtest|fullstatus)

  115.    $apachectl $@

  116.    RETVAL=$?

  117.    ;;

  118.  *)

  119.    echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"

  120.    exit 1

  121. esac

  122. exit $RETVAL

  123. 保存退出后,为此脚本赋予执行权限。

  124. chmod +x /etc/rc.d/init.d/httpd     #为脚本服务赋予执行权限

  125. 记得在开启httpd服务前,关闭本机的selinux,否则有影响。使用如下命令:

  126. getenforce    #查看本机的selinux情况,如果为permissive就不必修改

  127. setenforce 0#关闭selinux,立即生效

  128. vim /etc/selinux/config   #修改如下内容,可永久生效

  129. SELINUX=permissive  

  130. 保存退出。

  131. 编辑添加环境变量

  132. vim /etc/profile.d/httpd.sh  编辑该文件,添加如下一行信息

  133. export PATH=$PATH:/usr/local/apache/bin    #添加环境变量,让系统可直接使用httpd命令

  134. chkconfig --add httpd   #将httpd加入服务列表

  135. chkconfig --list httpd   #可查看该服务脚本在各级别下的启动情况

  136. service httpd start    #启动httpd服务进行测试

  137. netstat -tunlp    #查看下本机的tcp/udp各端口监听情况,可以看到我们的80端口已开启,且处于监听状态

  138. 介绍httpd的几个命令:

  139. httpd -l       #能列出当前服务器上编译时所支持的核心模块

  140. httpd -t       #测试修改过httpd.conf文件后有没有语法错误

  141. httpd -M       #表示显示所有额外装载的模块

至此,我们的http服务就建好了。一块来测试下效果吧。 本虚拟机的IP地址为172.16.32.1,因此,我们打开浏览器,在地址栏输入172.16.32.1,然后回车,可以看到显示有‘It works!’字样,证明我们的http服务可以正常使用了。查看下你使用的linux的IP地址,在地址栏输入你linux的IP,即可显示。

教你源码编译制作LAMP详细过程


接下来,该安装我们的mysql了。

  
 
 
  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  #创建mysql到mysql-5.6.10-linux-glibc2.5-i686的符号链接,这里我们不采用修改文件名的方式,而是创建链接

  4. cd mysql   #进入该目录

在该目录下,有个data的目录,一看名字就知道,这个目录是存放我们的数据的地方。但请各位想想,数据存放在这个目录下会回很不安全,假如某个不法分子攻破我们的mysql服务器,就可以随便查看我们的数据了,这是很危险的,而且,我们的数据文件是动态增涨的,假如哪天我们分的磁盘满了那就不好办了。因此,这里,我们建议将我们的数据文件单独存放在一个磁盘中,且该磁盘格式为逻辑卷,因为,当我们的数据增涨很快时,如果我们的磁盘空间不够,我们可以修改逻辑卷,增大其容量。另一个问题就是,mysql目录下的所有文件都是root属主,root属组,当我们的mysql进程运行时,是以mysql的身份运行的,而mysql对该目录下的文件没有执行权限,因此我们就需要修改该目录下的所有文件及目录,让mysql具有执行权限,但目前我们系统现在还没有mysql用户,因此我们还需要创建mysql用户,mysql组。
  
 
 
  1. 先创建我们的逻辑卷。

  2. fdisk /dev/sda  #创建一个新磁盘分区,将其格式修改为8e,即LVM格式。本机为/dev/sda5

  3. partprobe /dev/sda   #让内核重读磁盘分区

  4. pvcreate /dev/sda5     #创建物理卷

  5. vgcreate myvg /dev/sda5    #创建卷组,卷组名为myvg

  6. lvcreate -n mydata -L 5G myvg    #在卷组上创建逻辑卷,大小为5G,卷标为mydata

  7. lvs     #查看创建的逻辑卷信息

  8. mke2fs -j /dev/myvg/mydata    #格式化该逻辑卷

  9. mkdir /mydata#创建该目录,用于挂载我们的逻辑卷

  10. vim /etc/fstab   #编辑该文件,添加如下该行信息,将我们的创建的逻辑卷挂载至/mydata目录下

  11. /dev/myvg/mydata       /mydata          ext3    defaults    00

  12. mkdir /mydata/data       #创建该目录,用于存放我们mysql的数据文件

  13. 然后创建mysql用户mysql组。

  14. groupadd -r -g 300 mysql    #创建系统组,并设置gid为300,系统组gid均小于500,可自行修改

  15. useradd -r -g 300 -u 300 mysql   #创建mysql系统用户,并设置其gid、uid均为300

  16. id mysql    #可查看我们刚创建的用户信息

  17. cd /usr/local/mysql   #进入该目录

  18. chown -R mysql.mysql .   #修改该目录下的所有文件和目录,及目录下的子目录子文件均为mysql属主属组

  19. chown -R mysql.mysql /mydata/data    #修改该文件及子文件为mysql属主属组,方便mysql写入数据

  20. cd /usr/local/mysql    #进入该目录

  21. scripts/mysql_install_db --user=mysql --datadir=/mydata/data   #--user指定我们的mysql服务器创建的文件及目录以哪个用户运行,--datadir指定我们的数据文件所在目录,这里mysql不需要执行./configure命令

  22. 完成后,为我们的mysql提供配置文件,执行完上面的命令后,在我们的/etc目录下会生成一个文件叫my.cnf,这就是我们的mysql的配置文件,我们只需对其稍加修改即可使用。

  23. vim /etc/my.cnf

  24. datadir = /mydata/data   #修改我们的数据文件存放位置

  25. 保存退出。同样,为我们的mysql服务提供服务脚本。这里我们使用系统自带的,我们不需修改即可使用。

  26. cp support-files/mysql.server  /etc/rc.d/init.d/mysqld   #将该目录下的脚本拷贝到指定目录下,并重命名

  27. chmod +x /etc/rc.d/init.d/mysqld  #为我们创建的服务脚本赋予执行权限,如果该脚本已有执行权限,可不用执行该命令,这里本机显示有执行权限,没有执行此命令

  28. vim /etc/profile.d/mysql      #编辑该文件,添加环境变量

  29. export PATH=$PATH:/usr/local/mysql/bin  #添加环境变量,让系统直接使用mysql的命令

  30. 同样,将该服务脚本添加到服务列表。

  31. chkconfig --add mysql     #添加该服务脚本至服务列表

  32. chkconfig mysql on    #设置开机启动,默认级别为2345

  33. service mysql start   #开启mysql服务

  34. netstat -tunlp     #查看我们的mysql服务端口是否已开启,默认mysql监听在3306端口

  35. 现在为我们的mysql创建帮助手册,并添加其开发组件至系统。

  36. 在我们的mysql目录下,有个man目录,其下就是mysql的帮助手册了。

  37. vim /etc/man.config   #编辑该文件,添加如下一行信息

  38. MANPATH  /usr/local/mysql/man

  39. ln -sv /usr/local/mysql/include /usr/include/mysql  #创建符号链接,输出mysql的头文件至系统头文件路径

  40. echo "/usr/local/mysql/lib" > /etc/ld.so.conf.d/mysql.conf   #添加该行信息,输出mysql的库文件给系统库查找路径

  41. ldconfig     #让系统重新载入系统库

  42. 同样,介绍几个mysql的命令。

  43. mysql  

  44.    -u USERNAME :中间的空格可省,不指定默认为root

  45.    -P:指定密码,不指定默认为空

  46.    -h MYSQL_SERVER :指定连接的服务器地址,不指定默认为本机

  47. 如:mysql -uroot -p12345 -hlocalhost    #通过本机以root身份登录mysql,root密码为12345

执行完该命令就进入了mysql的命令行界面,在里边就可以进行mysql的操作了。想了解mysql的一些命令,可搜索相关资料。

教你源码编译制作LAMP详细过程

至此,我们的mysql源码编译安装也已完毕。在命令上边提到,我们可以使用phpMyAdmin进入到图形界面来管理我们的mysql数据,但是这个需要php的支持,因此,我们先来安装php,然后再介绍如何用phpMyAdmin来管理我们的mysql数据。 在安装我们的php之前,先解决依赖关系,安装X Software Development,命令为yum -y groupinstall "X Software Development"。同时,为了让我们的php支持mcrypt扩展,安装libmcrypt-2.5.7-5.el5.i386.rpm和libmcrypt-devel-2.5.7-5.el5.i386.rpm两个库文件。可先使用rpm -q libmcrypt和rpm -q libmcrypt-devel命令查看下有没有安装这两个库。 准备工作完成后,开始安装我们的php。
  
 
 
  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 --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2  --enable-maintainer-zts

  4. 部分选项含义如下所示:

  5. --prefix=/usr/local/php        #指定安装文件目录

  6. --with-mysql=/usr/local/mysql     #指定所使用的mysql数据库的所在位置,现在知道为什么要先安装mysql了吧

  7. --with-openssl                   #支持openssl

  8. --with-mysqli=/usr/local/mysql/bin/mysql_config    #支持mysqli

  9. --enable-mbstring              #启用多字节字符串支持

  10. --with-freetype-dir             #设定到FreeType 2的安装路径

  11. --with-jpeg-dir                  #设定到libjpeg的安装路径

  12. --with-png-dir                   #设定到libpng的安装路径

  13. --with-zlib                        #支持zlib

  14. --with-libxml-dir=/usr            #指定libxml2安装目录

  15. --enable-xml           #支持xml扩展

  16. --enable-sockets          #启用套接字支持

  17. --with-apxs2=/usr/local/apache/bin/apxs    #指定共享的Apache 2.0的处理器模块所在目录

  18. --with-mcrypt                #支持mcrypt扩展

  19. --with-config-file-path=/etc                   #指定配置文件所在目录

  20. --with-config-file-scan-dir=/etc/php.d         #设定在哪个路径下扫描配置文件

  21. --with-bz2              #支持BZip2

  22. 本人英语水平有限,以上如果解释你不懂,或想了解更多可在该目录下使用./configure --help命令查看。

  23. make  

  24. make test      #执行完上面的命令后,系统会提示你执行该命令,这是测试命令,切记,不要忘记,一定要执行该命令

  25. make install    

  26. 为我们的php提供配置文件,我们依然选用安装php时生成的配置文件,这个可不用修改,直接拿来用。

  27. 先确保还在php-5.4.13目录下

  28. cp php.ini-production /etc/php.ini    #将该目录下的文件复制到/etc下,并重命名作为我们的配置文件

  29. vim /etc/httpd/httpd.conf    #编辑该文件,让apache支持php

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

  31. AddType application/x-httpd-php-source  .phps   #添加该两行信息

  32. 同时找到DircetoryIndex,添加index.php,即修改为:

  33. DircetoryIndex index.php index.html

  34. 至此,php安装成功,重启httpd服务即可实现支持php了。php安装完成了,那我们的php能否连接数据库呢?现在我们来测试下我们的php是否能够连接mysql数据库吧。

  35. cd /usr/local/apache     #进入该目录下

  36. vim htdocs/index.html   #编辑该文件,修改如下信息,你刚才测试httpd时,显示的内容就是这里定义的

  37. <html>

  38. <body><h1>Welcome to my LAMP!!!</h1>

  39. <?php         #添加php脚本

  40. $conn=mysql_connect('langdu','root','123456');    #调用mysql_connect函数,三个参数含义分别为主机名、登录数据库的用户名、登录数据库用户的用户密码

  41. if ($conn)      #将上边函数的执行状态结果保存到conn中,然后判断

  42.   echo "Success...";     #如果连接成功,输出Success...

  43. else

  44.   echo "Failure...";     #如果连接失败,输出Failure... ,使用‘;’结尾,不要忘记

  45. ?>

  46. </body>

  47. </html>

  48. 既然是php了,所以,修改后缀名。

  49. mv htdocs/index.html htdocs/index.php

修改完毕。好了,现在打开我们的浏览器,在地址栏输入linux的IP地址,本机为172.16.32.1,因此,在地址栏输入172.16.32.1,回车,一切显示正常。

教你源码编译制作LAMP详细过程

现在我们的php已经安装好了,刚才介绍说可以通过phpMyAdmin来实现在图形化界面下管理我们的数据库,现在介绍如何配置phpMyAdmin。这里我们在虚拟主机中实现。下面介绍如何启用虚拟主机。
  
 
 
  1. vim /etc/httpd/httpd.conf   #编辑httpd的主配置文件,找到Virtual hosts,修改如下信息

  2. # Virtual hosts    #找到该行信息,这里就是用来定义虚拟主机的

  3. Include /etc/httpd/extra/httpd-vhosts.conf   #启用该行,直接去掉前面的注释符即可

  4. 保存退出。

  5. 编辑上边提到的文件httpd-vhosts.conf。

  6. vim /etc/httpd/extra/httpd-vhosts.conf  #编辑该文件,修改如下信息

  7. <VirtualHost *:80>    #表示监听本机所有地址的80端口,这是http的端口

  8.    DocumentRoot "/www/1.com"#新建该目录,指定虚拟主机文档根目录,网页文件的存放位置,此目录可自行修改,修改后重启服务即可生效。

  9.    ServerName www.1.com#指定服务器主机名,待会在地址栏输入该名称即可

  10.    <Directory "/www/1.com">       #定义该路径如何被访问

  11.        Options none         #定义/var/www/html目录下所有的网页文档在被访问时的访问属性,有多个时可用空格隔开      

  12.        AllowOverride none

  13.        Require all granted    #定义允许所有人访问,否则待会我们在浏览器就打不开网页了

  14.   </Directory>

  15.    ErrorLog "logs/1.com-error_log"#定义错误日志存放文件,该目录是相对于ServerRoot的目录,查看httpd.conf配置文件可看到ServerRoot为"/usr/local/apache

  16.    CustomLog "logs/1.com-access_log" combined   #定义访问日志文件,文件记录格式为combined,可在httpd.conf配置文件中查看包含哪些信息

  17. </VirtualHost>    

你会看到里边定义有两个虚拟主机样例,我们只修改这一个,另一个不管它。但待会检查及重启服务时可能会报错,与我们无关先不管它,你要真不想重启服务时报错可删掉。保存退出。 因为我们这里是在虚拟机上实现的,现在修改我们windows上的hosts文件,目录为C:\Windows\System32\drivers\etc添加如下信息: 172.16.32.1www.1.com   #添加该信息,实现本地解析 保存退出,在DOC命令界面,输入ping www.1.com,可以解析成功。

教你源码编译制作LAMP详细过程

  
 
 
  1. mkdir /www/1.com -pv    #创建该目录

  2. httpd -t     #检查配置文件有没有语法错误,因我们另一个虚拟主机没有配置,会报错,不用管它

  3. service httpd restart  #重启服务,也可以待会我们配置好再重启

  4. 现在去解压我们的phpMyAdmin软件包。软件包我们已下载完毕,直接解压。

  5. tar xf phpMyAdmin-3.4.10.1-all-languages.tar.bz2  #解压该软件包

  6. mv phpMyAdmin-3.5.1-all-languages /www/1.com/pma   #将解压得到的目录文件移动到该目录下,并命名为pma

  7. service httpd restart  #为了确保万无一失,我们在重启下服务  

现在打开浏览器,在地址栏输入www.1.com/pma,然后回车。 下面是显示效果。 下图是登陆界面:

教你源码编译制作LAMP详细过程

下图是登录后的主界面:

教你源码编译制作LAMP详细过程

现在我们再来看另外一个基于php的动态网站。我们先去修改配置文件。
  
 
 
  1. vim /etc/httpd/extra/httpd-vhosts.conf  #编辑该文件,将另一个虚拟主机配置修改如下信息

  2. <VirtualHost *:80>

  3.    DocumentRoot "/www/2.com"

  4.    ServerName www.2.com

  5.    <Directory "/www/2.com">

  6.        Options none

  7.        AllowOverride none

  8.        Require all granted

  9.   </Directory>

  10.    ErrorLog "logs/2.com-error_log"

  11.    CustomLog "logs/2.com-access_log" combined

  12. </VirtualHost>

  13. 修改完后保存退出。

  14. httpd -t   #检查语法有没有错误

  15. unzip Discuz_X2.5_SC_GBK.zip   #解压该文件,会发现目录下多了三个目录,readme、upload和utilities。我们只需要将upload里的文件复制出来即可。

  16. mv upload/* /www/2.com/   #移动upload目录下的所有文件到该目录下来。

  17. 因为我们这里是在虚拟机上实现的,现在修改我们windows上的hosts文件,目录为C:\Windows\System32\drivers\etc添加如下信息:

  18. 172.16.32.1     www.2.com#添加该信息,实现本地解析

  19. 保存退出,在DOC命令界面,输入ping www.2.com,可以解析成功。

  20. service httpd restart  #重启服务

现在在浏览器地址栏输入www.2.com就可以打开Discuz了,但还是安装向导界面。本想贴出所有截图,但是图片总显示有问题,只显示一半。这里就贴出部分图片吧。下面有附件,想查看显示效果的,可下载图片查看下。

进入安装向导界面1后,会显示有一些目录我们没有写权限,我们现在去修改各目录,让其具有写权限。请先确保当前处于/www/2.com目录下。

  
 
 
  1. chmod 777 config/ data/ data/cache/ data/avatar/ data/plugindata/ data/download/ data/addonmd5/ data/template/ data/threadcache/ data/attachment/ data/attachment/album/ data/attachment/forum/ data/attachment/group/ data/log/

  2. chmod 777 uc_client/data/cache/ uc_server/data/ uc_server/data/cache/ uc_server/data/avatar/ uc_server/data/backup/ uc_server/data/logs/ uc_server/data/tmp/ uc_server/data/view/

修改完毕后点击下一步,进入如下界面: 教你源码编译制作LAMP详细过程 修改完毕,点击下一步,填好点下一步即可完成安装。完毕后我们点暂不开通,就进入主界面了。如下图。

教你源码编译制作LAMP详细过程

貌似Xcache还没介绍如何安装嘞。这里就暂不介绍了。想知道如何安装可关注我的博客或查找相关资料。

部分截图我已上传成功附件,想看的可以下载后自行查看,这里就不贴图了。


本文出自 “呼伦贝尔―写在人生路上” 博客,请务必保留此出处http://lq2419.blog.51cto.com/1365130/1177925