centos LNMP第一部分环境搭建 LAMP LNMP安装先后顺序 php安装 安装nginx 编写nginx启动脚本 懒汉模式 mv /usr/php/{p.conf.default,p.conf} php运行方式SAPI介绍 第二十三节课
centos LNMP第一部分环境搭建 LAMP安装先后顺序 LNMP安装先后顺序 php安装 安装nginx 编写nginx启动脚本 懒汉模式 mv /usr/local/php/{p.conf.default,p.conf} php运行方式SAPI介绍 第二十三节课
推荐搜狐下载地址:http://mirrors.sohu.com/nginx/
LAMP安装先后顺序:mysql-》apache-》php
LNMP安装先后顺序:mysql-》php-》nginx(nginx的安装顺序怎样都无所谓)
注意:LAMP删除php整个目录也无所谓,因为apache只是调用/usr/local/apache2/modules/libphp5.so这个文件已而
apache会自动加载php模块
在apache目录下查找php模块: ls /usr/local/apache2/modules/libphp5.so
编译php的时候修改一下php.ini的位置,否则找不到php.ini无法启动php
./configure
--with-config-file-path=/usr/local/php/etc
上半节课
LAMP安装先后顺序
LNMP安装先后顺序
php安装
下半节课
安装nginx
编写nginx启动脚本
配置解析nginx.conf
懒汉模式 mv /etc/{php-fpm.conf.default,php-fpm.conf}
apache中的php和nginx中的php区别
php运行方式SAPI介绍
1. MySQL安装(同LAMP里面的安装方法)
2. php安装
注意:
1、php配置参数--with-mysql=/usr/local/mysql
懂的人可以只安装MySQL的库文件不用整个MySQL安装,比如局域网内两台机器,一台是数据库专用,一台是web,web那台也要安装mysql,安装php的时候不能远程连接mysql
--with-mysql=192.168.1.23/usr/local/mysql 这样配置是错的
但是web那台的mysql可以不启动mysql服务
2、--prefix=/usr/local/php 、--with-config-file-path=/usr/local/php/etc
如果先前已经安装过php,必须指定一个不同的名字,以免覆盖之前安装的php,比如改名为/usr/local/php-fpm ,/usr/local/php-fpm/etc
3、依赖库文件通常不会有什么问题,因为依赖的库文件都在安装上节课LAMP的时候安装上了
4、把apache的侦听端口改为8080或者把apache侦听ip改为lo这个网卡,否则nginx和apache使用同样的侦听端口会启动失败
5、php安装过程中缺少依赖文件,查看一下然后安装
yum list |grep -i curl
yum install -y libcurl-devel.i686
yum install -y libcurl-devel.i686
yum install -y libpng-devel
yum install -y freetype-devel.x86_64
yum install -y libpng-devel
yum install libjpeg-devel -y
yum install -y libcurl-devel
yum install gcc -y
yum install libxslt-devel -y
yum install libmcrypt libmcrypt-devel -y
wget http://cn2.php.net/distributions/php-5.4.37.tar.bz2
tar jxf php-5.4..tar.bz2
groupadd php-fpm
useradd -s /sbin/nologin -g php-fpm -d /dev/null php-fpm
mkdir -p /usr/local/php-fpm
cd php-5.4.
./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-curl //即使编译的时候指定了php的用户和组,以后还可以通过修改配置文件(php-fpm.conf)来修改--with-fpm-user=php-fpm --with-fpm-group=php-fpm
echo $?
make && make install
echo $?
cp php.ini-production /usr/local/php-fpm/etc/php.ini
cp /download/php-5.4./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm //拷贝启动脚本
mv /usr/local/php-fpm/etc/{php-fpm.conf.default,php-fpm.conf} //php-fpm的配置文件
chmod /etc/init.d/php-fpm
chkconfig --add php-fpm
service php-fpm start
chkconfig php-fpm on
./configure的时候报错:
configure: error: Please reinstall the libcurl distribution -easy.h should be in <curl-dir>/include/curl/
yum install -y libcurl-devel
configure: error: jpeglib.h not found.
yum install libjpeg-devel -y
configure: error: png.h not found.
yum install -y libpng-devel
configure: error: freetype-config not found.
yum install -y freetype-devel.x86_64
3. 安装nginx
rpm -qa nginx //查看是否已经安装过nginx 把他卸载
yum remove nginx
cd /download
wget http://nginx.org/download/nginx-1.6.3.tar.gz
tar zxvf nginx-1.6..tar.gz
cd nginx-1.6. yum install -y pcre-devel //安装pcre 为了确保能在 Nginx 中使用正则表达式进行更灵活配置安装之前需要确定系统是否安装有 PCRE(Perl Compatible Regular Expressions)包,perl语言兼容正则表达式
./configure --prefix=/usr/local/nginx --with-pcre
make && make install 启动nginx:
/usr/local/nginx/sbin/nginx
4. 编写nginx启动脚本
vi /etc/init.d/nginx //加入如下内容
#!/bin/bash
# chkconfig: //3级别 5级别 可以参考/etc/init.d/iptables
# 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=
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
} case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
restart
;;
configtest)
configtest
;;
*)
echo $"Usage: $0 {start|stop|reload|restart|configtest}"
RETVAL=
esac
exit $RETVAL 保存后,执行
chmod a+x /etc/init.d/nginx
chkconfig --add nginx
chkconfig nginx on
chkconfig --list nginx
killall httpd
service nginx start
ps aux |grep nginx |grep -v grep
root 5160 0.0 0.0 23812 780 ? Ss 21:02 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nobody 5161 0.0 0.1 24236 1380 ? S 21:02 0:00 nginx: worker process
nginx.conf里可以更改子进程的属主为其他,那么更改属主之后也要chown /usr/local/nginx/下面的某些临时文件/目录的属主,否则无法读写这些临时文件/目录,默认是nobody
子进程:nobody 5161 0.0 0.1 24236 1380 ? S 21:02 0:00 nginx: worker process
5. 配置解析nginx.conf
vi /usr/local/nginx/conf/nginx.conf //把下面的配置,前面的#删除,并更改fastcgi_param SCRIPT_FILENAME 那一行
server {
listen ;
server_name www..com; #access_log logs/www..com.access.log main; //#设定本虚拟主机的访问日志 location / { root /data/www;
index index.php index.html index.htm;
} //PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI默认配置. location ~ \.php$ {
root /data/www; //这里要改
fastcgi_pass 127.0.0.1:; //PHP监听端口
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name; //这里要改
include fastcgi_params; }
测试 /usr/local/nginx/sbin/nginx -t
重新加载 /usr/local/nginx/sbin/nginx -s reload
vim /usr/local/nginx/html/1.php
增加
<?php
phpinfo();
?>
测试: curl localhost/1.php
懒汉模式
前提:都在同一个目录下
同一个目录下多个文件需要mv
mv /usr/local/php/etc/{php-fpm.conf.default,php-fpm.conf}
mkdir /usr/local/{data,logs}
效果:将 /usr/local/php/etc/php-fpm.conf.default 改名为/usr/local/php/etc/php-fpm.conf
apache中的php和nginx中的php区别
libphp5.so:只是一个模块
php-fpm:完整的程序 可以监听端口 可以自动启动
php:只是一个可执行程序,不可以自动启动,不可以监听端口
nginx只是代理php,本身不加载php模块
apache自始至终都是httpd进程在执行,只是加载了php模块,拥有php脚本解析功能
tar zxf php-5.3.28.tar.gz
cd php-5.3.28
./configure
--prefix=/usr/local/php //这个一定要加
--with-apxs2=/usr/local/apache2/bin/apxs //一定要加 结合apache 要先安装perl否则会报错
php源码编译常见错误解决方案
http://www.cnblogs.com/MYSQLZOUQI/p/4990441.html
扩展阅读
php运行方式SAPI介绍
http://www.phpddt.com/php/php-sapi.html
SAPI:Server Application Programming Interface 服务器端应用编程接口。它就是PHP与其它应用交互的接口,PHP脚本要执行有很多种方式,通过Web服务器,或者直接在命令行下,也可以嵌入在其他程序中。
SAPI提供了一个和外部通信的接口,常见的SAPI有:cgi 、fast-cgi、cli、isapi、apache 模块的 DLL
1、CGI
CGI即通用网关接口(Common Gateway Interface),它是一段程序,通俗的讲CGI就象是一座桥,把网页和WEB服务器中的执行程序连接起来,它把HTML接收的指令传递给服务器的执 行程序,再把服务器执行程序的结果返还给HTML页。CGI 的跨平台性能极佳,几乎可以在任何操作系统上实现。
CGI方式在遇到连接请求(用户 请求)先要创建cgi的子进程,激活一个CGI进程,然后处理请求,处理完后结束这个子进程。这就是fork-and-execute模式。所以用cgi 方式的服务器有多少连接请求就会有多少cgi子进程,子进程反复加载是cgi性能低下的主要原因。都会当用户请求数量非常多时,会大量挤占系统的资源如内 存,CPU时间等,造成效能低下。
2、FastCGI
fast-cgi 是cgi的升级版本,FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一 次。PHP使用PHP-FPM(FastCGI Process Manager),全称PHP FastCGI进程管理器进行管理。
FastCGI的工作原理
Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module)
FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Server的连接。
当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。
FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回WebServer。
当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。
在上述情况中,你可以想象CGI通常有多慢。每一个Web 请求PHP都必须重新解析php.ini、重新载入全部扩展并重初始化全部数据结构。使用FastCGI,所有这些都只在进程启动时发生一次。一个额外的 好处是,持续数据库连接(Persistent database connection)可以工作。
3、APACHE2HANDLER
PHP作为Apache模块,Apache服务器在系统启动后,预先生成多个进程副本驻留在内存中,一旦有请求出 现,就立即使用这些空余的子进程进行处理,这样就不存在生成子进程造成的延迟了。这些服务器副本在处理完一次HTTP请求之后并不立即退出,而是停留在计 算机中等待下次请求。对于客户浏览器的请求反应更快,性能较高。
4、apache模块的DLL:
该运行模式是我们以前在windows环境下使用apache服务器经常使用的,而在模块化(DLL)中,PHP是与Web服务器一起启动并运行的。(是apache在CGI的基础上进行的一种扩展,加快PHP的运行效率)libphp5.so linux下
5、ISAPI 微软IIS:
ISAPI即Internet Server Application Program Interface,是微软提供的一套面向Internet服务的API接口.一个ISAPI的DLL,可以在被用户请求激活后长驻内存,等待用户的另一个请求,还可以在一个DLL里设置多个用户请求处理函数,此外,ISAPI的DLL应用程序和WWW服务器处于同一个进程中,效率要显著高于CGI。
cli:[php CLI模式介绍]
cli是php的命令行运行模式,大家经常会使用它,但是可能并没有注意到(例如:我们在linux下经常使用 “php -m”查找PHP安装了那些扩展就是PHP命令行运行模式;
root@steven php-5.4.]# ls sapi/
aolserver caudium fpm phttpd tux
apache cgi isapi pi3web webjames
apache2filter cli litespeed roxen
apache2handler continuity milter tests
apache_hooks embed nsapi thttpd
fpm
apache
cgi
isapi
cli
apache2handler
PCRE 库 正则需要用 nginx php
http://baike.baidu.com/link?url=3PRJOR-aLbXAdNtXjgTytMwW45PJheQv-MpwgSktzpTU7_tpN6fsq4cOlA-SEKzjj8mYBOixIf-3pWMwg38fIK
PCRE
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。这些在执行正规表达式模式匹配时用与Perl 5同样的语法和语义是很有用的。Boost太庞大了,使用boost regex后,程序的编译速度明显变慢。测试了一下,同样一个程序,使用boost::regex编译时需要3秒,而使用pcre不到1秒。因此改用pcre来解决C语言中使用正则表达式的问题
PCRE(Perl Compatible Regular Expressions中文含义:perl语言兼容正则表达式)是一个用C语言编写的正则表达式函数库,由菲利普.海泽(Philip Hazel)编写。PCRE是一个轻量级的函数库,比Boost之类的正则表达式库小得多。PCRE十分易用,同时功能也很强大,性能超过了POSIX正则表达式库和一些经典的正则表达式库[1] 。
和Boost正则表达式库的比较显示[2] ,双方的性能相差无几,PCRE在匹配简单字符串时更快,Boost则在匹配较长字符串时胜出---但两者差距很小,考虑到PCRE的大小和易用性,我们可以认为PCRE更值得考虑。
PCRE被广泛使用在许多开源软件之中,最著名的莫过于Apache HTTP服务器和PHP脚本语言、R脚本语言,此外,正如从其名字所能看到的,PCRE也是perl语言的缺省正则库。
PCRE是用C语言实现的,其C++实现版本是PCRE++。
PCRE最新的版本是8.33,可以在其官方网站下载,官网地址见扩展阅读部分。
nginx详细安装步骤 一定要仔细看 !!
http://www.ibm.com/developerworks/cn/web/wa-lo-nginx/
接下来安装 Nginx,Nginx 一般有两个版本,分别是稳定版和开发版,您可以根据您的目的来选择这两个版本的其中一个,下面是把 Nginx 安装到 /opt/nginx 目录下的详细步骤:
# wget http://sysoev.r/nginx/nginx-0.6.31.tar.gz
# tar zxvf nginx-0.6.31.tar.gz
# cd nginx-0.6.31
# ./configure --with-http_stub_status_module –prefix=/opt/nginx
# make
# make install
其中参数 --with-http_stub_status_module 是为了启用 nginx 的 NginxStatus 功能,用来监控 Nginx 的当前状态。要使用监控宝监控nginx也要安装NginxStatus
安装成功后 /opt/nginx 目录下有四个子目录分别是:conf、html、logs、sbin 。其中 Nginx 的配置文件存放于 conf/nginx.conf,Nginx 只有一个程序文件位于 sbin 目录下的 nginx 文件。确保系统的 80 端口没被其他程序占用,运行 sbin/nginx 命令来启动 Nginx,打开浏览器访问此机器的 IP,如果浏览器出现 Welcome to nginx! 则表示 Nginx 已经安装并运行成功。
http://www.ibm.com/developerworks/cn/web/wa-lo-nginx/
建华的安装脚本也有
cd /software/nginx-1.4. && ./configure --sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf --pid-path=/var/run/nginx/nginx.pid \
--error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log \
--user=nginx --group=nginx --with-pcre --with-http_gzip_static_module --with-http_ssl_module \
--with-http_realip_module --with-http_geoip_module --with-http_stub_status_module \
--add-module=/usr/local/nginx_upstream_check_module-master \
--add-module=/usr/local/ngx_cache_purge-2.1 --with-http_gunzip_module \
--add-module=/usr/local/ngx_req_status-master && make -j2 && make install
f
centos LNMP第一部分环境搭建 LAMP LNMP安装先后顺序 php安装 安装nginx 编写nginx启动脚本 懒汉模式 mv /usr/php/{p.conf.default,p.conf} php运行方式SAPI介绍 第二十三节课的更多相关文章
- 风炫安全WEB安全学习第二十三节课 利用XSS获取COOKIE
风炫安全WEB安全学习第二十三节课 利用XSS获取COOKIE XSS如何利用 获取COOKIE 我们使用pikachu写的pkxss后台 使用方法: <img src="http:/ ...
- LNMP第一部分环境搭建
1. MySQL安装(同LAMP里面的安装方法)2. php安装wget http://cn2.php.net/distributions/php-5.4.37.tar.bz2tar jxf ph ...
- php第二十三节课
XML XML:页面之间传递数据,跨平台传递 HTML:超文本标记语言,核心标签 XML特点:1.标签名可以自己定义2.有且只有一个根3.大小写敏感4.标签必须完整 <!DOCTYPE html ...
- CentOS下Web服务器环境搭建LNMP一键安装包
CentOS下Web服务器环境搭建LNMP一键安装包 时间:2014-09-04 00:50来源:osyunwei.com 作者:osyunwei.com 举报 点击:3797次 最新版本:lnmp- ...
- centos LAMP第二部分apache配置 下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转 配置apache的访问日志 配置静态文件缓存 配置防盗链 访问控制 apache rewrite 配置开机启动apache tcpdump 第二十节课
centos LAMP第二部分apache配置 下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转 配置apache的访问日志 配置静态文件缓存 配置防盗链 ...
- centos LAMP第一部分-环境搭建 Linux软件删除方式,mysql安装,apache,PHP,apache和php结合,phpinfo页面,ldd命令 第十九节课
centos LAMP第一部分-环境搭建 Linux软件删除方式,mysql安装,apache,PHP,apache和php结合,phpinfo页面,ldd命令 第十九节课 打命令之后可以输入: e ...
- centos LB负载均衡集群 三种模式区别 LVS/NAT 配置 LVS/DR 配置 LVS/DR + keepalived配置 nginx ip_hash 实现长连接 LVS是四层LB 注意down掉网卡的方法 nginx效率没有LVS高 ipvsadm命令集 测试LVS方法 第三十三节课
centos LB负载均衡集群 三种模式区别 LVS/NAT 配置 LVS/DR 配置 LVS/DR + keepalived配置 nginx ip_hash 实现长连接 LVS是四层LB ...
- centos 正则,grep,egrep,流式编辑器 sed,awk -F 多个分隔符 通配符 特殊符号. * + ? 总结 问加星 cat -n nl 输出文件内容并加上行号 alias放~/.bash_profile 2015-4-10 第十三节课
centos 正则,grep,egrep,流式编辑器 sed,awk -F 多个分隔符 通配符 特殊符号. * + ? 总结 问加星 cat -n nl 输出文件内容并加上行号 alias放~ ...
- 【1】循序渐进学 Zabbix :初识与基础依赖环境搭建( LNMP )
写在前面的话 运维监控是一个很大的话题,在这一块个人接触的比较突出的服务主要有 Nagio 和 Zabbix 两款.而这几年跳过的公司中,Zabbix 一直都是首选且唯一选择,Nagios 没遇到. ...
随机推荐
- LaTeX公式
在学习机器学习中会接触到大量的数学公式,所以在写博客是会非常的麻烦.用公式编辑器一个一个写会非常的麻烦,这时候我们可以使用LaTeX来插入公式. 写这篇博文的目的在于,大家如果要编辑一些简单的公式,就 ...
- 哈希----字符串----time33
//此处只是获得了字符串的hash值,但是该如何散列到hash表中呢?哪个算法会好些?! 1 //在处理以字符串为键值的哈希时,times33哈希算法有着极快的计算效率和很好的哈希分布 //小写英文单 ...
- mysql中如何在命令行中,执行一个SQL脚本文件?
需求描述: 在mysql数据库的使用中,有的时候,需要直接在shell的命令行中,执行某个SQL脚本文件, 比如,要初始化数据库,创建特定的存储过程,创建表等操作,这里进行一个基本的测试. 一般情况, ...
- python2.7中关于编码,json格式的中文输出显示
当我们用requests请求一个返回json的接口时候, 语法是 result=requests.post(url,data).content print type(result),result 得到 ...
- Java精选笔记_JDBC
JDBC 概述 什么是JDBC JDBC全称是Java数据库连接(Java Database Connectivity),应用程序可通过这套API连接到关系数据库,并使用SQL语句来完成对数据库中数据 ...
- [转载]2014年10月26完美世界校招两道java题
public class VolitileTest { volatile static int count=0; public static void main(String args[]){ for ...
- LeetCode——Best Time to Buy and Sell Stock III
Description: Say you have an array for which the ith element is the price of a given stock on day i. ...
- AStar A* A星 算法TypeScript版本
一 演示效果 二 参考教程 <ActionScript3.0 高级动画教程> + 源码 http://download.csdn.net/download/zhengchengpeng/ ...
- 【BZOJ1500】[NOI2005]维修数列 Splay
[BZOJ1500][NOI2005]维修数列 Description Input 输入的第1 行包含两个数N 和M(M ≤20 000),N 表示初始时数列中数的个数,M表示要进行的操作数目.第2行 ...
- ios8 gps定位不好用
这样让iOS8正常使用定位功能呢? <1>你需要在info.plist表里面添加两条变量 在Info.plist中加入两个缺省没有的字段 NSLocationAlwaysUsageDesc ...