how to install python3+django on centos6 or 7

友情提示:如果你在搭建python3环境的过程中碰到以下问题,换台服务器重新来吧,真的。

1. /usr/local/python3.6.0/bin/python3.6: error while loading shared libraries: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory

解决 echo "/usr/local/python3.6.0/lib/" >> /etc/ld.so.conf  && /sbin/ldconfig

2. ModuleNotFoundError: No module named '_sqlite3'

这个搞了大半天没搞出来,比如安装sqlite-devel啊,重新去下载编译sqlite,换系统啊等等,直到后面去修改setup.py才解决这个模块问题

vim /path/to/Python-$version/setup.py 

        sqlite_incdir = sqlite_libdir = '/usr/local/sqlite/include'   //替换None

        sqlite_inc_paths = [ '/usr/local/sqlite',    //sqlite需要自己下载安装放到/usr/local/下

3. 要命的问题来了。。。

sqlite3.NotSupportedError: URIs not supported

django.db.utils.NotSupportedError: URIs not supported

我能找到解决的资料很少,直接卡在这里了。。。

另外,为了不扰乱原来的环境建议使用虚拟环境,可参考我的博文 python venv模块

开始分享,如何在centos7.3上安装python3.6.4+django2.0

这里以python3.6.4来讲解,其他版本,只要python版本大于2.7,都是一样的

首先安装依赖,没事,到时候缺啥再YUM安装。

yum install sqlite-devel zlib-devel openssl-devel -y

下载Python

wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4rc1.tar.xz

可到 https://www.python.org/ftp/python/ 自己选择python的版本

xz -d Python-3.6.4rc1.tar.xz && tar xvf Python-3.6.4rc1.tar && cd Python-3.6.4rc1/

./configure  && make && make install

检验python3是否安装正确

python3 -V

安装django

pip3 install django   //PS:可以指定版本  pip3 install django==2.0

了解一下django和python的版本对应表

Django version

Python versions

1.8

2.7, 3.2 (until the end of 2016), 3.3, 3.4, 3.5

1.9, 1.10

2.7, 3.4, 3.5

1.11

2.7, 3.4, 3.5, 3.6

2.0

3.4, 3.5, 3.6

2.1

3.5, 3.6, 3.7

 

你就知道你应该安装什么版本的django了吧。。

安装完django,我们来创建一个项目

django-admin startproject mysite

项目结构

mysite
├── db.sqlite3
├── manage.py
└── mysite
    ├── __init__.py
    ├── __pycache__
    │   ├── __init__.cpython-36.pyc
    │   ├── settings.cpython-36.pyc
    │   ├── urls.cpython-36.pyc
    │   └── wsgi.cpython-36.pyc
    ├── settings.py
    ├── urls.py
    └── wsgi.py

manage.py      ----- Django项目里面的工具,通过它可以调用django shell和数据库等。
settings.py    ----- 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量,这里的设置会作用于整个项目。
urls.py        ----- 负责根据用户输入的URL路径去映射到项目中对应的应用程序。 其实在实际生产中,一般项目中的每个应用
                     也都会建立一个 urls.py 文件;项目的 urls.py 文件中一般定义 一个url 地址会 匹配到某个应用的urls.py,
                     每个应用中的 urls.py 文件内,定义具体自己应用下的地址和 views 中函数的映射关系

终于到了最后一步了,启动!

先允许所有主机能访问

 vim /opt/mysite/mysite/settings.py

ALLOWED_HOSTS = ['*']

再启动的时候开放所有地址

python3 manage.py runserver 0:8000  

访问http://ip:8000 看见一个小火箭(2.0版本的),你就成功搭建了python3+django了。

如果你还不能访问,无非就是防火墙问题了,那没关系,我也不推荐你这样做!!

首先呢,我们还是允许所有访问ALLOWED_HOSTS = ['*']  //也可限制

但是启动的时候 python3 manage.py runserver  我们只监听本地!//建议监听本地及内网

netstat -ntlup|grep 8000
tcp        0      0 127.0.0.1:8000          0.0.0.0:*               LISTEN      3929/python3

OK,我们使用NGINX来做反向代理,直接用域名来访问django项目

nginx安装就不贴了,咱贴个配置。

upstream dj.1.com
  {
   server 127.0.0.1:8000;
  }

server
  {
        listen  80;
        server_name dj.1.com;
        location / {
                proxy_pass http://dj.1.com;
                proxy_http_version 1.1;
                proxy_set_header Connection "";
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP        $remote_addr;
                proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
      error_log  /data/wwwlogs/dj.1.com.proxy.err;
      access_log /data/wwwlogs/dj.1.com.proxy.log access;
   }

解析。。访问http://dj.1.com  欧了~

可python3 manage.py runserver  老放着在前台也不好,何况要是程序异常退出了咋办。

幸好有supervisor进程管理工具,刚好是python写,咱直接安装。。

easy_install supervisor

生成配置文件

echo_supervisord_conf > /etc/supervisord.conf

tail -5 /etc/supervisord.conf 

[include]
files = /etc/supervisord.d/*.ini

mkdir -p /etc/supervisord.d

写一个配置文件

vim /etc/supervisord.d/py3_mysite.ini

[program:py3_mysite]
directory = /opt/mysite        ; 程序的启动目录
command = /usr/local/python3.6/bin/python3 manage.py runserver
autostart = true     ; 在 supervisord 启动的时候也自动启动
autorestart = true   ; 程序异常退出后自动重启
redirect_stderr = true  ; 把 stderr 重定向到 stdout,默认 false
process_name = %(program_name)s
stdout_logfile_maxbytes = 20MB  ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 20     ; stdout 日志文件备份数
stdout_logfile = /tmp/out-%(program_name)s.log

启动supervisord

/usr/bin/supervisord -c /etc/supervisord.conf

查看status

supervisorctl  status

乖乖的跑着呢。最后放开机启动就行了。

 

 

转载于:https://my.oschina.net/longquan/blog/1590277

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值