ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Centos7.6下Nginx+Uwsgi+Django部署

2019-11-04 21:02:15  阅读:266  来源: 互联网

标签:log tar nginx cd Nginx Uwsgi local Centos7.6 usr


                  本人服务器是使用腾讯云Centos7.6.以下配置均在Root权限下操作。

1. python3

  1.1 安装依赖包 

sudo yum -y groupinstall "Development tools"
sudo yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel

  1.2 下载Python3安装包

wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0a1.tar.xz

  1.3 解压

tar -xvJf  Python-3.7.0a1.tar.xz

  1.4 配置编辑参数

cd Python-3.7.0a1
./configure --prefix=/usr/local/bin/python3

  1.5 编译和安装

make
make install

 

2. 安装虚拟环境

  2.1 安装虚拟环境

pip3 install virtualenv 
pip3 install virtualenvwrapper

  2.2 创建存放虚拟环境的文件夹

mkdir /root/.virtualenvs

  2.3 更改.bashrc配置文件

vim ~/.bashrc
find / -name virtualenvwrapper.sh # 查看路径
VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python # 指定virtualenvwrapper执行的python版本
export WORKON_HOME=/root/.virtualenvs    # 虚拟环境存放目录
source /usr/local/bin/virtualenvwrapper.sh    # virtualenvwrapper.sh所在目录

  2.4 激活更新配置

source ~/.bashrc

  2.5 虚拟环境基本命令

mkvirtualenv  创建虚拟环境
deactivate  退出虚拟环境
workon  查看虚拟环境
workon 虚拟环境名   进入虚拟环境

 

3. 安装PCRE库

  3.1 进入local文件夹

cd /usr/local/

  3.2 下载安装包

wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.33/pcre-8.33.tar.gz

  3.3 解压安装包

tar -zxvf pcre-8.33.tar.gz

  3.4 配置编辑参数

cd pcre-8.33
./configure

  3.5 编译安装

make && make install

  3.6 如果报错:configure: error: You need a C++ compiler for C++ support

解决办法:
yum install -y gcc gcc-c++

 

 4. 安装SSL库

  4.1 进入到local文件夹

cd /usr/local/

  4.2 下载安装包

wget http://www.openssl.org/source/openssl-1.0.1j.tar.gz

  4.3 解压安装包

tar -zxvf openssl-1.0.1j.tar.gz

  4.4 配置编辑参数

cd openssl-1.0.1j
./config

  4.5 编译安装

make && make install

 

5. 安装Zlib库

  5.1 进入local文件夹

cd /usr/local/

  5.2 下载安装包

wget http://zlib.net/zlib-1.2.11.tar.gz

  5.3 解压安装包

tar -zxvf zlib-1.2.11.tar.gz

  5.4 配置编辑参数

cd zlib-1.2.11
./configure

  5.5 编译安装

make && make install

 

6. 安装Nginx

  6.1 进入local文件夹

cd /usr/local/

  6.2 下载安装包

wget http://nginx.org/download/nginx-1.8.0.tar.gz

  6.3 解压安装包

tar -zxvf nginx-1.8.0.tar.gz

  6.4 配置编辑参数

cd nginx-1.8.0
./configure --user=nobody --group=nobody --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module --with-http_sub_module --with-http_ssl_module

  6.5 编译安装

make && make install

  6.6 启动测试

/usr/local/nginx/sbin/nginx

  6.7 设置开机自启

vi /etc/rc.local
/usr/local/nginx/sbin/nginx   # 增加到最后一行

  6.8 可能遇到的错误

错误1:
./configure: error: SSL modules require the OpenSSL library.
解决办法:
yum -y install openssl openssl-devel

错误2:
./configure: error: the HTTP gzip module requires the zlib library
解决办法:
在–prefix后面接以下命令:
--with-pcre=/usr/local/pcre-8.36 指的是pcre-8.36 的源码路径。--with-zlib=/usr/local/zlib-1.2.8 指的是zlib-1.2.8 的源码路径。

错误3:
nginx: [emerg] still could not bind()
解决办法:
cd /usr/local/nginx/sbin/
./nginx -s reload

 

7. 安装Uwsgi

  7.1 安装

pip3 install uwsgi

 

8. 安装Django(在虚拟环境下)

  8.1 安装

pip3 install django==1.11.11

 

9. 创建Django项目(在虚拟环境下)

  9.1 创建项目

 django-admin startproject 工程名称

  9.2 创建子应用

首先cd到工程目录下
python manage.py startapp 子应用名称

  9.3 创建视图函数

cd到子应用下
vim views.py

添加到py文件中
from django.http import HttpResponse

def index(request):
    """
    index视图
    :param request: 包含了请求信息的请求对象
    :return: 响应对象
    """
    return HttpResponse("hello the world!")

  9.4 创建路由

vim meiduo/users/urls # 子路由

from django.conf.urls import url
from . import views

# urlpatterns是被django自动识别的路由列表变量
urlpatterns = [
    # 每个路由信息都需要使用url函数来构造
    # url(路径, 视图)
    url(r'^index/$', views.index),
]



vim meiduo/urls   # 主路由 


from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include('users.urls')),
]

  9.5 配置settings文件  

cd 项目目录/项目名/
1. 注册子应用 我的子应用名是users INSTALLED_APPS = [ 'users.apps.UsersConfig', ] 2. 设置HOST ALLOWED_HOSTS = ['*']

  9.6 配置Nginx文件

vim /use/local/nginx/conf/nginx.conf

user  root;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
# 设置log日志文件 error_log /var/log/nginx/nginx_error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/nginx_access.log; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name 127.0.0.1; root /home/python/Desktop/kaiyuan/static;
#charset koi8-r; #access_log logs/host.access.log main; # 设置首页访问路径 location =/ { root /home/python/Desktop/kaiyuan/static/;
index index.html index.htm; } location =/index.html{ index index.html; } # 设置静态页面访问路径 location /static{ alias /home/python/Desktop/kaiyuan/static;
autoindex on; } #设置Django项目访问路径和uwsgi location / { include uwsgi_params; uwsgi_pass 127.0.0.1:9090; # 这里要和Uwsgi写的一致 uwsgi_param UWSGI_SCRIPT kaiyuan.wsgi;
uwsgi_param UWSGI_CHDIR /home/python/Desktop/kaiyuan;
} }

  9.7 配置Uwsgi文件

[uwsgi]
# 用于和Nginx通讯
socket = 127.0.0.1:9090
# Django项目根目录
chdir = /home/python/Desktop/kaiyuan
# Django项目wsgi文件
module = meiduo.wsgi
# 启动主进程来管理其他进程,其他的uwsgi进程都是master的子进程
master = true
# 当服务器退出的时候自动删除unix socket文件和pid文件。
vacuum = true
# 指定pid文件
pidfile = /home/python/Desktop/kaiyuan/uwsgi.pid
# 日志 daemonize = /home/python/Desktop/kaiyuan/uwsgi.log
# 自动加载 py-autoreload = 1

  9.8 重启Nginx和Uwsgi

重启Nginx
cd /usr/local/nginx/sbin/
./nginx -s reload  # 重启

重启Uwsgi
cd /home/python/Desktop/kaiyuan/   # cd到自己的配置文件目录
uwsgi --ini uwsgi.ini

 

 

标签:log,tar,nginx,cd,Nginx,Uwsgi,local,Centos7.6,usr
来源: https://www.cnblogs.com/yinbohang/p/11794836.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有