前言

安装软件列表

  1. Nginx-1.13.9
  2. PHP-7.2.3

操作系统

阿里云esc centos 7.4 64位

前提条件

yum install -y gcc gcc-c++ openssl openssl-devel

安装这些是应为在编译安装的时候我们需要它们。

安装Nginx

首先我们得去nginx官网下载源码包以及查看文档。编译文档需要仔细查看,先简单了解一下配置参数。

Nginx 配置参数
  • --prefix=path 定义一个目录,存放服务器上的文件 ,也就是Nginx的安装目录。默认使用/usr/local/Nginx
  • --sbin-path=path 设置Nginx的可执行文件的路径,默认为prefix/sbin/Nginx
  • --conf-path=path 设置在Nginx.conf配置文件的路径。Nginx允许使用不同的配置文件启动,通过命令行中的-c选项。默认为prefix/conf/Nginx.conf
  • --pid-path=path 设置Nginx.pid文件,将存储的主进程的进程号。安装完成后,可以随时改变的文件名 , 在Nginx.conf配置文件中使用 PID指令。默认情况下,文件名 为prefix/logs/Nginx.pid
  • --error-log-path=path 设置主错误,警告,和诊断文件的名称。安装完成后,可以随时改变的文件名 ,在Nginx.conf配置文件中 使用 的error_log指令。默认情况下,文件名 为prefix/logs/error.log
  • --http-log-path=path 设置主请求的HTTP服务器的日志文件的名称。安装完成后,可以随时改变的文件名 ,在Nginx.conf配置文件中 使用 的access_log指令。默认情况下,文件名 为prefix/logs/access.log
  • --build=name 设置一个可选的Nginx构建名称。
  • --user=name 设置Nginx工作进程的用户。安装完成后,可以随时更改的名称在Nginx.conf配置文件中 使用的 user指令。默认的用户名是nobody。
  • --group=name 设置Nginx工作进程的用户组。安装完成后,可以随时更改的名称在Nginx.conf配置文件中 使用的 user指令。默认的为非特权用户。
  • --with-select_module --without-select_module 启用或禁用构建一个模块来允许服务器使用select()方法。该模块将自动建立,如果平台不支持的kqueue,epoll,rtsig或/dev/poll。
  • --with-poll_module --without-poll_module 启用或禁用构建一个模块来允许服务器使用poll()方法。该模块将自动建立,如果平台不支持的kqueue,epoll,rtsig或/dev/poll。
  • --without-http_gzip_module — 不编译压缩的HTTP服务器的响应模块。编译并运行此模块需要zlib库。
  • --without-http_rewrite_module 不编译重写模块。编译并运行此模块需要PCRE库支持。
  • --without-http_proxy_module — 不编译http_proxy模块。
  • --with-http_ssl_module — 使用https协议模块。默认情况下,该模块没有被构建。建立并运行此模块的OpenSSL库是必需的。
  • --with-pcre=path — 设置PCRE库的源码路径。PCRE库的源码(版本4.4 - 8.41)需要从PCRE网站下载并解压。其余的工作是Nginx的 ./configure 和 make 来完成。正则表达式使用在location指令和 ngx_http_rewrite_module 模块中。
  • --with-pcre-jit —编译PCRE包含“just-in-time compilation”(1.1.12中, pcre_jit指令)。
  • --with-zlib=path —设置的zlib库的源码路径。要下载从 zlib(版本1.1.3 - 1.2.11)的并解压。其余的工作是Nginx的./ configure和make完成。ngx_http_gzip_module模块需要使用zlib 。
  • --with-cc-opt=parameters — 设置额外的参数将被添加到CFLAGS变量。例如,当你在FreeBSD上使用PCRE库时需要使用:--with-cc-opt="-I /usr/local/include。.如需要需要增加 select()支持的文件数量:--with-cc-opt="-D FD_SETSIZE=2048".
  • --with-ld-opt=parameters —设置附加的参数,将用于在链接期间。例如,当在FreeBSD下使用该系统的PCRE库,应指定:--with-ld-opt="-L /usr/local/lib"

翻译大部分来源于网络,这里不展开说明Nginx各个编译参数的含义,先完成安装,毕竟之后我们可以通过配置文件或者重新编译实现功能上的需求。下面是官方文档的编译参数示例,这些参数必须在同一行输入(别用回车换行,那样就开始编译了o(╥﹏╥)o)

./configure
    --sbin-path=/usr/local/Nginx/Nginx
    --conf-path=/usr/local/Nginx/Nginx.conf
    --pid-path=/usr/local/Nginx/Nginx.pid
    --with-http_ssl_module
    --with-pcre=../pcre-8.41
    --with-zlib=../zlib-1.2.11

路径我觉得没必要配置,默认的就很好,--with-http_ssl_module 是对https访问的支持,显然我们需要它,编译这个模块需要OpenSSL的支持,我们在前提条件中已经用yum安装了OpenSSL--with-pcre是对ngx_http_rewrite_module中正则表达式的支持,我们也需要它;--with-zlibngx_http_gzip_module需要的,我们最好包含它,ngx_http_gzip_module可以一定程度上减少服务器负担,当然不编译进来也没事,以后需要可以再重新编译进来。

编译安装 Nginx
//下载Nginx源码包
wget http://Nginx.org/download/Nginx-1.13.9.tar.gz
//下载pcre源码包
wget https://ftp.pcre.org/pub/pcre/pcre-8.41.tar.gz
//下载zlib源码包
wget http://www.zlib.net/zlib-1.2.11.tar.gz
//解压
tar zxvf Nginx-1.13.9.tar.gz
tar zxvf pcre-8.41.tar.gz
tar zxvf zlib-1.2.11.tar.gz
//进入Nginx目录
cd Nginx-1.13.9
//配置, -with-pcre=../pcre-8.41 --with-zlib=../zlib-1.2.11 这么写是因为我把zlib和pcre都放在Nginx源码包同一级目录下
./configure --prefix=/usr/local/Nginx --with-http_ssl_module --with-pcre=../pcre-8.41 --with-zlib=../zlib-1.2.11

//配置成功之后,编译并安装
make && make install

如果配置或者编译时出现错误,请百度或者google解决,比如,比如在最小化安装的 centos 虚拟机中操作,tar 命令都没有安装,那么报tar命令不存在时我们先得安装 tar 命令。

测试是否安装成功

启动Nginx

/usr/local/Nginx/sbin/Nginx

访问 ip 如果出现下图,则安装成功

安装PHP

前往php下载页面找到需要安装的PHP版本,这里我们安装最新的稳定版本PHP7.2.3。官方文档没有给出配置参数列表,我们可以使用./configure --help查看。

下载、配置及编译安装PHP
//下载PHP的安装文件
wget http://cn2.PHP.net/distributions/PHP-7.2.3.tar.gz
//解压
tar zxvf PHP-7.2.3.tar.gz
//进入解压后的目录
cd PHP-7.2.3
//配置安装参数
./configure --enable-fpm --prefix=/usr/local/PHP
//编译安装
make && make install

在运行configure的时候或许会报如下错误

configure: error: libxml2 not found. Please check your libxml2 installation

这是因为缺少libxml库,yum安装一下就好

yum install -y libxml2 libxml2-devel

我们这里就简单的安装了PHP,只带了一个参数--enable-fpm,但是实际我们也许会需要带更多的参数,这些我们可以通过重新走一遍安装流程来实现,值得一提的是,在./configure执行成功之后会在当前目录下留下config.nice 文件,后续如果重新配置,可以在这个基础上运行,比如我们要安装pcntl扩展,可以这样执行./config.nice --enable-pcntl

完成安装之后的操作

PHP配置文件,由于在配置时我们并没有指定PHP.ini的加载位置,默认在安装PHP安装目录的lib目录下,所以我 们移动配置文件到 /usr/local/PHP/lib 目录下。

cp PHP.ini-development /usr/local/PHP/lib/PHP.ini

在/usr/local/PHP/etc/PHP-fpm.conf 最后一行可以看到 include=/usr/local/PHP/etc/PHP-fpm.d/*.conf,所以需要执行以下步骤。

cp /usr/local/PHP/etc/PHP-fpm.d/www.conf.default /usr/local/PHP/etc/PHP-fpm.d/www.conf

需要着重提醒的是,如果文件不存在,则阻止 Nginx 将请求发送到后端的 PHP-FPM 模块, 以避免遭受恶意脚本注入的攻击。将 PHP.ini 文件中的配置项 cgi.fix_pathinfo 设置为 0 。【官方文档提出】

启动PHP-fpm
/usr/local/PHP/sbin/PHP-fpm
修改 Nginx配置以支持PHP应用

修改默认的 location 块,使其支持 .PHP 文件:

location / {
    root   html;
    index  index.PHP index.html index.htm;
}

下一步配置来保证对于 .PHP 文件的请求将被传送到后端的 PHP-FPM 模块, 取消默认的 PHP 配置块的注释,并修改为下面的内容:

location ~* \.PHP$ {
    fastcgi_index   index.PHP;
    fastcgi_pass    127.0.0.1:9000;
    include         fastcgi_params;
    fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
}

重启Nginx使配置生效

/usr/local/Nginx/sbin/Nginx -s stop
/usr/local/Nginx/sbin/Nginx

创建测试文件

echo "<?PHP PHPinfo(); ?>" >> /usr/local/Nginx/html/index.PHP

全新centos系统下源码安装php+nginx的更多相关文章

  1. HTML实现代码雨源码及效果示例

    这篇文章主要介绍了HTML实现代码雨源码及效果示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  2. 从iOS应用程序发送帖子到PHP脚本不工作…简单的解决方案就像

    我之前已经做了好几次了但是由于某些原因我无法通过这个帖子…我尝试了设置为_POST且没有的变量的PHP脚本……当它们未设置为发布时它工作精细.这是我的iOS代码:这里是PHP的一大块,POST变量不在正确的位置?我想这对于更有经验的开发人员来说是一个相当简单的答案,感谢您的帮助!解决方法$_POST是一个数组,而不是一个函数.您需要使用方括号来访问数组索引:

  3. 源码推荐:简化Swift编写的iOS动画,iOS Material Design库

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  4. swift皮筋弹动发射飞机ios源码

    这是一个款采用swift实现的皮筋弹动发射飞机游戏源码,游戏源码比较详细,大家可以研究学习一下吧。

  5. swift 写的app 源码,保存一下下

    http://www.topthink.com/topic/3345.htmlhttp://www.csdn.net/article/2015-01-09/2823502-swift-open-source-libs

  6. swift 源码网站 code4app

    http://code4app.com/ios/HTHorizontalSelectionList/54cb2c94933bf0883a8b4583http://123.th7.cn/code/DMPagerViewController_2522.html

  7. OpenStack Swift源码导读:业务整体架构和Proxy进程

    OpenStack的源码分析在网上已经非常多了,针对各个部分的解读亦是非常详尽。其中proxy是前端的业务接入进程。account、container和object目录分别是账户、容器和对象的业务处理逻辑进程。各个业务进程或模块之间的逻辑关系可以参考《OpenstackSwift简介》文中的架构图。在《OpenstackSwift简介》从理论上面介绍了具体的节点寻找过程。

  8. 源码推荐(7.21):顶部滑动菜单FDSlideBar,Swift版无限循环轮播图

    顶部滑动菜单FDSlideBarFDSlideBar是一个顶部滑动菜单,如常见的网易、腾讯新闻等样式。菜单间切换流畅,具有较好的体验性。测试环境:Xcode6.2,iOS6.0以上Swift版无限循环轮播图无限循环轮播图片点击代理可设置图片Url的数组Url和本地图片混合轮播测试环境:Xcode6.2,iOS7.0以上弹幕系统实现--QHDanumuDemo说明:QHDanmu文件夹下是主要的弹幕模块系统,QHDanmuSend文件夹下是简单的发射弹幕的界面。

  9. openstack swift和wsgi源码分析1 HTTP请求处理过程

    分析proxy-server代理服务的执行流程,其他的三个主要服务accountserver,containerserver,objectserver执行过程通proxyserver类似。入口函数调用run_wsgi,此函数完成以下工作:下面重点研究下process_request函数是如何把消息转化为HTTP的request对象这一过程。process_request函数,生成HttpProtocol对象,并执行init操作,注意,HttpProtocol对象自身没有init函数,所以会调用父类的父类的

  10. fir.im Weekly - 进击的 Swift

    最近Swift开源了,众开发者们欢呼雀跃。本期fir.imWeekly准备了一些关于Swift的“新鲜”干货分享,也包括一些优秀的GitHub源码、开发工具和技术文章等等。同时,苹果启用了新的官网:Swift.org,Swift的GitHub主页:https://github.com/apple/swiftSwift3API设计准则勤快的@星夜暮晨翻译了苹果Swift官方网站博客的一篇文章:Swift3APIDesignGuidelines,了解Swift3特性,希望对你有所帮助。如何在iOS中实现一个可

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部