码迷,mamicode.com
首页 > 其他好文 > 详细

LAMP环境搭建

时间:2017-08-16 23:21:13      阅读:523      评论:0      收藏:0      [点我收藏+]

标签:lamp   fpm   

提供软件包:

httpdhttpd.2.4.27.tar.gz 源码包在 http://httpd.apache.org

aprapr-util:需要在官网上下载 http://apr.apache.org

openssl-develpcre-develyum安装即可

最新版本的apr-util还需要安装expat-devel-2.0.1-11.el6_2.x86_64 在光盘上就有这个包

Phpphp-5.6.31-tar .gz 源码包在 https://www.php.net/

Mcrypt扩展:libmcrypt-2.5.8-9.el6.x86_64.rpm

libmcrypt-devel-2.5.8-9.el6.x86_64.rpm:百度搜索

Xcache加速 xcache-3.2.0.tar.gz 源码包在http://xcache.lighttpd.net/

Mysqlmysql-5.5.33-linux2.6-x86_64.tar.gz

源码包:https://www.mysql.com/downloads/

 

系统环境 centos.6.5 X86_64三台

第一台安装httpdIP地址为:192.168.0.201 负责外网访问

 10.0.0.1 负责跟php服务器通信

第二台安装phpIP地址为:10.0.0.2负责跟web通信

11.0.0.1负责跟mysql通信

第三台安装mysqlIP地址为:11.0.0.2负责跟php通信

 

第一台机器安装:

httpd编译安装,提供开发环境,安装gcc编译器及openssl-devel开发包,pcre-devel开发包,挂载光盘设置yum安装

# yum -y install gcc openssl-devel pcre-devel


//编译apr
# tar xf apr-1.6.2.tar.gz
# cd apr-1.6.2
# ./configure --prefix=/usr/local/apr
# make && make install
//编译apr-util
# tar xf apr-util-1.6.0.tar.gz
# cd apr-util-1.6.0
# ./configure --prefix=/usr/local/apr  --with-apr=/usr/local/apr-util
# make && make install
//编译安装httpd
# tar xf httpd-2.4.27.tar.bz2
# cd httpd-2.4.27
# ./configure --prefix=/usr/local/httpd24 --sysconfdir=/etc/httpd24 --enable-so(支持DSO方式动态加载模块) --enable--ssl(开启https) --enable-cgi(支持cgi机制) --enable-rewrite(支持URL重写) --with-zlib(支持压缩) --with-pcre(支持poolcgi) --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modeles=most(启用大多数常用的模块) --enable-mpms-shared=all(安装所有mpm运行方式模块) --with-mpm=event(默认的运行方式)
# make && make install
# ./configure --prefix=/usr/local/httpd --sysconfdir=/etc/httpd --enable-so --enable-mpms-shared=all --enable-cgi --enable-rewrite --enable-modeles=most --enable-ssl --with-zlib --with-mpm=event --with-pcre --with-apr-util=/usr/local/apr-util
# make && make install

技术分享



 

编译安装完成

链接:http://pan.baidu.com/s/1jIeLOqE 密码:o4vc

下载上述的httpd启动脚本,然后上传到linux系统,也可以自己安装系统自带的httpd来复制脚本

谨记:安装系统httpd所提供的httpd需要把上述所安装的目录和配置文件存放的目录跟系统的httpd存放目录不能重

 

[root@servers ~]# cp httpd /etc/init.d/
[root@servers ~]# chmod +x /etc/init.d/httpd //给httpd执行权限
[root@servers ~]# chkconfig --add httpd
[root@servers ~]# vim /etc/init.d/httpd
修改如下三项
apachectl=/usr/sbin/apachectl  
修改为你安装的目录的二进制文件/usr/local/httpd/bin/apachetl
httpd=${HTTPD-/usr/sbin/httpd}
修改为你安装的目录的二进制文件/usr/local/httpd/bin/httpd
pidfile=${PIDFILE-/var/run/httpd/httpd.pid}
在系统上创建一个/var/run/httpd目录或者把run后面的httpd目录取消变成/var/run/httpd.pid
修改httpd配置文件添加 /etc/httpd/httpd.conf
PidFile “/var/run/httpd.pid” //跟上面pidfile一定要对应,不然不能关闭httpd服务
[root@servers ~]# service httpd rstart

后续配置:

导出二进制文件

vim /etc/profile.d/httpd.sh
export PATH=$PATH:/usr/local/httpd/bin

导出头文件

ln -sv /usr/local/httpd/include/ /usr/include/httpd

导出man文件

vim /etc/man.config
MANPATH /usr/local/httpd/man

第二台机器安装:php

提供开发环境,安装gcc编译器及openssl-devel开发包

Rpm安装:libmcrypt-2.5.8-9.el6.x86_64.rpm,libmcrypt-devel-2.5.8-9.el6.x86_64.rpm

[root@php ~]# rpm -ivh libmcrypt-2.5.8-9.el6.x86_64.rpm 
warning: libmcrypt-2.5.8-9.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Preparing...                ########################################### [100%]
   1:libmcrypt              ########################################### [100%]
[root@php ~]# rpm -ivh libmcrypt-devel-2.5.8-9.el6.x86_64.rpm 
warning: libmcrypt-devel-2.5.8-9.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Preparing...                ########################################### [100%]
   1:libmcrypt-devel        ########################################### [100%]
[root@php ~]#

编译安装php

编译安装时,要提供环境  解决依赖关系   libxml2-devel openssl-devel bzip2-devel

[root@php ~]# tar xf php-5.6.31.tar.bz2 
[root@php ~]# ls
anaconda-ks.cfg     libmcrypt-2.5.8-9.el6.x86_64.rpm        php-5.6.31.tar.bz2
install.log         libmcrypt-devel-2.5.8-9.el6.x86_64.rpm  phpMyAdmin-4.0.5-all-languages.zip
install.log.syslog  php-5.6.31                              xcache-3.2.0.tar.gz
[root@php ~]# cd php-5.6.31
[root@php php-5.6.31]# 
# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config(mysql另外一种通信机制) --enable-mbstring(支持多字节子串) --with-freetype-dir(字体相关) --with-jpeg-dir --with-png-dir --with-zlib(支持压缩) --with-libxml-dir=/usr --enable-xml  --enable-sockets(支持基于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(如果上面使用了event选项这里必须使用zts);本地安装mysql时使用
./configure --prefix=/usr/local/php --with-openssl --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --enable-sockets --enable-fpm --with-mcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2;mysql在其他主机上是使用


说明:如果使用PHP5.3以上版本,为了链接MySQL数据库,可以指定mysqlnd,这样在本机就不需要先安装MySQLMySQL开发包了。mysqlndphp 5.3开始可用,可以编译时绑定到它(而不用和具体的MySQL客户端库绑定形成依赖),但从PHP 5.4开始它就是默认设置了。

# ./configure --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd


部分排错:

技术分享 

如上图所示检查到gcc编译器未安装:yum -y install gcc安装即可

安装之前要先把yum配置好

 技术分享

如上图所示缺少软件包libxml2,一般编译安装都是安装开发包

yum -y install libxml2-devel

技术分享 

缺少openssl开发包 

yum -y install openssl-devel

技术分享 

缺少bzip2-devel 

yum -y install bzip2-devel

 技术分享

检查环境成功

# make && make install

 技术分享

编译php完成

 

第三台机器安装mysql

因用的是编译好的Mysql数据库,就不用安装上面所说的开发环境了

[root@mysql ~]# ls
anaconda-ks.cfg  install.log  install.log.syslog  mysql-5.5.33-linux2.6-x86_64.tar.gz
[root@mysql ~]# tar xf mysql-5.5.33-linux2.6-x86_64.tar.gz -C /usr/local/
提示:将mysql解压到/usr/local/目录下
[root@mysql ~]# ln -sv /usr/local/mysql-5.5.33-linux2.6-x86_64/ /usr/local/mysql  //建立mysql软连接
`/usr/local/mysql‘ -> `/usr/local/mysql-5.5.33-linux2.6-x86_64/‘
[root@mysql ~]#  cd /usr/local/mysql
[root@mysql mysql]# groupadd -r mysql  //创建mysql组
[root@mysql mysql]# useradd -r -s /sbin/nologin -g mysql mysql //创建mysql系统用户
[root@mysql mysql]# ll
total 200
drwxr-xr-x.  2 root root    4096 Aug 16 23:33 bin
-rw-r--r--.  1 7161 wheel  17987 Jul 15  2013 COPYING
drwxr-xr-x.  3 root root    4096 Aug 16 23:33 data
drwxr-xr-x.  2 root root    4096 Aug 16 23:33 docs
drwxr-xr-x.  3 root root    4096 Aug 16 23:33 include
-rw-r--r--.  1 7161 wheel 134493 Jul 15  2013 INSTALL-BINARY
drwxr-xr-x.  3 root root    4096 Aug 16 23:33 lib
drwxr-xr-x.  4 root root    4096 Aug 16 23:33 man
drwxr-xr-x. 10 root root    4096 Aug 16 23:33 mysql-test
-rw-r--r--.  1 7161 wheel   2496 Jul 15  2013 README
drwxr-xr-x.  2 root root    4096 Aug 16 23:33 scripts
drwxr-xr-x. 27 root root    4096 Aug 16 23:33 share
drwxr-xr-x.  4 root root    4096 Aug 16 23:33 sql-bench
drwxr-xr-x.  3 root root    4096 Aug 16 23:33 support-files
[root@mysql mysql]# chown -R root:mysql *  //将此目录下的所有文件属主改为root属组改为mysql
[root@mysql mysql]# ll
total 200
drwxr-xr-x.  2 root mysql   4096 Aug 16 23:33 bin
-rw-r--r--.  1 root mysql  17987 Jul 15  2013 COPYING
drwxr-xr-x.  3 root mysql   4096 Aug 16 23:33 data
drwxr-xr-x.  2 root mysql   4096 Aug 16 23:33 docs
drwxr-xr-x.  3 root mysql   4096 Aug 16 23:33 include
-rw-r--r--.  1 root mysql 134493 Jul 15  2013 INSTALL-BINARY
drwxr-xr-x.  3 root mysql   4096 Aug 16 23:33 lib
drwxr-xr-x.  4 root mysql   4096 Aug 16 23:33 man
drwxr-xr-x. 10 root mysql   4096 Aug 16 23:33 mysql-test
-rw-r--r--.  1 root mysql   2496 Jul 15  2013 README
drwxr-xr-x.  2 root mysql   4096 Aug 16 23:33 scripts
drwxr-xr-x. 27 root mysql   4096 Aug 16 23:33 share
drwxr-xr-x.  4 root mysql   4096 Aug 16 23:33 sql-bench
drwxr-xr-x.  3 root mysql   4096 Aug 16 23:33 support-files
[root@mysql mysql]#


 

 

创建存放mysql数据库的目录,如果有条件可以使用单独的硬盘存储

[root@mysql mysql]# mkdir /data
[root@mysql mysql]# 
[root@mysql mysql]# scripts/mysql_install_db --datadir=/data --user=mysql  //执行数据库初始化脚本,数据存放到/data目录下,使用mysql用户运行

技术分享 

执行数据库初始脚本完成

配置mysql配置文件

/etc/my.cnf重命名为/etc/my.cnf.bak

[root@mysql mysql]# cp support-files/my-large.cnf /etc/my.cnf

my.cnf[mysqld]条目下添加

datadir=/data

 

设置服务脚本

[root@mysql mysql]# cp -p support-files/mysql.server /etc/init.d/mysqld
[root@mysql mysql]# chkconfig --add mysqld //添加到chkconfig列表中可以使用service 调用
[root@mysql mysql]# chkconfig mysqld on //开机启动
[root@mysql mysql]# service mysqld start


新安装的数据库是没有密码的

 

后续工作

导出二进制文件

vim /etc/profile.d/mysql.sh
export PATH=$PATH:/usr/local/mysql/bin

导出头文件

ln -sv /usr/local/mysql/include/ /usr/include/mysql

导出库文件

ldconfig -p 查看所有加载的库文件
vim /etc/ld.so.conf.d/mysqld.conf
/usr/local/mysql/lib
ldconfig -v 重新加载库文件

导出man文件

vim /etc/man.config
MANPATH /usr/local/mysql/man


 

配置mysql服务器

[root@mysql ~]# mysql
删除空账号
mysql> use mysql;
Database changed
 
mysql> select user,host,password from user;
+------+-----------+----------+
| user | host      | password |
+------+-----------+----------+
| root | localhost |      |
| root | mysql   |      |
| root | 127.0.0.1 |      |
| root | ::1     |      |
|      | localhost |          |
|      | mysql   |        |
+------+-----------+----------+
6 rows in set (0.02 sec)
 
mysql> drop user ‘‘@‘localhost‘;
Query OK, 0 rows affected (0.00 sec)
 
mysql> drop user ‘‘@‘mysql‘;
Query OK, 0 rows affected (0.00 sec)
mysql> select user,host,password from user;
+------+-----------+----------+
| user | host      | password |
+------+-----------+----------+
| root | localhost |          |
| root | mysql     |          |
| root | 127.0.0.1 |          |
| root | ::1       |          |
+------+-----------+----------+
4 rows in set (0.00 sec)
设置密码
mysql> update user set password=password(‘密码‘);
Query OK, 4 rows affected (0.02 sec)
Rows matched: 4  Changed: 4  Warnings: 0
创建允许php登录的用户并授权
mysql> grant all on *.* to ‘php‘@‘11.0.0.1‘ identified by ‘123456‘;
Query OK, 0 rows affected (0.00 sec)
 
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye


至此,mysql配置完成

 

配置php

 

提供配置文件
[root@php php-5.6.31]# pwd
/root/php-5.6.31
[root@php php-5.6.31]# cp php.ini-production /etc/php.ini
提供开机启动脚本 
[root@php php-5.6.31]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@php php-5.6.31]# chmod +x /etc/init.d/php-fpm
[root@php php-5.6.31]# chkconfig --add php-fpm
为php-fpm提供配置文件
[root@php php-5.6.31]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf


 

编辑php-fpm的配置文件:
# vim /usr/local/php5/etc/php-fpm.conf
配置fpm的相关选项为你所需要的值,并启用pid文件(如下最后一行):
pid = run/php-fpm.pid 
listen = 127.0.0.1:9000 监听的IP及端口  改为 listen = 9000
pm.max_children = 50  最多最大子进程数
pm.start_servers = 5   启动几个进程
pm.min_spare_servers = 2最小线程数
pm.max_spare_servers = 8最大线程数
 
接下来就可以启动php-fpm了:
# service php-fpm start
 
使用如下命令来验正(如果此命令输出有中几个php-fpm进程就说明启动成功了):
# ps aux | grep php-fpm
 
默认情况下,fpm监听在127.0.0.1的9000端口
也可以使用如下命令验正其是否已经监听在相应的套接字。
[root@php php-5.6.31]# netstat -tnlp |grep php
tcp        0      0 0.0.0.0:9000                0.0.0.0:*                   LISTEN      119616/php-fpm   
[root@php php-5.6.31]# ss -tnlp |grep php
LISTEN     0      128                       *:9000                     *:*      users:(("php-fpm",119616,7),("php-fpm",119617,0),("php-fpm",119618,0),("php-fpm",119619,0),("php-fpm",119620,0),("php-fpm",119621,0))

至此php已经配置完成

 

配置httpd服务器

1、编辑httpd配置文件httpd.conf,让httpd能识别php格式的页面,并支持php格式的主页

# vim /etc/httpd/httpd.conf


 (1)添加如下二行

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

 (2)定位至DirectoryIndex index.html

   修改为:

DirectoryIndex  index.php  index.html

 

2、启用httpd的相关模块

 

Apache httpd 2.4以后已经专门有一个模块针对FastCGI的实现,此模块为mod_proxy_fcgi.so,它其实是作为mod_proxy.so模块的扩充,因此,这两个模块都要加载

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
LoadModeule前面的#号注释掉即可开启

3、配置虚拟主机支持使用fcgi

(1)启用虚拟主机

技术分享 

Include前面的#号注释掉即可

在相应的虚拟主机中添加类似如下两行。 

 ProxyRequests Off关闭正向代理
  ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1

例如:

<VirtualHost *:80>
    DocumentRoot "/www/test.com"
    ServerName test.com
    ServerAlias www.test.com
 
  ProxyRequests Off
  ProxyPassMatch ^/(.*\.php)$ fcgi://10.0.0.2:9000/www/test.com/$1
 
    <Directory "/www/test.com">
        Options none
        AllowOverride none
        Require all granted
    </Directory>
</VirtualHost>

ProxyRequests Off:关闭正向代理

ProxyPassMatch:把以.php结尾的文件请求发送到php-fpm进程,php-fpm至少需要知道运行的目录和URI,所以这里直接在fcgi://10.0.0.2:9000后指明了这两个参数,其它的参数的传递已经被mod_proxy_fcgi.so进行了封装,不需要手动指定。

重新载入配置文件或重启服务

service httpd reload | service httpd restart

本文出自 “linux菜鸟” 博客,请务必保留此出处http://geekb0y.blog.51cto.com/10743719/1956852

LAMP环境搭建

标签:lamp   fpm   

原文地址:http://geekb0y.blog.51cto.com/10743719/1956852

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!