本帖最后由 Yuhuangs 于 2015-6-1 17:48 编辑
Django 是Python的一个Web开发框架!
uWSGI 是用来解析Django的一个服务!
1.首先我们先做一些环境搭建的准备!
#yum groupinstall "Development Tools" -y //安装一些必要的组件
#yum install -y openssl openssl-devel wget sqlite-devel zlib zlib-devel //安装open-ssl 否则pip无法下载东西、sqlite-devel 不安 装启动不了Django
#wget https://bootstrap.pypa.io/ez_setup.py -O - | python3 //安装ez_setup.py 否则无法安装pip动不了django
2.安装顺序 Python3->pip->pip安装uwsgi-> pip安装Django
~~~~~~~~~~~~~~~~~~Python3安装
#.configure --prefix=/usr/local/python3 //源码安装Python3到/usr/local/python3
#ln -s /usr/local/python3/bin/python3 /usr/bin/python3 //做一个连接方便使用python命令
~~~~~~~~~~~~~~~~~~Pip安装
#python3 setup.py install //即可安装完毕
#ln -s /usr/local/python3/bin/pip3 /usr/bin/pip //做一个连接方便使用pip命令
如果出现错误如:
ImportError: No module named setuptools //代表了没有安装ez_setup.py
#wget https://bootstrap.pypa.io/ez_setup.py -O - | python3 //用此命令解决
如果以上命令错误,那就只能下载ez_setup.py的源码安装了!
~~~~~~~~~~~~~~~~~~uwsgi安装
#pip install uwsgi //安装uwsgi
如果出现ImportError: cannot import name 'HTTPSHandler' 错误,没安装openssl openssl-devel,认命吧安装后重新编译python3
测试uwsgi
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return ["Hello World"]
#wsgi --http :8000 --wsgi-file test.py //curl一下返回200就成功了
~~~~~~~~~~~~~~~~~~Django安装
#pip install django //安装django
如果出现ImportError: cannot import name 'HTTPSHandler' 错误,没安装openssl openssl-devel,认命吧安装后重新编译python3
#ln -s /usr/local/python3/bin/django-admin /usr/bin/django-admin //做一个链接方便使用
#django-admin startproject mysite //创建一个django
#python3 manage.py runserver 0.0.0.0:8000 //测试django //如果这一步起不来 提示sqllite有问题 就安装
yum install sqlite-devel //然后重新安装编译安装python3
测试django和uwsgi 结合
切换到刚刚创建的mysite工程下
#uwsgi --http :8000 --module mysite.wsgi //浏览器查看,成功就成功了。失败查错呗
~~~~~~~~~~~~~~~~~~安装nginx省略
省略过程自己安装,最好源码
~~~~~~~~~~~~~~~~~~django+nginx+uwsgi 结合
配置nginx
#vim /usr/local/nginx/conf/nginx.conf
--------------------------------------------------nginx.conf-------------------------------------------------------
user nobody nobody; #使用那个用户和组来启动子进程,主进程必须是root,原因是1~1023端口只有root能监听
worker_processes 2; #开启几个子进程
error_log /usr/local/nginx/logs/nginx_error.log crit; #开启错误日志,crit 是错误日志级别
#debug | info | notice | warn | error | crit 最详细->最简洁
pid /usr/local/nginx/logs/nginx.pid; #进程文件
worker_rlimit_nofile 51200; #打开的文件描述符的个数
events
{
use epoll; #事件模型 ,默认使用epoll
#参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。
worker_connections 6000; #每一个worker可以支持多少链接,如果太大就不行了。6000正好
}
http
{
include mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 3526;
server_names_hash_max_size 4096;
log_format combined_realip '$remote_addr|$http_x_forwarded_for|[$time_local]|'
'$host|"$request_uri"|$status|'
'"$http_referer"|"$http_user_agent"'; #日志的格式, 用 '|' 分割
sendfile on;
tcp_nopush on;
keepalive_timeout 30;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
connection_pool_size 256;
client_header_buffer_size 1k;
large_client_header_buffers 8 4k;
request_pool_size 4k;
output_buffers 4 32k;
postpone_output 1460;
client_max_body_size 10m;
client_body_buffer_size 256k;
client_body_temp_path /usr/local/nginx/client_body_temp;
proxy_temp_path /usr/local/nginx/proxy_temp;
fastcgi_temp_path /usr/local/nginx/fastcgi_temp;
fastcgi_intercept_errors on;
tcp_nodelay on;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 8k;
gzip_comp_level 5;
gzip_http_version 1.1;
gzip_types text/plain application/x-javascript text/css text/htm application/xml;
include vhosts/*.conf;
#限制IP登录 可以直接卸载这个文件中,当然也可以单独写一个文件,我们写在文件中
}
--------------------------------------------------------------------------------------------------------------------
#mkdir /usr/local/nginx/conf/vhosts //创建目录
#vim /usr/local/nginx/conf/vhosts/django.conf
------------------------------------------------django.conf---------------------------------------------------
server {
listen 80 default;
server_name aaa.com;
location / {
uwsgi_pass unix:///tmp/mysite.sock;#这个文件一定要和uwsgi配置中的sock地址一致
include /usr/local/nginx/conf/uwsgi_params;
#这个文件我也不知道干嘛的,不过可以用find 来查找
}
}
-----------------------------------------------------uwsgi配置---------------------------------------------------
[uwsgi]
chdir = /data/www/mysite/
#网站目录
module = mysite.wsgi
chmod-socket = 644
#sock文件权限
uid = nobody #sock uid
gid = nobody
#sock gid
master = true
processes = 5
#开启多少线程
socket = /tmp/mysite.sock
#sock文件所在地,重要
vacuum = true
#uwsgi --ini test.ini //测试并运行
Django 是Python的一个Web开发框架!
uWSGI 是用来解析Django的一个服务!
1.首先我们先做一些环境搭建的准备!
#yum groupinstall "Development Tools" -y //安装一些必要的组件
#yum install -y openssl openssl-devel wget sqlite-devel zlib zlib-devel //安装open-ssl 否则pip无法下载东西、sqlite-devel 不安 装启动不了Django
#wget https://bootstrap.pypa.io/ez_setup.py -O - | python3 //安装ez_setup.py 否则无法安装pip动不了django
2.安装顺序 Python3->pip->pip安装uwsgi-> pip安装Django
~~~~~~~~~~~~~~~~~~Python3安装
#.configure --prefix=/usr/local/python3 //源码安装Python3到/usr/local/python3
#ln -s /usr/local/python3/bin/python3 /usr/bin/python3 //做一个连接方便使用python命令
~~~~~~~~~~~~~~~~~~Pip安装
#python3 setup.py install //即可安装完毕
#ln -s /usr/local/python3/bin/pip3 /usr/bin/pip //做一个连接方便使用pip命令
如果出现错误如:
ImportError: No module named setuptools //代表了没有安装ez_setup.py
#wget https://bootstrap.pypa.io/ez_setup.py -O - | python3 //用此命令解决
如果以上命令错误,那就只能下载ez_setup.py的源码安装了!
~~~~~~~~~~~~~~~~~~uwsgi安装
#pip install uwsgi //安装uwsgi
如果出现ImportError: cannot import name 'HTTPSHandler' 错误,没安装openssl openssl-devel,认命吧安装后重新编译python3
测试uwsgi
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return ["Hello World"]
#wsgi --http :8000 --wsgi-file test.py //curl一下返回200就成功了
~~~~~~~~~~~~~~~~~~Django安装
#pip install django //安装django
如果出现ImportError: cannot import name 'HTTPSHandler' 错误,没安装openssl openssl-devel,认命吧安装后重新编译python3
#ln -s /usr/local/python3/bin/django-admin /usr/bin/django-admin //做一个链接方便使用
#django-admin startproject mysite //创建一个django
#python3 manage.py runserver 0.0.0.0:8000 //测试django //如果这一步起不来 提示sqllite有问题 就安装
yum install sqlite-devel //然后重新安装编译安装python3
测试django和uwsgi 结合
切换到刚刚创建的mysite工程下
#uwsgi --http :8000 --module mysite.wsgi //浏览器查看,成功就成功了。失败查错呗
~~~~~~~~~~~~~~~~~~安装nginx省略
省略过程自己安装,最好源码
~~~~~~~~~~~~~~~~~~django+nginx+uwsgi 结合
配置nginx
#vim /usr/local/nginx/conf/nginx.conf
--------------------------------------------------nginx.conf-------------------------------------------------------
user nobody nobody; #使用那个用户和组来启动子进程,主进程必须是root,原因是1~1023端口只有root能监听
worker_processes 2; #开启几个子进程
error_log /usr/local/nginx/logs/nginx_error.log crit; #开启错误日志,crit 是错误日志级别
#debug | info | notice | warn | error | crit 最详细->最简洁
pid /usr/local/nginx/logs/nginx.pid; #进程文件
worker_rlimit_nofile 51200; #打开的文件描述符的个数
events
{
use epoll; #事件模型 ,默认使用epoll
#参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。
worker_connections 6000; #每一个worker可以支持多少链接,如果太大就不行了。6000正好
}
http
{
include mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 3526;
server_names_hash_max_size 4096;
log_format combined_realip '$remote_addr|$http_x_forwarded_for|[$time_local]|'
'$host|"$request_uri"|$status|'
'"$http_referer"|"$http_user_agent"'; #日志的格式, 用 '|' 分割
sendfile on;
tcp_nopush on;
keepalive_timeout 30;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
connection_pool_size 256;
client_header_buffer_size 1k;
large_client_header_buffers 8 4k;
request_pool_size 4k;
output_buffers 4 32k;
postpone_output 1460;
client_max_body_size 10m;
client_body_buffer_size 256k;
client_body_temp_path /usr/local/nginx/client_body_temp;
proxy_temp_path /usr/local/nginx/proxy_temp;
fastcgi_temp_path /usr/local/nginx/fastcgi_temp;
fastcgi_intercept_errors on;
tcp_nodelay on;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 8k;
gzip_comp_level 5;
gzip_http_version 1.1;
gzip_types text/plain application/x-javascript text/css text/htm application/xml;
include vhosts/*.conf;
#限制IP登录 可以直接卸载这个文件中,当然也可以单独写一个文件,我们写在文件中
}
--------------------------------------------------------------------------------------------------------------------
#mkdir /usr/local/nginx/conf/vhosts //创建目录
#vim /usr/local/nginx/conf/vhosts/django.conf
------------------------------------------------django.conf---------------------------------------------------
server {
listen 80 default;
server_name aaa.com;
location / {
uwsgi_pass unix:///tmp/mysite.sock;#这个文件一定要和uwsgi配置中的sock地址一致
include /usr/local/nginx/conf/uwsgi_params;
#这个文件我也不知道干嘛的,不过可以用find 来查找
}
}
-----------------------------------------------------uwsgi配置---------------------------------------------------
[uwsgi]
chdir = /data/www/mysite/
#网站目录
module = mysite.wsgi
chmod-socket = 644
#sock文件权限
uid = nobody #sock uid
gid = nobody
#sock gid
master = true
processes = 5
#开启多少线程
socket = /tmp/mysite.sock
#sock文件所在地,重要
vacuum = true
#uwsgi --ini test.ini //测试并运行
编辑回复