序言
本来打算很早就可以把这篇文章写出来的,结果期间各种忙,只能在月底把这篇月中旬就能写出来的文章发布。
刚进公司,有一个多月的培训,老乡他的培训大作业有一项是在服务器上搭建一个网站,并且用OpenSSL生成证书使浏览器没有“不安全”标志。因为我有丰富的建站经历,所以我答应帮老乡搞搞。结果“经验主义”快把我坑死,出现了各种问题,还好最后解决掉了。
Kali配lnmp
我之前搭建网站都是使用的是CentOS系统的服务器,没有在Debian系列的服务器上搭建过,这一次公司给老乡分配的服务器是Kali,我也是很懵逼,竟然把这种大杀器作为搭建网站的服务器???
首先,受经验主义的影响,我首先选定了lnmp服务器软件包,用的还是最新的1.5版本。结果“经验主义”害了我啊。首先编译源码就不通过,数据库还好,能编译安装成功,Nginx和PHP不成功。而且前期为了lnmp能安装成功,我还手贱的把系统默认的数据库MariaDB卸载了,真是手贱,后面差点儿没把系统搞崩。因为只有服务器的远程连接方式,没有实体机,所以我只能硬着头皮一遍一遍的重试。
编译Nginx问题
下载并解压源码包后,进入源码目录,首先执行./configure
,它会检查当前系统,并生成Makefile文件。
我在Kali系统直接执行make
命令,结果出现这个错误:
cc1: all warnings being treated as errors
make[1]: *** [objs/Makefile:886: objs/src/http/ngx_http_script.o] Error 1
make[1]: Leaving directory '/lnmp1.5/src/nginx-1.14.0'
make: *** [Makefile:8: build] Error 2
编译停止后,后面会出现报错信息。出现这个错误是因为编译严格,把警告当做错误处理。我们可以在执行./configure
后,进入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 -g
也就是删除Werror。
root@kali:/lnmp1.5/src/nginx-1.14.0# cd objs/
root@kali:/lnmp1.5/src/nginx-1.14.0/objs# ls
autoconf.err Makefile ngx_auto_config.h ngx_auto_headers.h ngx_modules.c src
root@kali:/lnmp1.5/src/nginx-1.14.0/objs# vi Makefile
1
2 CC = cc
3 CFLAGS = -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -g #-Werror -g
4 CPP = cc -E
5 LINK = $(CC)
6
7
8 ALL_INCS = -I src/core \
9 -I src/event \
10 -I src/event/modules \
11 -I src/os/unix \
12 -I objs \
13 -I src/http \
14 -I src/http/modules
15
16
17 CORE_DEPS = src/core/nginx.h \
18 src/core/ngx_config.h \
19 src/core/ngx_core.h \
20 src/core/ngx_log.h \
21 src/core/ngx_palloc.h \
22 src/core/ngx_array.h \
Makefile [+] 8,24 Top
"Makefile" 1241L, 39482C written
在退到Nginx源码主目录,进行编译安装,就没有报错。
sed -e "s|%%PREFIX%%|/usr/local/nginx|" \
-e "s|%%PID_PATH%%|/usr/local/nginx/logs/nginx.pid|" \
-e "s|%%CONF_PATH%%|/usr/local/nginx/conf/nginx.conf|" \
-e "s|%%ERROR_LOG_PATH%%|/usr/local/nginx/logs/error.log|" \
< man/nginx.8 > objs/nginx.8
make[1]: Leaving directory '/lnmp1.5/src/nginx-1.14.0'
这就是编译成功的信息。
编译PHP7问题
和Nginx相似,就是编译PHP的报错信息不同。我的报错信息是:
collect2: error: ld returned 1 exit status
make: *** [Makefile:268: sapi/cli/php] Error 1
解决办法就是在Makefile里面的 EXTRA_LIBS=...
这一行最后添加-liconv
参数。在这台Kali中,EXTRA_LIBS在第89行,添加完成后,大约是这个样子的:
EXTRA_LIBS= ...... -lnsl -lxml2 -lxml2 -lxml2 -lcrypt -lxml2 -lxml2 -lxml2 -lcrypt -liconv
省略号表示前面有很多其他的参数,我只写出了最后面的。
之后可以编译安装了,成功的信息是这样的:
Generating phar.php
Generating phar.phar
PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled.
clicommand.inc
invertedregexiterator.inc
pharcommand.inc
directorytreeiterator.inc
directorygraphiterator.inc
phar.inc
Build complete.
Don't forget to run 'make test'.
安装的信息:
root@kali:/lnmp1.5/src/php-7.0.30# make install
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20151012/
Installing PHP CLI binary: /usr/local/bin/
Installing PHP CLI man page: /usr/local/php/man/man1/
Installing phpdbg binary: /usr/local/bin/
Installing phpdbg man page: /usr/local/php/man/man1/
Installing PHP CGI binary: /usr/local/bin/
Installing PHP CGI man page: /usr/local/php/man/man1/
Installing build environment: /usr/local/lib/php/build/
Installing header files: /usr/local/include/php/
Installing helper programs: /usr/local/bin/
program: phpize
program: php-config
Installing man pages: /usr/local/php/man/man1/
page: phpize.1
page: php-config.1
Installing PEAR environment: /usr/local/lib/php/
[PEAR] Archive_Tar - installed: 1.4.3
[PEAR] Console_Getopt - installed: 1.4.1
[PEAR] Structures_Graph- installed: 1.1.1
[PEAR] XML_Util - installed: 1.4.2
[PEAR] PEAR - installed: 1.10.5
Wrote PEAR system config file at: /usr/local/etc/pear.conf
You may want to add: /usr/local/lib/php to your php.ini include_path
/lnmp1.5/src/php-7.0.30/build/shtool install -c ext/phar/phar.phar /usr/local/bin
ln -s -f phar.phar /usr/local/bin/phar
Installing PDO headers: /usr/local/include/php/ext/pdo/
结语
这些方案,我在kali上面可以使用,不确定在其他发行版上是否可以使用,仅供参考!
如有错误,敬请指出,感谢指正! ——2018-08-30 23:51:02 与苏州
最新评论
这个软件有bug的,客户端windows有些键不能用如逗号、句号
没有收到邮件通知
我的评论通知貌似坏掉了,定位一下问题
测试一下重新部署后的邮件功能
居然看到自己公司的MIB库,诚惶诚恐
那可能是RobotFramework-ride的版本问题。我装的1.7.4.2,有这个限制。我有空再尝试下旧版本吧,感谢回复。
你好!我在python2.7中安装RobotFramework-ride的时候提示wxPython的版本最高是2.18.12,用pip下载的wxPython版本是4.10,而且我在那个路径下没有找到2
真的太好了,太感谢了,在bilibili和CSDN上都找遍了,终于在你这里找到了