微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

这篇文章主要介绍了centos+Nginx+uwsgi+Django实现IP+port访问服务器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

环境

MacBookAir

阿里云ESC: Centos7.0

Nginx+1.16.1

uwsgi=2.0.18

django=2.2.7

服务器

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

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

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

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

远程连接服务器工具

我使用的是fianlshell

安装

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

连接

完成连接进行环境配置

环境配置

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

pip3的使用:

因为已经安装了python3python3安装目录下已经存在了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 进入MysqLMysqL -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

对下面的内容进行修改

这里的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

结语

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐