源码编译安装LAMP环境及配置基于域名访问的多虚拟主机

时间:2024-01-19 19:12:20

实验环境及软件版本:

CentOS版本: 6.6(2.6.32.-504.el6.x86_64)

apache版本: apache2.2.27

mysql版本:  Mysql-5.6.23

php版本:    php-5.3.27

一、关闭防火墙:service iptables stop

chkconfig iptables off

二、关闭selinux: sed -i 's/SELINUX=disabled/SELINUX=enforcing/g' /etc/selinux/config

init 6 重启系统一定要!

三、apache安装

  1. 安装依赖:yum -y install zlib zlib-devel

    tar zxvf apr-1.5.1.tar.gz

    cd apr-1.5.1

./config --prefix=/usr/local/apr

make && make install

tar zxvf apr-util-1.5.4.tar.gz

cd apr-util-1.5.4

./config --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

make && make install

2.安装apache: tar zxvf apache2.2.27.tar.gz

cd  apache2.2.27

mkdir /application

./configure --prefix=/application/apache2.2.27 --enable-deflate --enable-expires --enable-headers --enable-modules=most --enable-so --with-mpm=worker --enable-rewrite --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util

make && make install

ln -s /application/apache2.2.27/ /application/apache/

启动:/application/apache/bin/apachectl start

echo "/application/apache/bin/apachectl start" >>/etc/rc.local 加入开机启动

查看是否启动功能:

[root@LAMP tools]# lsof -i:80

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

httpd    1344 root    4u  IPv6  10747      0t0  TCP *:http (LISTEN)

httpd   62462 wapp    4u  IPv6  10747      0t0  TCP *:http (LISTEN)

httpd   62463 wapp    4u  IPv6  10747      0t0  TCP *:http (LISTEN)

httpd   62464 wapp    4u  IPv6  10747      0t0  TCP *:http (LISTEN)

httpd   62546 wapp    4u  IPv6  10747      0t0  TCP *:http (LISTEN)

四、源码安装Mysql-5.6.23

请移步:http://linuxzkq.blog.51cto.com/9379412/1584642,这里不在描述

五、php安装

1.安装依赖:yum install zlib libxml libjpeg freetype libpng gd  curl libiconv  zlib-                   devel libxml2-devel libjpeg-devel freetype-devel libpng-devel gd-devel                     curl-devel -y

tar zxvf libiconv-1.14.tar.gz

cd libiconv-1.14

[root@LAMP libiconv-1.14]# ./configure --prefix=/usr/local/libiconv

make && make install

2.php安装: tar zxvf php-5.3.27.tar.gz

./configure --prefix=/application/php-5.3.27 --with-apxs2=/application/apache/bin/apxs --with-mysql=/usr/local/mysql --with-xmlrpc --with-openssl --with-zlib --with-freetype-dir --with-gd --with-jpeg-dir --with-png-dir --with-iconv=/usr/local/libiconv --enable-short-tags --enable-sockets --with-zend-multibyte --enable-soap --enable-mbstring --enable-static --enable-gd-native-ttf --with-curl --with-xsl --enable-ftp --with-libxml-dir --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util

出错:configure: error: Cannot find MySQL header files under /usr/local/mysql.

[root@localhost php-5.5.6]# find / -name mysql.h

/usr/include/mysql/mysql.h

查找到mysql.h文件,我们更改参数为--with-mysql=/usr,如果没有的话,请安装mysql-devel包,

[root@localhost php-5.5.6]# yum install mysql-devel

再次编译:

./configure --prefix=/application/php-5.3.27 ……后面省略

configure: error: Cannot find libmysqlclient_r under /usr.

Note that the MySQL client library is not bundled anymore!

[root@LAMP php-5.3.27]# yum -y install libxslt*

修改编辑参数如下,上面的参数不行,是因为这个和前面的apache,mysql编译时的参数有关系:

[root@LAMP php-5.3.27]# ./configure --prefix=/application/php-5.3.27 --with-apxs2=/application/apache/bin/apxs --with-mysql=/usr --with-xmlrpc --with-openssl --with-zlib --with-freetype-dir --with-gd --with-jpeg-dir --with-png-dir --with-iconv --enable-short-tags --enable-sockets --with-zend-multibyte --enable-soap --enable-mbstring --enable-static --enable-gd-native-ttf --with-curl --with-xsl --enable-ftp --with-libxml-dir --with-libdir=lib64

+--------------------------------------------------------------------+

Thank you for using PHP.

Notice: Following unknown configure options were used:

--with-zend-multibyte

Check './configure --help' for available options

php检查系统配置环境成功

3.一并附上CentOS x64 里php 源码编译出错参见情况及解决办法(摘自网络):

configure: error: xml2-config not found. Please check your libxml2 installation.

yum install libxml2-devel.x86_64

configure: error: Cannot find OpenSSL’s

yum install openssl-devel.x86_64

configure: error: Could not find pcre.h in /usr/local

yum install pcre-devel.x86_64

configure: error: Could not find pcre.h in /usr/local

"--with-pcre-regex=/usr/include" \

configure: error: Could not find libpcre.(a|so) in /usr/include

"--with-pcre-regex=/usr" \

configure: error: Please reinstall the libcurl distribution -

easy.h should be in /include/curl/

yum install curl-devel.x86_64

configure: error: libjpeg.(a|so) not found.

yum install libjpeg-devel.x86_64

configure: error: libpng.(a|so) not found.

yum install libpng-devel.x86_64

configure: error: freetype.h not found.

yum install freetype-devel.x86_64

configure: error: Please reinstall the iconv library.

"--with-iconv" \

configure: error: mcrypt.h not found. Please reinstall libmcrypt.

yum install libmcrypt.x86_64 libmcrypt-devel.x86_64

configure: error: Please reinstall libmhash – I cannot find mhash.h

yum install mhash.x86_64 mhash-devel.x86_64

Note that the MySQL client library is not bundled anymore!

yum install php-mysql.x86_64 mysql-devel.x86_64

configure: error: Please reinstall the BZip2 distribution

yum install bzip2-devel.x86_64

configure: error: utf8_mime2text() has new signature, but U8T_CANONICAL is missing. This should not happen. Check config.log for additional information.

DISABLE IMAP

configure: error: Cannot find pspell

yum install aspell-devel.x86_64

configure: error: Cannot find libtidy

yum install libtidy.x86_64 libtidy-devel.x86_64

error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution

yum install libxslt.x86_64 libxslt-devel.x86_64

collect2: ld returned 1 exit status

yum install glibc-utils.x86_64 libtool-ltdl-devel.x86_64

Step by step to guide PHP Compile

Step 1: Update & Install Development Tools & Libraries

yum update

yum group install "Development Tools"

yum group install "Development Libraries"

Step 2: Run the bellow bash script

#!/bin/sh

"./configure" \

"--prefix=/usr/local/php5" \

"--enable-force-cgi-redirect" \

"--enable-fastcgi" \

"--with-bz2" \

"--with-config-file-path=/usr/local/etc" \

"--with-config-file-scan-dir=/usr/local/etc/php.d" \

"--with-curl=/usr/local/lib" \

"--with-gd" \

"--with-gettext" \

"--with-jpeg-dir=/usr/local/lib" \

"--with-freetype-dir=/usr/local/lib" \

"--with-kerberos" \

"--with-mcrypt" \

"--with-mhash" \

"--with-mime-magic" \

"--with-mysql" \

"--with-mysqli" \

"--with-pcre-regex=/usr" \

"--with-pdo-mysql=shared" \

"--with-pdo-sqlite=shared" \

"--with-pear=/usr/local/lib/php" \

"--with-png-dir=/usr/local/lib" \

"--with-pspell" \

"--with-sqlite=shared" \

"--with-tidy" \

"--with-ttf" \

"--with-xmlrpc" \

"--with-xsl" \

"--with-zlib" \

"--with-zlib-dir=/usr/local/lib" \

"--with-openssl" \

"--with-iconv" \

"--with-libdir=lib64" \

"--enable-bcmath" \

"--enable-calendar" \

"--enable-exif" \

"--enable-ftp" \

"--enable-gd-native-ttf" \

"--enable-libxml" \

"--enable-magic-quotes" \

"--enable-soap" \

"--enable-sockets" \

"--enable-mbstring" \

"--enable-zip" \

"--enable-wddx"

fromhttp://www.lifelinux.com/error-compiling-php-on-centos-x64/

make && make install

[root@LAMP php-5.3.27]# ls php

php5.spec            php.ini-development

php5.spec.in         php.ini-production

php.gif

[root@LAMP php-5.3.27]# diff php.ini-production php.ini-development  对比对内开发配置文件和对外应用配置文件

521c521

< error_reporting = E_ALL & ~E_DEPRECATED

---

> error_reporting = E_ALL | E_STRICT

538c538

< display_errors = Off

---

> display_errors = On

549c549

< display_startup_errors = Off

---

> display_startup_errors = On

593c593

< track_errors = Off

---

> track_errors = On

611c611

< html_errors = Off

---

> html_errors = On

751c751

< ; scheduled removed in PHP 5.4.

---

> ; removed in PHP 5.4.

845c845

< ;cgi.redirect_status_env =

---

> ;cgi.redirect_status_env =

1318c1318

< mysqlnd.collect_memory_statistics = Off

---

> mysqlnd.collect_memory_statistics = On

1587c1587

< session.bug_compat_42 = Off

---

> session.bug_compat_42 = On

1596c1596

< session.bug_compat_warn = Off

---

> session.bug_compat_warn = On

[root@LAMP php-5.3.27]# cp php

php5.spec            php.ini-development

php5.spec.in         php.ini-production

php.gif

[root@LAMP php-5.3.27]# cp php.ini-production /application/php/lib/php.ini

[root@LAMP php-5.3.27]#

小结:正式配置文件一般关闭显示LOG,不输出LOG。

六、开启虚拟机功能并修改用户及用户组:useradd -M -s /sbin/nologin wapp

cd /application/apache/conf

vi httpd.conf

找到

User daemon 修改为wapp

Group daemon 修改为wapp

找到 # Include conf/extra/httpd-vhosts.conf  开启虚拟机

取消前面的#号注释,保存退出。

七、整合php和apache:     vi httpd.conf

定位至AddType application/x-gzip .gz .tgz添加如下二行:

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

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

定位至DirectoryIndex index.html

修改为:

DirectoryIndex  index.php  index.html

然后重新启动apache,或让其重新载入配置文件即可测试php是否已经可以正常使用。

八、定义虚拟机:         cd /application/apache/conf/extra

vi httpd-vhosts.conf

在文件最后面加入几个基于域名访问的虚拟机实例如下:

<VirtualHost *:80>

ServerAdmin kk@etiantian.com

DocumentRoot "/data/cms"

ServerName www.etiantian.org

ServerAlias etiantian.org

ErrorLog "logs/www.etiantian.org-error_log"

CustomLog "logs/www.etiantian.org-access_log" common

</VirtualHost>

<VirtualHost *:80>

ServerAdmin kk@etiantian.com

DocumentRoot "/data/bbs"

ServerName bbs.etiantian.org

ErrorLog "logs/bbs.etiantian.org-error_log"

CustomLog "logs/bbs.etiantian.org-access_log" common

</VirtualHost>

<VirtualHost *:80>

ServerAdmin kk@etiantian.com

DocumentRoot "/data/blog"

ServerName blog.etiantian.org

ErrorLog "logs/blog.etiantian.org-error_log"

CustomLog "logs/blog.etiantian.org-access_log" common

</VirtualHost>

保存退出,重启apache服务!

九、启用虚拟机后,上传完php网站程序,更改完虚拟机根目录及文件所属用户和用户组为:wapp:root(chown -R wapp:root /data)后访问出现403错误,解决方法如下:

这是apache2.2中文参考手册中的示例。一般的咱们这样配置在以前版本是没有问题的。但是现在就不一样了。当访问某个虚拟主机下的页面的时候会出现 类似:“403(禁止访问),你无法查看该网页…”的错误。很明显这是拒绝访问的提示。按照经验很容易找到(httpd.conf)下面的内容:

<Directory "/虚拟主机网站根目录">

Options FollowSymLinks

AllowOverride None

Order deny,allow

</Directory>

//先拒绝后允许Deny from all

//拒绝所有的访问</Directory>

给虚拟主机网站根目录授权访问权限

cd /application/apache/conf/extra

vi httpd-vhosts.conf

在定义的所有虚拟主机最前面加入以下代码:

<Directory "/data">

Options FollowSymLinks

AllowOverride None

Order deny,allow

</Directory>

保存退出,重新启动apache服务正常访问!