cjson使用_树莓派使用宝塔面板安装LNMP环境

书接上回,前面说到我被垃圾Rock 64搞的死去活来,索性在树莓派上装了Ubuntu 20.04 LTS。 为了方便配置V2Ray,我忙活了一天终于把LNMP环境搞定了。下面说说怎么搞的,避免后面再踩坑。

安装宝塔面板

在安装之前需要先安装必要的软件。Ubuntu 20.04 LTS上没有make和cmake,需要手动安装:

sudo apt-get install make -y
sudo apt-get install cmake -y

宝塔面板安装比较简单,官方提供的脚本如下:

&& sudo bash install.sh

执行过程中除了按一次y和回车外就是等,很简单。

安装LNMP环境

各软件版本

这个是本次的重中之重,需要解决的问题比较多。安装的各软件版本如下:

  • Tengine Nginx
  • MySQL 5.6
  • Pure-ftpd 1.0.49
  • phpMyAdmin 4.7
  • PHP 7.2(也可以更高,PHP兼容性很好)

Pure-ftpd无法启动的解决办法

b3d125a5856d6fae2632742d209c1418.png

按照上图所示的方法打开设置界面,选择配置修改,找到TLS,把后面的1改成0。

Nginx安装前准备

树莓派上装Nginx非常麻烦,有很多东西需要配置,下面分步骤讲解:

安装LuaJIT(OpenResty版本)

cd ~/
wget -c -O luajit2-2.1-20200102.tar.gz https://github.com/openresty/luajit2/archive/v2.1-20200102.tar.gz -T 

安装Lua Cjson(OpenResty版本)

cd ~/
wget -O lua-cjson-2.1.0.8rc1.tar.gz https://github.com/openresty/lua-cjson/archive/2.1.0.8rc1.tar.gz -T 

修改Nginx安装脚本

sudo nano /www/server/panel/install/nginx.sh

找到LuaModVer,替换连续的两行为:

LuaModVer

找到调用Install_LuaJIT和Install_cjson的地方,注释这两行,并加入下面两行:

export 

保存并退出!

然后使用以下命令锁定该文件:

sudo chattr +i /www/server/panel/install/nginx.sh

如果你的树莓派上没有这个文件,可能是因为需要先安装一次才会出现,那就安装一次,我这除了Nginx和pure-ftpd别的都能运行,pure-ftpd就按照上面的方法解决,Nginx启动不了,先卸载再按这个步骤重新安装。

注意:Nginx要选Tengine,别的版本装不上,会报错。相信我,我都试过了!

上面的修改完了后,去网页上重新安装。

安装后配置

安装完Nginx后依然无法正常运行,会出现如下错误:

[alert

安装lua-resty-core

cd ~/
wget -c -O lua-resty-core.tar.gz https://github.com/openresty/lua-resty-core/archive/v0.1.18rc4.tar.gz -T 

替换Makefile为如下内容:

OPENRESTY_PREFIX

执行以下命令安装:

sudo make install

安装lua-resty-lrucache

cd ..
wget -c -O lua-resty-lrucache.tar.gz https://github.com/openresty/lua-resty-lrucache/archive/v0.10rc1.tar.gz -T 5
tar xvf lua-resty-lrucache.tar.gz
cd lua-resty-lrucache-0.10rc1

替换Makefile为如下内容:

OPENRESTY_PREFIX

执行以下命令安装:

sudo make install

完成后重启Nginx。推荐在网页上操作。

大功告成!

开源爱好者 | Use it or lose it!​blog.ee-fans.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`cJSON_ReplaceItemInObject()`函数用于替换一个cJSON对象中指定key对应的值。其函数原型如下: ```c void cJSON_ReplaceItemInObject(cJSON *object, const char *string, cJSON *newitem); ``` 其中,`object`是要替换值的cJSON对象,`string`是要替换的key的名称,`newitem`是新的cJSON对象,它将替换原来的值。 以下是一个使用`cJSON_ReplaceItemInObject()`函数的示例代码: ```c #include <stdio.h> #include <stdlib.h> #include "cJSON.h" int main() { char *json_str = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}"; cJSON *root = cJSON_Parse(json_str); if (root == NULL) { fprintf(stderr, "Error before: [%s]\n", cJSON_GetErrorPtr()); return 1; } cJSON *city = cJSON_GetObjectItem(root, "city"); if (city == NULL || !cJSON_IsString(city)) { fprintf(stderr, "Invalid JSON format, \"city\" not found or not a string.\n"); cJSON_Delete(root); return 1; } cJSON *new_item = cJSON_CreateString("Los Angeles"); cJSON_ReplaceItemInObject(root, "city", new_item); char *new_json_str = cJSON_PrintUnformatted(root); printf("New JSON string:\n%s\n", new_json_str); cJSON_Delete(root); free(new_json_str); return 0; } ``` 这个程序的功能是将输入的JSON字符串中的"city"键对应的值从"New York"替换为"Los Angeles",然后输出修改后的JSON字符串。 首先,使用`cJSON_Parse()`函数将输入的JSON字符串解析为cJSON对象。然后,使用`cJSON_GetObjectItem()`函数获取"city"键对应的值,如果该值不存在或不是一个字符串,则输出错误信息并退出程序。 接下来,创建一个新的cJSON对象,它是一个字符串类型的cJSON对象,其值是"Los Angeles"。然后,使用`cJSON_ReplaceItemInObject()`函数将"city"键对应的值替换为新的cJSON对象。 最后,使用`cJSON_PrintUnformatted()`函数将修改后的cJSON对象转换为JSON字符串,并输出到控制台。 注意,在程序结束时,应该使用`cJSON_Delete()`函数释放所有分配的cJSON对象,以及使用`free()`函数释放新的JSON字符串的内存。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值