LAMP介绍及安装
1. LAMP是什么?
LAMP,包含Linux + Apache + PHP + Mysql。
LAMP适用环境
适用于追求极致稳定的WEB环境,缺点是需要消耗更多资源。
除了LAMP之外,大家应该也经常听到LNMP,不同之处就是Apache换成了Nginx。Apache的工作模式默认采用prefork工作模式,多个进程,每个进程只采用一个线程。还有另一个worker工作模式,每个子进程有多个线程,适合高并发场景,但是线程安全需要自己保证,故此不推荐。
Apache与Nginx比较
- Apache较为稳定,Nginx适合高并发场景
- Apache配置文件相对复杂,Nginx配置简单
- Apache处理动态进程,Nginx适合处理静态
- Apache模块化的体系,不过Nginx也逐渐有丰富的三方库。
常用环境
- Apache因其稳定性与动态处理能力,常用于最后端Server。
- Nginx因其高并发处理能力,以及强大的正则表达式,用于前端转发。
2. LAMP的编译安装
通常情况下在ubuntu及centos等发行版中只需要执行简单的yum或apt-get命令即可快速安装LAMP全套组件,但有时因为性能等因素的考虑会选择复杂的源码安装,这里介绍源码安装LAMP的方法,部分内容在实验楼环境中需要先停止已通过apt-get安装的apache及mysql服务才可以操作。
2.1 Apache编译
apache相关链接:
下载最新版本
$ wget http://mirrors.aliyuncs.com/apache/httpd/httpd-2.4.12.tar.gz
编译前解决依赖关系
$ sudo apt-get install gcc g++ make libtool -y
安装依赖
#####install apr
$ wget http://mirrors.aliyuncs.com/apache/apr/apr-1.5.1.tar.gz
$ tar xvf apr-1.5.1.tar.gz
$ cd apr-1.5.1
~/apr-1.5.1$ ./configure --prefix=/app/apr
~/apr-1.5.1$ make && make install
#####install apr-util
$ wget http://mirrors.aliyuncs.com/apache/apr/apr-util-1.5.4.tar.gz
$ tar xvf apr-util-1.5.4.tar.gz
$ cd apr-util-1.5.4
~/apr-util-1.5.4$ ./configure --prefix=/app/apr-util --with-apr=/app/apr
#####install pcre
$ wget http://sourceforge.net/projects/pcre/files/pcre/8.36/pcre-8.36.tar.gz
$ tar xvf pcre-8.36.tar.gz
$ cd pcre-8.36
~/pcre-8.36$ ./configure --prefix=/app/pcre
~/pcre-8.36$ make && make install
编译安装apache
$ tar xvf httpd-2.4.12.tar.gz
$ cd httpd-2.4.12
~/httpd-2.4.12$ ./configure --prefix=/app/apache --with-apr=/app/apr --with-apr-util=/app/apr-util --with-pcre=/app/pcre/
~/httpd-2.4.12$ make && make install
启动
$ sudo /app/apache/bin/httpd
$ netstat -anp | grep 80
(No info could be read for "-p": geteuid()=1000 but you should be root.)
tcp6 0 0 :::80 :::* LISTEN -
测试
$ curl -I 127.0.0.1
HTTP/1.1 200 OK
Date: Tue, 03 Feb 2015 16:17:15 GMT
Server: Apache/2.4.12 (Unix)
Last-Modified: Mon, 11 Jun 2007 18:53:14 GMT
ETag: "2d-432a5e4a73a80"
Accept-Ranges: bytes
Content-Length: 45
Content-Type: text/html
2.2 MySQL编译
这里我们采用MySQL,虽然这不是最佳选择。我们推荐mariadb或者percona,他们都是MySQL的分支,拥有比MySQL更加优秀的性能,与MySQL完全兼容,而且不受厂商控制。
PS:MySQL5.5之后将采用cmake进行编译
解决依赖关系
$ sudo apt-get install cmake g++ libbison-dev libncurses-dev
编译安装
$ wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.14.tar.gz
$ tar xf mysql-5.6.14.tar.
~/mysql-5.6.14$
~/mysql-5.6.14$ cmake -DCMAKE_INSTALL_PREFIX=/app/mysql -DMYSQL_DATADIR=/app/mysql/data -DWITH_INNOBASE_STORAGE_ENGINE=1
~/mysql-5.6.14$ make && make install
赋予权限与初始化
$ sudo useradd mysql
$ sudo chown -R mysql.mysql /app/mysql/
$ sudo /app/mysql/scripts/mysql_install_db --basedir=/app/mysql --datadir=/app/mysql/data --user=mysql
启动
$ sudo /app/mysql/bin/mysqld_safe &
[1] 2255
$ 150204 09:30:14 mysqld_safe Logging to ‘/app/mysql/data/ubuntu.err‘.
150204 09:30:14 mysqld_safe Starting mysqld daemon with databases from /app/mysql/data
测试
$ netstat -anp | grep 3306
(No info could be read for "-p": geteuid()=1000 but you should be root.)
tcp6 0 0 :::3306 :::* LISTEN -
端口已经监听,已经成功安装并启动。
2.3 PHP编译
PHP的扩展包有点多,我们直接apt安装了,如有特殊需求可下载指定包编译安装,常规编译方法。
安装依赖
$ sudo apt-get install zlib1g-dev libbz2-dev libcurl4-gnutls-dev libjpeg-dev libpng12-dev libfreetype6-dev libmcrypt-dev libxml2-dev
编译安装
$ wget\ http://220.112.193.196/files/903600000251A217/hk1.php.net/distributions/php-5.5.21.tar.gz
$ tar xf php-5.5.21.tar.gz
$ cd php-5.5.21
~/php-5.5.21$ ./configure --prefix=/app/php --with-bz2 --with-curl --with-jpeg-dir --with-gd --enable-shared --enable-mbstring --with-mcrypt --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --enable-fpm --enable-phar --enable-bcmath --with-zlib --enable-zip --enable-ftp --with-gettext --enable-sockets --with-freetype-dir --with-config-file-path=/app/php/etc/php.ini --with-config-file-scan-dir=/app/php/etc/conf.d
~/php-5.5.21$ make && make install
~/php-5.5.21$ cp php.ini-production /app/php/etc/php.ini
查看php是否支持mysql,以下为支持的模块。
~/php-5.5.21$ /app/php/bin/php -m | grep mysql
mysql
mysqli
mysqlnd
pdo_mysql
修改apache配置文件/etc/apache2/apache2.conf
,添加以下内容,使支持php
AddType application/x-httpd-php .php
重新启动apache
$ sudo /app/apache/bin/httpd
访问测试
$ cat /app/apache/htdocs/index.php
<?php
echo phpinfo();
?>
使用浏览器访问,正常访问情况如下,说明apache已经配置好了: