当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪CentOS 6 编译安装Nginx+PHP+Mysql 的教程      CentOS 6 编译安装Nginx+PHP+Mysql,有需要的朋友不妨参考下。 [1].安装Nginx 1,添加一个不能登录且没有主目录的用户:   代码如下: # useradd www -M -s /sbin/nologin     2,必要的组件   代码如下: # wg.........
    ▪从源码角度理解nginx中last与break的区别      在nginx 配置文件中经常会用到last与break指令。两者之间的区别在哪里呢? 以nginx-1.0.14的源码为例: /src/http/modules/ngx_http_rewrite_module.c (366-389行)   代码如下: if (cf->args->nelts == 4) { if (ng.........
    ▪Centos 6.2 源码安装Nginx0.8.54的方法      Centos 6.2 源码安装Nginx0.8.54的方法,供大家学习参考。 一. 准备环境 1.安装gcc yum install gcc gcc-c++ 2.安装pcre 为了确保能在 Nginx 中使用正则表达式进行更灵活的配置,安装之前需要确定系统是.........

[1]CentOS 6 编译安装Nginx+PHP+Mysql 的教程
    来源: 互联网  发布时间: 2013-12-24

CentOS 6 编译安装Nginx+PHP+Mysql,有需要的朋友不妨参考下。

[1].安装Nginx
1,添加一个不能登录且没有主目录的用户:
 

代码如下:
# useradd www -M -s /sbin/nologin
 

 
2,必要的组件
 

代码如下:
# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.13.zip
# unzip pcre-8.13.zip
# cd pcre-8.13
# ./configure
# make && make install
 

 
3,编译nginx并安装
 

代码如下:
# tar -zxvf nginx-1.1.2.tar.gz
# cd nginx-1.1.2
# ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module
# make && make install
 

 
[2].安装PHP
1,安装必要的组件
 

代码如下:
# yum -y install libjpeg-devel libpng-devel
# wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
# tar -zxvf libmcrypt-2.5.7.tar.gz
# cd libmcrypt-2.5.7
# ./configure
# make && make install
 

 
==64位系统==
 

代码如下:
# ln -s /usr/lib64/mysql/ /usr/lib/mysql
 

==64位系统==
 
2,编译php并安装
 

代码如下:
# cd php-5.3.8
# ./configure --prefix=/usr/local/php --with-iconv --with-zlib --enable-xml --disable-rpath --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets  --with-xmlrpc --enable-zip --enable-soap --without-pear --with-mysql --with-mysqli --enable-sqlite-utf8 --with-pdo-mysql --enable-ftp --with-jpeg-dir --with-freetype-dir --with-png-dir --enable-fpm --with-fpm-user=www --with-fpm-group=www
# make && make install
 

 
3,拷贝和修改php配置文件
 

代码如下:
# cp php.ini-production /usr/local/php/lib/php.ini 或是/usr/local/lib/php.ini
# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
# /usr/local/php/bin/php --ini   //测试ini文件是否加载
 

 
修改php.ini
 

代码如下:
[PHP]
safe_mode = On
register_globals = Off
magic_quotes_gpc = Off
allow_url_fopen = Off
allow_url_include = Off
expose_php=Off
disable_functions = shell_exec,system,exec,passthru,show_source,curl_exec,curl_multi_exec,get_cfg_var
[Date]
date.timezone = “Asia/Shanghai”
 

 
修改php-fpm.conf
 

代码如下:
[global]
pid = run/php-fpm.pid
error_log = log/php-fpm.log
log_level = notice
emergency_restart_threshold = 0
emergency_restart_interval = 0
[www]
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
 

 
4,添加服务启动脚本
 

代码如下:
# cp nginx /etc/init.d/nginx
# cp php-fpm /etc/init.d/php-fpm
# chmod 755 /etc/init.d/nginx
# chmod 755 /etc/init.d/php-fpm
# chkconfig --add nginx
# chkconfig --add php-fpm
# chkconfig nginx on
# chkconfig php-fpm on
 

 
[3].安装Mysql
 
3.1, 创建mysql安装目录
 

代码如下:
# mkdir -p /usr/local/mysql/
 

 
3.2, 创建数据存放目录
 

代码如下:
# mkdir -p /data/mysql/
 

 
3.3, 创建用户和用户组与赋予数据存放目录权限
 

代码如下:
# useradd mysql -M -s /sbin/nologin
# chown mysql.mysql -R /data/mysql/
 

 
3.4, 安装必要的组件
 

代码如下:
# yum -y install cmake
# yum -y install ncurses-devel
 

 
3.5, 编译安装Mysql
 

代码如下:
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/data/mysql -DMYSQL_USER=mysql -DMYSQL_TCP_PORT=3306
 

# make && make install
 
3.6, 初始化数据库
 

代码如下:
# cd /usr/local/mysql
# scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/
 

 
3.7, 配置环境
 

代码如下:
# cp support-files/my-medium.cnf /etc/my.cnf
# cp support-files/mysql.server /etc/init.d/mysql
# chmod 755 /etc/init.d/mysql
# chkconfig mysql on
# export PATH=/usr/local/mysql/bin:$PATH
 

 
3.8, 启动并设置初始密码
 

代码如下:
# /etc/init.d/mysql start
# mysqladmin -uroot password '123123'
 

 
进行再修改密码的语句
 

代码如下:
1: UPDATE mysql.user SET Password = PASSWORD(‘newpwd’) WHERE User = ‘root’;(生新设置密码)
2: flush privileges;(刷新权限)

    
[2]从源码角度理解nginx中last与break的区别
    来源: 互联网  发布时间: 2013-12-24

在nginx 配置文件中经常会用到last与break指令。两者之间的区别在哪里呢?

以nginx-1.0.14的源码为例:
/src/http/modules/ngx_http_rewrite_module.c (366-389行)
 

代码如下:

if (cf->args->nelts == 4) {
if (ngx_strcmp(value[3].data, "last") == 0) {
last = 1;

} else if (ngx_strcmp(value[3].data, "break") == 0) {
regex->break_cycle = 1;
last = 1;

} else if (ngx_strcmp(value[3].data, "redirect") == 0) {
regex->status = NGX_HTTP_MOVED_TEMPORARILY;
regex->redirect = 1;
last = 1;

} else if (ngx_strcmp(value[3].data, "permanent") == 0) {
regex->status = NGX_HTTP_MOVED_PERMANENTLY;
regex->redirect = 1;
last = 1;

} else {
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
"invalid parameter \"%V\"", &value[3]);
return NGX_CONF_ERROR;
}
}

break 与last的区别在于多了一行,regex->break_cycle = 1; 那么我们来看看这行语句具体有何含义。
break_cycle赋值后会被ngx_http_script_regex_code_t *code 调用。

具体在/src/http/ngx_http_script.c (1007行),代码段如下:
 

代码如下:

if (code->break_cycle) {
r->valid_location = 0;
r->uri_changed = 0;

} else {
r->uri_changed = 1;
}

r->valid_location = 0; 表示break指令不会继续作用于之后的location域。
r->uri_changed = 0;表示break指令停止继续匹配。而last指令会继续匹配下去。
继续看如下代码
/src/http/ngx_http_core_module.c(1038行)
 

代码如下:

ngx_http_core_post_rewrite_phase(ngx_http_request_t *r,
ngx_http_phase_handler_t *ph)
{
ngx_http_core_srv_conf_t *cscf;

ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
"post rewrite phase: %ui", r->phase_handler);

if (!r->uri_changed) {
r->phase_handler++;
return NGX_AGAIN;
}

r->uri_changed = 0; 内核会跳出处理下一个请求。
last指令 r->uri_changed = 1; 会继续不停的匹配。

总结:使用break指令后,不会继续作用于随后的location域,不会循环继续匹配。last指令恰恰相反。
从效率上来说尽量使用break指令。


    
[3]Centos 6.2 源码安装Nginx0.8.54的方法
    来源: 互联网  发布时间: 2013-12-24

Centos 6.2 源码安装Nginx0.8.54的方法,供大家学习参考。

一. 准备环境

1.安装gcc
yum install gcc gcc-c++

2.安装pcre
为了确保能在 Nginx 中使用正则表达式进行更灵活的配置,安装之前需要确定系统是否安装有 PCRE(Perl Compatible Regular Expressions)包。
下载pcre-8.20.tar.gz,地址是:http://sourceforge.net/projects/pcre/files/pcre/ ,上传至/usr/local,安装目录:/usr/local/pcre
 

代码如下:
# mkdir -p pcre
# tar zxvf pcre-8.20.tar.gz
# cd pcre-8.20
# ./configure --prefix=/usr/local/pcre
# make
# make install

二. 安装Nginx

下载nginx-0.8.54.tar.gz,地址是:http://nginx.org/en/download.html ,上传至/usr/local,安装目录:/usr/local
2.1.安装
 

代码如下:
# tar zxvf nginx-0.8.54.tar.gz
#mv nginx-0.8.54 nginx
# cd nginx-0.8.54
# ./configure --sbin-path=/usr/local/nginx --conf-path=/usr/local/nginx --pid-path=/usr/local/nginx --with-http_ssl_module --with-pcre=/usr/local/pcre-8.20
# make
# make install

2.2.检查nginx是否安装成功
#cd  /usr/local/nginx/sbin
#./nginx -t
结果显示:
   nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
   nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

2.3.启动nginx
#cd  /usr/local/nginx/sbin
#./nginx

2.4.检查是否启动成功
客户端ie 浏览器中输入 http://ip(Linux)

其中参数:
--with-pcre=/usr/local/pcre-8.20 指的是pcre-8.20 的源码路径,并不是安装路径。

安装成功后 /usr/local/webserver/nginx 目录下有四个子目录分别是:conf、html、logs、sbin 。其中 Nginx 的配置文件存放于 conf/nginx.conf,Nginx 只有一个程序文件位于 sbin 目录下的 nginx 文件。确保系统的 80 端口没被其他程序占用,运行 sbin/nginx 命令来启动 Nginx,打开浏览器访问此机器的 IP(地址栏输入:127.0.0.1),如果浏览器出现 Welcome to nginx! 则表示 Nginx 已经安装并运行成功。
 
三. 安装过程中出现的问题

1.pcre :/configure: error: no acceptable C compiler found in $PATH  See `config.log' for more details
原因是没装gcc
解决办法:yum install gcc

2../configure :checking for C++ compiler default output file name... configure: error: C++ compiler cannot create executables
See `config.log' for more details.
原因是由于c++编译器的相关package没有安装
解决办法:yum install gcc-c++

3.pcre:make时报错:[pcrecpp.lo] Error 1
原因是由于c++编译器的相关package没有安装
解决办法:yum install gcc-c++,重新configure,make && make install通过。

4../configure: error: the HTTP rewrite module requires the PCRE library
原因是需要PCRE library
解决办法:yum -y install pcre-devel

5../configure: error: the HTTP cache module requires md5 functions
from OpenSSL library.   You can either disable the module by using
--without-http-cache option, or install the OpenSSL library into the system,
or build the OpenSSL library statically from the source with nginx by using
--with-http_ssl_module --with-openssl=<path> options.

原因:需要OpenSSL library
解决办法:yum -y install openssl openssl-devel


    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3