LNMP 全功能编译安装 for CentOS6.3笔记

关于CentOs8的Lnmp安装 有点时间没更新了,一直在找工作,最近闲来无事忽然发现CenOs搞到8.0了,再加上一直没搞过Nginx出于好奇,就试试手,搞了一天多 ,再从记录一下我踩得坑,希望能帮到大家,也算是做个记录 首先下载CentOs8的iso镜像CentOs8镜像地址然后搭建省事的话可以直接下载,有兴趣的可以去官网找,vm虚拟机使用我就不介绍了,有一点需要注意的就是安装的时候默认是带桌面的如果有需要的话就在箭头值的地方选择,别的也没啥 然后就是进入流程 首先安装Nginx入宫对版本没需要的话可以直接使用yum安装 简单省 阅读详情

LINUX操作系统:centOS6.3 64bit

NGINX:nginx-1.4.0

MYSQL:mysql-5.6.10

PHP:php-5.4.13

一.安装开发包(使用默认CENTOS更新源):

# yum -y install wget gcc-c++ ncurses ncurses-devel cmake make perl bison openssl openssl-devel gcc* libxml2 libxml2-devel curl-devel libjpeg* libpng* freetype*

二.关闭iptables和SELINUX

# service iptables stop

# setenforce 0

# vi /etc/sysconfig/selinux

---------------

SELINUX=disabled

---------------

三.安装mysql数据库
1.下载编译包:
# wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.13.tar.gz/from/http://cdn.mysql.com/
 
2.安装前的初始配置工作:
# useradd -d /usr/local/mysql/ mysql   #创建一个Mysql用户,指定家目录到/use/local目录下。
# mkdir /usr/local/mysql/data          
# mkdir /usr/local/mysql/log           #新建mysql下data和log子目录
# chown -R mysql:mysql /usr/local/mysql/data/
# chown -R mysql:mysql /usr/local/mysql/log/
# chmod 750 /usr/local/mysql/data      
# chmod 750 /usr/local/mysql/log       #修改目录的所属者以及所属组
 
3.解包编译安装
# tar -zxv -f mysql-5.6.10.tar.gz      
# cd mysql-5.6.10  
# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DSYSCONFDIR=/etc \
-DWITH_SSL=yes
 
#  make & make install
 
编译注解:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \               #安装目录
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \                        #Unix socket文件路径,自定义此路径防报错
-DDEFAULT_CHARSET=utf8 \                                            #默认字符
-DDEFAULT_COLLATION=utf8_general_ci \                    #校验字符
-DEXTRA_CHARSETS=all \                                                 #安装所有扩展字符集
-DWITH_MYISAM_STORAGE_ENGINE=1 \                       #安装myisam存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 \                  #安装innodb存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \                     #安装archive存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \               #安装blackhole存储引擎
-DWITH_MEMORY_STORAGE_ENGINE=1 \                      #安装memory存储引擎
-DWITH_FEDERATED_STORAGE_ENGINE=1                 #安装frderated存储引擎
-DWITH_READLINE=1 \                                                          #快捷键功能
-DENABLED_LOCAL_INFILE=1 \                                          #允许从本地导入数据
-DMYSQL_DATADIR=/usr/local/mysql/data \                        #数据库存放目录
-DMYSQL_USER=mysql \                                                       #数据库属主
-DMYSQL_TCP_PORT=3306 \                                             #数据库端口
-DSYSCONFDIR=/etc \                                                           #MySQL配辑文件
-DWITH_SSL=yes                                                                   #数据库SSL
 
4.编写mysql配置项:
#  vi /etc/my.cnf
--------------------------------------------
[mysql]
# CLIENT #
port                           = 3306
socket                         = /tmp/mysql.sock
[mysqld]
# GENERAL #
user                           = mysql
default_storage_engine         = InnoDB
socket                         = /tmp/mysql.sock
pid_file                       = /var/run/mysqld/mysqld.pid
# MyISAM #
key_buffer_size                = 32M
myisam_recover                 = FORCE,BACKUP
# SAFETY #
max_allowed_packet             = 16M
max_connect_errors             = 1000000
skip_name_resolve
sql_mode                       = STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ONLY_FULL_GROUP_BY
sysdate_is_now                 = 1
innodb                         = FORCE
innodb_strict_mode             = 1
# DATA STORAGE #
datadir                        = /usr/local/mysql/data
# BINARY LOGGING #
log-bin                        =/usr/local/mysql/log/bin.log
expire_logs_days               = 30
sync_binlog                    = 1
# CACHES AND LIMITS #
key_buffer                     = 64M
max_allowed_packet             = 16M
sort_buffer_size               = 16M
read_buffer_size               = 4M
read_rnd_buffer_size           = 16M
thread_stack                   = 8M
tmp_table_size                 = 8M
max_heap_table_size            = 2M
query_cache_type               = 1
query_cache_size               = 32M
query_cache_limit              = 2M
max_connections                = 2048
thread_cache_size              = 512
open_files_limit               = 65535
table_definition_cache         = 400
table_open_cache               = 2048
# INNODB #
innodb_log_files_in_group      = 2
innodb_log_file_size           = 16M
innodb_flush_log_at_trx_commit = 1
innodb_file_per_table          = 1
# 128M这个值视服务器内存而定
innodb_buffer_pool_size        = 128M
# 移除多余缓存
performance_schema = 0
# LOGGING #
log-error=/usr/local/mysql/log/error.log
general_log=1
general_log_file=/usr/local/mysql/log/mysql.log
slow_query_log=1
slow_query_log_file=/usr/local/mysql/log/slowquery.log
log-output=FILE
# 避免MySQL的外部锁定,减少出错几率增强稳定性 #
skip-external-locking
# 禁止sql读取本地文件 #
local-infile=0
----------------------------------------
 
5.将mysql的库文件路径加入系统的库文件搜索路径中
方法一:直接做软链接
# ln -s /usr/local/mysql/lib/ /usr/lib/mysql
方法二:利用ldconfig导入系统库(推荐)
# echo "/usr/local/mysql/lib" >> /etc/ld.so.conf.d/mysql.conf
# ldconfig
 
6.输出mysql的头文件到系统头文件
# ln -s /usr/local/mysql/include/mysql /usr/include/mysql
 
7.进入安装路径,初始化配置脚本
# cd /usr/local/mysql
# scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data
 
8.复制mysql启动脚本到系统服务目录
# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
 
9.系统启动项相关配置
# chkconfig --add mysqld  #添加开机启动服务
# chkconfig --level 35 mysqld on  #设置mysql启动
 
10.启动mysql
# service mysqld start  
注:编译时若socket路径自定义为/var/lib/mysql/mysql.sock,这里需要创建一个mysql接口的软链接,防止登陆后台或安装论坛报错.
# ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock  
 
11. 设置初始账户,并登陆后台:
# /usr/local/mysql/bin/mysqladmin -u root password 123456   #设置密码
# /usr/local/mysql/bin/mysql -u root -p123456     #连接数据库
-----------------------------------
mysql> create database phpwind;      #创建数据库
mysql> grant all privileges on *.* to root@'%' identified by '123456' with grant option;  #给root用户非本地链接所有权限,并改密码和赋予其给其他人下发权限.
mysql> show variables; #查看mysql设置.
-----------------------------------
注:从启MYSQL也可使用以下命令开启此服务
# /usr/local/mysql/bin/safe_mysqld
如果不设置chkconfig启动项,也可在/etc/rc.local下添加如下命令,使mysql服务利用系统启动脚本运行.
# echo "/usr/local/mysql/bin/safe_mysqld --user=mysql &" >> /etc/rc.local
 
12 添加mysql命令集到系统全局变量
注:如果系统之前未安装mysql客户端,可以将编译好的mysql命令集导入系统全局变量
以后就可以直接使用mysql命令集,而不需要使用绝对路径访问.
# echo "PATH=$PATH:/usr/local/mysql/bin;export PATH" >> /etc/profile
# source /etc/profile

四.编译安装nginx(官方文档http://wiki.nginx.org/Main)

1.模块依赖性:

gzip 模块需要 zlib 库

rewrite 模块需要 pcre 库

ssl 功能需要 openssl 库

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

2.nginx编译

先添加nginx用户和用户组

# groupadd nginx

# useradd -g nginx -s /bin/false -M nginx

解压源码包,这里采用最新的源码包1.4.1

# wget http://nginx.org/download/nginx-1.4.1.tar.gz

# tar -zxvf nginx-1.4.1.tar.gz

# cd nginx-1.4.1

# ./configure --prefix=/usr/local/nginx --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx.lock  --user=nginx --group=nginx --with-http_ssl_module --with-http_dav_module --with-http_flv_module --with-http_realip_module --with-http_gzip_static_module --with-http_stub_status_module --with-mail --with-mail_ssl_module --with-debug --http-client-body-temp-path=/var/tmp/nginx/client --http-proxy-temp-path=/var/tmp/nginx/proxy --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi

# make && make install

创建缓存目录:

# mkdir -p /var/tmp/nginx/client

3.创建启动脚本

# vi /etc/init.d/nginx

-------------------------------

#!/bin/sh

#

# nginx - this script starts and stops the nginx daemin

#

# chkconfig:   - 85 15

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

#               proxy and IMAP/POP3 proxy server

# processname: nginx

# config:      /usr/local/nginx/conf/nginx.conf

# pidfile:     /usr/local/nginx/logs/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/local/nginx/sbin/nginx"

prog=$(basename $nginx)

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

lockfile=/var/lock/subsys/nginx

start() {

   [ -x $nginx ] || exit 5

   [ -f $NGINX_CONF_FILE ] || exit 6

   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

   sleep 1

   return $retval

}

restart() {

   configtest || return $?

   stop

   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

---------------------------

# chmod 755 /etc/init.d/nginx

# chkconfig --add nginx

# service nginx start

# chkconfig nginx on

4.访问测试页面:

http://localhost

五.安装php模块

1.处理依赖包

暂无..

2.安装PHP

# wget http://cn2.php.net/distributions/php-5.4.13.tar.bz2

# tar -jxvf php-5.4.13.tar.bz2

# cd php-5.4.13

此处编译安装了我们项目经常用到的PHP模块,如有其它需要可以自定义添加.

#./configure --prefix=/usr/local/php5 --enable-fastcgi --enable-fpm --with-libxml-dir=/usr/local/lib --with-zlib-dir=/usr/local/lib --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-gd --enable-soap --enable-sockets  --enable-xml --enable-mbstring --with-png-dir=/usr/local --with-jpeg-dir=/usr/local --with-curl=/usr/lib --with-freetype-dir=/usr/include/freetype2/freetype/ --enable-bcmath --enable-zip --enable-maintainer-zts

在“./configure”编译选项中,“--enable-fastcgi”是启用对PHP的FastCGI支持,“--enable-fpm”是激活对FastCGI模式的fpm支持。

# make

# make install

3.安装结束后:

添加php配置文件,需要CP 一个源码里面的php.ini-development或php.ini-production  

到/usr/local/php/lib  为 php.ini

# cd ~/php-5.4.13

# cp php.ini-development /usr/local/php5/lib/php.ini

4.PHP配置: (修改php.ini,默认目录/usr/local/php5/lib/php.ini)

# vi /usr/local/php5/lib/php.ini

-------------------------

expose_php = Off

display_errors = Off

date.timezone =PRC

log_errors = On

error_log = /usr/local/nginx/logs/php_error.log

-------------------------

5.配置启动FastCGI进程:

# cd /usr/local/php5/etc/

# cp php-fpm.conf.default php-fpm.conf

优化配置:

# vi php-fpm.conf

内存小于4G服务器(值可逐级递减):

修改如下参数:

--------------

pm=dynamic

pm.max_children=40

pm.start_servers=10

pm.min_spare_servers=10

pm.max_spare_servers=40

--------------

内存大于4G服务器(值可逐级递增):

修改如下参数:

--------------

pm=static

pm.max_children=100

--------------

修改php-fpm属主

------------------

user = www

group = www

------------------

注:这里的user和group名建议与/usr/local/nginx/conf/nginx.conf内的属主与属组保持一致

-----------------------

user www www;

-----------------------

最后在nginx/html目录下将具体虚拟目录的属主属组也改成www与www,保证PHP程序对该目录有读写权限.

注:LNMP与LAMP的PHP执行区别:

LAMP下PHP相当于APACHE下的一个模块,所有执行权限都由APACHE统一管理,用户访问WEB页面相当于调用系统创建的APACHE属主和属组的权限进行PHP页面操作,最后将PHP执行结果返回给用户.

LNMP下PHP相当于用户执行WEB浏览首先会去执行NIGNX反向代理,该代理会将访问请求转发给本地PHP服务进程php-fpm(端口号默认9000),然后利用该进程执行WEB下的PHP文件,最后将PHP执行结果返回给用户,因为其属主属组都为www,所以对属主属组为www的目录都有读写权限,当然前提你的目录u=r+w+x

当PHP有内建shell语句时,也会走相应命令或脚本的用户权限.这样就保证开发人员在执行PHP语句时能对项目下的文件具有读写权限,避免运维人员二次手动对需要读写的子目录设置777权限,提高项目的安全性.

通过打印phpinfo()内建函数也能看到两者的区别:

LAMP:1

LNMP: 2

6.启动服务:

# /usr/local/php5/sbin/php-fpm

# ps -ef|grep php-fpm

----------------------------

root      3829     1  0 01:33 ?        00:00:00 php-fpm: master process  

(/usr/local/php5/etc/php-fpm.conf)

nobody    3830  3829  0 01:33 ?        00:00:00 php-fpm: pool www          

nobody    3831  3829  0 01:33 ?        00:00:00 php-fpm: pool www          

root      3836  1908  0 01:36 pts/0    00:00:00 grep php-fpm

----------------------------

重启fpm:

# pkill php-fpm

# /usr/local/php5/sbin/php-fpm

加入开机启动:

# echo "/usr/local/php5/sbin/php-fpm" >> /etc/rc.local

7.配置nginx支持php:

由于Nginx本身不会对PHP进行解析,因此要实现Nginx对PHP的支持,其实是将对PHP页面的请求交给fastCGI进程监听的IP地址及端口。如果把php-fpm当做动态应用服务器,那么Nginx其实就是一个反向代理服务器。

Nginx通过反向代理功能实现对PHP的解析,这就是Nginx实现PHP动态解析的原理。

这里假定Nginx的安装目录为/usr/local,则Nginx配置文件的路径为/usr/local/nginx/conf/nginx.conf。下面是在Nginx下支持PHP解析的一个虚拟主机配置实例。

(版本一)

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

添加到http层级:

----------------

      server {

      server_name "www.abc.com";

     location / {

     index index.html index.php;

     root /usr/local/nginx/html/www.abc.com;

     }

     location ~ \.php$ {

           root           html;

           fastcgi_pass   127.0.0.1:9000;

           fastcgi_index  index.php;

           fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html/www.abc.com$fastcgi_script_name;

           include        fastcgi_params;

     }

    }

------------------

通过location指令,将所有以php为后缀的文件都交给127.0.0.1:9000来处理,而这里的IP地址和端口就是FastCGI进程监听的IP地址和端口。

fastcgi_param指令指定放置PHP动态程序的主目录,也就是$fastcgi_script_name前面指定的路径,这里是/usr/local/nginx/html/www.abc.com目录,建议将这个目录与Nginx虚拟主机指定的根目录保持一致.

fastcgi_params文件是FastCGI进程的一个参数配置文件,在安装Nginx后,会默认生成一个这样的文件,这里通过include指令将FastCGI参数配置文件包含了进来。


(版本二)推荐

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

添加到http层级:

-----------------------------

# 添加vhost配置文件

include "/usr/local/nginx/conf/vhosts/*.conf";

------------------------------

# mkdir /usr/local/nginx/conf/vhost

# vi /usr/local/nginx/conf/vhosts/default.conf

----------------------------------

server {

     listen 80;

     server_name "www.abc.com";

     index index.html index.php;

     root /usr/local/nginx/html/www.abc.com;

     location ~ .*\.(php|php5)?$ {

          fastcgi_pass    127.0.0.1:9000;

          fastcgi_index   index.php;

          include         fastcgi.conf;

    }

}

--------------------------------

注:

~ .*为不区分大小写匹配

\.转义为.

(php|php5)?$ 结尾匹配一个或零个php或者php5


8.测试NGINX是否加载PHP

# vi  /usr/local/nginx/html/www.abc.com/info.php

---------------

<?php

echo phpinfo();

?>

---------------

重启nginx服务

# service nginx restart

检查80端口是否打开

# lsof -i:80

9.浏览器输入(注意修改本机HOST文件)

http://www.abc.com/info.php

显示有如下测试页面内容,PHP在GNINX下加载成功

23

在配置完成Nginx+FastCGI之后,为了保证Nginx下PHP环境的高速稳定运行,需要添加一些FastCGI优化缓存指令。

推荐在项目稳定后可添加如下代码。

项目页面测试阶段或经常改动页面可能造成新添加的功能无法实现,不推荐使用。

下面给出一个优化实例,将下面代码添加到Nginx主配置文件中的HTTP层级。

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

添加到http层级:

--------------------------

fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;    

fastcgi_connect_timeout 300;    

fastcgi_send_timeout 300;    

fastcgi_read_timeout 300;    

fastcgi_buffer_size 64k;    

fastcgi_buffers 4 64k;    

fastcgi_busy_buffers_size 128k;    

fastcgi_temp_file_write_size 128k;    

fastcgi_cache TEST;    

fastcgi_cache_valid 200 302 1h;    

fastcgi_cache_valid 301 1d;    

fastcgi_cache_valid any 1m;  

-----------------------  

至此,MYSQL+Nginx+PHP(Fastcgi)大功告成。

----------备 注(大神可无视)-------------

什么是CGI

CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你

的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上

。

CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量

。如php,perl,tcl等

什么是FastCGI

FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后

,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模

式)。它还支持分布式的运算, 即 FastCGI 程序可以在网站服务器以外的主机上

执行并且接受来自其它网站服务器来的请求。

FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释

器进程保持在内存中并因此获得较高的性能。众所周知,CGI解释器的反复加载是

CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器

调度,则可以提供良好的性能、伸缩性、Fail- Over特性等等。

FastCGI与CGI特点

1、如CGI,FastCGI也具有语言无关性.

2、如CGI, FastCGI在进程中的应用程序,独立于核心web服务器运行,提供了

一个比API更安全的环境。(APIs把应用程序的代码与核心的web服务器链接在一起

,这意味着在一个错误的API的应用程序可能会损坏其他应用程序或核心服务器;

恶意的API的应用程序代码甚至可以窃取另一个应用程序或核心服务器的密钥。)

3、FastCGI技术目前支持语言有:C/C++、Java、Perl、Tcl、Python、

SmallTalk、Ruby等。相关模块在Apache, ISS, Lighttpd等流行的服务器上也是

可用的。

4、如CGI,FastCGI的不依赖于任何Web服务器的内部架构,因此即使服务器

技术的变化, FastCGI依然稳定不变。

FastCGI的工作原理

1、Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module)

2、FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-

cgi)并等待来自Web Server的连接。

3、当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个

CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi

。

4、FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web

Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着

等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI

模式中,php-cgi在此便退出了。

在上述情况中,你可以想象CGI通常有多慢。每一个Web请求PHP都必须重新解

析php.ini、重新载入全部扩展并重初始化全部数据结构。使用FastCGI,所有这

些都只在进程启动时发生一次。一个额外的好处是,持续数据库连接(Persistent

database connection)可以工作。

FastCGI的不足

因为是多进程,所以比CGI多线程消耗更多的服务器内存,PHP-CGI解释器每

进程消耗7至25兆内存,将这个数字乘以50或100就是很大的内存数。

Nginx 1.4.0+php-5.4.13(FastCGI)服务器在3万并发连接下,开启的10个

Nginx进程消耗150M内存(15M*10=150M),开启的64个php-cgi进程消耗1280M内

存(20M*64=1280M),加上系统自身消耗的内存,总共消耗不到2GB内存。如果服

务器内存较小,完全可以只开启25个php-cgi进程,这样php-cgi消耗的总内存数

才500M。

补充:编译详细参数如下:

#Nginx安装路径。如果没有指定,默认为 /usr/local/nginx。

--prefix=PATH      

#Nginx可执行文件安装路径。只能安装时指定,如果没有指定,默认为PATH/sbin/nginx。

--sbin-path=PATH

#在没有给定-c选项下默认的nginx.conf的路径。如果没有指定,默认为

PATH/conf/nginx.conf。

--conf-path=PATH

#在nginx.conf中没有指定pid指令的情况下,默认的nginx.pid的路径。如果没有指定,默认为

PATH/logs/nginx.pid。

--pid-path=PATH

#nginx.lock文件的路径。

--lock-path=PATH

#在nginx.conf中没有指定error_log指令的情况下,默认的错误日志的路径。如果没有指定,默认为

PATH/logs/error.log。

--error-log-path=PATH

#在nginx.conf中没有指定access_log指令的情况下,默认的访问日志的路径。如果没有指定,默认为

PATH/logs/access.log。

--http-log-path=PATH

#在nginx.conf中没有指定user指令的情况下,默认的nginx使用的用户。如果没有指定,默认为 nobody。

--user=USER

#在nginx.conf中没有指定user指令的情况下,默认的nginx使用的组。如果没有指定,默

认为 nobody。

--group=GROUP

#指定编译的目录

--builddir=DIR

#启用 rtsig 模块

--with-rtsig_module

#允许或不允许开启SELECT模式,如果configure没有找到合适的模式,比如,kqueue(sun os)、epoll(linux

kenel 2.6+)、rtsig(实时信号)

--with-select_module(--without-select_module)

#允许或不允许开启POLL模式,如果没有合适的,则开启该模式。

--with-poll_module(--without-poll_module)

#开启HTTP SSL模块,使NGINX可以支持HTTPS请求。这个模块需要已经安装了OPENSSL,在

DEBIAN上是libssl-dev

--with-http_ssl_module

--with-http_realip_module #启用 ngx_http_realip_module

--with-http_addition_module #启用 ngx_http_addition_module

--with-http_sub_module #启用 ngx_http_sub_module

--with-http_dav_module #启用 ngx_http_dav_module

--with-http_flv_module #启用 ngx_http_flv_module

--with-http_stub_status_module #启用 "server status" 页

--without-http_charset_module #禁用 ngx_http_charset_module

--without-http_gzip_module #禁用 ngx_http_gzip_module. 如果启用,需要 zlib 。

--without-http_ssi_module #禁用 ngx_http_ssi_module

--without-http_userid_module #禁用 ngx_http_userid_module

--without-http_access_module #禁用 ngx_http_access_module

--without-http_auth_basic_module #禁用 ngx_http_auth_basic_module

--without-http_autoindex_module #禁用 ngx_http_autoindex_module

--without-http_geo_module #禁用 ngx_http_geo_module

--without-http_map_module #禁用 ngx_http_map_module

--without-http_referer_module #禁用 ngx_http_referer_module

--without-http_rewrite_module #禁用 ngx_http_rewrite_module. 如果启用需要 PCRE 。

--without-http_proxy_module #禁用 ngx_http_proxy_module

--without-http_fastcgi_module #禁用 ngx_http_fastcgi_module

--without-http_memcached_module #禁用 ngx_http_memcached_module

--without-http_limit_zone_module #禁用 ngx_http_limit_zone_module

--without-http_empty_gif_module #禁用 ngx_http_empty_gif_module

--without-http_browser_module #禁用 ngx_http_browser_module

--without-http_upstream_ip_hash_module #禁用ngx_http_upstream_ip_hash_module

--with-http_perl_module - #启用 ngx_http_perl_module

--with-perl_modules_path=PATH #指定 perl 模块的路径

--with-perl=PATH #指定 perl 执行文件的路径

--http-log-path=PATH #Set path to the http access log

--http-client-body-temp-path=PATH #Set path to the http client request body

temporary files

--http-proxy-temp-path=PATH #Set path to the http proxy temporary files

--http-fastcgi-temp-path=PATH #Set path to the http fastcgi temporary files

--without-http #禁用 HTTP server

--with-mail #启用 IMAP4/POP3/SMTP 代理模块

--with-mail_ssl_module #启用 ngx_mail_ssl_module

--with-cc=PATH #指定 C 编译器的路径

--with-cpp=PATH #指定 C 预处理器的路径

--with-cc-opt=OPTIONS #

--with-ld-opt=OPTIONS #Additional parameters passed to the linker. With the use

of the system library PCRE in FreeBSD, it is necessary to indicate --with-ld-opt="-L

/usr/local/lib".

--with-cpu-opt=CPU #为特定的 CPU 编译,有效的值包括:pentium, pentiumpro,

pentium3, pentium4, athlon, opteron, amd64, sparc32, sparc64, ppc64

--without-pcre #禁止 PCRE 库的使用。同时也会禁止 HTTP rewrite 模块。在

"location" 配置指令中的正则表达式也需要 PCRE 。

--with-pcre=DIR #指定 PCRE 库的源代码的路径。

--with-pcre-opt=OPTIONS #设置PCRE的额外编译选项。

--with-md5=DIR #使用MD5汇编源码。

--with-md5-opt=OPTIONS #Set additional options for md5 building.

--with-md5-asm #Use md5 assembler sources.

--with-sha1=DIR #Set path to sha1 library sources.

--with-sha1-opt=OPTIONS #Set additional options for sha1 building.

--with-sha1-asm #Use sha1 assembler sources.

--with-zlib=DIR #Set path to zlib library sources.

--with-zlib-opt=OPTIONS #Set additional options for zlib building.

--with-zlib-asm=CPU #Use zlib assembler sources optimized for specified CPU, valid values are:

pentium, pentiumpro

--with-openssl=DIR #Set path to OpenSSL library sources

--with-openssl-opt=OPTIONS #Set additional options for OpenSSL building

--with-debug #启用调试日志

--add-module=PATH #Add in a third-party module found in directory PATH

在不同版本间,选项可能会有些许变化,请总是使用 ./configure --help 命令来检查一下当前的选项列表。

wordpress vhosts/default.conf范例

-----------------------------

server {

    listen 80;

    server_name "www.example.com";

    index index.html index.htm index.php;

    root /usr/local/nginx/html/www.example.com;

    location / {

       try_files $uri $uri/ /index.php?$args;

    }    

     location ~ .*\.(php|php5)?$ {

         fastcgi_pass   127.0.0.1:9000;

         fastcgi_index  index.php;

         include        fastcgi.conf;

      }

    if (!-e $request_filename) {

       rewrite ^/[_0-9a-zA-Z-]+(/wp-.*) $1 last;

       rewrite ^/[_0-9a-zA-Z-]+.*(/wp-admin/.*\.php)$ $1 last;

       rewrite ^/[_0-9a-zA-Z-]+(/.*\.php)$ $1 last;

    }

   }

CentOS 8 编译安装 LNMP 阅读详情

相关推荐

Centos7源码编译安装LNMP环境

源码编译安装LNMP环境 L===Linux N====Nginx M====MysSQL P====php 安装包 mysql-boost https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.27.tar.gz php7.2 https://www.php.net/distributions/php-7....

DoloresOOO的博客 1220

centos7 系统下搭建 lnmp 环境

目录 目录 概述 准备工作 开始编译安装 1. 安装 Nginx 2. 安装 MySQL 3. 安装 PHP 4. 整合 LNMP 后记 概述 在之前的工作中,搭建过一次 zabbix 监控平台,应用的就是 LNMP 环境,但都是用的 rpm 包直接安装的。 由于是在阿里云封闭网络环境中搭建的,要想二次利用 LNMP 架构就得重新配置,所以做了本次操作,全部...

nimo97 5932

centos7下搭建lnmp环境包含yum源直接安装和源码编译安装,以及php5.3和php7.6版本

LNMP环境的搭建一、yum源直接搭建1.安装epel源2.安装mariadb初始化mariadb3.安装php模块配置php-fpm3.安装nginx配置nginx4.测试环境是否搭建成功二、源码版LNMP环境的搭建1.安装mysql下载mysql5.7二进制包安装mysql所需要的库解压并改名,添加环境变量创建mysql配置文件创建mysql用户,配置文件所用到的目录,并初始化配置启动脚本启动...

TangXu@的博客 1277

【无标题】-一次失败的尝试

yum install libtalloc-devel -y ./configure

Edidaughter的博客 920

CentOS 7 编译安装LNMP环境

CentOS 7 编译安装LNMP环境1、前言2、准备安装工具3、安装Nginx4、安装php5、安装MySQL 1、前言 本文适合于已经对Linux操作系统具有基本操作经验,并且能够在Linux或Windows上通过一键搭建工具或者yum命令行进行环境搭建的读者,阅读本文需具有一定的专业知识,如果初学者的的基础比较厉害的伙伴也可以尝试一下。 本文所描述的是在标准的CentOS 7.6 64位操作...

u014790564的博客 1398

HFSS学习记录——0. HFSS软件安装(ANSYS Electromagnetics Suite 2023 R1)

HFSS 2023 R1安装步骤

plmxu34的博客 15万+

kqueue用法简介

http://www.cnblogs.com/luminocean/p/5631336.html 1.什么是kqueue和IO复用 kueue是在UNIX上比较高效的IO复用技术。 所谓的IO复用,就是同时等待多个文件描述符就绪,以系统调用的形式提供。如果所有文件描述符都没有就绪的话,该系统调用阻塞,否则调用返回,允许用户进行后续的操作。 常见的IO复用技术有select, poll,

zdy0_2004的专栏 1万+

Docker容器化部署Ceph集群:从零搭建高可用分布式存储

本文详细介绍了如何使用Docker容器化部署Ceph集群,从零搭建高可用分布式存储系统。通过环境一致性、快速扩容和资源隔离等优势,Docker显著提升了Ceph集群的部署效率和运维便捷性。文章涵盖硬件规划、镜像选择、单节点部署、多节点扩展及性能调优等实战内容,帮助开发者快速掌握分布式存储系统的容器化部署技巧。

weixin_29081101的博客 422

linux 惊群问题

1. 结论 对于惊群的资料,网上特别多,良莠不齐,也不全面。看的时候,有的资料说,惊群已经解决了,有的资料说,惊群还没解决。。 哪个才是对的?!  一怒之下,在研究各种公开资料的基础上,特意查对了linux源码,总结了此文。希望对有需要的人略有帮助,希望各位大神轻拍,如有错漏,不吝指教,感激不尽。(814329735@qq.com) 先说结论吧: 1. Linux多进程accept系统调

囧囧有神的专栏 1万+

信号完整性分析学习--16--传输线效应

传输线效应 说到传输线效应,大多数人都会想到一个经验法则,那就是: “当互连线的长度大于1/6倍的信号上升时间的空间延伸时,互连线就体现出传输线效应。” 上升时间越小越容易体现传输线效应。 由此可见,同一根互连线,它是否体现传输线效应,要看它要传输什么样的信号。下图所示,一根延时为15ps的互连线,当它传输上升时间为60ps的信号时就会体现传输线效应;当它传输上升时间为180ps的信号时就不体现传输线效应。

qq_29476769的博客 7281

要配置西门子G120XA变频器实现**端子启停**和**Modbus RTU(485)频率给定

如有问题,可通过STARTER软件在线诊断Modbus通讯状态。要配置西门子G120AX变频器实现。

微:13763355074 4849

centos7编译安装LNMP架构

LNMP架构是一种常见的网站服务器架构,由Linux操作系统、Nginx Web服务器、MySQL数据库和PHP后端脚本语言组成。1 用户请求:用户通过浏览器输入网址,请求发送到Nginx Web服务器。2 Nginx处理:Nginx接收请求后,如果是静态资源(如HTML、图片、CSS文件),直接返回给用户;如果是动态请求(如PHP页面),则通过FastCGI接口转发给PHP-FPM。3 PHP处理:PHP-FPM接收请求后,解析PHP代码。

bcz1517的博客 1703

运维与软件实施课表

运维与软件实施课表 课程 章节编号 章节 课程地址 软件及操作系统基础 ch01 软件及操作系统基础01 实施、运维工程师基本技能:https://blog.csdn.net/qq_28189423/article/details/82700539 老毛桃制作winPE镜像:https://blog.csdn.net/qq_2818942...

Mr.O~的博客 1万+

CentOS 7.6编译安装LNMP

一、前期准备 1.服务器以最小化方式安装CentOS 7.6 2.配置本地源及安装epel源 #cd /etc/yum.repos.d #vi CentOS-Base.repo 增加enable=1 #yum install wget #wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7...

乐渔的博客 2063

Python速成指南:进阶篇

欢迎来到Python速成指南的进阶篇。如果你已经完成了基础篇的学习(Python速成指南:从零开始的编程之旅-优快云博客),并且对Python的基本概念有了扎实的理解,那么你已经为进入更深层次的Python世界做好了准备。在这个进阶篇中,我们将深入探讨Python的高级特性,并着重于如何在实际工作中应用这些知识。深入理解Python的高级特性掌握在实际项目中常用的技巧和最佳实践提高代码质量和性能了解Python在各个领域的专业应用让我们开始这段激动人心的Python进阶之旅吧!

weixin_44067082的博客 2337

74HC165级联踩坑实录:STM32读取32路开关状态,时序调试与常见问题排查

本文详细介绍了74HC165级联在STM32读取32路开关状态时的时序调试与常见问题排查。从硬件设计的PCB布局优化、电源噪声控制,到软件时序的精确调校和数据采集策略,提供了完整的解决方案。通过逻辑分析仪和示波器的高效使用,解决了信号延迟和干扰问题,最终实现了稳定可靠的32路信号读取。

weixin_34046298的博客 313

CentOS 6.10编译安装LNMP

一、前期准备 1.服务器以最小化方式安装CentOS 6.9或CentOS 6.10 2.配置本地源及安装epel源 3.#yum install kernel kernel-devel,再重启服务器。 //升级内核 4.#yum update //系统升级。若为CentOS6.9,则升级后为CentOS 6.10 5.编译安装gcc-4.8.5, // 请参考https://blog...

乐渔的博客 929

SAP CRP能力计划详细说明操作及相关配置

2、求助朋友同事的希望破灭后,网上找了资料发现在百度搜索的资料基本都是没有说明白什么才产能计划,都没有详细的操作说明,然后用google去搜索了一些相关的文章,好像也没有详细的文章。然后也去SAP的官网搜索了相关的文章,都是文字性的表述,对系统的配置都没有很大的帮助,很久之前有记得在隐身人的博客中有提到CRP的能力计划的文章,然后试着去找了一下相关的文章。5、首先产能排产肯定涉及的就是是能力的问题,能力第一个能想到的就是工作中心中的能力页签,在流程制造中也叫资源,其实都是一个东西。

我小时候很黑的博客 4520

CentOS7+LNMP 安装Zabbix3.0 安装笔记

从网上看过N篇教程,小白编译各种出错,无奈选择LNMP一键安装包,解决所有问题。感谢lnmp.org的lamp一体包,现已成功安装,做个笔记,以便后查。   1、配置防火墙      [root~]# firewall-cmd --permanent --zone=public --add-service=http    #开启http端口      [root~]# firewall-c

asionliang的博客 4904

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

centos6.5编译安装LNMP环境

安装编译工具及库文件yum install -y apr* autoconf automake bison bzip2 bzip2* cloog-ppl compat* cpp curl curl-devel fontconfig fontconfig-devel freetype freetype* freetype-devel gcc gcc-c++ gtk+-devel gd gettext

zsl10的专栏 1785

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

VMware下CentOS7.6使用宝塔面板,来搭建lnmp服务器环境!

VMware下CentOS7.6使用宝塔面板,来搭建lnmp服务器环境! 服务器环境的搭建,可以使用Linux宝塔面板(链接地址:https://www.bt.cn/download/linux.html) 在VMware下安装centos系统,不会的可以参考我之前的文章:使用阿里云CentOS7.6镜像,在VMware下安装linux系统! 用xshell、或putty远程连接VM...

一亩地的专栏 3008

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

CentOS搭建LNMP

CentOS搭建LNMP 前言: 我这里会讲解lamp架构的安装到配置,以及安装过程中的一些报错点 提示:这里的安装包括源码安装和yum安装 什么是lnmp? nginx服务也通常和mysql、php一起使用,而这些通常都在linux系统下去运行,大家听说过lamp那lnmp概念也一样,就是把httpd服务替换成了nginx而已 lamp = linux + nginx + mysql + php 文章目录CentOS搭建LNMP一、源码编译安装部署lnmp★安装之前的准备工作★1.安装nginx2.安装m

feili12138的博客 2573

如何编译安装LNMP环境

LNMP 是 Linux、Nginx、MySQL 和 PHP 的组合,是一种流行的 Web 服务环境。

Lenn Louis' Scribe 1153

CentOS7.9 编译安装LNMP

✅ 版本选择:Nginx-1.24.0 + MySQL-5.7.44 + PHP-8.1.30(稳定、安全、主流)⚠️ MySQL 5.7 不再支持从源码编译(官方已移除 configure),推荐使用。✅ 适用环境:CentOS 7.9 x86_64(最小化安装)✅ 全程编译安装,不使用 yum(除基础依赖外)✅ 包含开机自启、防火墙配置、安全加固、性能优化。看到 PHPinfo 页面即成功!⚠️ 重启后生效,建议重启系统。脚本加固(可手动模拟)咪鼠M-AI 上线!

老韩的Linux云计算架构师进阶之路 1041
上一篇: CentOS6.3下GitLab+Nginx(SSL)+MySQL+Ruby安装部署
下一篇: Centos6.5本地网络没有自动连接
yaca
博客等级 码龄25年 1粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值