今天配置CentOS6.5下安装Nginx + php7 + mysql5.7.15遇到了一些坑。本来家里的电脑在配置环境的时候没有问题,拿去公司的电脑上就是到处报错。不知道是不是人品问题。今晚在家重装了一个centos,安装之后进行了全部yum update。本来以为上午的问题可能是没有更新软件,图样图森破。下面总结一下今晚对nginx部分的心得。
因为PCRE本来是用在nginx重写rewrite的时候,解析正则的正则解析库,所以在安装nginx之前,默默的先装上基本应用:
yum -y install gcc automake autoconf libtool gcc-c++ gd zlib zlib-devel openssl openssl-devel libxml2 libxml2-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libmcrypt libmcrypt-devel pcre pcre-devel
ok,现在下载并解压:
wget
tar zxvf nginx-1.10.1
cd nginx-1.10.1
./configure --prefix=http://www.mamicode.com/usr/local/nginx
通过find,知道了pcre默认安装在/usr/local/nginx/auto/lib/pcre,那么,
./configure --prefix=http://www.mamicode.com/usr/local/nginx --with-pcre=http://www.mamicode.com/usr/local/nginx/auto/lib/pcre
接下来就是一轮报错:
1.发生错误为:
make[2]: *** 没有规则可以创建目标“distclean”。 停止。
网上看到的办法一一做了尝试:
./configure --prefix=http://www.mamicode.com/usr/local/nginx --with-http_stub_status_module --with-openssl=http://www.mamicode.com/usr/include/openssl --user=www --group=www
2.发生错误为:
"conf/koi-win" 与"/usr/local/nginx/conf/koi-win" 为同一文件
据说这是因为防火墙的原因。我又关了防火墙重启:
vi + /etc/sysconfig/iptables
#添加配置项
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
#重启防火墙
service iptables restart
3.接着出现:
nginx: [alert] could not open error log file: open() "/usr/local/nginx/logs/error.log" failed (2: No such file or directory)
#0: getpwnam("www") failed
喝喝。现在log不能打开,网上说,这是nginx已经运行,被执行启动,这个不算致命错误;
然后就没有了!!!
好吧我杀进程,总算不在运行了吧:
kill -9 nginx
4.再次make && make install ,亲人,胡汉三我又回来了!
cp: `conf/koi-win’ and `/usr/local/nginx/conf/koi-win’ 为同一文件。
所以上面这一切都是在逗我咯?
好吧。仔细翻了一下,nginx/conf/koi-win,,和/usr/local/nginx/conf/kol-win,终于在阿里云上面找到了答案,路径的问题嘛
./configure --prefix=http://www.mamicode.com/usr/local/nginx --conf-path=http://www.mamicode.com/usr/local/nginx/nginx.conf
终于在默念天灵灵地灵灵装好系统行不行的诚恳祷告下,make && make install成功了。以下部分转载自阿里云,并经过实际测试:
接下来启动nginx #方法1 [root@unique nginx]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf #方法2 [root@unique nginx]# cd /usr/local/nginx/sbin [root@unique sbin]# ./nginx 停止nginx #查询nginx主进程号 ps -ef | grep nginx#停止进程 kill -QUIT 主进程号(我的是27854)
#快速停止 kill -TERM 主进程号(我的是2993)
#强制停止 pkill -9 nginx 重启nginx [root@unique sbin]# /usr/local/nginx/sbin/nginx -s reload
这个时候如果出现nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed
想必是需要:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
继续
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 测试nginx #测试端口 netstat –na|grep 80 #浏览器中测试 http://ip:80
做一个自定义的nginx启动停止脚本
[root@unique sbin]# vi /etc/init.d/nginx把下面的脚本复制进去然后保存
#! /bin/sh # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts the nginx web server PATH=http://www.mamicode.com/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DESC="nginx daemon" NAME=nginx DAEMON=http://www.mamicode.com/usr/local/nginx/sbin/$NAME CONFIGFILE=http://www.mamicode.com/usr/local/nginx/conf/$NAME.conf PIDFILE=http://www.mamicode.com/usr/local/nginx/logs/$NAME.pid SCRIPTNAME=http://www.mamicode.com/etc/init.d/$NAME set -e [ -x "$DAEMON" ] || exit 0 do_start() { $DAEMON -c $CONFIGFILE || echo -n "nginx already running" } do_stop() { kill -INT `cat $PIDFILE` || echo -n "nginx not running" } do_reload() { kill -HUP `cat $PIDFILE` || echo -n "nginx can‘t reload" } case "$1" in start) echo -n "Starting $DESC: $NAME" do_start echo "." ;; stop) echo -n "Stopping $DESC: $NAME" do_stop echo "." ;; reload|graceful) echo -n "Reloading $DESC configuration..." do_reload echo "." ;; restart) echo -n "Restarting $DESC: $NAME" do_stop do_start echo "." ;; *) echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2 exit 3 ;; esac exit 0