12345678910111213141516[root@localhost opsdev]# nginx -v
Tengine version: Tengine/2.0.3 (nginx/1.4.7)
[root@localhost opsdev]# cat /etc/redhat-release
CentOS release 6.4 (Final)
[root@localhost opsdev]# uwsgi -v
uwsgi: option requires an argument -- 'v'
getopt_long() error
[root@localhost opsdev]# uwsgi --version
2.0.9
[root@localhost opsdev]# django -v
-bash: django: command not found
[root@localhost opsdev]# python -c "import django;print (django.get_version())"
1.7.2
[root@localhost opsdev]#
[root@localhost opsdev]# python -V
Python 2.7.6
12345[root@localhost tmp]# yum install pcre pcre-devel -y
[root@localhost tmp]# tar xf tengine-2.0.3.tar.gz
[root@localhost tmp]# cd tengine-2.0.3
[root@localhost tmp]# ./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_stub_status_module --with-pcre --with-file-aio --with-http_flv_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi
[root@localhost tmp]# make && make install
-
相关选项
-
12345678910111213141516171819202122
--prefix=/usr/local/nginx
安装目录
--conf-path=/etc/nginx/nginx.conf
配置文件存放位置
--error-log-path=/var/log/nginx/error.log
错误日志存放位置
--http-log-path=/var/log/nginx/access.log
访问日志存放的位置
--with-http_ssl_module
启用SSL认证模块
--with-http_flv_module
启用流媒体模块
--with-http_gzip_static_module
启用静态页面压缩
--http-client-body-temp-path=/var/tmp/nginx/client/
HTTP包体存放的临时目录
--http-proxy-temp-path=/var/tmp/nginx/proxy/
定义从后端服务器接收的临时文件的存放路径,可以为临时文件路径定义至多三层子目录的目录树
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/
接收到FastCGI服务器数据,临时存放于本地某目录
--with-pcre
启动正则表达式rewrite模块
-
添加nginx二进制路径到PATH
123456[root@localhost tengine-2.0.3]# vim /etc/profile.d/nginx.sh
[root@localhost tengine-2.0.3]# cat /etc/profile.d/nginx.sh
export PATH=$PATH:/usr/local/nginx/sbin/
[root@localhost tengine-2.0.3]# source /etc/profile.d/nginx.sh
[root@localhost tengine-2.0.3]# nginx -v
Tengine version: Tengine/2.0.3 (nginx/1.4.7)
-
导出头文件
12[root@localhost tengine-2.0.3]# ln -sv /usr/local/nginx/include/ /usr/include/nginx
`/usr/include/nginx' -> `/usr/local/nginx/include/'
-
为tengine提供Sysv服务脚本
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091#!/bin/sh
#
# nginx - this script starts and stops the nginx daemin
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /usr/local/nginx/conf/nginx.conf
# pidfile: /usr/local/nginx/logs/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/etc/nginx/nginx.conf"
lockfile=/var/lock/subsys/nginx
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
configtest || return $?
stop
start
}
reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac
-
把该脚本放到/etc/init.d目录下并赋予该脚本权限
12[root@localhost tmp]# mv nginx /etc/init.d/nginx
[root@localhost tmp]# chmod +x /etc/init.d/nginx
-
添加到开机启动项并启动服务
12345[root@localhost tmp]# chkconfig --add nginx
[root@localhost tmp]# chkconfig --level 35 nginx on
[root@localhost tmp]# chkconfig --list | grep nginx
nginx 0:off 1:off 2:off 3:on 4:off 5:on 6:off
[root@localhost tmp]#
-
启动服务
12345678[root@localhost init.d]# service nginx restart
the configuration file /etc/nginx/nginx.conf syntax is ok
configuration file /etc/nginx/nginx.conf test is successful
Stopping nginx: [ OK ]
Starting nginx: [ OK ]
[root@localhost init.d]# ss -tunlp | grep 80
tcp LISTEN 0 128 *:80 *:* users:(("nginx",7602,6),("nginx",7604,6))
[root@localhost init.d]#
123
commands = {name: 'django.core' for name in find_commands(__path__[0])}
^
SyntaxError: invalid syntax
-
我们这里安装python 2.7.5
123456789101112[root@localhost tmp]# wget --no-check-certificate
[root@localhost tmp]# tar -xzvf Python-2.7.5.tgz
[root@localhost tmp]# cd Python-2.7.5
[root@localhost Python-2.7.5]# ./configure
[root@localhost Python-2.7.5]# make && make install
[root@localhost Python-2.7.5]# mv /usr/bin/python /usr/bin/python.bak
[root@localhost Python-2.7.5]# ln -s /usr/local/bin/python2.7 /usr/bin/python
-
修复yum,修改后/usr/bin/yum第一行如下所示
123[root@localhost tmp]# vim /usr/bin/yum
#!/usr/bin/python2.6
-
安装pip(如果你更新python之前安装过pip,这个时候多半是不能用的,建议从官网从新下载安装)
1234Traceback (most recent call last):
File "/usr/bin/pelican-quickstart", line 5, in <
module
>
from pkg_resources import load_entry_pointImportError:
No module named pkg_resources
1重新安装setuptools和pip即可解决
-
安装django
1[root@localhost ~]# pip install django
-
创建项目(在nginx定义的目录下面)
1[root@localhost www]# django-admin startproject opsdev
-
安装uwsgi
1[root@localhost opsdev]# pip install uwsgi
-
测试
1234#test.py
def application(env,start_response):
start_response('200 OK',[('Content-Type','text/html')])
return ["hello world"]
-
运行并查看结果
1uwsgi:uwsgi --http :9090 --wsgi-file test.py
-
创建django_wsgi.py文件(和mange.py同级目录)
123456789101112131415161718192021222324[root@localhost opsdev]# ls
db.sqlite3 django_wsgi.py manage.py opsdev
django_wsgi.pyc media static
[root@localhost opsdev]# cat django_wsgi.py
#!/usr/bin/env python
# coding: utf-8
import os
import sys
# 将系统的编码设置为UTF8
#reload(sys)
#sys.setdefaultencoding('utf8')
#注意:"mysite.settings" 和项目文件夹对应。
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "opsdev.settings")
#from django.core.handlers.wsgi import WSGIHandler
#application = WSGIHandler()
# 上面两行测试不对,然后从stackflow上面看到了下面两行,测试ok
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
[root@localhost opsdev]#
-
创建django_socket.xml文件(和mange.py同级目录)
123456789101112[root@localhost opsdev]# cat django_socket.xml
<
uwsgi
>
<
socket
>127.0.0.1:8077</
socket
>
<!-- 和nginx中定义的要一致 -->
<
chdir
>/www/opsdev</
chdir
>
<!-- 你django的项目目录 -->
<
module
>django_wsgi</
module
>
<!-- 名称为刚才上面定义的py文件名 -->
<
processes
>4</
processes
>
<!-- 进程数 -->
<
daemonize
>/var/log/uwsgi.log</
daemonize
>
</
uwsgi
>
[root@localhost opsdev]# ls
db.sqlite3 django_wsgi.py manage.py opsdev
django_socket.xml django_wsgi.pyc media static
[root@localhost opsdev]#
-
验证是否能够正常访问
12345[root@localhost opsdev]# uwsgi --http :8000 --chdir /www/opsdev/ --wsgi-file django_wsgi.py
*** Starting uWSGI 2.0.9 (64bit) on [Thu Jan 8 12:21:15 2015] ***
compiled with version: 4.4.7 20120313 (Red Hat 4.4.7-11) on 07 January 2015 23:29:52
os: Linux-2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013
nodename: localhost.localdomain
-
如果上面没有出错,就说明uwsgi和django结合完毕
123456789101112
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8077;
}
location /static/ {
alias /www/opsdev/static/;
index index.html index.htm;
}
location /media/ {
alias /www/opsdev/media/;
}
-
启动uwsgi
123[root@localhost opsdev]# uwsgi -x django_socket.xml
[uWSGI] parsing config file django_socket.xml
[root@localhost opsdev]#
-
启动nginx
123[root@localhost opsdev]# service nginx start
Starting nginx: [ OK ]
[root@localhost opsdev]#
-
查看进程
1234[root@localhost opsdev]# ss -tunlp
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 100 127.0.0.1:8077 *:* users:(("uwsgi",25703,3),("uwsgi",25704,3),("uwsgi",25705,3),("uwsgi",25706,3))
tcp LISTEN 0 128 *:80 *:* users:(("nginx",26427,6),("nginx",26429,6))
-
查看结果
-
-
uwsgi: invalid option -- 'x' getopt_long() error
-
“The translation infrastructure cannot be initialized before the ”
django.core.exceptions.AppRegistryNotReady: The translation infrastructure cannot be initialized before the apps registry is ready. Check that you don’t make non-lazy gettext calls at import time.
1234567原来:
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
改成:
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
重启一下uwsgi。
-
no python application found, check your startup logs for errors
GET / => generated 21 bytes in 0 msecs (HTTP/1.1 500) 2 headers in 83 bytes (0switches on core 0)
1http://stackoverflow.com/questions/22148144/python-importerror-no-module-named-pkg-resources
1https://github.com/imelucifer/MyNote/blob/master/django/django%2Buwsgi%2Bnginx%2Bcentos%E9%83%A8%E7%BD%B2.md
1http://www.aaini.com/
相关推荐
Tengine+Lua+GM安装包 Tengine+Lua+GM安装包 Tengine+Lua+GM安装包 Tengine+Lua+GM安装包
随着互联网的快速发展,针对互联网开发的电商项目越来越来多,比如淘宝、京东等。对于这些网站来说,它们的页面上都有大量的图片需要加载。图片是网站中重要的展现内容,图片的展现力要高于文字,所以无论是PC、移动端...
实现图片自动伸缩功能(Tengine+Lua+GraphicsMagick)
使用Tengine+Lua+GM实现图片自动裁剪缩放下载资料
关于使用Tengine+Lua+GraphicsMagick实现图片自动裁剪缩放的开发文档。
最新tomcat7+nginx/tengine+memcached共享session的jar包2016年12月自己更新使用,更新的jar包解决了tomcat7下attribute报错的问题,理论Tomcat8以上版本可用,请自己测试。 asm-5.1.jar kryo-4.0.0.jar kryo-...
淘宝开源项目tengine介绍 一个基于nginx二次开发的项目。
一键安装Tengine服务器,TengineRPM(LTMP)构建高效、稳定、安全、易用的Web平台.让更多普罗大众站长们快速使用上Tengine服务器,让我们一起使用与大型的网站如淘宝网,天猫商城等相同Web服务器。Jimmyli推出以...
实时监控系统运行的进程和系统利用率(包扩CPU、内存、磁盘、网络等)信息。 react+tengine+uwsgi部署
LLNMP一键安装脚本 通过本脚本可一键自动编译安装 (Open)LiteSpeed + Nginx/Tengine + MySQL/MariaDB + PHP 支持系统: CentOS 5+, Debian 6+, Ubuntu 12+ 32bit/64bit 安装方法: ./install.sh 主页: 博客:
3-1+Tengine-边缘AI异构计算平台
Linux系统中搭建Tengine服务器需要的资源 1.tengine-2.2.0.tar.gz 2.pcre-8.39.tar.gz 3.siege-3.1.4.tar.gz siege是测试工具 以上资源都是源码,都需要make && make install
Tengine WAFF 基于tengine的防攻击模块,最初我尝试了mod-security,但有一个bug,在大并发的时候狂吃内存,直到拖垮应用,不后来转向ngx_lua_waf(感谢loveshell),并在此基础上做了改良,觉得效果不错,就推荐给...
淘宝基于Nginx高效稳定针对大访问请求的Tengine服务器快速搭建方法。 LTMP是用Linux Shell编写的可以为CentOS/RadHat、Debian/Ubuntu VPS(VDS)或独立主机安装LTMP(Nginx、Tengine、MySQL、PHP、phpMyAdmin)生产环境...
(阿里云负载均衡)或者 lvs+Tengine(nginx)+lua防护攻击(获取用户真实ip):线上正式使用,可以修改lua达到自己想要效果; 记得修改以下获取真实ip function getClientIp() IP = ngx.var....
tengine2.1.2所需的全部依赖,以及对应的tengine2.12包本身,包括zlib-1.2.8,pcre-8.38,openssl-1.0.2g,jemalloc-3.6.0
Tomcat + Redis +Tengine 实现session共享相关的依赖jar包;
Tengine安装使用和之前分享的LNMP有点类似,你可以参考官网的帮助文档在自己的VPS主机上安装Tengine,也可以直接由原有的Nignx平滑升级到Tengine,本篇文章就来分享一下如何在自己的VPS主机上快速搭建Tengine、MysqL...
开发者可以使用Tengine在主流框架模型和嵌入式操作系统间切换,还能异构调度平台里的各类硬件,充分利用硬件算力。 此外,Tengine还提供了常见AI应用算法,包括图像检测,人脸识别,语音识别等。Tengine同时还支持...
tengine 2.3.2 cygwin 编译,包含所有模块, 修正源码中很多在windows上编译报错的问题