无作为
不仅仅是一种态度!

完美解决oneinstack/宝塔面板不兼容云锁+正确的自编译教程

这几天换服务器的事情一直纠结了很久,发现云锁居然和宝塔面板还有oneinstack这种一键搭建环境的面板不兼容!

而且官方给出的自编译教程也是错乱的,表示经过几天的摸索终于完美解决了不兼容和自编译出错的问题。

开启云锁cpu占用高

以下所有测试都为linux-centos7环境下测试!

首先云锁最新的版本自身就有问题,会导致安装oneinstack一键安装包或者宝塔面板后,开启云锁,cpu占用高,直接达到了50%-90%。

云锁官方群给出的解决办法就是:

关闭云锁守护:service yunsuo_guard stop站cpu使用不影响云锁。

表示没点用,开启云锁之后,不只要安装了就莫名其妙依旧cpu占用高,负载满状态。

这里给出完美解决方法,在8月14号官方更新了最新版本,解决了这个问题,这是办法一。

之前的老版本云锁没有这个问题,我们直接安装老版本即可,这里一共两个云锁安装包给大家,推荐选官方最新的安装包。

一个是2017年2月12号的,一个是最新官方版2018年8月14号的,下方下载页面即可直接下载。

云锁正确的自编译教程

表示官方的自编译都是错的,弄了好几个小时,重复尝试都是无果的,这里看到了某博客分享的有关于宝塔面板+云锁自编译的教程。

然后操作测试成功了,方法适合所有自编译,不管是不是宝塔或者还是一键lnmp、oneinstack等等都可以,也包括了你自己手动搭建的环境。

宝塔面板云锁自编译教程

这里就以宝塔测试,所有环境都按照这个步骤来,每一步操作无作为都会给大家翻译,其他环境对着改就好了。

如果你是宝塔面板,而且还是nginx1.12.2的版本,你可以直接复制黏贴下面的代码:

//后面是注释,不要复制,该复制执行的代码为数字+.以后的,包括了代码前空格,代码后空格不需要
1.cd /www/server/nginx/sbin/     //打开目录
2.cp nginx nginx.bak          //备份文件
3.cd ~           //转到根目录
4./www/server/nginx/sbin/nginx -V      //(确认你的版本是1.12.2再进行下一步)
5.wget http://nginx.org/download/nginx-1.12.2.tar.gz     //下载Nginx
6.tar zxvf nginx-1.12.2.tar.gz          //解压Nginx
7.cd /root               //到根目录
8.wget https://codeload.github.com/yunsuo-open/nginx-plugin/zip/master -O nginx-plugin-master.zip      //下载模块
9.unzip nginx-plugin-master.zip           //解压模块
10.cd nginx-1.12.2           //到Nginx目录
11. ./configure --user=www --group=www --prefix=/www/server/nginx --with-openssl=/www/server/nginx/src/openssl --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module --with-http_v2_module --with-http_gzip_static_module --with-http_gunzip_module --with-stream --with-stream_ssl_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --add-module=/root/nginx-plugin-master
12. make      //步骤11记得复制前面的空格,直接执行即可,步骤12为编译Nginx文件
13.rm -rf /www/server/nginx/sbin/nginx             //删除原来已经安装的Nginx
14.cp objs/nginx /www/server/nginx/sbin/          //把新编译的替换
15.service nginx restart               //重启Nginx

其他环境编译:

这是官方给出的编译教程:Nginx/Tengine 自编译说明,我们无视第四步,然后继续操作,第8/9步拼凑的代码如下:

自己获取的路径不同,代码可能不同,不过最后–add一段是一样的。

例如,无作为这里输入:/www/server/nginx/sbin/nginx -V

获取的版本号和显示的路径是这样的:

configure arguments: –user=www –group=www –prefix=/www/server/nginx –with-openssl=/www/server/nginx/src/openssl –add-module=/www/server/nginx/src/ngx_devel_kit –add-module=/www/server/nginx/src/lua_nginx_module –add-module=/www/server/nginx/src/ngx_cache_purge –add-module=/www/server/nginx/src/nginx-sticky-module –add-module=/www/server/nginx/src/nginx-http-concat –with-http_stub_status_module –with-http_ssl_module –with-http_v2_module –with-http_image_filter_module –with-http_gzip_static_module –with-http_gunzip_module –with-stream –with-stream_ssl_module –with-ipv6 –with-http_sub_module –with-http_flv_module –with-http_addition_module –with-http_realip_module –with-http_mp4_module –with-ld-opt=-Wl,-E –with-ld-opt=-ljemalloc –with-pcre=pcre-8.40

官方是说在后面直接加: –add-module=/root/nginx-plugin-master

其实需要删除代码打划横线的部分,再添加 –add-module=/root/nginx-plugin-master

然后官方教程第10步无视,直接按照宝塔面板编译教程来完成后续步骤即可。

到此即可完美的自编译成功!

最后:自编译成功了,web防护就不用开了,自编译就代替了web防护,两者只能开一个。

别到时候因为只能开一个就觉得是不是防护失败了,不是的,官方这点也没说明。

为什么你的图片开了两个?

因为我没有点击右上角的刷新,自编译和web防护是一个功能!

如果你实在不会,可以联系我帮你编译不过不免费,留言即可。

oneinstack环境编译云锁

图文教程:查看原图

代码如下:

编译安装

由于OneinStack使用的是Nginx1.10.0,而云锁现阶段支持Nginx最高版本为1.9.*,所以Oneinstack的用户需要自己编译Nginx,使云锁识别。具体编译执行步骤如下:
1. 编译前先将已经安装的Nginx文件进行备份
cd /usr/local/nginx/sbin/
cp nginx nginx.bak

2. 进入OneinStack的src目录,解压Nginx1.10.0压缩包
cd /root/oneinstack/src/
tar zxvf nginx-1.10.0.tar.gz

3. 由于其不支持post过滤,所以需要修改nginx源码目录下ngx_http_upstream.c 文件,在static void ngx_http_upstream_init_request(ngx_http_request_t *r);行上方添加:“intngx_http_yunsuo_post_in_handler(ngx_http_request_t *r);”和在ngx_http_upstream_init_request后,添加:
if(ngx_http_yunsuo_post_in_handler(r)) {
return;
}
cd nginx-1.10.0/src/http/
vim ngx_http_upstream.c
int
ngx_http_yunsuo_post_in_handler(ngx_http_request_t *r);
——————-上面这段是添加的———————

static void
ngx_http_upstream_init_request(ngx_http_request_t *r)
{
ngx_str_t *host;
ngx_uint_t i;
ngx_resolver_ctx_t *ctx, temp;
ngx_http_cleanup_t *cln;
ngx_http_upstream_t *u;
ngx_http_core_loc_conf_t *clcf;
ngx_http_upstream_srv_conf_t *uscf, **uscfp;
ngx_http_upstream_main_conf_t *umcf;

——————–这段是添加的—————-
if (ngx_http_yunsuo_post_in_handler(r)) {
return;
}
————————————————

if (r->aio) {
return;
}
复制代码

4. 下载云锁防护插件压缩包
cd /root
wget https://codeload.github.com/yunsuo-open/nginx-plugin/zip/master -O nginx-plugin-master.zip

5. 解压云锁防护插件压缩包nginx-plugin-master.zip
unzip nginx-plugin-master.zip

6. 获取当前云锁插件源码所在目录的全路径
pwd

7. 查看当前nginx加载的模块,在编译加载云锁防护模块的时候仍需加载这些模块
/usr/local/nginx/sbin/nginx –V

8. 进入nginx源码目录,根据第7步获取的编译参数对nginx进行编译;编译时添加云锁防护模块,路径为第6步获取的云锁防护模块源码全路径“/root/nginx-plugin-master”;
cd oneinstack/src/nginx-1.10.0/
./configure –prefix=/usr/local/nginx –user=www –group=www –with-http_stub_status_module –with-http_v2_module –with-http_ssl_module –with-ipv6 –with-http_gzip_static_module –with-http_realip_module –with-http_flv_module –with-pcre=../pcre-8.38 –with-pcre-jit –with-ld-opt=’-ljemalloc’ –add-module=/root/nginx-plugin-master

configure完成后进行make
make

9. 将系统中原有的nginx用重新编译生成的nginx文件替换,替换后重启nginx使新编译nginx生效
rm -rf /usr/local/nginx/sbin/nginx
cp objs/nginx /usr/local/nginx/sbin/

10. 让云锁识别新编译的nginx
① 安装云锁,如已经安装则忽略此步骤。安装步骤参照“云锁v1.0-“Linux版”安装步骤”
② 编译nginx路径,使云锁识别
cd /usr/local/yunsuo_agent/nginx/
./configure_compile_nginx /usr/local/nginx/

到此通过PC端连接到服务器端,在PC端的界面上可以看到已识别nginx插件。

最新补充:2018年9月7日

如果oneinstack编译失败,请自己解压目录所需文件,还原路径,即可正常编译,如果实在不会可以联系QQ:834723797,备注云锁,不免费。

卸载插件

1. 通过PC端卸载
将安装是备份的nginx.bak文件复制到云锁nginx目录的back下,覆盖原有nginx.bak文件。这样就可以在云锁PC端直接卸载了。
cd /usr/local/nginx/sbin/
rm -rf /usr/local/yunsuo_agent/nginx/backup/nginx.bak
cp nginx.bak /usr/local/yunsuo_agent/nginx/backup/

2. 删除文件
手动删除或者重命名 /usr/local/yunsuo_agent/nginx/ 目录下的 libnginx_plugin.so(此操作需要关闭云锁自保护功能), 重启 nginx 服务即可。

3. 使用原文件替换
手动使用系统原有的nginx直接替换当前使用的带有云锁插件的nginx。

FAQ

1. 编译时可能出现的几种错误解决方法
① 遇如下错误信息 : cc1: all warnings being treated as errors, 编译器把警告信息作为错误处理了
解决: 修改 objs/Makefile
把CFLAGS = -pipe -O -W -Wall -Wpointer-arith-Wno-unused-parameter -Werror -g修改为:CFLAGS = -pipe -O -W -Wall -Wpointer-arith-Wno-unused-parameter -g即去掉-Werror选项
重新make,注意是重新make而不是重新./configure
② 遇如下错误信息:undefined reference to `dlclose’,由于编译器版本过高,需要在链接时,加入-ldl 选项
解决: 修改 objs/Makefile
搜索 -lpthread,定位到该行结束,加入 -ldl
形如 -lpthread -lcrypt 修改为 -lpthread -lcrypt -ldl
重新 make,注意是重新make而不是重新./configure


历史上的今天:

赞(666) 打赏
所有免费资源、福利、电影、破解软件未经允许不得转载:www.wuzuowei.net无作为资源 » 完美解决oneinstack/宝塔面板不兼容云锁+正确的自编译教程

来句评论吧! 3

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #-49

    大佬你好。。这个是个什么软件啊?请问一下

    KingVee20C44个月前 (08-18)回复

无作为-不仅仅是一种态度

登录/注册广告合作

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏