Ubuntu Nginx Uwsgi Python布置服务器Django项目
1 安装python 3.6
ubuntu预装了2.7,不需要卸载预装库,直接安装python3.6(其实现在的阿里云18.04会给你自动装python2.7.15和3.6.8)
你可以分别查看一下python 2.7和python 3.6确认系统是否装了这两个环境
因为程序运行环境需要,一般会修改系统默认的运行环境
python --version 查询python版本 会出现2.7.15而不是3.6.8
如果有python3.6则进行如下操作【如果没有python3.6那你需要自己下载一个喽,因为python版本会更新所以下载流程自己百度,注意系统版本不同操作是不同的,这个是ubuntu的一个大坑】
查看系统Python的可用环境列表
update-alternatives --list python
此处如果显示update-alternatives: error: no alternatives for python
则输入(这里的版本号根据自己安装的设定)
update-alternatives --install /usr/bin/python python /usr/bin/python3.6 8
再次查看 python和python --version则变成了python3.6.8
2 pip的安装
pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。
一般下载新版本的python库包都会自带下载pip,但是aliyun ubuntu自装python2/3却没有装pip
查看pip和pip版本:pip pip --version
显示如下:
但是ubuntu可以直接下载pip 而不需要原始linxu的下载安装包什么的复杂操作
下载pip:sudo apt-get install python-pip
结果再次查询pip还是上面的显示,我觉得可能是pip的配置出了问题
我输入pip3 提示了操作
apt install python3-pip
再次输入pip还是原来的提示,但是输入pip3 则成功了
可以再尝试一下pip2【支持多环境下的切换,目前没有涉及到所以暂时不提,后边再学吧】
3 mysql的安装
输入:dpkg -l | grep mysql 检查一下是否安装了Msql
(也可以简单的直接输入mysql进行检验)
安装:apt install mysql-server
检验安装是否成功:netstat -tap | grep mysql
LISTEN 表明安装成功
【首先声明,我到现在并没有怎么接触过MYsql,只是自学了sqlserver2014、sql初学者指南,以及课程上面讲的sql原理教程】
登录mysql数据库可以通过如下命令:
mysql -u root -p
-u 表示选择登陆的用户名, -p 表示登陆的用户密码,现在是mysql数据库是没有密码的,Enter password:处直接回车,就能够进入mysql数据库。
查看当前所有数据库:show databases;
查看用户:select user,host from mysql.user;
暂时先不进行下面的安全操作:
检查mysql服务状态:systemctl status mysql
显示如下结果说明mysql服务运行是正常的:

4 配置nginx
(1) 安装uginx:
sudo apt update
sudo apt install nginx
查看uginx状态:
sudo systemctl status nginx
查看版本:
sudo nginx -v
配置防火墙:
sudo ufw allow 'Nginx Full'

验证:
sudo ufw status
出现inactive——说明应该是配置失败——打开图形界面浏览器验证localhost

成功
5 配置uwsgi 启动uwsgi
先检查 服务器中是否存在uwsgi
输入uwsgi,发现服务器并没有安装
先安装依赖包
apt-get install build-essential python-dev
发现依赖包已经存在且为最新版本
通过pip3 安装
Pip3 install uwsgi

6 好的基础环境都已经搭建完毕了,现在开始先将本地的源代码上传到阿里云服务器
在windows本地下载xshall 并连接ubuntu服务器
改settings数据库配置文件
rz命令传输文件,发现rz不可执行
服务器端安装 lrzsz sudo apt install lrzsz
上传文件rz
下载文件sz
然后解压文件
安装django pip3 install django
提示错误,

启动django项目 python manage.py migrate
报错:

更新 pip工具:
Pip3 install --upgrade setuptools
Python -m pip install --upgrade pip
安装mysql相关
Pip3 install mysqlclient
报错

pip install mysqlclient
pip install xlrd
再次启动 python manage.py migrate
报错

应该是mysql的错误,但是找不出怎么改,所以决定重装mysql
卸载mysql
先查看 mysql 的依赖项
dpkg --list|grep mysql
卸载:sudo apt-get remove mysql-common
sudo apt-get autoremove --purge mysql-server-5.7
清除残留数据:dpkg -l|grep ^rc|awk '{print$2}'|sudo xargs dpkg -P
继续删除依赖项:sudo apt-get autoremove --purge mysql-apt-config
继续新建了mysql里面的lajifenshao数据库
重新修改 setting.py文件
替换文件再次运行:
报错

百度告诉我:
Sudo pip uninstall MySQL-python
结果计算机告诉我,没有装这个东西
所以下载一个
Apt-get install libmysqlclient-dev
再:
Pip install MySQL-python
时报错

所以试着更新一下pip和setuptools
Pip install --upgrade setuptools
Python -m pip install --upgrade pip
结果又是失败
所以更换另外一种方式
Sudo apt install python3-pip
Sudo pip3 install pymysql
Import pymysql
再次启动
报错

Pip install jieba
再次运行项目 python manage.py migrate
然后发现还有其他包没装
你就一个一个装吧,,最后

好的成功了
python manage. py runserver运行一下
ok并在浏览器(服务器端)输入指定网址能够看到django项目运行成功
7来吧配置uwsgi和nginx
新建一个test测试文件夹,创建测试文件
运行测试文件
Uwsgi --http-socket:8088 wsgi-file exam.py
报错:

百度
Uwsgi --http-socket:8001 --plugin python --wsgi-file exam.py
仍然报错
去查看uwsgi位置
Whereis uwsgi
初步判断可能是 uwsgi-plugin-common未安装
安装
因为没有装yum,先装
Apt install yum
Yum install uwsgi-plugin-common
报错:

yum默认python2,我们python3所以修改配置
修改 yum第一行为python2
Vim usr/bin/yum
因为权限所以 sudo chmod a+w yum
然后在图形界面进行修改
再次执行
报错

apt-get install uwsgi-plugin-common
仍然报错
然后一堆报错
Sudo apt-get update
Apt-get install uwsgi-plugin-python
再次执行
Uwsgi --http: 8001 --wsgi-file exam.py
报错
Uwsgi --http-socket:8001 --wsgi-file exam.py
报错
Uwsgi --http-socket :8001 --plugin python --wsgi-file exam.py
报错return
检查发现第二行少一个括号,补上
再次敲:uwsgi --http :8001 --wsgi-file exam.py
然后蹦出了超级多东西,但是没有提示错误,只是有一些小警告,
在图形界面浏览器,输入配置的127.0.0.1:8001/
成功显示return 内容
所以uwsgi配置成功了!!!
Ctrl+C退出该服务
然后进行下一步,在lajifenshao目录里面新建配置的web.ini文件
Uwsgi web.ini
然后web.ini的文件是有坑的,所以你要注意怎么配置
这个坑主要是在这里

好多次尝试失败,是因为chdir:路径不对,为什么不对呢?因为网上都是/home我也很蒙蔽为甚么是home,之后想明白了,因为lajifenshao在root下,所以我的是root
再操作

下一步对nginx进行操作
在安装好nginx的前提下,即能在浏览器打开那个welcome to nginx
修改 /etc/nginx中的nginx.conf文件中的server具体内容去看百度
补充一个vi操作
Vi 文件名
A
修改
改完
Esc
:wq!
Enter
这里需要进行一步检验
Nginx -t 检验通过就OK
然后 service nginx restart
没有报错就是成功!
之前多次不通过,居然是因为80; 后面多了一个空格
然后python manage.py runserver 0.0.0.0:8001
结果还是只能载本地浏览,不能再其他电脑浏览
而且存在port被占用的报错
首先杀掉进程
找进程号
ps aux|grep -i manage
杀
kill -9 进程号
然后发现自己安全组没有配置好
所以又去配置了一下安全组
最后成功了!
我把这个进程挂在第五个页面里面了,并进行监控
然后进行域名解析
然后回到控制台——域名——选择指定域名——解析——新手引导——网站解析——输入外网IP——自动解析有www和无www——成功!
Ubuntu Nginx Uwsgi Python布置服务器Django项目的更多相关文章
- Nginx+uWSGI或fastcgi部署Django项目
nginx+uWSGI ubuntu下先安装下C编译器和Python环境: sudo apt-get install build-essential python-dev 使用pip安装uWSGI: ...
- ubuntu+nginx+uwsgi部署django web项目
前言 将本地开发的django项目部署至linux上的uwsgi服务器,并配置nginx,完成基于ubuntu+nginx+uwsgi的上线运行.下面整理相关步骤. 服务器配置virtualenv 如 ...
- [技术博客]ubuntu+nginx+uwsgi+Django+https的部署
ubuntu+nginx+uwsgi+Django+https部署文档 配置机器介绍 操作系统:Ubuntu 18.04.2 LTS 64位 python版本:Python 3.6.7 Django版 ...
- Ubuntu Nginx uwsgi django 初试
/************************************************************************************** * Ubuntu Ngi ...
- Centos+nginx+uwsgi+Python多站点环境搭建
前言 新公司的第一个项目,服务器端打算用python作为restful api.所以需要在Centos上搭建nginx+fastcgi+python的开发环境,但后面网上很多言论都说uwsgi比fas ...
- Centos下搭建 nginx+uwsgi+python
python做web应用最麻烦的还是配置服务器了,此话不假,光中间件就有好几种选择,fastcgi.wsgi.uwsgi,难 免让人眼花缭乱. 而听说uwsgi的效率是fastcgi和wsgi的10倍 ...
- Ubuntu django+nginx 搭建python web服务器文件日志
uwsgi 配置文件 [uwsgi] http-socket = 127.0.0.1:8080 # 项目目录 chdir=/home/ubuntu/mkweb # 指定项目的application m ...
- ubuntu NGINX uwsgi https 部署Django 遇到的问题
搞了3天终于把Django成功部署到Ubuntu,记录一下: 引用来自泡泡茶壶: Ubuntu下的Nginx + Uwsgi + Django项目部署详细流程 前提说明: Django作为小程序的后端 ...
- Python基础 - Ubuntu+Nginx+uwsgi+supervisor部署Flask应用
网上找了许多讲关于Flask应用部署的文章几乎都是一个helloworld的Demo,按照helloworld来部署都没问题,但实际项目部署时还是遇到了不少问题.在这里简单写下自己成功部署的过程,防止 ...
随机推荐
- 仙剑奇侠传1系列:2.编译主程序SDLPAL及SDL
上一篇:仙剑奇侠传1系列:1.本地运行环境及兼容性设置 介绍 仙剑奇侠传1是dos时代的经典游戏,相信以下图片能勾起大家的很多回忆. sdlpal是仙剑奇侠传1的主程序.github项目sdlpa ...
- 为Django添加图片验证码
可直接复制到Django项目中使用 # author:sunshine from django.http import HttpResponse from PIL import Image, Imag ...
- shell之判断文件是否存在
#!/bin/sh myPath="/var/log/httpd/" myFile="/var /log/httpd/access.log" #这里的-x 参数 ...
- IOS上的 Audio Memos SE 如何分享和传输录音到电脑?
Audio Memos SE 是 Audio Memos 的精简版 ,顾名思义就是少了很多实用功能.当初下载这个就是因为广告比较少一些,没有全屏幕的广告. 好了,录了音,想分享和传到电脑要怎么弄呢? ...
- C语言递归之在每个树行中找最大值
题目描述 您需要在二叉树的每一行中找到最大的值. 示例 输入: / \ / \ \ 输出: [, , ] 题目要求 /** * Definition for a binary tree node. * ...
- mysql 全表扫描场景
全表扫描是数据库搜寻表的每一条记录的过程,直到所有符合给定条件的记录返回为止.通常在数据库中,对无索引的表进行查询一般称为全表扫描:然而有时候我们即便添加了索引,但当我们的SQL语句写的不合理的时候也 ...
- 缓存穿透 & 缓存雪崩 & 缓存击穿
一 缓存穿透 1. 行为 查询一个一定不存在的数据.存储层(姑且认为是db,下面都用db指代)查不到数据则不写入缓存,那么下次请求这个不存在的数据同样会到db层查询,失去了缓存的意义.流量大或人为恶意 ...
- java源码--Vector和Stack
一.Vector简介 1.1.Vector概述 通过API中可以知道: 1)Vector是一个可变化长度的数组 2)Vector增加长度通过的是capacity和capacityIncrement这两 ...
- CF1032B Personalized Cup
一个多月前写的题,既然没人写题解,那蒟蒻就写一篇吧 基本思路 既然是输出任意一个解,那么号的位置在那里是没有关系的.我的思路是默认*号在最后面,然后对输入的字符串输出的行数进行分类. 代码 #incl ...
- C++ STL String学习 (待续)
头文件:<string> 字符串类初始化: string s1="aabbba"; s2=string("bbb"); string s3=stri ...