使用nginx+uwsgi+flask实现python服务的负载均衡---(1)nginx的安装

最近要用nginx和uwsgi来实现最近用python写的无切片图像发布服务的负载均衡,研究了半天,打算记录下来,今天就先写一下nginx的安装过程~

0.确认本机是否安装了nginx

#查看进程列表
ps -ef | grep nginx
#查看nginx的进程id
ps -C nginx -o pid
#查看nginx程序
whereis nginx
#查看nginx版本
nginx -v
#测试nginx
nginx -t

1.下载 nginx

sudo wget http://nginx.org/download/nginx-1.4.2.tar.gz

2. 安装

sudo tar -zxvf nginx-1.4.2.tar.gz
cd nginx-1.4.2
./configure --prefix=/usr/local/nginx
sudo make
sudo make install

这里–prefix=后面跟的就是你想要编译结果存放的路径,./configure用法还有很多将就,我之后会搞一篇讲讲。

安装完毕后,测试一下

/usr/local/nginx/sbin/nginx -t

如果大家出现了我这个问题,ubantu就用apt-get,centos的用yum挑选一个安装,安装期间报错也没事,继续安装下一个。我都安装一遍然后就好了。。。

程序 'nginx' 已包含在下列软件包中:
 * nginx-core
 * nginx-extras
 * nginx-full
 * nginx-light
请要求管理员安装其中的一个

举例:

sudo apt-get install nginx-core
sudo apt-get install nginx-light
sudo apt-get install nginx-extras
sudo apt-get install nginx-full

3. 修改配置文件

如果就是默认启动的话,就不需要看这步了
找到 nginx.conf 我这里是在编译目录下/usr/local/nginx/conf里面有

vi /usr/local/nginx/conf/nginx.conf

listen为服务的端口
localhost修改为你的服务器IP地址,本机就用localhost就可以了
在这里插入图片描述

4. 启动nginx

4.1 直接启动

 sudo nginx

或者

sudo start nginx

4.2 修改了配置文件,根据指定配置文件启动

 sudo nginx -c /usr/local/nginx/conf/nginx.conf

4.3 如果已经启动,然后修改了配置文件,需要重新读取的

sudo nginx -s reload

5. 关闭nginx

5.1快速停止nginx

nginx -s stop 

5.2 完整有序的停止nginx

相比第一个,会处理完已接到的所有请求后再关闭

nginx -s quit

5.3 其他停止nginx 方式

###获取进程号
ps -ef | grep nginx
###完整有序的停止Nginx
kill -QUIT 主进程号 
###快速停止nginx
kill -TERM 主进程号
###强制停止Nginx
pkill -9 nginx
###平滑重启nginx:
kill -HUP 主进程号
##用PID文件停止Nginx 假设pid文件路径为/data/logs/nginx.pid 
kill –QUIT `cat /data/logs/nginx.pid` 
##用pid文件重新加载配置文件
kill –HUP `cat /data/logs/nginx.pid`

6. 错误情况收集

6.1 nginx: [error] CreateFile() “/logs/nginx.pid” failed 或者nginx: [error] Open() “/logs/nginx.pid” failed

pid文件就是一个纯文本文件,里面记录的是进程的pid号。 nginx使用了pid文件来记录master process的pid号,如果编译时没有指定,那它的路径就是: <prefix/logs/nginx.pid, 其中<prefix是nginx的安装路径。
(1)编译时配置路径
如果你想修改默认的pid文件路径,可以在编译时加入配置。参数如下:: ./configure –-pid-path=/data/test/ngx.pid 指定后,默认的pid文件路径就更改为:: /data/test/ngx.pid 。如果指定只是路径,没有pid的文件名,那么pid的文件名还是nginx.pid
(2)通过配置文件修改pid
除了使用默认值和通过编译时修改外,还可以通过在nginx的配置文件中修改,改成绝对路径。如下: pid /data/test/nginx.pid; 这里修改的值只对使用该配置文件的nginx有效。
在这里插入图片描述
我是安装之后才发现的这个错误,所以就采用的第二种

6.2 nginx: [emerg] open() “/etc/nginx/mime.types” failed (2: No such file or directory)

开启nginx服务时,报错找不到mime.types文件:

[root@CentOS init.d]# service nginx restart
nginx: [emerg] open() "/etc/nginx/mime.types" failed (2: No such file or directory) in /etc/nginx/nginx.conf:19
nginx: configuration file /etc/nginx/nginx.conf test faile

这里是因为我们在nginx 的启动脚本/etc/init.d/nginx 里修改了nginx配置文件 的目录:NGINX_CONF_FILE="/etc/nginx/nginx.conf" ,导致nginx.conf 和 mime.types 两个文件不在同一个目录下,系统找不到mime.types 文件报错,nginx配置文件默认在安装目录/conf/。把目录下的所有文件都复制一遍到nginx配置文件 的同级目录下即可。

或者你像我碰到这个

shk401@shinetekview:service-tile$ sudo nginx -c nginx.conf 
nginx: [emerg] open() "/FY4COMM/webclient/webserver/ShinetekView-Group/service-tile/mime.types" failed (2: No such file or directory) in /FY4COMM/webclient/webserver/ShinetekView-Group/service-tile/nginx.conf:4

打开配置文件nginx.conf,把mime.types改成绝对路径也可以
在这里插入图片描述

6.3 nginx: [emerg] unknown log format “main” in /etc/nginx/nginx.conf:26

错误描述

[root@CentOS init.d]# service nginx restart
nginx: [emerg] unknown log format "main" in /etc/nginx/nginx.conf:26
nginx: configuration file /etc/nginx/nginx.conf test failed

原因分析
开启了main 格式的日志信息,但是找不到日志的格式main ,一般来说都是打开了这个选项:access_log /var/log/nginx/access.log main;。

解决方法
在access_log /var/log/nginx/access.log main; 的上面有个日志格式main ,默认是注释的,把这三行取消注释就OK了。

在这里插入图片描述

7. 检验成果

把服务器开起来后,在浏览器输入网址和端口号,看到这张图就恭喜了~
在这里插入图片描述
最后求关注,求点赞,欢迎大家关注我的公众号
在这里插入图片描述
记录所学所用,包括但不限于遥感、地信、气象、生态环境,机器学习知识,相关文献阅读,编程代码实现。偶尔荒腔走板的聊聊其他。欢迎不同领域的朋友们加入进来,多多交流。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值