Linux部署Django (Nginx + uwsgi + Python3 + Django)全过程

最近把之前的服务器做了转移,重新部署,竟然发现有些生疏,在此做下总结以便日后可以熟悉点,亦可以帮助有需要的人。这里只写大流程可能会遇到一些问题可以参考 Linux 下部署Django项目你可能会遇到的问题!

系统: centos_7 + Python 3.5.2 + nginx-1.13.7 +  uWSGI 2.0.17.1 + Django2.2.0


具体步骤如下:

1.升级Python3

系统自带的一般为Python2,需要对旧版本进行升级

wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz
tar -zxvf Python-3.5.2.tgz
cd Python-3.5.2
./configure 
make 
make install

查看结果

 python3 -V
 Python 3.5.2

设置python 默认版本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
  ln -s /usr/local/bin/python3 /usr/bin/python
  python -V
  python 3.5.2

2.升级pip3(该过程可能要安装 setuptools

  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  
  python pip-1.3.1/setup.py install

3.安装Django (很多方法可以自己选)

 pip install django

4.安装uwsgi

pip install uwsgi

5.安装nginx和配置nginx.conf文件

wget http://nginx.org/download/nginx-1.13.7.tar.gz
tar -zxvf nginx-1.13.7.tar.gz
./configure
make
make install

.conf文件配置

server {
listen 8996; #暴露给外部访问的端口
server_name localhost;
    charset utf-8;
location / {
    include uwsgi_params;
    uwsgi_pass 127.0.0.1:8997; #外部访问8996就转发到内部8997
}
location /static/ {
    alias /home/www/myproject/myapp/static/; #项目静态路径设置
  }
}

6.配置diango

<uwsgi>
<socket>127.0.0.1:8997</socket><!-- 内部端口,自定义注意跟.conf 一致 -->
    <chdir>/home/www/myproject</chdir><!-- 项目路径 -->
        <module>myproject.wsgi</module>
            <processes>4</processes> <!-- 进程数 --> 
<daemonize>uwsgi.log</daemonize><!-- 日志文件 -->
</uwsgi>

7.运行nginx

   cd /usr/local/nginx/sbin
  ./nginx  
  //没有任何输出说明启动成功

这时候可以打开网页访问对应IP了

8.运行uwgix

cd 到项目
uwsgi -x  项目.xml
// [uWSGI] parsing config file my_blog.xml 一般这样输出就说明成功了

这个时候访问IP就可以打开具体的网页喽

一般来说到这里就算搞成了,但是现实中肯定有很多问题,对于这些问题我也做了总结有需要的可以查看Linux 下部署Django项目你可能会遇到的问题! 下面我对经常用的指令做下总结方便日后使用


常用指令

配置 nginx.conf文件

  cd /usr/local/nginx/conf/
  vim nginx.conf

启动: nginx

cd /usr/local/nginx/sbin
./nginx

运行 uwsgi

  uwsgi -x my_blog.xml

查看 nginx 日志

 tail -f /usr/local/nginx/logs/access.log

查看日志 uwsgi

tail -f uwsgi.log

查看进程号

 ps -ef|grep nginx

杀死进程

   kill   进程ID

查看端口使用情况

netstat -ntulp|grep 80

MAC查看端口占用情况

lsof -i tcp:8000

Read More >>>

Python 入门 — 资源篇

学习Python有一段时间了,现在分享一下我整理的入门资源,希望可以帮助你快速入门! 希望可以帮到你们。

1.入门书籍和视频

强烈推荐这本书,内容写的很详细,适合新手入门,相信很多大佬都是从这个本书走过的。

书籍地址网盘地址 某培训机构最近视频

当然我这里还是建议看书,来得快,学起来也方便

2.相关学习网址和论坛

Python 官网 Matplotlib Pygal Django 官方中文文档 廖雪峰Python教程 Python菜鸟教程 Python 开源项目 Python 爬虫专栏

建议这些网站都收藏下,对你的学习很有帮助

3.Python练手项目

【Python 图片转字符画】

【200行Python代码实现2048】

【Python3 实现火车票查询工具】

【高德API+Python解决租房问题 】

【Python3 色情图片识别】

【Python 破解验证码】

【Python实现简单的Web服务器】

【pygame开发打飞机游戏】

【Django 搭建简易博客】

【Python基于共现提取《釜山行》人物关系】

【基于scrapy爬虫的天气数据采集(python)】

【Flask 开发轻博客】

【Python3 图片隐写术】

【Python 实现简易 Shell】

【使用 Python 解数学方程】

【PyQt 实现简易浏览器】

【神经网络实现手写字符识别系统 】

【Python 实现简单画板】

【Python实现3D建模工具】

【NBA常规赛结果预测——利用Python进行比赛数据分析】

【神经网络实现人脸识别任务】

【Python文本解析器】

【Python3 & OpenCV 视频转字符动画】

【Python3 实现淘女郎照片爬虫 】

【Python3实现简单的FTP认证服务器】

【基于 Flask 与 MySQL 实现番剧推荐系统】

【Python 实现端口扫描器】

【使用 Python 3 编写系列实用脚本】

【Python 实现康威生命游戏】

【川普撞脸希拉里(基于 OpenCV 的面部特征交换) 】

【Python 3 实现 Markdown 解析器】

【Python 气象数据分析 -- 《Python 数据分析实战》】

【Python实现键值数据库】

【k-近邻算法实现手写数字识别系统】

【ebay在线拍卖数据分析】

【Python 实现英文新闻摘要自动提取 】

【Python实现简易局域网视频聊天工具】

【基于 Flask 及爬虫实现微信娱乐机器人】

【Python实现Python解释器】

【Python3基于Scapy实现DDos】

【Python 实现密码强度检测器】

【使用 Python 实现深度神经网络】

【Python实现从excel读取数据并绘制成精美图像】

【人机对战初体验:Python基于Pygame实现四子棋游戏】

【Python3 实现可控制肉鸡的反向Shell】

【Python打造漏洞扫描器 】

【Python应用马尔可夫链算法实现随机文本生成】

【数独游戏的Python实现与破解】

【使用Python定制词云】

【Python开发简单计算器】

【Python 实现 FTP 弱口令扫描器】

【Python实现Huffman编码解压缩文件】

【Python实现Zip文件的暴力破解 】

【Python3 智能裁切图片】

【Python实现网站模拟登陆】

【给Python3爬虫做一个界面.妹子图网实战】

【Python 3 实现图片转彩色字符】

【自联想器的 Python 实现】

【Python 实现简单滤镜】

【Flask 实现简单聊天室】

【基于PyQt5 实现地图中定位相片拍摄位置】

【Python实现模板引擎】

【Python实现遗传算法求解n-queens问题】

【Python3 实现命令行动态进度条】

【Python 获取挂号信息并邮件通知】

【Python实现java web项目远端自动化更新部署】

【使用 Python3 编写 Github 自动周报生成器】

【使用 Python 生成分形图片】

【Python 实现 Redis 异步客户端】

【Python 实现中文错别字高亮系统】

建议先跟着视频或者书籍学习,边学边敲,中间遇到不懂的就多查多看,之后基础学完就开始撸这几个小项目,相信你很快就能入门。

这里是对我学习过程中有价值的资源进行整理希望能够帮到你,后续还会继续更新,欢迎关注!

Read More >>>

Linux 下部署Django项目你可能会遇到的问题!

之前部署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

 vi /usr/bin/yum

将 #!/usr/bin/python 改为 #!/usr/bin/python2.7,保存退出

  vi /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  
  python pip-1.3.1/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

好了,先总结到这里,后续再有继续添加。如果问题欢迎留言!

Read More >>>