LEMP平台搭建

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LEMP平台搭建相关的知识,希望对你有一定的参考价值。

说明:我这里用到的系统为centos6.3(为避免影响,先关闭防火墙)

操作方式:

一、编译安装nginx

1、首先添加用户nginx,实现以之运行nginx服务进程

# groupadd -r -g 108 nginx

# useradd -r -g 108 -u 108 nginx

2、将下载好的软件包解压并安装(我这里是nginx-1.4.7.tar.gz)

# tar xf nginx-1.4.7.tar.gz

# cd nginx-1.4.7

接着开始编译和安装:

# ./configure \

--prefix=/usr \

--sbin-path=/usr/sbin/nginx \

--conf-path=/etc/nginx/nginx.conf \

--error-log-path=/var/log/nginx/error.log \

--http-log-path=/var/log/nginx/access.log \

--pid-path=/var/run/nginx/nginx.pid  \

--lock-path=/var/lock/nginx.lock \

--user=nginx \

--group=nginx \

--with-http_ssl_module \

--with-http_flv_module \

--with-http_stub_status_module \

--with-http_gzip_static_module \

--http-client-body-temp-path=/var/tmp/nginx/client/ \

--http-proxy-temp-path=/var/tmp/nginx/proxy/ \

--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \

--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \

--http-scgi-temp-path=/var/tmp/nginx/scgi \

--with-pcre \

--with-file-aio

# make && make install

报错时可能要求安装如下包,按需安装即可!

# yum -y install pcre-devel

# yum -y install gcc

# yum -y install openssl-devel

3、为nginx提供SysV init脚本:


新建文件/etc/rc.d/init.d/nginx,内容如下:

#!/bin/sh

#

# nginx - this script starts and stops the nginx daemon

#

# chkconfig:   - 85 15 

# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \

#               proxy and IMAP/POP3 proxy server

# processname: nginx

# config:      /etc/nginx/nginx.conf

# config:      /etc/sysconfig/nginx

# pidfile:     /var/run/nginx.pid

 

# Source function library.

. /etc/rc.d/init.d/functions

 

# Source networking configuration.

. /etc/sysconfig/network

 

# Check that networking is up.

[ "$NETWORKING" = "no" ] && exit 0

 

nginx="/usr/sbin/nginx"

prog=$(basename $nginx)

 

NGINX_CONF_FILE="/etc/nginx/nginx.conf"

 

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx

 

lockfile=/var/lock/subsys/nginx

 

make_dirs() {

  # make required directories

  user=`nginx -V 2>&1 | grep "configure arguments:" | sed ‘s/[^*]*--user=\([^ ]*\).*/\1/g‘ -`

  options=`$nginx -V 2>&1 | grep ‘configure arguments:‘`

  for opt in $options; do

  if [ `echo $opt | grep ‘.*-temp-path‘` ]; then

  value=`echo $opt | cut -d "=" -f 2`

  if [ ! -d "$value" ]; then

  # echo "creating" $value

  mkdir -p $value && chown -R $user $value

  fi

  fi

  done

}

 

start() {

[ -x $nginx ] || exit 5

[ -f $NGINX_CONF_FILE ] || exit 6

make_dirs

echo -n $"Starting $prog: "

daemon $nginx -c $NGINX_CONF_FILE

retval=$?

echo

[ $retval -eq 0 ] && touch $lockfile

return $retval

}

 

stop() {

echo -n $"Stopping $prog: "

killproc $prog -QUIT

retval=$?

echo

[ $retval -eq 0 ] && rm -f $lockfile

return $retval

}

 

restart() {

configtest || return $?

stop

sleep 1

start

}

 

reload() {

configtest || return $?

echo -n $"Reloading $prog: "

killproc $nginx -HUP

RETVAL=$?

echo

}

 

force_reload() {

restart

}

 

configtest() {

 $nginx -t -c $NGINX_CONF_FILE

}

 

rh_status() {

status $prog

}

 

rh_status_q() {

rh_status >/dev/null 2>&1

}

 

case "$1" in

start)

rh_status_q && exit 0

$1

;;

stop)

rh_status_q || exit 0

$1

;;

restart|configtest)

$1

;;

reload)

rh_status_q || exit 7

$1

;;

force-reload)

force_reload

;;

status)

rh_status

;;

condrestart|try-restart)

rh_status_q || exit 0

;;

*)

echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"

exit 2

esac


4、而后为此脚本赋予执行权限:

# chmod +x /etc/rc.d/init.d/nginx


5、添加至服务管理列表,并让其开机自动启动:

# chkconfig --add nginx

# chkconfig nginx on


6、而后就可以启动服务并测试了:

# service nginx start

二、安装mysql(我这里通过编译安装MySQL-5.6.33(通用二进制格式))

1、将下载好的压缩包解压至/usr/local,并进入此目录

# tar xf mysql-5.6.33-linux-glibc2.5-i686.tar.gz -C /usr/local/

# cd /usr/local/

2、为解压后的目录创建一个链接,并进入此目录

# ln -sv mysql-5.6.33-linux-glibc2.5-i686 mysql

# cd mysql

3、创建MySQL用户(使其成为系统用户)和MySQL组

# groupadd -r -g 306 mysql

# useradd -g 306 -r -u 306 mysql

4、使mysql下的所有文件都属于mysql用户和mysql组

# chown -R mysql.mysql /usr/local/mysql/*

5、创建数据目录,并使其属于mysql用户和mysql组,其他人无权限

# mkdir -p /mydata/data

# chown -R mysql:mysql /mydata/data/

# chmod o-rw /mydata/data/

6、准备就绪,开始安装

# scripts/mysql_install_db --user=mysql --datadir=/mydata/data

7、安装完成后为了安全,更改/usr/local/mysql下所有文件的权限

#chown -R root .

8、准备启动脚本,并使其开机自动启动

# cp support-files/mysql.server /etc/init.d/mysqld

# chkconfig --add mysqld

# chkconfig --list mysqld

9、编辑数据库配置文件

# cp support-files/my-default.cnf /etc/my.cnf

#vim /etc/my.cnf,修改和添加以下内容:

datadir = /mydata/data

innodb_file_per_table = ON

log-bin = master-bin

10、提供执行相关命令所需的环境变量

# vim /etc/profile.d/mysql.sh

添加以下内容:

export PATH=$PATH:/usr/local/mysql/bin

11、至此,MySQL服务配置完成,可以启动测试

# systemctl start mysqld

12、输出库文件(因为要针对mysql进行编译)

# vim /etc/ld.so.conf.d/mysql.conf

添加以下内容:

/usr/local/mysql/lib

# ldconfig -v

13、输出头文件

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

三、编译安装php-5.5.38:(相关包可以到http://www.php.net/ 下载)

1、安装前准备:

如果出现出现configure:error:xml2-config not found错误:

# yum -y install libxml2-devel

如果出现:configure: error: Please reinstall the BZip2 distribution

# yum -y install bzip2-devel

如果出现:configure: error: Please reinstall the libcurl distribution - easy.h should be in <curl-dir>/include/curl/

# yum -y install curl-devel

2、将源码包下载至本地,开始安装

# tar xf php-5.5.38.tar.bz2

#cd php-5.5.38

#./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql

         --with-openssl --enable-fpm --enable-sockets --enable-sysvshm 

        --with- mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring 

        --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib 

        --with-libxml-dir=/usr --enable-xml  --with-config-file-path=/etc 

        --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-curl 


(释义:

--prefix=/usr/local/php 指定php安装目录;

--with-mysql=/usr/local/mysql mysql安装目录,对mysql的支持;

--with-openssl 增加openssl的支持;

--enable-fpm 启用php-fpm

--enable-sockets 打开socket支;

--with-mysqli=/usr/local/mysql/bin/mysql_config mysqlin扩展技术,不仅可以调

           用MySQL的存储过程,处理MySQL事物,而且可以使访问数据库工作变得稳定;

--enable-mbstring 多字节字符串的支持;

--with-freetype-dir 打开对freetype字体库的支持;

--with-jpeg-dir 对jpeg格式图片的支持;

--with-png-dir 打开对png图片的支持;

--with-zlib 打开对zlib库的支持;

--with-libxml-dir=/usr 打开libxml2库的支持;

--enable-xml 打开对xml的支持;

--with-config-file-path=/etc 指定php.ini(配置文件)位置;

--with-config-file-scan-dir=/etc/php.d

            是搜索下面的ini文件php.ini一起使用;

--with-bz2 打开对bz2文件的支持;

#make

#make install


3、为php提供配置文件:

# cp php.ini-production /etc/php.ini

4、为php-fpm提供配置文件:

# cp /usr/local/php/etc/php-fpm.conf.default                        /usr/local/php/etc/php-fpm.conf

5、编辑php-fpm的配置文件:

# vim /usr/local/php/etc/php-fpm.conf

配置fpm的相关选项为你所需要的值,并启用pid文件(如下最后一行):

pm.max_children = 150

pm.start_servers = 8

pm.min_spare_servers = 5

pm.max_spare_servers = 10

#pid = /usr/local/php/var/run/php-fpm.pid

6、为php-fpm提供Sysv init脚本,并将其添加至服务列表:

# cd php-5.5.38

# cp sapi/fpm/init.d.php-fpm  /etc/rc.d/init.d/php-fpm

# chmod +x /etc/rc.d/init.d/php-fpm

# chkconfig --add php-fpm

# chkconfig php-fpm on

7、接下来就可以启动php-fpm了:

# service php-fpm start

使用如下命令来验正(如果此命令输出有中几个php-fpm进程就说明启动成功了):

# ps aux | grep php-fpm


四、整合nginx和php

1、编辑/etc/nginx/nginx.conf,启用如下选项:

location ~ \.php$ {

root           html;

fastcgi_pass   127.0.0.1:9000;

fastcgi_index  index.php;

fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

include        fastcgi_params;

}

并在所支持的主页面格式中添加php格式的主页,类似如下:

location / {

root   html;

index  index.php index.html index.htm;

        }

2、编辑/etc/nginx/fastcgi_params,将其内容更改为如下内容:

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;

fastcgi_param  SERVER_SOFTWARE    nginx;

fastcgi_param  QUERY_STRING       $query_string;

fastcgi_param  REQUEST_METHOD     $request_method;

fastcgi_param  CONTENT_TYPE       $content_type;

fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;

fastcgi_param  REQUEST_URI        $request_uri;

fastcgi_param  DOCUMENT_URI       $document_uri;

fastcgi_param  DOCUMENT_ROOT      $document_root;

fastcgi_param  SERVER_PROTOCOL    $server_protocol;

fastcgi_param  REMOTE_ADDR        $remote_addr;

fastcgi_param  REMOTE_PORT        $remote_port;

fastcgi_param  SERVER_ADDR        $server_addr;

fastcgi_param  SERVER_PORT        $server_port;

fastcgi_param  SERVER_NAME        $server_name;

3、在/usr/html新建index.php的测试页面,测试php是否能正常工作:

<h1>fsy nginx<h1>

<?php

phpinfo();

?>

 

4、而后重新载入nginx的配置文件:

# service nginx reload

接着就可以通过浏览器访问此测试页面了!


五、安装xcache,为php加速:

xcache:在同一个AppServer上为多个进程之间或让多个不同的处理机使用同一个opcode(编译生成)

1、安装

# tar xf xcache-3.1.2.tar.bz2

# cd xcache-3.1.2

# /usr/local/php/bin/phpize

# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config

# make && make install


安装结束时,会出现类似如下行:

Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/

2、编辑php.ini,整合php和xcache:

1)将xcache提供的样例配置导入php.ini

# mkdir /etc/php.d

# cp xcache.ini /etc/php.d/

2)编辑/etc/php.d/xcache.ini,找到zend_extension开头的行,修改为如下行:

extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/xcache.so

3、重新启动php-fpm,可以进行访问测试

# service php-fpm restart

此时LEMP安装完毕!


                                   欢迎批评指正!

本文出自 “10917734” 博客,请务必保留此出处http://10927734.blog.51cto.com/10917734/1870924

以上是关于LEMP平台搭建的主要内容,如果未能解决你的问题,请参考以下文章

LNMP平台搭建网站实战案例

Centos 7搭建LNMP架构及部署Discuz论坛

基于centos 7搭建LNMP架构

Lemp + Wordpress 快速搭建个人博客

架设邮件服务器之LEMP环境搭建

LEMP环境搭建