实验环境:
rhel6.5,selinx 和 iptables均为disabled状态
主机环境:
server1 172.25.254.1
####php源码编译####
PHP概念介绍:
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
下载php源码包进行解压
tar jxf php-5.6.35.tar.bz2
cd php-5.6.35
./configure --help | grep mysql ##过滤出与mysql相关的模块
./configure --prefix=/usr/local/lnmp/php # php安装的位置 --with-config-file-path=/usr/local/lnmp/php/etc #php配置文件所在的位置
--with-mysql=mysqlnd
--enable-mysqlnd
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd
--with-openssl
--with-snmp
--with-gd
--with-zlib
--with-curl
--with-libxml-dir
--with-png-dir
--with-jpeg-dir
--with-freetype-dir
--with-pear
--with-gettext
--with-gmp
--enable-inline-optimization
--enable-soap
--enable-ftp
--enable-sockets
--enable-mbstring
--enable-fpm # 开启fpm模式(nginx等服务用的)
--with-fpm-user=nginx # 对PHP服务的限制通过nginx用户来实现
--with-fpm-group=nginx # PHP以nginx用户组身份运行
--with-mcrypt # 提供了对多种块算法的支持 主要用来实现加密等算法
--with-mhash # 加密算法
有错误,此时要解决依赖性
yum install libxml2-devel -y
yum install openssl-devel -y
yum install curl-devel -y
yum install gmp-devel -y
yum install net-snmp-devel -y
此时要下载gd-devel-2.0.35-11.el6.x86_64.rpm,libmcrypt-devel-2.5.8-9.el6.x86_64.rpm libmcrypt-2.5.8-9.el6.x86_64.rpm,
re2c-0.13.5-1.el6.x86_64.rpm
yum install -y gd-devel-2.0.35-11.el6.x86_64.rpm -y
yum install libmcrypt-devel-2.5.8-9.el6.x86_64.rpm libmcrypt-2.5.8-9.el6.x86_64.rpm -y
rpm -ivh re2c-0.13.5-1.el6.x86_64.rpm
重新设置
编译安装
make && make install
拷贝文件配置文件
vim /usr/local/lnmp/php/etc/php-fpm.conf 将第25行注释去掉(pid)
cd /usr/local/lnmp/php/etc/
vim php.ini ##修改时间为Asia/Shanghai
useradd -M -d /usr/local/lnmp/nginx -s /sbin/nologin nginx
id nginx ##查看用户
cd php-5.6.35/
cd sapi/fpm
cp init.d/php-fpm /etc/init.d/php-fpm ##将php服务脚本做好
chmod +x /etc/init.d/php-fpm ##增加权限
/etc/init.d/php-fpm start
netstat -antlp ##查看端口
ps ax ##查看 进程是否开启
####nginx源码编译#####
nginx介绍:
nginx是一款高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务。其源代码以类BSD许可证的形式发布,因它的稳定性。丰富的功能集,示例配置文件和低系统资源的消耗而闻名。是一款轻量级的web服务器/反向代理服务器及电子邮件代理服务器,同时nginx也是一个非常优秀的邮件代理服务器。其特点为占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站的用户有:百度,京东,新浪,腾讯,网易,淘宝等。
在连接高并发的情况下,nginx是apache服务不错的代替品:nginx在美国是做虚拟主机老板们经常选用的软件平台之一。能够支持高达50000个并发连接数的响应,感谢nginx为我们选择epoll and kqueue作为开发模型。
四:ngixnx和apache对比
1.nginx相对于apache的优点
轻量级,同样的web服务器,比apache占有更少的资源和内存
抗并发,nginx处理请求是异步非阻塞式,而apache则是阻塞式。在高并发下,nginx能保持弟子员,低消耗,高性能
高度模块化设计,编写高性能模块资源丰富
代理功能强大
2.apache对于nginx的优点
比nginx的rewrite(服务其的重写脉冲技术,支持URL重写)更强大
模块超多,现有的模块基本能满足所有需求
比nginx稳定,bug较少
3.nginx于apache应用场景对比
apache适合跑动态,而nginx时和跑静态和反向,但若静态文件较少,apache的select模块比nginx的epoll模块更好
nginx适用于IO米即型服务,apache适合与CPU密集型服务
最好两者结合,例如,lnmp架构,nginx做前端服务器,处理静态文件请求,apache做后端服务器,当客户发出动态文件请求时,nginx的反向代理功能将请求转发到apache.
4.轻量级,高并发原因:
对于apache,每个请求都独占一个工作线程,并发数在几千,占用内存,CPU,降低性能
对于nginx,一个进程只有一个主线程,通过异步非阻塞式时间处理机制,实现了循环处理多个准备好的事件,从而实现轻量级,高并发。
5.直接说明
apache属于专一性服务
nginx属于分阶段进行,节省时间
五.nginx服务器的搭建及配置
在server1中做如下操作
源码安装:
加压源码包
tar zxf nginx-1.10.1.tar.gz
cd nginx-1.10.1/
cd src/core/
vim nginx.h ##去掉版本号
cd ..
cd auto/cc
vim gcc ##注释掉debug一行
开始预编译
cd nginx-1.10.1 ./configure --help ###查看要添加的模块帮助
./configure --prefix=/usr/local/lnmp/nginx
--with-http_ssl_module
--with-http_stub_status_module
--user=nginx
--group=nginx
--with-threads
--with-file-aio
出现报错,解决依赖性安装
yum install pcre-devel -y
重新设置,如下便是设置成功
make && make install ##编译及安装
配置nginx服务
cd /usr/local/lnmp/nginx/conf
vim nginx.conf
vim /etc/security/limits.conf
nginx - nofile 65536 ##扩大nginx用户内存
vim /root/.bash_profile ##将编译生成的mysql二进制命令放进系统环境变量中,保证可以直接调用该二进制命令
source .bash_profile ##刷新
cd /usr/local/lnmp/nginx/sbin/
nginx -t ##语法检测
nginx ##器用nginx命令
cd /usr/local/lnmp/nginx/html ##默认发布目录
vim index.php
测试:
在firefox上访问172.25.254.1 和172.25.254.1/index.php,会得到如下不同效果
为了方便测试,再次编辑nginx.conf
vim nginx.conf
nginx -s reload ##刷新
重新访问172.25.254.1
####论坛的搭建#####
yum install unzip -y ##做好解压的准备
unzip Discuz_X3.2_SC_UTF8.zip -d /usr/local/lnmp/nginx/html/
cd /usr/local/lnmp/nginx/html
mv upload bbs ##更改目录名
cd bbs/
chmod 777 config/ data/ uc_server/ uc_client/ -R ##修改目录权限
此处的数据库密码便是当初设置的密码(应该是WESTOS1234)
输入密码
cd /usr/local/lnmp/php/etc/
vim php.ini
这个时候安装还会报错,这是因为连接数据库的权限不够
/etc/init.d/php-fpm reload ###重新加载配置文件
cd /usr/local/
ll ###查看里面目录权限
cd lnmp/
ll ###查看里面目录权限
cd mysql/
ll ###查看里面目录权限
chmod 755 data/ ###将data目录权限修改
/etc/init.d/mysqld start
此次登陆会成功
进入管理中心,有要求,删除install中的index.php
cd /usr/local/lnmp/nginx/html/bbs/install/
rm -fr index.php
刷新一次,就可以了