清水

最小的善行胜过最大善念

CentOS 7基于nginx,uwsgi,django搭建web服务器

系统版本:CentOS-7.0-1406-x86_64-Minimal

0、安装完成后检查一下经常使用的工具是否有安装,如:wget、ifconfig、unzip、tree等等。

配置yum源,大家说用163.com的,但 yum info nginx 依然找不到,后来用了阿里云的就可以了。

1、安装wget

# yum install wget

2、安装ifconfig

# yum install net-tools

3、通过yum安装nginx,参考:CentOS 7 YUM 安装 Nginx

关闭防火墙或添加80端口,这时就可以网页了。

4、安装pip

# wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate
# python get-pip.py

5、安装uwsgi和uwsgi-plugin-python插件

# yum install uwsgi uwsgi-plugin-python

6、安装django

pip install Django==1.9.1

7、测试uwsgi

# uwsgi -s 127.0.0.1:9090 --plugin python --wsgi-file /web/index.py 

8、配置nginx.conf,以下为server配置节

server {
    listen       80;
    server_name  localhost;

    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:9090;
    }
}

9、以ini配置文件方式启动uwsgi,uwsgi myweb_uwsgi.ini,ini文件内容:

[uwsgi]
chdir = /usr/share/nginx/html
module = myweb.wsgi
plugin = python
socket = 127.0.0.1:9090
daemonize = /usr/share/nginx/html/uwsgi.log
chmod-socket = 666 # 将socket文件的权限设为666  

下午搞了好久都无法访问,后来通过查看nginx日志,才知道是权限问题,由于没有加chmod-socket,nginx无权限读取socket文件,这时通过关闭SELINUX 也可以解决,具体详细情况待以后慢慢再研究吧。(后来发现加了chmod-socket没用,一定要关闭SELINUX才可以)

10、使用Supervisor配置开机自动启动uwsgi服务:

Supervisor是由python语言编写、基于Linux操作系统的一款服务器管理工具,用以监控服务器的运行,发现问题能立即自动预警及自动重启等功能。通过yum安装后各配置文件和目录都自动创建好了(通过pip安装的好像没有自动生成,也不能利用systemctl启动服务),只需要在 /etc/supervisord.d/ 创建启动uwsgi的ini配置文件即可:

[program:myweb_uwsgi]
command=uwsgi /var/html/pcvc.net/myweb_uwsgi.ini
stopsignal=QUIT
autostart=true
autorestart=true
stdout_logfile=/var/html/pcvc.net/supervisor.log
redirect_stderr=true

Supervisor参考:
Supervisor官方配置说明
使用Supervisor简化进程管理工作
Supervisor的安装与使用入门
按需讲解之Supervisor

到此,在 CentOS 7 基于 nginx uwsg django 搭建的 web 服务器基本可以访问了。