LNMP环境配置(上)

LNMP代表的是Linux系统下Nginx+MySQL+PHP组成的动态网站系统解决方案

LNMP的工作原理

① 浏览器发送http request请求到服务器(Nginx),服务器响应并处理Web请求,将一些静态资源(CSS,图片,视频等)保存服务器上。

② PHP脚本通过接口传输协议(网关协议)PHP-FCGIfast-cgi)传输给PHP-FPM(进程管理程序),PHP-FPM不做处理。然后PHP-FPM调用PHP解析器进程,PHP解析器解析PHP脚本信息。PHP解析器进程可以启动多个,进行并发执行。

③ 将解析后的脚本返回到PHP-FPMPHP-FPM再通过fast-cgi的形式将脚本信息传送给Nginx

④ 服务器再通过Http response的形式传送给浏览器,浏览器再进行解析与渲染,最后进行呈现。

 

一.安装MySQL

  1. 下载软件包或上传MySQL压缩包
  2. 初始化

   cd /usr/local/src/

   tar -xzvf mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz//解压MySQL压缩包

   mv mysql-5.6.43-linux-glibc2.12-x86_64   /usr/local/mysql //移动MySQL包到/usr/local/mysql

   cd /usr/local/mysql/   //进入mysql文件

   useradd -s /sbin/nologin  mysql  //建立MySQL用户

   mkdir -p /data/mysql ; chown -R mysql:mysql  /data/mysql  //创建一个存放数据库的文件,并将这个文件的所有这者所属组都设定为mysql

   ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql  //执行一个块脚本,执行后无需自行编译

-bash: ./scripts/mysql_install_db: /usr/bin/perl: 坏的解释器没有那个文件或目录)出现错误,进行安装yum install -y perl-Module-Install无法安装,经将yum源移动回来后安成功。再次执行# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql/  

yum -y install perl perl-devel

 

 

有时会用到一个特殊符号&&  他的意思是当前面的命令执行成功时,才会执行后面,类似于if判断。

最后一条执行完出现两个OK 代表成功 ,或者用echo $?查看,看输出结果是否为0

3.配置MySQL

cp support-files/my-default.cnf   /etc/my.cnf    //将拷贝文件放到etc下面,会询问是否覆盖,确认覆盖y

vi /etc/my.cnf //修改配置内容

basedir = /usr/local/mysql     //basedir表示MySQL包所在路径

datadir = /data/mysql        //datadir表示定义存放数据的位置

port = 3306               //port表示定义MySQL服务监听的端口号,默认3306

server_id = 155           //server_id表示该MySQL服务的ID

socket = /tmp/mysql.sock  //socket定义MySQL服务监听的套接字地址

 

cp support-files/mysql.server  /etc/init.d/mysqld  //拷贝启动脚本

 

vi /etc/init.d/mysqld   //修改启动脚本

basedir=/usr/local/mysql

datadir=/data/mysql

 

 

 chkconfig --add mysqld  //mysql加到服务项

 chkconfig mysqld on    //设定开机自启

 service mysqld start     //启动mysql (如果显示是SUCCESS则启动成功

 ps -ef | grep mysqld     //查看它的进程

 netstat -ltunp | grep 3306 //查看它的端口

 (失败就安装yum install net-tools

 

二.安装PHP

1.下载或上传源码包

2.解压创建账号:tar -zxvf  ~

              useradd -s /sbin/nologin php-fpm

3.配置编译选项  cd php-5.6.27

               ./configure --prefix=/usr/local/php-fpm  --with-config-file-path=/usr/local/php-fpm/etc  --enable-fpm  --with-fpm-user=php-fpm  --with-fpm-group=php-fpm  --with-mysql=/usr/local/mysql  --with-mysql-sock=/tmp/mysql.sock --with-libxml-dir  --with-gd  --with-jpeg-dir --with-png-dir --with-freetype-dir  --with-iconv-dir --with-zlib-dir --with-mcrypt  --enable-soap  --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --disable-ipv6 --with-pear( 以防出现上一章一样的错误,先安装yum install -y libxml2-devel ,yum install -y openssl openssl-devel ,yum install -y bzip2 bzip2-devel,yum install -y libpng libpng-devel,yum install -y freetype freetype-devel,yum install -y epel-release,yum install -y libmcrypt-devel还有错误configure: error: Please reinstall the libcurl distribution -  easy.h should be in <curl-dir>/include/curl/ 安装yum install -y libcurl-devel

4.安装  make  

               make install

5.修改配置文件    

mkdir -p /usr/local/php-fpm/etc/php.ini

cp php.ini-production /usr/local/php-fpm/etc/php.ini

vi /usr/local/php-fpm/etc/php-fpm.conf

[global]

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

error_log =/usr/local/php-fpm/var/log/php-fpm.log

[www]

listen=/tmp/php-fcgi.sock

listen.mode=666

user=php-fpm

group=php-fpm

pm=dynamic

pm.max_children=50

pm.start_servers=20

pm.min_spare_servers=5

pm.max_spare_servers=35

pm.max_requests=500

rlimit_files=1024

6.验证配置         /usr/local/php-fpm/sbin/php-fpm -t   //显示test is successful表示配置没问题

7.启动php-fpm           cp /usr/local/src/php-5.6.27/sapi/fpm/init.d.php-fpm  /etc/init.d/php-fpm  

                                  chmod 755 /etc/init.d/php-fpm   

                                  useradd -s /sbin/nologin php-fpm

                                  service php-fpm start

设置php-fpm开机启动  chkconfig php-fpm on

检测是否启动                   ps aux |grep php-fpm

 

三.安装Nginx

Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。它用于部署动态网站的轻量级服务程序。Nginx服务程序的稳定性源自于采用了分阶段的资源分配技术,降低了CPU与内存的占用率,所以使用Nginx程序部署的动态网站环境不仅十分稳定、高效,而且消耗的系统资源也很少。

1.下载或上传资源包       cd /usr/local/src/

                                                       tar -zxvf nginx-1.12.2.tar.gz

2.配置编译选项         cd nginx-1.12.2

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

3.编译和安装          make && make install

4.编写启动脚本,并加入系统服务   

vi /etc/init.d/nginx

#!/bin/bash

#chkconfig: - 30 21

#description:  http service

#Source Function Library

.  /etc/init.d/functions

#Nginx Settings

 

NGINX_SBIN="/usr/local/nginx/sbin/nginx"

NGINX_CONF="/usr/local/nginx/conf/nginx.conf"

NGINX_PID="/usr/local/nginx/logs/nginx.pid"

RETVAL=0

prog="Nginx"

 

start()

{

echo -n $"Starting $prog: "

mkdir -p /dev/shm/nginx_temp

daemon $NGINX_SBIN -c $NGINX_CONF

RETVAL=$?

echo

return $RETVAL

}

 

 

stop()

{

echo -n $"Stopping $prog: "

killproc -p $NGINX_PID $NGINX_SBIN -TERM

rm -rf /dev/shm/nginx_temp

RETVAL=$?

echo

return $RETVAL

}

 

reload()

{

echo -n $"Reloading $prog: "

killproc -p $NGINX_PID $NGINX_SBIN -HUP

RETVAL=$?

echo

return $RETVAL

}

 

restart()

{

stop

start

}

 

configtest()

{

$NGINX_SBIN -c $NGINX_CONF -t

return 0

}

 

case  "$1"  in

start)

start

;;

stop)

stop

;;

reload)

reload

;;

restart)

restart

;;

configtest)

configtest

;;

*)

echo $"Usage : $0 {start|stop|reload|restart|configtest}"

RETVAL=1

esac

 

exit $RETVAL

保存该脚本后更改权限chmod 755 /etc/init.d/nginx

                                    chkconfig --add nginx

开机启动ngnix             chkconfig nginx on

5.更改nginx配置文件    > /usr/local/nginx/conf/nginx.conf

 

  vi /usr/local/nginx/conf/nginx.conf

 user nobody nobody;

worker_processes 2;

error_log /usr/local/nginx/logs/nginx_error.log crit;

pid /usr/local/nginx/logs/nginx.pid;

worker_rlimit_nofile 51200;

events

{

use epoll;

worker_connections 6000;

}

 

http

{

include mime.types;

default_type application/octet-stream;

server_names_hash_bucket_size 3526;

server_names_hash_max_size 4096;

log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'

' $host "$request_uri" $status'

' "$http_referer" "$http_user_agent" ';

sendfile on;

tcp_nopush on;

keepalive_timeout 30;

client_header_timeout 3m;

client_body_timeout 3m;

send_timeout 3m;

connection_pool_size 256;

client_header_buffer_size 1k;

large_client_header_buffers 8 4k;

request_pool_size 4k;

output_buffers 4 32k;

postpone_output 1460;

client_max_body_size 10m;

client_body_buffer_size 256k;

client_body_temp_path /usr/local/nginx/client_body_temp;

proxy_temp_path /usr/local/nginx/proxy_temp;

fastcgi_temp_path /usr/local/nginx/fastcgi_temp;

fastcgi_intercept_errors on;

tcp_nodelay on;

gzip on;

gzip_min_length 1k;

gzip_buffers 4 8k;

gzip_comp_level 5;

gzip_http_version 1.1;

gzip_types text/plain application/x-javascript text/css text/htm

application/xml;

 

server

{

listen 80;

server_name localhost;

index index.html index.htm index.php;

root /usr/local/nginx/html;

location ~ .php$

{

include fastcgi_params;

fastcgi_pass unix:/tmp/php-fcgi.sock;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;

}

}

}

/usr/local/nginx/sbin/nginx -t    //检验配置文件是否有问题

6.启动nginx

 service nginx start   

检查nginx是否启动     ps aux |grep gix

7.测试是否正确解析PHP

vi  /usr/local/nginx/html/2.php  //创建测试文件

<?php

echo "test php scripts.";

?>

curl localhost/2.php  //测试文件

原文地址:https://www.cnblogs.com/sxt0103/p/14113933.html