上次已经用阿里云服务器和宝塔面板一键部署了一个网站,可以上传网站源码直接使用了,后端用的PHP。这次记录是在云服务器上运行django的过程。包括python3安装,环境配置和项目创建等,不涉及ngix和uwsgi的配置,后续会有记录。
文章目录
搭建过程如下:
1 准备工作:
网站搭建前期工作(即上次搭建记录,已有搭建经历可忽略):【网站搭建】用阿里云服务器搭建个人网站
(1) 启动阿里云 “轻量应用服务器”
(2) 打开阿里云控制台开启远程连接
(3) 打开宝塔面板
2 详细过程
(1)安装python3.7.5
CentOS7.3服务器中自带python2,但目前django的资料大多基于python3,因此为了后续使用更加方便,本次搭建建议先安装python3。
打开命令行窗口,输入以下命令,可以先输入sudo -i进入管理员模式
- 安装C编译器
yum install gcc
- 下载python3.7.5压缩包,如果下载较慢,可以先在浏览器进入下面的网址下载安装包,然后将安装包上传到宝塔面板的root文件夹下面
wget https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tgz
- 解压
tar -zxvf Python-3.7.5.tgz
- 打开安装目录
cd Python-3.7.5
- 启动配置并选择安装路径(/usr/local/python3为安装路径,建议不改)
./configure --prefix=/usr/local/python3
- 编译和安装(中途可能卡住,请勿输入命令,耐心等待)
make && make install
- 创建软链接,之后可以直接使用’python3’命令ln -s (原路径) (链接路径),没有提示即创建成功。
ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3
- 创建pip3的软链接
ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3
- (可跳过,直接进入(2))安装虚拟环境,可以在独立的虚拟环境中运行项目
pip3 install virtualenv
#注意:pip用于安装python2的库,pip3用于安装python3的库
若出现如下提示,可忽略,也可以输入pip3 install --upgrade pip
pip3 install --upgrade pip
- 创建虚拟环境的软链接,没有提示或出现**“File exists”**即表示成功
ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
- 创建虚拟环境
virtualenv --python=/usr/bin/python3 myvenv
#后面的myvenv为环境名称,建议不修改
- 进入或退出虚拟环境
source myvenv/bin/activate #进入虚拟环境
deactivate #退出虚拟环境
#提示:以上命令是在python-3.6.5文件夹下执行的,如果没有打开此文件夹,可以输入以下命令:
cd /root/Python-3.6.5 #进入python-3.6.5文件夹
source myvenv/bin/activate #进入myvenv
或直接输入:
source /root/Python-3.6.5/myvenv/bin/activate
(2)安装django
- 先输入deactivate退出虚拟环境,然后安装
pip3 install django
- 然后再进入myvenv虚拟环境,再次安装(用pip)
pip install django
#不是pip3,而是pip,进入虚拟环境后去掉python和pip命令后的“3” 。可能因为这本来就是python3的环境,没必要再区分。
(3)创建项目
- 创建django项目需要用到django-admin命令,先创建其软链接
ln -s /usr/local/python3/bin/django-admin /usr/bin/django-admin
#类似先前的命令,找到原路径,创立软链接路径(两路径间空格)
- 先进入存放项目的文件夹(自由选择),我选择**/www/myproject/,先在宝塔面板中的文件夹/www/下创建一个名为myproject**的目录,然后再命令行输入
cd /www/myproject #进入文件夹
- 之后可直接输入命令创建项目
django-admin startproject HelloWorld
#HelloWorld为项目名称(建议先了解整个流程后再更改)
创建完成,/www/myproject/文件夹下面将会出现一个名为HelloWorld的工程,进入文件夹,又会看到一个HelloWorld文件夹,难道是俄罗斯套娃?(狗头),除此之外,还有一个名为manage.py的文件,以后会经常用到,要习惯它的相关命令。
- 运行项目
cd HelloWorld
python3 manage.py runserver 0:8000
第一次运行出错,提示为没有配置数据库。如果没有出错请忽略下面步骤,直接在浏览器中输入 “IP地址:8000” ,如果打不开网页,需要在阿里云安全组设置防火墙
配置方式如下:
首先,确保已经建立了一个MySQL数据库,且知道数据库名称和密码,可以在宝塔面板数据库选项查看。
然后打开HelloWorld(第二个)工程文件夹,编辑settings.py文件
将76行DATABASES改成如下
DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }#以前的配置
'default': {
'ENGINE': 'django.db.backends.mysql', # 或者使用 mysql.connector.django
'NAME': 'name', #数据库名
'USER': 'name', #用户名,宝塔面板数据库选项可查看
'PASSWORD': 'password', #数据库密码
'HOST':'Localhost', #默认,若改了这个,数据库的也要改
'PORT':'3306', #端口,默认
}
}
settings.py文件第28行中ALLOWED_HOSTS=[]加入服务器IP
ALLOWED_HOSTS = ['180.25.91.166'] #[]内填服务器IP(公)
然后保存并返回命令行窗口,安装mysqlclient
pip3 install mysqlclient #虚拟环境中使用pip
然后启动服务
python3 manage.py runserver 0:9090
#虚拟环境中可以去掉“3”,如果嫌麻烦也可以先不使用虚拟环境,直接在原环境搭建,知道如何进入和退出虚拟环境即可。
结果就一直卡在这个画面
可能是因为端口没开,先进入阿里云控制台打开9090和3306的tcp端口,然后输入如下命令打开端口
firewall-cmd --zone=public --add-port=9090/tcp --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload #最后一定要重启
再次启动服务
python3 manage.py runserver 0:9090 #启动服务器,且端口为9090
浏览器打开101.24.97.334:9090,即 “你的IP:9090"。
(4)成功,小火箭起飞!
4 记录一些常见错误以及解决方法
(1)错误一: DisallowedHost at/
解决方法:
settings.py文件第28行中ALLOWED_HOSTS=[]加入服务器IP,然后保存。
ALLOWED_HOSTS = ['180.25.91.166'] #[]内填服务器IP(公)
(2)错误二: Performing system checks…
解决方法:
可能是因为端口没开,先进入阿里云控制台打开9090和3306的tcp端口,然后输入如下命令打开端口
firewall-cmd --zone=public --add-port=9090/tcp --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload #最后一定要重启
(3)错误三: 已经安装了django,但虚拟环境中提示未安装
解决方法:
pip3 命令安装的django只能在外部使用,在虚拟环境中要用pip命令来安装。
5 常用命令
cd /www/myproject/HelloWorld #进入文件夹,进入后才能用manage.py命令
django-admin startproject HelloWorld #创建django项目
python3 manage.py runserver 0:9090 #启动django服务
ctrl+C #退出服务
firewall-cmd --zone=public --add-port=8899/tcp --permanent #打开端口
firewall-cmd --reload #重启防火墙
使用templates:要设置路径:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR,"templates")],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
以上就是配置Django的全部记录了。喜欢搞事情、DIY、学技术的同学可以关注下面这个的公众号,了解更多有更趣的项目: