Nginx 基础应用实战 06 构建一个PHP的站点

本文详细介绍了如何在CentOS系统上通过预编译安装或源码编译安装OpenResty,以及如何利用其进行PHP站点搭建、Lua脚本开发、配置和管理。涵盖了模块安装、服务控制、lua代码缓存、请求头信息获取等内容。
摘要由CSDN通过智能技术生成

Nginx 基础应用实战 06

构建一个PHP的站点

使用套件

lmnp

https://oneinstack.com

安装完成后

在这里插入图片描述

搭建bbs

https://www.discuz.net/

搭建博客

https://wordpress.com

https://cn.wordpress.org/

CMS系统

http://www.dedecms.com/

构建Lua站点

Openresty Nginx + Lua

Nginx是一个主进程配合多个工作进程的工作模式,每个进程由单个线程来处理多个连接。

在生产环境中,我们往往会把cpu内核直接绑定到工作进程上,从而提升性能。

安装

预编译安装

CentOS

你可以在你的 CentOS 系统中添加 openresty 仓库,这样就可以便于未来安装或更新我们的软件包(通过 yum check-update 命令)。 运行下面的命令就可以添加我们的仓库(对于 CentOS 8 或以上版本,应将下面的 yum 都替换成 dnf):

# add the yum repo:
wget https://openresty.org/package/centos/openresty.repo
sudo mv openresty.repo /etc/yum.repos.d/

# update the yum index:
sudo yum check-update

然后就可以像下面这样安装软件包,比如 openresty

sudo yum install -y openresty

如果你想安装命令行工具 resty,那么可以像下面这样安装 openresty-resty 包:

sudo yum install -y openresty-resty

命令行工具 opmopenresty-opm 包里,而 restydoc 工具在 openresty-doc 包里头。

列出所有 openresty 仓库里头的软件包:

sudo yum --disablerepo="*" --enablerepo="openresty" list available

参考 OpenResty RPM 包页面获取这些包更多的细节。

对于 CentOS 8 及更新版本,我们只需要将上面的 yum 命令都替换成 dnf 即可。

源码编译安装
下载

http://openresty.org/cn/download.html

./configure

然后在进入 openresty-VERSION/ 目录, 然后输入以下命令配置:

./configure

默认, --prefix=/usr/local/openresty 程序会被安装到/usr/local/openresty目录。

依赖 gcc openssl-devel pcre-devel zlib-devel

安装:yum install gcc openssl-devel pcre-devel zlib-devel postgresql-devel

您可以指定各种选项,比如

./configure --prefix=/opt/openresty \

           --with-luajit \

           --without-http_redis2_module \

           --with-http_iconv_module \

           --with-http_postgres_module

试着使用 ./configure --help 查看更多的选项。

make && make install

服务命令
启动

systemctl start openresty.service

停止

systemctl stop openresty.service

重新加载配置文件

systemctl reload openresty.service

启动成功后的欢迎页面

注意

如遇启动失败,先检查一下是否之前装过nginx 端口有没有冲突

在这里插入图片描述

查看已安装模块和版本号

Nginx -V

测试lua脚本

在Nginx.conf 中写入
   location /lua {

        default_type text/html;
        content_by_lua '
           ngx.say("<p>Hello, World!</p>")
         ';
      }

lua-nginx-module

创建配置文件lua.conf
   server {
        listen       80;
        server_name  localhost;

   location /lua {

        default_type text/html;

        content_by_lua_file conf/lua/hello.lua;

         }
}
在Nginx.conf下引入lua配置

include lua.conf;

创建外部lua脚本

conf/lua/hello.lua

内容:

ngx.say("<p>Hello, World!</p>")

lua读取nginx数据的常用方法

ngx.var

获取Nginx uri中的单一变量
    location /nginx_var {

         default_type text/html;

        content_by_lua_block {

            ngx.say(ngx.var.arg_a)

        }
    }

ngx.req.get_uri_args

获取Nginx uri中的所有变量
local uri_args = ngx.req.get_uri_args()  

for k, v in pairs(uri_args) do  

    if type(v) == "table" then  

        ngx.say(k, " : ", table.concat(v, ", "), "<br/>")  

    else  

        ngx.say(k, ": ", v, "<br/>")  

    end  
end

lua文件热部署

lua_code_cache off;

关闭缓存后 重启生效

配置在 http->server节点下

只对content_by_lua_file生效

获取Nginx请求头信息
local headers = ngx.req.get_headers()                         

ngx.say("Host : ", headers["Host"], "<br/>")  

ngx.say("user-agent : ", headers["user-agent"], "<br/>")  

ngx.say("user-agent : ", headers.user_agent, "<br/>")

for k,v in pairs(headers) do  

    if type(v) == "table" then  

        ngx.say(k, " : ", table.concat(v, ","), "<br/>")  

    else  

        ngx.say(k, " : ", v, "<br/>")  

    end  

end  
获取post请求参数
ngx.req.read_body()  

ngx.say("post args begin", "<br/>")  

local post_args = ngx.req.get_post_args()  

for k, v in pairs(post_args) do  

    if type(v) == "table" then  

        ngx.say(k, " : ", table.concat(v, ", "), "<br/>")  

    else  

        ngx.say(k, ": ", v, "<br/>")  

    end  
end
http协议版本
ngx.say("ngx.req.http_version : ", ngx.req.http_version(), "<br/>")
请求方法
ngx.say("ngx.req.get_method : ", ngx.req.get_method(), "<br/>")  
原始的请求头内容
ngx.say("ngx.req.raw_header : ",  ngx.req.raw_header(), "<br/>")  
body内容体
end  

end


#### http协议版本

```lua
ngx.say("ngx.req.http_version : ", ngx.req.http_version(), "<br/>")
请求方法
ngx.say("ngx.req.get_method : ", ngx.req.get_method(), "<br/>")  
原始的请求头内容
ngx.say("ngx.req.raw_header : ",  ngx.req.raw_header(), "<br/>")  
body内容体

ngx.say("ngx.req.get_body_data() : ", ngx.req.get_body_data(), “
”)

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
本文将介绍使用Docker数据卷和Nginx源码构建实战,让您能够更好地了解和使用这两个技术。 一、Docker数据卷 Docker数据卷是一个可用于容器中的特殊目录,可以绕过容器文件系统的限制,使得容器可以共享数据。Docker数据卷有以下特点: 1. 可以在容器之间共享数据 2. 可以在容器升级或替换时保留数据 3. 可以将数据从容器的文件系统中分离出来,以便备份和恢复 4. 可以提高容器的性能,因为容器文件系统的I/O不会影响主机文件系统的I/O 使用Docker数据卷的步骤如下: 1. 创建数据卷 可以使用以下命令创建数据卷: ``` docker volume create mydata ``` 其中,mydata是数据卷的名称。 2. 启动容器并挂载数据卷 可以使用以下命令启动容器并挂载数据卷: ``` docker run -it -v mydata:/data alpine sh ``` 其中,-v选项指定了数据卷的名称和挂载路径,/data是容器内的路径。 3. 在容器中使用数据卷 容器中可以使用挂载的数据卷,例如: ``` echo "Hello, Docker Volume!" > /data/hello.txt ``` 4. 删除数据卷 可以使用以下命令删除数据卷: ``` docker volume rm mydata ``` 二、Nginx源码构建实战 Nginx是一款高性能的Web服务器,它的源码可以从官网下载。通过构建Nginx源码可以定制化Nginx的功能和配置。 以下是构建Nginx源码的步骤: 1. 下载Nginx源码 可以使用以下命令下载Nginx源码: ``` wget http://nginx.org/download/nginx-1.18.0.tar.gz ``` 2. 解压源码 可以使用以下命令解压源码: ``` tar -xzf nginx-1.18.0.tar.gz ``` 3. 安装编译工具 可以使用以下命令安装编译工具: ``` apt-get update apt-get install build-essential ``` 4. 配置Nginx 可以使用以下命令进行配置: ``` cd nginx-1.18.0 ./configure --prefix=/usr/local/nginx --with-http_ssl_module ``` 其中,--prefix选项指定了Nginx的安装路径,--with-http_ssl_module指定了启用SSL模块。 5. 编译Nginx 可以使用以下命令编译Nginx: ``` make ``` 6. 安装Nginx 可以使用以下命令安装Nginx: ``` make install ``` 7. 运行Nginx 可以使用以下命令运行Nginx: ``` /usr/local/nginx/sbin/nginx ``` 以上就是使用Docker数据卷和Nginx源码构建实战的全部内容,希望能对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Add小兵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值