Ubuntu Nginx Uwsgi Python布置服务器Django项目

时间:2023-03-09 15:20:59
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服务运行是正常的:

Ubuntu Nginx Uwsgi Python布置服务器Django项目

配置nginx

(1) 安装uginx:

sudo apt update

sudo apt install nginx

查看uginx状态:

sudo systemctl status nginx

查看版本:

sudo nginx -v

配置防火墙:

sudo ufw allow 'Nginx Full'

Ubuntu Nginx Uwsgi Python布置服务器Django项目

验证:

sudo ufw status

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

Ubuntu Nginx Uwsgi Python布置服务器Django项目

成功

5 配置uwsgi 启动uwsgi

先检查 服务器中是否存在uwsgi

输入uwsgi,发现服务器并没有安装

先安装依赖包

apt-get install build-essential python-dev

发现依赖包已经存在且为最新版本

通过pip3 安装

Pip3 install uwsgi

Ubuntu Nginx Uwsgi Python布置服务器Django项目

6 好的基础环境都已经搭建完毕了,现在开始先将本地的源代码上传到阿里云服务器

在windows本地下载xshall 并连接ubuntu服务器

改settings数据库配置文件

rz命令传输文件,发现rz不可执行

服务器端安装 lrzsz    sudo apt install lrzsz

上传文件rz

下载文件sz

然后解压文件

安装django   pip3 install django

提示错误,

Ubuntu Nginx Uwsgi Python布置服务器Django项目

启动django项目 python manage.py migrate

报错:

Ubuntu Nginx Uwsgi Python布置服务器Django项目

更新 pip工具:

Pip3 install --upgrade setuptools

Python -m pip install --upgrade pip

安装mysql相关

Pip3 install mysqlclient

报错

Ubuntu Nginx Uwsgi Python布置服务器Django项目

pip install mysqlclient

pip install xlrd

再次启动  python manage.py migrate

报错

Ubuntu Nginx Uwsgi Python布置服务器Django项目

应该是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文件

替换文件再次运行:

报错

Ubuntu Nginx Uwsgi Python布置服务器Django项目

百度告诉我:

Sudo pip uninstall MySQL-python

结果计算机告诉我,没有装这个东西

所以下载一个

Apt-get install libmysqlclient-dev

再:

Pip install MySQL-python

时报错

Ubuntu Nginx Uwsgi Python布置服务器Django项目

所以试着更新一下pip和setuptools

Pip install --upgrade setuptools

Python -m pip install --upgrade pip

结果又是失败

所以更换另外一种方式

Sudo apt install python3-pip

Sudo pip3 install pymysql

Import pymysql

再次启动

报错

Ubuntu Nginx Uwsgi Python布置服务器Django项目

Pip install jieba

再次运行项目 python manage.py migrate

然后发现还有其他包没装

你就一个一个装吧,,最后

Ubuntu Nginx Uwsgi Python布置服务器Django项目

好的成功了

python manage. py runserver运行一下

ok并在浏览器(服务器端)输入指定网址能够看到django项目运行成功

7来吧配置uwsginginx

新建一个test测试文件夹,创建测试文件

运行测试文件

Uwsgi --http-socket:8088 wsgi-file exam.py

报错:

Ubuntu Nginx Uwsgi Python布置服务器Django项目

百度

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

报错:

Ubuntu Nginx Uwsgi Python布置服务器Django项目

yum默认python2,我们python3所以修改配置

修改 yum第一行为python2

Vim usr/bin/yum

因为权限所以 sudo chmod a+w yum

然后在图形界面进行修改

再次执行

报错

Ubuntu Nginx Uwsgi Python布置服务器Django项目

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的文件是有坑的,所以你要注意怎么配置

这个坑主要是在这里

Ubuntu Nginx Uwsgi Python布置服务器Django项目

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

再操作

Ubuntu Nginx Uwsgi Python布置服务器Django项目

下一步对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——成功!