手把手教你在阿里云服务器上配置Django框架
1 阿里云服务器和域名配置
1.1 在阿里云官网按需购买云服务器和域名
1.2 重置服务器密码
在阿里云购买的云服务器都要重置root密码并重启服务器之后才能使用,具体操作方法如下:
- 进入阿里云官网,点击右上角的控制台
- 在已开通的云产品中选择云服务器
- 在我的资源中,点击实例ID中的蓝色链接
4.在基本信息中点击更多 选择重置实例密码
- 然后在弹出的页面按要求重置密码并提交就ok了
1.3 绑定阿里云密码
- 进入控制台->云服务器ECS,复制我的资源下IP地址中的X.X.X.X(公网)
- 进入控制台->域名(如果已经购买域名的话)
- 点击域名后边的解析
- 点击添加记录,分别添加两组记录
第一条记录在主机记录中填写“@”,在记录值中填写之前复制的服务器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.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 错误2
ModuleNotFoundError: No module named '_ctypes'
需要安装依赖
yum -y install libffi-devel
这两个错误需要的依赖已经添加到一开始的依赖安装上去了
2.2.3 错误3
SQLite 3.8.3 or later is required (found 3.7.17).
说明SQLite版本太低,需要 3.8.3以上的SQLite,因此要升级
2.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.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已经在服务器中配置好了