#最详细# #零基础# 手把手教你在阿里云服务器上配置Django框架

1 阿里云服务器和域名配置

1.1 在阿里云官网按需购买云服务器和域名

在这里插入图片描述

1.2 重置服务器密码

在阿里云购买的云服务器都要重置root密码并重启服务器之后才能使用,具体操作方法如下:

  1. 进入阿里云官网,点击右上角的控制台
    在这里插入图片描述
  2. 已开通的云产品中选择云服务器
    在这里插入图片描述
  3. 我的资源中,点击实例ID中的蓝色链接
    在这里插入图片描述
    4.在基本信息中点击更多 选择重置实例密码
    在这里插入图片描述
  4. 然后在弹出的页面按要求重置密码并提交就ok了
    在这里插入图片描述

1.3 绑定阿里云密码

  1. 进入控制台->云服务器ECS,复制我的资源IP地址中的X.X.X.X(公网)
  2. 进入控制台->域名(如果已经购买域名的话)
    在这里插入图片描述
  3. 点击域名后边的解析
    在这里插入图片描述
  4. 点击添加记录,分别添加两组记录
    在这里插入图片描述
    第一条记录在主机记录中填写“@”,在记录值中填写之前复制的服务器IP地址,然后点击提交
    在这里插入图片描述
    第二条记录在主机记录中填写“www”,在记录值中填写之前复制的服务器IP地址,然后点击提交
    在这里插入图片描述

1.4 打开服务器端口

进入控制台->云服务器ECS
点击实例中的蓝色链接
点选择左侧的本实例安全组
点击安全组ID/名称下的蓝色链接
然后点击右上角的添加安全组规则
在这里插入图片描述
在跳出的对话框中,将协议类型选为全部,在授权对象对话框中填入0.0.0.0/0,代表所有主机都能访问服务器
在这里插入图片描述

1.5 使用Xshell和Xftp管理云服务器

Xshell用于连接远程主机,从而远程控制终端。我主要用来连接阿里云的Linux,进行项目部署。
Xftp用于远程传输文件。从终端下载或上传文件。

1.5.1 下载Xshell和Xftp

链接:官网下载
或者百度云下载
链接: Xshell+Xftp百度云下载 提取码: uxdh
安装很简单,一直下一步就好了。

1.5.2 设置 Xshell

进入Xshell软件,点击文件->新建协议选择ssh主机填写之前复制过的公网IP地址,点击确定
在这里插入图片描述
用户名输入root并勾选记住用户名,点击确定
在这里插入图片描述
填写之前重置过的阿里云服务器密码并勾选记住密码,点击确定
在这里插入图片描述
出现如下界面就可以使用命令行控制云服务器了
在这里插入图片描述

1.5.3 设置 Xftp

进入Xftp软件,点击文件->新建
主机一栏填写之前复制过的的公网IP地址协议选择SFTP端口号选择22,然后点击确定
在这里插入图片描述
输入用户名root并勾选记住用户名,点击确定
在这里插入图片描述
填写刚才重置过的服务器密码并勾选记住密码,点击确定
在这里插入图片描述
此时你就能通过拖拽来实现两个系统间的文件传输了
在这里插入图片描述

2 在服务器端配置python3

2.1 安装

1. 在root用户下复制以下代码,安装所需的包

yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
yum install -y libffi-devel zlib1g-dev
yum install zlib* -y

第一个批量安装开发工具包
第二,三个安装的是Python3所需的依赖包,
其中,libffi-devel用于高级语言之间的相互调用,比如定义了python的ctypes;zlib-devel、zlib1g-dev、bzip2-devel、xz-devel是用于文件压缩的库;openssl-devel库用于网络通讯中的加密算法;ncurses-devel是字符终端处理库;sqlite-devel为轻量级数据库包(库);readline-devel库用于读取文本;tk-devel为图形用户界面库;gdbm-devel,db4-devel也是一种数据库包;libpcap-devel用于网络数据包捕获;
第三个是安装zlib* 用于文件压缩,zlib* 和 zlib-devel的区别是zlib-devel用于软件的开发,zlib*只包含头文件、静态库甚至源码,不能用于软件的开发,想要在软件开发用到zlib库就要安装zlib-devel
指令中的-y参数作用是安装时如果需要用户输入y/n,则一律按y处理

2. 切换到一个任意目录,然后下载Python3安装包

cd /usr/home/local/tempfile
wget wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tar.xz 

3. 解压安装包

tar -xvJf  Python-3.7.2.tar.xz

4. 创建编译安装目录
mkdir /usr/local/python3

5. 编译

cd Python-3.7.2
./configure --prefix=/usr/local/python3 --enable-optimizations --with-ssl 

第一个指定安装的路径,不指定的话,安装过程中可能软件所需要的文件复制到其他不同目录,删除软件很不方便,复制软件也不方便.
第二个为最优安装,可以提高python10%-20%代码运行速度.
第三个是为了安装pip需要用到ssl,后面报错会有提到.

6. 安装

make && make install

7. 创建软链接

ln -s /usr/local/python3/bin/python3 /usr/local/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3

8. 验证是否成功

python3 -V
pip3 -V

2.2 报错处理

2.1 错误1

zipimport.ZipImportError: can't decompress data; zlib not available Makefile:1099: recipe for target 'install' failed make: *** [install] Error 1

需要安装依赖

yum -y install zlib1g-dev

2.2 错误2

ModuleNotFoundError: No module named '_ctypes'

需要安装依赖

yum -y install libffi-devel 

这两个错误需要的依赖已经添加到一开始的依赖安装上去了

2.3 错误3

SQLite 3.8.3 or later is required (found 3.7.17).

说明SQLite版本太低,需要 3.8.3以上的SQLite,因此要升级

2.3.1 获取源代码(在主目录中运行)

cd /usr/home/local/tempfile
wget https://www.sqlite.org/2019/sqlite-autoconf-3270200.tar.gz
tar -zxvf sqlite-autoconf-3270200.tar.gz

2.3.2 构建并安装

cd sqlite-autoconf-3270200
./configure --prefix=/usr/local
make && make install

检查版本 最新安装的sqlite3版本

/usr/local/bin/sqlite3 --version
3.27.2 2019-02-25 16:06:06 bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0f6d7

Centos7自带的sqlite3版本

/usr/bin/sqlite3 --version
3.7.17 2013-05-20 00:56:22 118a3b35693b134d56ebd780123b7fd6f1497668

可以看到sqlite3的版本还是旧版本,那么需要更新一下。

sqlite3 --version
3.7.17 2013-05-20 00:56:22 118a3b35693b134d56ebd780123b7fd6f1497668

更改旧的sqlite3

mv /usr/bin/sqlite3  /usr/bin/sqlite3_old

软链接将新的sqlite3设置到/usr/bin目录下

ln -s /usr/local/bin/sqlite3   /usr/bin/sqlite3

查看当前全局sqlite3的版本

sqlite3 --version
3.27.2 2019-02-25 16:06:06 bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0f6d7

将路径传递给共享库 , 设置开机自启动执行,将下面的export语句写入

~/.bashrc 文件中,如果如果你想立即生效,可以执行source ~/.bashrc
export LD_LIBRARY_PATH="/usr/local/lib"

检查Python的SQLite3版本

python3
Python 3.7.3 (default, May 17 2019, 15:07:52) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> In [1]: import sqlite3                                                     
>>> In [2]: sqlite3.sqlite_version                                             
>>> Out[2]: '3.27.2'
>>> exit()

问题解决!

3 在服务器端配置django

3.1 安装django

pip install django  

3.2 建立软连接

ln -s /usr/local/python3/bin/django-admin.py /usr/local/bin/django-admin

ln -s /opt/python35/bin/django-admin /usr/local/bin/django-admin

3.3 创建一个django项目

django-admin.py startproject MyDjangoProject

如果成功了会看到如下目录

MyDjangoProject/

├── manage.py
└── MyDjangoProject/
├── __ init __.py
├── settings.py
├── urls.py
└── wsgi.py

文件名 用途
__ init __.py python包的目录必须的
settings.py 项目的设置
urls.py 项目的url配置文件
wsgi.py 部署服务器时用到的文件

3.4 创建应用

进入django项目

cd MyDjangoProject

创建app01应用,下面两种创建方式都可以

django startapp app01

或者

python3 manage.py startapp app01

修改settings文件为

ALLOWED_HOSTS = [‘*’]

*ALLOWED_HOSTS的作用

ALLOWED_HOSTS是为了限定请求中的host值,以防止黑客构造包来发送请求。只有在列表中的host才能访问,[‘*’]表示所有的主机都能访问。
ALLOWED_HOSTS后面所跟的属性值是一个字符串列表值,这个字符串列表值表示当下这个Django站点可以提供的host/domain(主机/域名)。这是一种安全措施,通过使用伪造的HTTP主机标头提交请求来防止攻击者中毒缓存并触发带有恶意主机链接的密码重置电子邮件,即使在许多看似安全的Web服务器配置下也是如此。

3.5 运行项目

python3 manage.py runserver 0.0.0.0:8000

然后在浏览器中输入自己的域名后面加上:8000(端口号),如果看到如下页面就说明django已经在服务器中配置好了

在这里插入图片描述

发布了59 篇原创文章 · 获赞 2 · 访问量 4639

猜你喜欢

转载自blog.csdn.net/lch551218/article/details/103545019