centos+nginx+uwsgi+Django实现IP+port访问服务器


Posted in Python onNovember 15, 2019

环境

  • MacBookAir
  • 阿里云ESC: Centos7.0
  • nginx+1.16.1
  • uwsgi=2.0.18
  • django=2.2.7

服务器

进入阿里云网站注册账号进行购买,选择地区和服务器系统配置

购买成功之后添加安全组(设置可访问端口,不知道怎么设置的,网站有文档,这里不赘述了)

centos+nginx+uwsgi+Django实现IP+port访问服务器

centos+nginx+uwsgi+Django实现IP+port访问服务器

购买成功之后已经创建了一个实例,点击远程连接会有一个密码(不记得了可以重启实例进行设置)自己本地做好文档记录

进入远程连接界面后使用root+登录密码(这个密码我是重置实例密码获取到的)进行连接

centos+nginx+uwsgi+Django实现IP+port访问服务器

远程连接服务器工具

我使用的是fianlshell

安装

cd dir(进入你安装的目录)
curl -o finalshell_install.sh www.hostbuf.com/downloads/finalshell_install.sh;
chmod +x finalshell_install.sh;
sudo ./finalshell_install.sh

连接

centos+nginx+uwsgi+Django实现IP+port访问服务器centos+nginx+uwsgi+Django实现IP+port访问服务器

完成连接进行环境配置

环境配置

python3安装: 参考这篇文章进行安装(编译安装前(make && make install) 先执行命令:yum install libffi-devel -y (解决:ModuleNotFoundError: No module named '_ctypes'))

pip3的使用:

因为已经安装了python3,python3安装目录下已经存在了pip3,很多安装包必须使用pip3进行安装;centos已经安装的python2中存在pip我们需要建立软连接(ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3)

mysql安装

下载mysql源安装包:wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
安装mysql源:yum localinstall mysql57-community-release-el7-8.noarch.rpm
安装mysql源:yum install mysql-devel
安装MySQL(总计851M,翻墙):yum install mysql-community-server
执行命令:pip3 install mysqlclient
启动MYSQL服务:systemctl start mysqld
查看MYSQLd的启动状态:systemctl status mysqld
开机启动:systemctl enable mysqld
修改root本地登录密码:
获取密码:grep 'temporary password' /var/log/mysqld.log
进入mysql:mysql -uroot -p
设置密码:set password for 'root'@'localhost'=password('你的数据库密码');

* 安装过程中可能出现重置密码失败的情况,我实现的情况是:1、实现mysql免密登录;2、重置密码(可能出现password不存在的情况,更password为authentication_string );3、刷新重置列表:FLUSH PRIVILEGES 4、退出mysql; 5、输入mysql -u root -p。进行密码登录;复制代码

Django安装

执行:pip3 install django

执行:django-admin help 进行验证是否安装成功

uwsgi安装

执行:pip3 install uwsgi

验证:uwsgi --version

注意:如果出现错误需要建立软连接:ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

nginx安装

执行:yum install nginx

验证:nginx -V

注意:使用yum安装可能出现错误,这是因为安装了python3导致的,这个时候需要去修改文件内容(根据报错信息进行百度,进行错误修改)

注意

上面我们已经将所需要的环境和软件已经安装完毕了,这中间可能出现一些问题,我们需要搜索一些资料进行修改。因为这里每个人遇见的问题可能不一样,因此没有一一列举,还请包涵;

下面我们就创建django项目,实现IP加port对服务器进行访问;

创建Django项目

在根目录下创建Django项目

cd /
mkdir projects
cd projects
django-admin startproject test

数据库中创建test 数据库

mysql -u root -p
creat database test;

*test项目的settings 文件

DEBUG = False
ALLOWED_HOSTS = ['你的服务器IP']

INSTALLED_APPS = [
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'test' #你的项目名称
]

DATABASES = {
 'default': {
 'ENGINE': 'django.db.backends.mysql',
 'NAME': 'test',
 'USER': 'root',
 'PASSWORD': 'mysql登录密码',
 'HOST': 'localhost',
 'PORT': '3306',
 }
}

:warning:这里最好是一个本地项目能够正常运行的项目拖入到projects目录下,进行上面的修改就好了

执行数据迁移指令

python3 manage.py makemigrations
python3 manage.py migrate

完成Django项目的创建

nginx.conf文件的配置

文件路径:/etc/nginx/nginx.conf

对下面的内容进行修改

centos+nginx+uwsgi+Django实现IP+port访问服务器

这里的IP(如果是阿里云esc服务器的化)要使用服务器的私有IP

nginx的一些操作指令

systemctl start nginx.service 开启
systemctl stop nginx.service 暂停
systemctl reload nginx.service 重启
systemctl status nginx.service 查看状态

注意:在你重复开启nginx的时候,你需要先杀死nginx进程才可以开启nginx不然会有错误。

错误文档查看路径:/var/log/nginx/error.log和/var/log/nginx/access.log

uwsgi的使用和配置

在/projects/test路径下创建uwsgi.ini文件(与manage.py在同一个目录下)

uswgi中的内容如下

[uwsgi]

wsgi-file=/server/http_practice/http_practice/wsgi.py

# 项目目录
chdir=/projes/test
# 指定项目的application
module=test.wsgi:application
# 指定sock的文件路径 
#socket=你的IP+端口号(这里的IP要使用服务器(如果是阿里云esc服务器的化)的私有IP,端口要与nginx.conf中写的IP+port一致)
# 进程个数 
workers=5
pidfile=uwsgi.pid
# 指定IP端口 
http=172.18.81.20:80
# 指定静态文件
#static-map=/static=/opt/proj/teacher/static
# 启动uwsgi的用户名和用户组
uid=root
gid=root
# 启用主进程
master=true
# 自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
# 序列化接受的内容,如果可能的话
thunder-lock=true
# 启用线程
enable-threads=true
# 设置自中断时间
harakiri=30
# 设置缓冲
post-buffering=4096
# 设置日志目录
daemonize=uwsgi.log

启动项目

启动nginx:systemctl start nginx.service

启动uwsgi:uwsgi3 --ini uwsgi.ini(若出现端口被占有,输入:sudo fuser -k 8080(你配置的端口)/tcp)

访问你的Django项目

浏览器输入:IP+port+django中设置的url

浏览器访问失败问题查找

uwsgi错误文档查询:/projects/test/uwsgi.log(该文件启动uwsgi会自动生成)
nginx错误文档查询:/var/log/nginx/error.log和/var/log/nginx/access.log

结语

开发中总是会出现很多问题,重要的是要找到错误的根源在那里,那里可以找错误的详细描述,然后再根据详细描述去查找。不要盲目的查找问题,更不要臆测,面对浏览器,你输入的关键跟问题联系紧密才能够给你准确的找到答案。

一篇文章不可能解决所有问题,更不可能解决所有人的问题。还是那句话,踩过坑才能对知识有更深的感悟。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python字符串连接的N种方式总结
Sep 17 Python
Python sqlite3事务处理方法实例分析
Jun 19 Python
Python tkinter模块中类继承的三种方式分析
Aug 08 Python
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
Nov 01 Python
python实现requests发送/上传多个文件的示例
Jun 04 Python
解决pycharm 误删掉项目文件的处理方法
Oct 22 Python
python 对类的成员函数开启线程的方法
Jan 22 Python
Python 20行简单实现有道在线翻译的详解
May 15 Python
Pytorch自己加载单通道图片用作数据集训练的实例
Jan 18 Python
Python实现Wordcloud生成词云图的示例
Mar 30 Python
python实现读取类别频数数据画水平条形图案例
Apr 24 Python
如何在pycharm中安装第三方包
Oct 27 Python
python函数局部变量、全局变量、递归知识点总结
Nov 15 #Python
python matplotlib如何给图中的点加标签
Nov 14 #Python
Python中的引用和拷贝实例解析
Nov 14 #Python
使用python快速在局域网内搭建http传输文件服务的方法
Nov 14 #Python
通过python扫描二维码/条形码并打印数据
Nov 14 #Python
VSCode中自动为Python文件添加头部注释
Nov 14 #Python
python中的函数递归和迭代原理解析
Nov 14 #Python
You might like
php中count获取多维数组长度的方法
2014/11/03 PHP
dedecms中使用php语句指南
2014/11/13 PHP
PHP session 会话处理函数
2016/06/06 PHP
PHP7.1新功能之Nullable Type用法分析
2016/09/26 PHP
php中上传文件的的解决方案
2018/09/25 PHP
confirm的用法示例用于按钮操作时确定是否执行
2014/06/19 Javascript
JavaScript操作cookie类实例
2015/03/31 Javascript
javascript实现设置、获取和删除Cookie的方法
2015/06/01 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
2017/01/23 Javascript
BootStrap 获得轮播中的索引和当前活动的焦点对象
2017/05/11 Javascript
AngularJS实现进度条功能示例
2017/07/05 Javascript
jquery自定义显示消息数量
2017/12/19 jQuery
JS声明对象时属性名加引号与不加引号的问题及解决方法
2018/02/16 Javascript
Vue2.0系列之过滤器的使用
2018/03/01 Javascript
单页面vue引入百度统计的使用方法示例详解
2018/10/13 Javascript
vue 路由守卫(导航守卫)及其具体使用
2020/02/25 Javascript
JavaScript实现简单的弹窗效果
2020/05/19 Javascript
[36:13]Mineski vs iG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
快速排序的算法思想及Python版快速排序的实现示例
2016/07/02 Python
python万年历实现代码 含运行结果
2017/05/20 Python
图文详解Django使用Pycharm连接MySQL数据库
2019/08/09 Python
python批量将excel内容进行翻译写入功能
2019/10/10 Python
Python爬虫解析网页的4种方式实例及原理解析
2019/12/30 Python
使用Keras预训练模型ResNet50进行图像分类方式
2020/05/23 Python
python和c语言哪个更适合初学者
2020/06/22 Python
Python做图像处理及视频音频文件分离和合成功能
2020/11/24 Python
保加利亚运动鞋购物网站:SneakerStudio.bg
2020/12/23 全球购物
益模软件Java笔试题
2012/03/27 面试题
教师年终个人自我评价
2013/10/04 职场文书
中专自我鉴定范文
2013/10/16 职场文书
书法培训心得体会
2014/01/05 职场文书
人力资源经理的岗位职责范本
2014/02/28 职场文书
司法助理专业自荐书
2014/06/13 职场文书
家具公司总经理岗位职责
2014/07/08 职场文书
父亲节寄语大全
2015/02/27 职场文书
Python中Selenium对Cookie的操作方法
2021/07/09 Python