之前部署Django项目到服务器上的时候出现了各种问题,现在总结一下方便以后查阅,也希望能够帮到有同样问题的你。(如果有帮助记得点赞哦!)
Linux 升级 Python 至 3.x
一般情况下自己带的python 都是2.x的,为了使用新版本的3.x,需要对旧版本进行升级
# python --version
Python 2.7.5
系统自带的版本是2.7.5
1.下载新版本
版本可以自己随意选,我这里只是一个演示
wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz
2.压缩
tar -zxvf Python-3.5.2.tgz
3.安装配置
cd Python-3.5.2/
./configure
如果./configure 出错说明没有安装编译器,这时,需要升级依赖包
yum install make gcc gcc-c++
然后再
./configure
4.编译 安装
make
make install
5.验证
# python3 -V
Python 3.5.2
6.设置默认版本为3.x
ls -al /usr/bin | grep python
-rwxr-xr-x. 1 root root 11216 12月 1 2018 abrt-action-analyze-python
lrwxrwxrwx. 1 root root 6 4月 30 12:11 python -> python2
lrwxrwxrwx. 1 root root 5 4月 30 12:11 python2 -> python2.7
-rwxr-xr-x. 1 root root 7136 4月 20 2018 python2.7
将原来 python 的软链接重命名:
mv /usr/bin/python /usr/bin/python.bak
将 python 链接至 python3:
ln -s /usr/local/bin/python3 /usr/bin/python
查看结果
# python -V
Python 3.5.2
说明安装ok
7.配置 yum
vim /usr/bin/yum
将 #!/usr/bin/python 改为 #!/usr/bin/python2.7,保存退出
vim /usr/libexec/urlgrabber-ext-down
将 #!/usr/bin/python 改为 #!/usr/bin/python2.7,保存退出
报错 ImportError: No module named pip --- 需要 安装 pip
等你安装好python3.x ,安装Django的时候可能有会 报错 ImportError: No module named pip
安装pip的方法有很多,这里我只介绍我使用的
wget https://pypi.python.org/packages/source/p/pip/pip-1.3.1.tar.gz --no-check-certificate
tar xvf pip-1.3.1.tar.gz
python3 setup.py build
python3 setup.py install
安装的时候还可能会出现setuptools Compression requires the (missing) zlib module 的错误 这是因为缺少setuptools,下面的就是解决办法
报错 setuptools Compression requires the (missing) zlib module ---安装setuptools
yum install zlib
yum install zlib-devel
从新编译python (make)
下载 setuptools
cd setuptools-39.2.0
python setup.py install
安装ok 之后再去安装pip 就可以了
报错 ModuleNotFoundError: No module named '_sqlite3' ----安装sqlite3
最简单的方法(一般情况下都可以的如果不可以自行谷歌其他方法吧)
yum install sqlite*
#重新编译python
./configure --prefix=/usr/local/sqlite3
make && make install
pip已经安装,但是/usr/bin/pip: No such file or directory
这是路径错了
1.which pip
/usr/local/bin/pip
2.pip
-su: /usr/bin/pip: No such file or directory
3.type pip
pip is hashed (/usr/bin/pip)
So pip is definintely in /usr/local/bin/pip but it is been cached as in /usr/bin/pip, thanks to the
Stackoverflow question, the solution is very simple:
4.hash -r
When the cache is clear, pip is working again.
nginx启动成功,访问不了
可以去查看下阿里云的服务器,看下端口是不是没有放开
uwsgi启动后,前端出现400 Bad Request
出现这种情况应该是Django里面的配置有问题
好了,先总结到这里,后续再有继续添加。如果问题欢迎留言!