lamp 编译安装

Apache有两种模式提供服务,一种是线程worker模式,一种是进程prefork模式(更加稳定)

线程模式是一个进程下面有许多线程提供服务。

而进程模式是直接是许多进程提供服务,但是消耗cpu。

安装apache

[root@lamp src]# ls

httpd-2.2.27.tar.gz

[root@lamp src]# pwd

/usr/local/src

[root@lamp src]# tar -xf httpd-2.2.27.tar.gz

[root@lamp src]# ls

httpd-2.2.27  httpd-2.2.27.tar.gz

[root@lamp src]# cd httpd-2.2.27

[root@lamp httpd-2.2.27]# ./configure

--prefix=/usr/local/apache2.2.27

--enable-deflate

--enable-expires

--enable-headers

--enable-modules=most

--enable-so

--with-mpm=worker

--enable-rewrite

[root@lamp httpd-2.2.27]# yum install -y zlib zlib-devel

[root@lamp httpd-2.2.27]#make && make install

[root@lamp src]# cd ..

[root@lamp local]# ls

apache2.2.27  etc    include  lib64    sbin   src

bin           games  lib      libexec  share

[root@lamp local]# ln -s apache2.2.27 /usr/local/apache

[root@lamp local]# cd apache

[root@lamp apache]# ls

bin    cgi-bin  error   icons    lib   man     modules

build  conf     htdocs  include  logs  manual

检测语法

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

httpd: apr_sockaddr_info_get() failed for lamp

httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

Syntax OK

启动apache

[root@lamp local]# /usr/local/apache/bin/apachectl start

httpd: apr_sockaddr_info_get() failed for lamp

httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

检测是否启动

[root@lamp local]# ps -aux |grep httpd

Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ

root      5133  0.0  0.2  34416  2132 ?        Ss   05:10   0:00 /usr/local/apache2.2.27/bin/httpd -k start

daemon    5134  0.0  0.1  34148  1300 ?        S    05:10   0:00 /usr/local/apache2.2.27/bin/httpd -k start

daemon    5135  0.0  0.3 378676  3892 ?        Sl   05:10   0:00 /usr/local/apache2.2.27/bin/httpd -k start

daemon    5136  0.0  0.3 378676  3900 ?        Sl   05:10   0:00 /usr/local/apache2.2.27/bin/httpd -k start

daemon    5137  0.1  0.3 378676  3900 ?        Sl   05:10   0:00 /usr/local/apache2.2.27/bin/httpd -k start

root      5220  0.0  0.0 103244   856 pts/0    S+   05:10   0:00 grep httpd

[root@lamp local]# lsof -i :80

COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

httpd   5133   root    4u  IPv6  59038      0t0  TCP *:http (LISTEN)

httpd   5135 daemon    4u  IPv6  59038      0t0  TCP *:http (LISTEN)

httpd   5136 daemon    4u  IPv6  59038      0t0  TCP *:http (LISTEN)

httpd   5137 daemon    4u  IPv6  59038      0t0  TCP *:http (LISTEN)

测试

[root@lamp local]# iptables -F

[root@lamp local]# /etc/init.d/iptables save

iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

wKiom1hX9SeQ88HOAAAs5gkzCzI106.png

配置站点

[root@lamp conf]# pwd

/usr/local/apache/conf

[root@lamp conf]# ls

extra  httpd.conf  magic  mime.types  original

[root@lamp conf]# grep -i documentroot httpd.conf 

# DocumentRoot: The directory out of which you will serve your

DocumentRoot "/usr/local/apache2.2.27/htdocs"

# This should be changed to whatever you set DocumentRoot to.

    # access content that does not live under the DocumentRoot.

平滑重启

[root@lamp apache]# /usr/local/apache/bin/apachectl graceful

Apache的配置文件讲解

查看配置里面站点默认的页面

[root@lamp conf]# vim httpd.conf

<IfModule dir_module>

    DirectoryIndex index.html

</IfModule>

目录结构的设置

-Indexes就是禁止显示目录结构了

或者把这里删除掉,当主页没有找到的话就显示403,而不会显示目录结构,确保安全

Options -Indexes FollowSymLinks

虚拟主机配置文件

[root@lamp extra]# ls -l /usr/local/apache/conf/extra

total 56

-rw-r--r-- 1 root root  2855 Dec  7 05:01 httpd-autoindex.conf

-rw-r--r-- 1 root root  1743 Dec  7 05:01 httpd-dav.conf

-rw-r--r-- 1 root root  2344 Dec  7 05:01 httpd-default.conf 了解

-rw-r--r-- 1 root root  1103 Dec  7 05:01 httpd-info.conf

-rw-r--r-- 1 root root  5078 Dec  7 05:01 httpd-languages.conf

-rw-r--r-- 1 root root   945 Dec  7 05:01 httpd-manual.conf

-rw-r--r-- 1 root root  3789 Dec  7 05:01 httpd-mpm.conf

-rw-r--r-- 1 root root 11492 Dec  7 05:01 httpd-ssl.conf

-rw-r--r-- 1 root root   817 Dec  7 05:01 httpd-userdir.conf

-rw-r--r-- 1 root root  1503 Dec  7 05:01 httpd-vhosts.conf

虚拟主机配置:

域名站点目录

www.bier.org  /var/html/www

blog.bier.org /var/html/blog

bbs.bier.org  /var/html/bbs

创建站点目录

[root@lamp extra]# mkdir -p /var/html/www

[root@lamp extra]# mkdir -p /var/html/blog

[root@lamp extra]# mkdir -p /var/html/bbs

[root@lamp extra]# touch /var/html/www/index.html

[root@lamp extra]# touch /var/html/blog/index.html

[root@lamp extra]# touch /var/html/bbs/index.html

[root@lamp extra]# tree /var/html/

/var/html/

|-- bbs

|   `-- index.html

|-- blog

|   `-- index.html

`-- www

`-- index.html

[root@lamp extra]# for i in www blog bbs;do echo "http://$i.bier.org" >/var/html/$i/index.html;done

[root@lamp extra]# for i in www blog bbs;do cat /var/html/$i/index.html;done

http://www.bier.org

http://blog.bier.org

http://bbs.bier.org

配置虚拟机主机

[root@lamp extra]# pwd

/usr/local/apache/conf/extra

[root@lamp extra]# vim httpd-vhosts.conf

<VirtualHost *:80>

    ServerAdmin 947370895@qq.com

    DocumentRoot "/var/html/www"

    ServerName www.bier.org

    ServerAlias bier.org

    ErrorLog "logs/www-error_log"

    CustomLog "logs/www-access_log" common

</VirtualHost>

<VirtualHost *:80>

    ServerAdmin 947370895@qq.com

    DocumentRoot "/var/html/blog"

    ServerName blog.bier.org

    ErrorLog "logs/blog-error_log"

    CustomLog "logs/blog-access_log" common

</VirtualHost>

<VirtualHost *:80>

    ServerAdmin 947370895@qq.com

    DocumentRoot "/var/html/bbs"

    ServerName bbs.bier.org

    ErrorLog "logs/bbs-error_log"

    CustomLog "logs/bbs-access_log" common

</VirtualHost>

打开主配置文件这里

[root@lamp conf]# pwd

/usr/local/apache/conf

[root@lamp conf]# vim httpd.conf

# Virtual hosts

Include conf/extra/httpd-vhosts.conf

添加站点目录

<Directory "/var/html">

    AllowOverride None

    Options None

    Order allow,deny

    Allow from all

</Directory>

检测重启

[root@lamp conf]# /usr/local/apache/bin/apachectl -t

Syntax OK

[root@lamp conf]# /usr/local/apache/bin/apachectl graceful

然后本地解析测试,浏览器访问

安装apache日志轮询工具cronolog

 (此工具工作中用这种比较多,不用系统自带的)

安装cronolog工具

tar -xf cronolog-1.6.2.tar.gz

cd cronolog-1.6.2

./configure 

make 

make install

[root@lamp src]# ll /usr/local/sbin/cronolog 

-rwxr-xr-x 1 root root 40438 Dec  7 08:24 /usr/local/sbin/cronolog

Cronolog日志轮询配置说明

错误写法:

CustomLog "|/usr/local/sbin/cronolog logs/access_www_%w.log" common

提示:cronllog日志轮询的正确写法,被轮询的日志路径要写全

正确写法

CustomLog "|/usr/local/sbin/cronolog /app/logs/access_www_%Y%m%d.log" common

提示:这个大多数网站的常规写法(按天记录日志,日志不会被自动覆盖)

[root@lamp src]# mkdir -p /app/logs

在虚拟主机修改好格式,检测重启访问测试

[root@lamp apache]# tail -f /app/logs/access_www_20151207.log     

192.168.3.1 - - [07/Dec/2015:08:58:37 -0500] "GET / HTTP/1.1" 304 -

192.168.3.1 - - [07/Dec/2015:08:58:39 -0500] "GET / HTTP/1.1" 304 -

192.168.3.1 - - [07/Dec/2015:08:58:39 -0500] "GET / HTTP/1.1" 304 -

192.168.3.1 - - [07/Dec/2015:08:59:50 -0500] "GET / HTTP/1.1" 304 -

192.168.3.1 - - [07/Dec/2015:08:59:51 -0500] "GET / HTTP/1.1" 304 -

192.168.3.1 - - [07/Dec/2015:08:59:51 -0500] "GET / HTTP/1.1" 304 -

安装mysql

创建mysql用户

[root@lamp src]# useradd mysql -s /sbin/nologin –M

./configure

--prefix=/usr/local/mysql5.1.72

--with-unix-socket-path=/usr/local/mysql5.1.72/tmp/mysql.sock

--localstatedir=/usr/local/mysql5.1.72/data

--enable-assembler

--enable-thread-safe-client

--with-mysqld-user=mysql

--with-big-tables

--without-debug

--with-pthread

--enable-assembler

--with-extra-charsets=complex

--with-readline

--with-ssl

--with-embedded-server

--enable-local-infile

--with-plugins=partition,innobase

--with-mysqld-ldflags=-all-static

--with-client-ldflags=-all-static

可以将上面的脚本放入mysql.log,然后cat mysql.log|bash 执行

修改错误

checking for termcap functions library... configure: error: No curses/termcap library found

[root@lamp mysql-5.1.72]# yum install -y ncurses ncurses-devel

make && make install

[root@lamp local]# ln -s mysql5.1.72/ /usr/local/mysql

[root@lamp mysql]# mkdir -p /usr/local/mysql/data存放数据的地方

[root@lamp mysql]# chown -R mysql.mysql /usr/local/mysql/data

配置mysql

[root@lamp mysql]# ls /usr/local/mysql/share/mysql/my*.cnf

/usr/local/mysql/share/mysql/my-huge.cnf

/usr/local/mysql/share/mysql/my-innodb-heavy-4G.cnf

/usr/local/mysql/share/mysql/my-large.cnf

/usr/local/mysql/share/mysql/my-medium.cnf

/usr/local/mysql/share/mysql/my-small.cnf

提示:此版本这些文件在上面的目录下面,一般是在安装目录下的support-files的这个目录下

[root@lamp mysql]# cd /usr/local/mysql/share/mysql/

[root@lamp mysql]# cp my-small.cnf /etc/my.cnf

mysql默认的配置路径和文件名/etc/my.conf

初始化数据库

[root@lamp mysql]# /usr/local/mysql/bin/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/ --user=mysql

Installing MySQL system tables...

151207 11:09:10 [Warning] '--skip-locking' is deprecated and will be removed in a future release. Please use '--skip-external-locking' instead.

OK

Filling help tables...

151207 11:09:11 [Warning] '--skip-locking' is deprecated and will be removed in a future release. Please use '--skip-external-locking' instead.

OK

To start mysqld at boot time you have to copy

support-files/mysql.server to the right place for your system

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

/usr/local/mysql/bin/mysqladmin -u root -h lamp password 'new-password'

You can start the MySQL daemon with:

cd /usr/local/mysql ; /usr/local/mysql/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl

cd /usr/local/mysql/mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/local/mysql/scripts/mysqlbug script!

生成数据

[root@lamp mysql]# ll ./data

total 8

drwx------ 2 mysql root 4096 Dec  7 11:09 mysql

drwx------ 2 mysql root 4096 Dec  7 11:09 test

启动数据库

/usr/local/mysql/bin/mysqld_safe &

检测

[root@lamp mysql]# ps -aux |grep mysqld |grep -v grep

Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ

root     22545  0.0  0.1 106100  1476 pts/1    S    11:47   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe

mysql    22653  0.7  2.6 269760 27240 pts/1    Sl   11:47   0:06 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql --log-error=/usr/local/mysql/data/lamp.err --pid-file=/usr/local/mysql/data/lamp.pid --socket=/usr/local/mysql5.1.72/tmp/mysql.sock --port=3306

[root@lamp mysql]# lsof -i :3306

COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

mysqld  22653 mysql   10u  IPv4 151886      0t0  TCP *:mysql (LISTEN)

安装PHP

检测apache和mysql

[root@lamp src]# netstat -lnptu |egrep "3306|80"

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      23167/mysqld        

tcp        0      0 :::80                       :::*                        LISTEN      5133/httpd          

tcp        0      0 :::8000                     :::*                        LISTEN      5133/httpd

检测安装所需的lib库

安装准备

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 zxf libiconv-1.14.tar.gz

cd libiconv-1.14

./configure --prefix=/usr/local/libiconv

make

make install

解压编译

./configure

--prefix=/usr/local/php5.3.27

--with-apxs2=/usr/local/apache/bin/apxs   

是给apache添加模块的dso模式添加,php嵌入到apache里面

--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

--enable-zend-multibyte

--enable-soap

--enable-mbstring

--enable-static

--enable-gd-native-ttf

--with-curl

--with-xsl

--enable-ftp

--with-libxml-dir

[root@Centos6 modules]# pwd

/usr/local/apache2/modules

[root@Centos6 modules]# ll

total 26220

-rw-r--r-- 1 root root     9083 Jun 29 16:10 httpd.exp

-rwxr-xr-x 1 root root 24594399 Jun 29 17:01 libphp5.so

有这两个文件,说明apache已经嵌入了php

拷贝配置文件

[root@Centos6 local]# cp /usr/local/src/php-5.3.28/php.ini-production /usr/local/php/lib/php.ini

配置apache解析php

打开apache主配置文件

定位311gg加下面这两行

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

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

 AddType application/x-httpd-php .php

提示:这里一定要配置,不然apahce解析不了php,一打开就下载的情况

然后改一下里面的用户和组

#

User www

Group www

增加index.php

<IfModule dir_module>

    DirectoryIndex index.html index.php

</IfModule>

[root@Centos6 conf]# useradd -s /sbin/nologin -M www

检测重启apache

[root@Centos6 conf]# chown -R www.www /var/html/blog

[root@Centos6 conf]# cd /var/html/blog

[root@Centos6 conf]# vim index.php

<?php

phpinfo();

?>

浏览器测试php

测试mysql

vim mysql.php

<?php

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

if($link_id){

echo "mysql successful by oldboy !";

}else{

echo mysql_error();

}

?>

到此lamp环境部署完成

原文地址:https://www.cnblogs.com/jinbiaof/p/6844104.html