1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Centos 6.5部署nginx+uwsgi+django

Centos 6.5部署nginx+uwsgi+django

时间:2022-05-14 21:34:39

相关推荐

Centos 6.5部署nginx+uwsgi+django

Centos 6.5部署nginx+uwsgi+django

一、安装python3,系统默认是python2.6

1、安装依赖软件 yum -y install sqlite-devel yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel 2、下载安装python3.6 wget /ftp/python/3.6.1/Python-3.6.1.tgz tar zxvf Python-3.6.1.tgz cd Python-3.6.1 ./configure --prefix=/usr/local/python3 make && make install 3、创建python及pip命令软链接 ln -s /usr/local/python3/bin/python3 /usr/bin/python3 ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3 4、测试 [root@localhost ~]# python3 Python 3.6.1 (default, Dec 21 , 16:14:49) [GCC 4.4.7 0313 (Red Hat 4.4.7-18)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> print('test_haha'); test_haha

二、安装django

1、访问链接下载最新django版本,/download/ 2、安装django依赖组件pytz pip3 install pytz-.3-py2.py3-none-any.w 3、安装django tar zxvf Django-2.0.tar.gz cd Django-2.0 python3 setup.py install 4、测试 上传django项目 cd django_project python3 manage.py runserver 0.0.0.0:80 访问http://127.0.0.1 可以访问 三、安装uwsgi web网关 1、下载安装uwsgi wget http://projects.unbit.it/downloads/uwsgi-2.0.1.tar.gz tar zxvf uwsgi-2.0.1.tar.gz cd uwsgi-2.0.1 python3 uwsgiconfig.py --build python3 uwsgiconfig.py --clean cp -R /root/uwsgi-2.0.1 /usr/local/uwsgi ln -s /usr/local/uwsgi/uwsgi /usr/bin/uwsgi 2、启动,测试 创建测试文件 # vim test.py def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return [b"Hello World"] 启动 /usr/local/uwsgi/uwsgi --http :9090 --wsgi-file /root/test.py 访问http://ip:9090 可以访问成功 3、uwsgi和django结合 uwsgi --http :9090 --chdir /home/code/Ticket_system --wsgi-file Ticket_system/wsgi.py --master --processes 4 --threads 2 --stats 127.0.0.1:9192 访问http:ip:9090 可以访问成功 #如果在访问django项目时静态文件加载失败可以先忽略,在nginx配置中会指定静态文件路径,配置后可以正常访问 ps: --chdir /home/code/Ticket_system django项目目录 http : 协议类型和端口号processes : 开启的进程数量workers : 开启的进程数量,等同于processes(官网的说法是spawn the specified number ofworkers / processes)chdir : 指定运行目录(chdir to specified directory before apps loading)wsgi-file : 载入wsgi-file(load .wsgi file)stats : 在指定的地址上,开启状态服务(enable the stats server on the specifiedaddress) threads : 运行线程。由于GIL的存在,我觉得这个真心没啥用。(run each worker in prethreadedmode with the specified number of threads)master : 允许主进程存在(enable master process)daemonize : 使进程在后台运行,并将日志打到指定的日志文件或者udp服务器(daemonize uWSGI)。实际上最常用的,还是把运行记录输出到一个本地文件上。pidfile : 指定pid文件的位置,记录主进程的pid号。vacuum : 当服务器退出的时候自动清理环境,删除unix socket文件和pid文件(try to remove all of the generated file/sockets)注意:–wsgi-file后面跟的是相对目录 4、uwsgi有两种启动方式,一种通过端口即上边这种方式,另一种通过配置.ini文件启动即下边用到的方式

四、安装nginx

1、下载安装依赖第三方软件pcre wget http://jaist./project/pcre/pcre/8.34/pcre-8.34.tar.bz2 tar jxvf pcre-8.34.tar.bz2 cd pcre-8.34 ./configure --enable-utf8 make && make install 2、下载安装依赖第三方软件openssl 下载openssl-1.0.2h.tar.gz tar zxvf openssl-1.0.2h.tar.gz 3、下载安装nginx nginx-1.9.9.tar.gz tar zxvf nginx-1.9.9.tar.gz cd nginx-1.9.9 ./configure --prefix=/usr/local/nginx --with-pcre --with-http_stub_status_module --with-http_ssl_module --with-openssl=/root/openssl-1.0.2h --with-http_gzip_static_module --with-http_sub_module --with-cc=/usr/bin/gcc make && makeinstall 4、新建www用户 useradd -s /sbin/nologin -M www 5、修改配置文件 备份nginx配置文件 cd /usr/local/nginx/conf cp -f nginx.conf nginx.conf_bak vim nginx.conf user www; #修改启动用户为www worker_processes 4;#启动4个进程,根据实际需求配置 6、启动nginx /usr/local/nginx/sbin/nginx 访问测试http://ip 默认80端口,可以访问

五、nginx+uwsgi+django三者结合

1、django项目中/根目录下创建uwsgi.ini # vim uwsgi.ini [uwsgi] #uwsgi启动端口 socket = 127.0.0.1:9090 #django项目目录 chdir=/home/code/Ticket_system module=Ticket_system.wsgi master = true processes=2 threads=2 max-requests=2000 chmod-socket=664 vacuum=true # 日志路径 daemonize = /home/code/Ticket_system/logs/uwsgi.log 2、配置nginx # vim /usr/local/nginx/conf/nginx.conf server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; #指定静态文件路径,避免django项目中静态文件无法加载 location /static {alias /home/code/Ticket_system/app01/static; } location / { #新增加两个uwsgi配置 include uwsgi_params; uwsgi_pass 127.0.0.1:9090; root html; index index.html index.htm; } .......#下边必须操作,否则后台管理admin的静态资源会无法访问1)第一种方法:找到django-admin静态文件的目录 #python3 >>>importdjango >>>django.__file__ '/usr/local/python3/lib/python3.6/site-packages/Django-2.0.4-py3.6.egg/django/__init__.py' 找到根目录之后我需要的绝对路径为(不同版本可能不一样,根据自己实际情况来) /usr/local/python3/lib/python3.6/site-packages/Django-2.0.4-py3.6.egg/django/contrib/admin/static 把static 拷贝到自己定义的static目录,一般是在项目的根目录下,或者应用的根目录下, 2)第二种方法,建立自己的静态文件夹 修改settings,建立自己的文件夹 STATIC_ROOT=“/home/code/Ticket_system/static" 运行下面命令把相关文件copy到这个目录 pythonmanage.pycollectstatic3、启动uwsgi uwsgi --ini /home/code/Ticket_system/uwsgi.ini ps:如果启动时报错uwsgi: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory 解决:

cd /lib64

ln -s libpcre.so.0.0.1 libpcre.so.1

4、启动nginx(如果之前启动了kill停掉再启动) /usr/local/nginx/sbin/nginx 5、访问成功 ps: 遇到的问题访问时报错,/usr/local/nginx/logs/error.log /12/25 17:06:52 [error] 2086#0: *12 upstream prematurely closed connection while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1", upstream: "uwsgi://127.0.0.1:9090", host: "192.168.199.212" 先尝试把djnago项目目录加权限 chown www:www /home/code/Ticket_system 发现还是不行 后来把项目的上级目录也加www权限 chown www:www /home/code就可以了 --end--

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。