debian 系统python+uwsgi+nginx实现web环境

1,python web部署的实现:

python+uwsgi+nginx实现web。

本文测试环境:

服务器:树莓派B+

操作系统:

[email protected]:~# cat /etc/issue
Raspbian GNU/Linux 7 \n \l

IP:

[email protected]:~# ip ad s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether b8:27:eb:ed:b8:e5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.137.100/24 brd 192.168.137.255 scope global eth0
       valid_lft forever preferred_lft forever

软件需求:

python2.7.3

django-1.7.2

rpyc-3.3.0

uwsgi-2.0.9

nginx-1.6.2

mysql-5.5.40

都是目前稳定版本最新版本。

2,创建相应目录:

[email protected]:~# mkdir /data
[email protected]:~# mkdir /data/logs    #所有日志存放位置
[email protected]:~# mkdir /data/www    #页面代码
[email protected]:~# mkdir /data/server    #软件安装位置,后面nginx貌似装到/data下面了,这个目录就没用了。
[email protected]:~# mkdir /soft    #下载软包位置

3,安装必须的软件包

# apt-get update#更新下系统
安装相应的库文件,有些系统以及安装了就不用重新安装了:
# apt-get install libpcre3-dev libssl-dev libpcre3 libssl build-essential zlib1g zlib1g-dev

build-essential    #可以解决包间的依赖关系等,很重要,raspbian默认安装。

----------------------- 安装nginx --------------------------

下载软件包:

# cd /soft/
# wget http://nginx.org/download/nginx-1.6.2.tar.gz

创建nginx运行用户和组:

# groupadd -g 5000 www
# useradd -u 5000 -g 5000 www
# tar -zxf nginx-1.6.2.tar.gz
# cd nginx-1.6.2/
# ./configure --prefix=/data/nginx --user=www --group=www --with-http_stub_status_module
## --with-http_stub_status_module    #启用Nginx状态监控模块,默认不开启。
# make
# make install

----------------------- 安装mysql --------------------------

# aptitude search mysql|grep ^i#查看系统中是否有mysql相应包,有则删除
# apt-get remove mysqlxxx#删除系统自带mysql相关包
# apt-get install mysql-server mysql-client python-mysqldb(python链接mysql支持包)#默认会安装许多依赖包,并且会让你设置mysql root账号密码。

默认安装完成自动启动,测试:

# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 43
Server version: 5.5.40-0+wheezy1 (Debian)
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

测试python-mysqldb是否安装成功:

[email protected]:~# python
Python 2.7.3 (default, Mar 18 2014, 05:13:23) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
>>>

不报错则成功。

----------------------- 安装rpyc --------------------------

rpyc模块用于平台与主控端做数据通讯交互,获取最新版:https://pypi.python.org/packages/source/r/rpyc

# cd /soft/
# wget https://pypi.python.org/packages/source/r/rpyc/rpyc-3.3.0.tar.gz
# tar -zxf rpyc-3.3.0.tar.gz
# cd rpyc-3.3.0/
# python setup.py install

无报错则成功。

----------------------- 安装uwsgi --------------------------

#### tar包安装:

获取最新版:http://uwsgi-docs.readthedocs.org/en/latest/Download.html

可以在百度百科里面查到uwsgi的有关信息。

# apt-get install python-dev    #编译时需要python相关库文件
# cd /soft
# wget http://projects.unbit.it/downloads/uwsgi-2.0.9.tar.gz
# tar -zxf uwsgi-2.0.9.tar.gz
# cd uwsgi-2.0.9/
# python uwsgiconfig.py --build    #看服务器配置,等待时间可能比较长。

### apt-get源安装
# apt-get install uwsgi#这种安装会解决包的依赖关系,不用担心安装遇到依赖包错误。

看到下面代码,表示安装成功:

[ ok ] Starting app server(s): uwsgi (omitted; missing conffile(s) in /etc/uwsgi/apps-enabled).

----------------------- 安装Django --------------------------

参考:http://chongzi100.blog.51cto.com/340243/1600754

版本:Django-1.7.2

4,创建django工程:

# cd /data/www/
# django-admin startproject web04
# tree web04
web04
├── manage.py
└── web04
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    ├── wsgi.py
1 directory, 5 files

django测试,可以看参考文章。

5,配置nginx:

# pwd
/data/nginx/conf
# cat nginx.conf
user  www;
worker_processes  1;
pid /data/logs/nginx/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    gzip  on;
    server {
        listen       80;
        server_name  web01.test.com;
        location / {
            uwsgi_pass 192.168.137.100:8000;
            uwsgi_param UWSGI_CHDIR  /data/www/web04/web04;
            uwsgi_param UWSGI_SCRIPT wsgi;
            include uwsgi_params;
            access_log /data/logs/nginx_access.log;    #打开日志功能方便排错。
        }
    }
}

6,配置uwsgi,创建uwsgi配置文件/data/nginx/conf/uwsgi.ini

# cat uwsgi.ini 
[uwsgi]  
socket = 192.168.137.100:8000
master = true 
pidfile = /data/logs/uwsgi.pid  
processes = 4      #指定进程数
workers = 1      #分配CPU核数
chdir = /data/www/web04/web04    #项目主目录
pythonpath = /data/www/web04    #项目上层目录
profiler = true  
memory-report = true  
enable-threads = true  
logdate = true  
limit-as = 512    #内存限制512k
daemonize = /data/logs/django.log    #开启日志,方便排错
gid = www
uid = www
vhost = false    #如果是多站点,可改为true
plugins = python    #指定uwsgi将使用python

更多的参数说明,可参考官方说明。

http://uwsgi-docs.readthedocs.org/en/latest/Configuration.html

7,测试:

启动uwsgi:
uwsgi --ini /data/nginx/conf/uwsgi.ini
启动nginx:
/data/nginx/sbin/nginx

8,遇到的错误:

"unavailable modifier requested"

该错误在网上搜了下,多数是uwsgi配置文件无法找到python导致的。

解决方法:

确认已经安装了uwsgi-plugin-python:

# aptitude search uwsgi-plugin-python
i   uwsgi-plugin-python            - Python WSGI plugin for uWSGI     
p   uwsgi-plugin-python3           - Python 3 WSGI plugin for uWSGI

两个参数都表示软件包的当前状态。

i    #表示已安装

p    #表示清除软件包

修改配置文件:

# vim uwsgi.ini 
plugins = python    #添加该行,指定uwsgi用的是python

9,结束语:

文中没有做python再去链接mysql的测试,在以后的文章中写入吧。如果有哪里错了,请留言给我。

时间: 2024-08-28 09:43:53

debian 系统python+uwsgi+nginx实现web环境的相关文章

Django + Uwsgi + Nginx 的生产环境部署

使用runserver可以使我们的django项目很便捷的在本地运行起来,但这只能在局域网内访问,如果在生产环境部署django,就要多考虑一些问题了.比如静态文件处理,安全,效率等等,本篇文章总结归纳了一下基于uwsgi+Nginx下django项目生产环境的部署 准备条件: 1.确保有一个能够用runserver正常启动的django项目 2.项目已上传到linux 3.linux上已部署好python环境,且已安装好项目所需的模块 安装uwsgi uwsgi是python的一个模块,安装u

Linux Debian 下LNMP服务器——nginx+mysql+php环境搭建及配置

昨天刚给公司服务器装了LNMP服务器环境,在这里简单记录一下过程备忘. 这里我在安装的时候是用的Dotdeb源,仅供参考. 1.导入Dotdeb源,据说Dotdeb源里的软件版本比较新. 在向源中导入Dotdeb前,我们需要先获取GnuPG key并导入: wget http://www.dotdeb.org/dotdeb.gpg cat dotdeb.gpg | apt-key add - 提示OK,表明导入成功.然后我们开始导入Dotdeb源,源列表的位置在“/etc/apt/sources

Django + Uwsgi + Nginx 实现生产环境部署

一.如何在生产上部署Django? Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式. 二.uwsgi介绍 uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换. 要注意 WSGI / uwsgi / uWSGI 这三个概念的区分. WSGI是一种Web服务器网关接口.它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask

CentOS + Python3.6+ Django2.0 + uwsgi + nginx + mysql web发布环境搭建

目录: CentOS上升级Python 安装easy_install和pip uwsgi安装及测试 Django安装及测试 连接uwsgi与Django nginx安装及测试 连接uwsgi与nginx 连接uwsgi与Django与nginx uwsgi ini mysql安装设置 python3 Django mysql连接及测试 快速搭建blog测试 Pycharm开发 如果只是想学习django开发直接用django本身自带的开发用服务器即可. 1. CentOS上升级Python 用的

windows环境vagrant修改静态资源文件,centos虚拟机中nginx的web环境下不生效

最近上手krpano,本地修改了krpano.html文件或者xml文件,在虚拟机环境打开文件是修改过来了,在nginx中就是不生效. 修改nginx.conf中http{}中的 sendfile        on; 改成 sendfile        off;  修改后立刻生效. 附带一份nginx配置说明,备忘. ######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总

Django1.11+Uwsgi+Nginx的生产环境部署

思路:使用runserver可以使我们的django项目很便捷的在本地运行起来,但是这只能在局域网内访问.正式环境部署的话比较安全,而且静态文件的处理方式会比较友好.nginx作为服务器的最前端,负责接收client的所有请求,静态请求由nginx自己处理,非静态请求通过uwsgi传递给django,由django来进行处理. 准备:1  一个django项目,能用runserver启动: 2 服务器基础环境,python2.7+uwsgi:使用pip install uwsgi安装,nignx

dockerfile+ubuntu+nginx搭建web环境

准备目录 [[email protected] ~]# mkdir /usr/local/dockerfile1 该目录下准备Dockerfile文件 1 FROM ubuntu 2 MAINTAINER xbf 3 RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list 4 RUN apt-get update 5 RUN apt-get install -y nginx 6 COPY inde

Debian系统 + XFCE桌面初识,基础环境搭建

从大二2016年接触Linux系统到现在2018年大四开学,本人对Linux有了入门级的了解.现在有幸分享个人的Linux下的习惯配置,具体操作可能阐述得比较粗糙. 在图形化界面进行配置操作,十分简便舒心. Linux发行版:Debian9.5(Stretch) 桌面Sesion:XFCE4 我们步步为营,循序渐进,慢慢来. 一.源source list /etc/apt下的source.list,是apt-get命令取得软件包信息和实体的在线源. 使用网易的源,列举如下: deb http:/

HHvm Apache 2.4 Nginx建站环境搭建方法安装运行WordPress博客

HHvm Apache 2.4 Nginx建站环境搭建方法安装运行WordPress博客 VPS主机   2014年06月02日 17:20 评论» 文章目录 Debian上安装 CentOS上安装 Ubuntu上安装 装Wordpress HHvm安装小结 HHVM是一个强大的可以用于替代PHP的建站环境,出自Facebook团队,它是一个PHP的JIT(Just-In- Time)编译器,同时具有产生快速代码和即时编译的优点.实践证明HHVM可以明显地提升PHP执行速度,节省大量的服务器资源