LAMP源码编译安装配置

系统环境CentOS6.5

这里通过挂载光盘至本地搭建yum源

[root@localhost ~]# mount /dev/cdrom /mnt
[root@localhost ~]# vim /etc/yum.repos.d/Centos-Base.repo
[centos]
name=centos
baseurl=file:///mnt/
enable=1
gpgcheck=0 
gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-6

一、编译安装Apache

关闭selinux

[root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

添加防火墙规则,允许80端口和3306端口访问

[root@localhost ~]# vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

修改主机名

[root@localhost ~]# sed -i 's/HOSTNAME=localhost.localdomain/HOSTNAME=web.lnmp.com/g' /etc/sysconfig/network
[root@localhost ~]# vim /etc/hosts
127.0.0.1   web web.lamp.com localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@localhost ~]# vim /etc/sysconfig/network
NETWORKING=YES
HOSTNAME=web
[root@localhost ~]# reboot

建立http服务用户组

[root@localhost ~]# groupadd www
[root@localhost ~]# useradd -M -s /sbin/nologin -g www www

1、解决依赖关系

[root@web ~]# yum install gcc gcc-c++ openssl openssl-devel autoconf

编译安装apr(The mission of the Apache Portable Runtime (APR) project is to create and maintain software libraries that provide a predictable and consistent interface to underlying platform-specific implementations.  The primary goal is to provide an API to which software developers may code and be assured of predictable if not identical behaviour regardless of the platform on which their software is built, relieving them of the need to code special-case conditions to work around or take advantage of platform-specific deficiencies or features.)

[root@web ~]# tar xf apr-1.5.1.tar.bz2
[root@web ~]# cd apr-1.5.1
[root@web apr-1.5.1~]# ./configure --prefix=/usr/local/apr
[root@web apr-1.5.1~]# make && make install

编译安装apr-util

[root@web ~]# tar xf apr-util-1.5.3.tar.bz2
[root@web ~]# cd apr-util-1.5.3
[root@web apr-util-1.5.3~]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@web apr-util-1.5.3~]# make && make install

安装依赖包pcre-devel

[root@web ~]# yum install pcre-devel

编译安装httpd

[root@web ~]# tar xf httpd-2.4.9.tar.bz2
[root@web ~]# cd httpd-2.4.9
[root@web httpd-2.4.9~]# ./configure --prefix=/usr/local/apache --enable-so --enable-ssl --enable-rewrite --enable-cgi --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all
[root@web httpd-2.4.9~]# make && make install

在/etc/profile.d目录下创建httpd.sh环境变量文件

[root@web ~]# echo "export PATH=$PATH:/usr/local/apache/bin" > /etc/profile.d/httpd.sh
[root@web ~]# source /etc/profile

httpd的测试与启动

[root@web ~]# apachectl -t
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using web.lamp.com. Set the 'ServerName' directive globally to suppress this message
Syntax OK

编辑httpd.conf文件,搜索"/ServerName",添加ServerName localhost:80,修改user和group

[root@web ~]# vim /usr/local/apache/conf/httpd.conf
ServerName localhost:80
user=www
group=www
[root@web ~]# apachectl start
[root@web ~]# netstat -anputl |grep :80
tcp        0      0 :::80                       :::*                        LISTEN      1381/httpd

利用浏览器访问

wKioL1PQcxXTJwWTAAHEnaCkorg318.jpg

以上httpd基本服务已经搭建成功。

下面注释掉中心主机,创建基于域名的虚拟主机(根据个人习惯创建虚拟主机文件)。

[root@web ~]# vim /usr/local/apache/conf/httpd.conf
include conf/extra/vhost/*.conf
[root@web ~]# mkdir -pv /usr/local/apache/conf/extra/vhost
[root@web ~]# vim /usr/local/apache/conf/extra/vhost/a.conf
<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/usr/local/apache/htdocs/a.com"
    ServerName www.a.com
    ErrorLog "logs/a.com.error.log"
    CustomLog "logs/a.com.access.log" combined
    <Directory "/usr/local/apache/htdocs/a.com">
        Options Indexes FollowSymLinks
        DirectoryIndex index.html index.php index.htm
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

这里可以再定义一个虚拟主机禁止通过服务器IP地址访问网站,apache虚拟主机默认情况下ip地址方式访问对应第一个虚拟主机,所以可以先建一个指向错误页面的虚拟主机,达到禁止用ip访问网页的目的

方法一:在上面的*.conf文件最上面,加入以下代码

<VirtualHost *:80> 
ServerName 192.168.0.250
<Location /> 
Order Allow,Deny 
Deny from all 
</Location> 
</VirtualHost>  

方法二:在上面的*.conf文件最上面,加入以下代码

<VirtualHost *:80> 
DocumentRoot "/www/error" 
ServerName 192.168.0.250
</VirtualHost> 

最后重启httpd服务


二、编译安装mysql

先安装相关的依赖包

[root@web ~]# yum install cmake ncurses ncurses-devel

创建mysql用户组,创建数据库数据存放目录并指定属主组

[root@web ~]# groupadd -r mysql
[root@web ~]# useradd -g mysql -s /sbin/nologin -M -r mysql
[root@web ~]# mkdir -pv /mysql/data
[root@web ~]# chown -R mysql.mysql /mysql/data

安装mysql-5.6.16

该版本已经不再使用./configure,而使用cmake命令

 cmake指定编译选项的方式不同于make,其实现方式对比如下

./configure 对应的是 cmake .

./configure --help 对应的是 cmake . -LH 或者是 ccmake .

[root@web ~]# tar xf mysql-5.6.16.tar.gz
[root@web ~]# cd mysql-5.6.16
[root@web mysql-5.6.16~]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/mysql/data -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=bundled -DWITH_ZLIB=bundled -DWITH_LIBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
[root@web mysql-5.6.16~]# make && make install

出现错误需要删除CMakeCache.txt,才能再次cmake

复制mysql服务脚本和mysql配置文件

[root@web mysql-5.6.16~]# cp support-files/mysql.server /etc/init.d/mysqld
[root@web mysql-5.6.16~]# chmod +x /etc/init.d/mysqld
[root@web mysql-5.6.16~]# chkconfig --add mysqld
[root@web mysql-5.6.16~]# chkconfig mysqld on

修改my.cnf文件

[root@web mysql-5.6.16~]# cp support-files/my-default.cnf /etc/my.cnf
[root@web mysql-5.6.16~]# vim /etc/my.cnf
datadir = /mysql/data

初始化mysql

[root@web mysql-5.6.16~]# /usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/mysql/data --user=mysql

启动mysql服务

[root@web mysql-5.6.16~]# service mysqld start

将mysql相关命令添加至环境变量中

[root@web mysql-5.6.16~]# echo "export PATH=$PATH:/usr/local/mysql/bin" > /etc/profile.d/mysql.sh
[root@web mysql-5.6.16~]# source /etc/profile

输出mysql库文件

[root@web mysql-5.6.16~]# echo "/usr/local/mysql/lib/" > /etc/ld.so.conf.d/mysql.conf
[root@web mysql-5.6.16~]# ldconfig -v

输出mysql的头文件到系统头文件

[root@web mysql-5.6.16~]# ln -sv /usr/local/mysql/include/ /usr/include/mysql

输出mysql的帮助文档

[root@web mysql-5.6.16~]# vim /etc/man.config
MANPATH /usr/local/mysql/man

root用户设置密码

[root@web mysql-5.6.16~]# mysqladmin -u root password $mysqlrootpwd

mysql基础安装已完成,通过netstat测试端口,以及查看mysql.sock文件。


三、编译安装PHP

(1). 为支持apache的worker或event这两个MPM,编译时可使用--enable-maintainer-zts选项。    
(2). 如果使用PHP5.3以上版本,为了链接MySQL数据库,可指定mysqlnd,这样在本机就不需要先安装MySQL或MySQL开发包了。 mysqlnd从php 5.3开始可用,可以编译时绑定到它(而不用和具体的MySQL客户端库绑定形成依赖),但从PHP 5.4开始它就是默认设置了。

[root@web mysql-5.6.16~]# ./configure --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd
[root@web mysql-5.6.16~]# make && make install

安装相关的依赖包

安装图片资源软件 

[root@web ~]# yum install gd gd-devel  libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel

安装libxml(扩展标记语言)库

[root@web ~]# yum install libxml2 libxml2-devel

安装bzip2压缩库

[root@web ~]# yum install bzip2 bzip2-devel

安装mcrypt加密库

[root@web ~]# tar zxvf libmcrypt-2.5.6.tar.gz
[root@web ~]# cd libmcrypt-2.5.6
[root@web libmcrypt-2.5.6~]# ./configure
[root@web libmcrypt-2.5.6~]# make && make install
[root@web libmcrypt-2.5.6~]# /sbin/ldconfig
[root@web libmcrypt-2.5.6~]# cd libltdl
[root@web libltdl~]# ./configure --enable-ltdl-install
[root@web libltdl~]# make && make install

[可选]  libiconv(对文本进行编码间的转换,用来处理中各种编码之间的转换)

[root@web ~]# tar zxvf libiconv-1.14.tar.gz
[root@web ~]# cd libiconv-1.14
[root@web libiconv-1.14~]# ./configure
[root@web libiconv-1.14~]# make && make install

[可选] mhash(哈希函数库)

[root@web ~]# tar zxvf mhash-0.9.9.9.tar.gz
[root@web ~]# cd mhash-0.9.9.9
[root@web mhash-0.9.9.9~]# ./configure
[root@web mhash-0.9.9.9~]# make && make install


编译安装php

[root@web ~]# tar xf php-5.5.10.tar.bz2
[root@web ~]# cd php-5.5.10
[root@web php-5.5.10~]# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-gd --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
[root@web php-5.5.10~]# make && make install

复制配置文件

[root@web php-5.5.10~]# cp php.ini-production /usr/local/php/etc/php.ini

整合httpd和php

[root@web php-5.5.10~]# vim /usr/local/apache/conf/httpd.conf
AddType application/x-httpd-php  .php
AddType application/x-httpd-php-source  .phps

定位至DirectoryIndex index.html 修改为:

DirectoryIndex  index.php  index.html

重启httpd服务

编写phpinfo测试文件

[root@web php-5.5.10~]# vim /usr/local/apache/htdocs/index.php
<?php
phpinfo();
?>

wKiom1PQ1Hfj_80fAAOpu07LSfM015.jpg

如果上述报时间错误,需要修改php.ini参数

[root@web php-5.5.10~]# vim /etc/php.ini
date.timezone = "PRC"

php格式有时候不一致,可能需要开启short_open_tag,将其至为On就行了


对php和mysql的连接进行测试,编写一下测试内容

[root@web php-5.5.10~]# vim /usr/local/apache/htdocs/index.php
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>

wKioL1PQ1hiRO-kOAAG2zweObU4981.jpg

编译安装xcache

XCache 是一个国人开发的又快又稳定的 PHPopcode 缓存器. 经过良好的测试并在大流量/高负载的生产机器上稳定运行. 经过( linux )测试并支持所有现行 PHP 分支的最新发布版本。

[root@web ~]# tar xf xcache-3.1.0.tar.gz
[root@web ~]# cd xcache-3.1.0
[root@web xcache-3.1.0~]# /usr/local/php/bin/phpize
[root@web xcache-3.1.0~]# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
[root@web xcache-3.1.0~]# make && make install
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20121212/
[root@web xcache-3.1.0~]# mkdir /etc/php.d
[root@web xcache-3.1.0~]# cp xcache.ini /etc/php.d/
[root@web xcache-3.1.0~]# vim /etc/php.d/xcache.ini
[xcache-common]
;; non-Windows example:
extension = /usr/local/php/lib/php/extensions/no-debug-zts-20121212/xcache.so 
;; Windows example:
; extension = php_xcache.dll

再次重启httpd服务,查看效果

wKioL1PQ0ZugcYXXAAC9fdErS6s268.jpg

wKiom1PQ0InxAtarAAPPYWx9A5A003.jpg

四、启用并查看服务器的状态

mod_status模块可以让管理员查看服务器的执行状态,它通过一个HTML页面展示了当前服务器的统计数据。这些数据通常包括但不限于:处于工作状态的worker进程数;空闲状态的worker进程数;当前服务器总共发送的字节数;    
每个worker的状态,包括此worker已经响应的请求数,及由此worker发送的内容的字节数;
平均每秒钟响应的请求数、平均每秒钟发送的字节数、平均每个请求所请求内容的字节数;
服务器自上次启动或重启以来至当前的时长;
启用状态页面的方法很简单,只需要在主配置文件中添加如下内容即可:

[root@web ~]# vim /usr/local/apache/conf/httpd.conf
<Location /server-status>
    SetHandler server-status
    Require all granted
</Location>

通过http://ip/server-status访问即可得到状态

wKiom1PQ01jhlObFAAPFRtc5YGA332.jpg

以上就是LAMP的基本安装搭建过程。

你可能感兴趣的:(源码,编译,LNMP)