小布丁和巧乐兹网站诞生记
河流凭借山川纪念故乡,我凭借和你相爱纪念岁月。@Vivien
1.准备工作
- 服务器(阿里云、腾讯云、华为云等等随便一款,文中服务器默认为阿里云、系统默认为Ubuntu)
- 域名(与域名有关的解析)
- Xshell、Xftp两款软件(百度下载官方免费版)
2.连接服务器
查看服务器端口情况
主要查看22号端口是否开启,22端口用于远程链接
设置SSH登陆密码
使用Xshell连接服务器
3.安装python
查看系统中的python
python
如果输入代码后显示错误,或者显示的python版本太低,我们直接安装比较新的python版本(示范安装的版本为python3.7.1)
安装新版python
首先进入一个目录(随便一个)
cd ~
下载python3.7.1
wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz
解压到当前目录
tar -zxvf Python-3.8.1.tgz
编译安装
./configure --prefix=/usr/local
make
make install
安装完成后python3.7.1被安装在/usr/local
中
建立软连接
如果之前输入python
进入了python,那么就要先删除原有的软连接,输入命令
rm -rf python
如果没有则直接跳到这一步,输入命令
ln -s /usr/local/python3/bin/python3.7 /usr/bin/python
此时,输入python
测试,若出现python3.7.1版本,python软连接建立完成
然后再建立pip软连接,输入命令
ln -s /usr/local/python3/bin/pip /usr/bin/pip
此时,输入pip -V
如果出现pip的版本,pip软连接建立完成
4.安装virtualenv和virtualenvwrapper
安装virtualenv
在随便一个目录下,输入命令
pip install virtualenv
安装成功后,输入virtualenv --version
若出现virtualenv版本,安装成功
安装virtualenvwrapper
在随便一个目录下,输入命令
pip install virtualenvwrapper
在随便一个目录下新建虚拟环境目录(我是在cd ~
下),输入命令
mkdir envs
添加环境变量信息
记录下virtualenvwrapper.sh的位置,输入命令
find / -name virtualenvwrapper.sh
进入根目录
cd ~
建立虚拟环境目录
mkdir envs
任意目录下,输入命令
vim ~/.bashrc
在文件最下方输入
export WORKON_HOME=~/envs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/python3/bin/virtualenv
source /usr/local/python3/bin/virtualenvwrapper.sh
其中VIRTUALWRAPPER_VIRTUALENV是virtualenv的安装目录
source
后跟的是刚才记录的virtualenvwrappper.sh位置
在任意目录下,激活环境变量
source ~/.bashrc
5.虚拟环境
新建虚拟环境
在任意目录下,输入命令
mkvirtualenv djangoenv
进入虚拟环境
在任意目录下,输入命令
workon djangoenv
像下图一样证明进入成功
退出虚拟环境
在任意目录下,输入命令
deactivate
6.安装Django
首先保证进入了虚拟环境,在任意目录下输入命令
pip install django
如果安装有错误,就更换为其他源安装,类似
pip -i install https://pypi.tuna.tsinghua.edu.cn/simple django==3.1.5
7.创建Django环境
创建Django项目
首先保证进入虚拟环境
进入任意目录,创建项目目录,例如(choruspudding就是我的Django项目名)
cd ~
django-admin.py startproject choruspudding
进入项目目录下
cd choruspudding
此时ls
查看文件,发现有一个choruspudding文件夹和一个manage.py文件,证明项目创建成功
创建Django APP
在项目目录下,创建index APP,输入命令
python manage.py startapp index
此时项目目录下多了index文件夹
此时进入settings.py文件,输入命令
vim ~/choruspudding/choruspudding/settings.py
在INSTALLED_APP中添加新增的APP,如上图
创建templates文件夹
在项目目录下,新建文件夹,输入命令
mkdir templates
进入templates目录,新建一个html页面(写入任意内容测试使用),
cd templates
vim index.html
templates文件夹下集中放置的html文件,提供给Django APP使用
创建static文件夹
在项目目录下,新建文件夹,输入命令
mkdir static
进入static目录,输入命令
mkdir css
mkdir js
mkdir images
mkdir ttfs
分别放置CSS文件、js文件、图片文件、字体文件等静态资源
编辑settings文件,输入命令
vim ~/choruspudding/choruspudding/settings.py
在文件最底部添加STATICFILES_DIRS如下图
设置index APP
在项目目录下,进入index APP的目录,输入命令
cd index
编辑views.py,输入命令
vim views.py
from django.shortcuts import render
def index(requset):
return render(request,'index.html')
编辑完成后,新建urls文件,输入指令
vim urls.py
from django.urls import path,include
from . import views
urlpatterns = [
path('', views.index),
]
设置全局路由
在项目目录下,编辑urls.py,输入命令
vim ~/choruspudding/choruspudding/urls.py
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('index.urls')),
]
这样第一个网页就是index.html了
到此为止,就完成了Django的全部基本设置,现在我们使用代码python manage.py runserver
就可以在内网访问到Django页面了。
但这还不够,距离一个真正的网站还差两个关键部件
8.配置uWSGI环境
uWSGI是一个Web服务器
安装uWSGI
首先保证进入虚拟环境,输入命令
pip install uwsgi
创建mysite.ini
然后进入项目目录,输入命令
vim mysite.ini
[uwsgi]
# plugin = python
socket =127.0.0.1:8080
chdir = /root/choruspudding
wsgi-file = choruspudding/wsgi.py
processes = 4
threads = 2
master = True
daemonize = uwsgi.log
注意此文件中的chdir和wsgi-file要根据自己的项目目录修改
全局安装uWSGI
这时,尝试启动uWSGI,输入命令
uwsgi --ini ~/choruspudding/mysite.ini
如果没错误,输入deactivate
退出虚拟环境,输入命令
pip install uwsgi
这样就在全局也安装了uWSGI
设置开机自启uWSGI
进入rc.local文件,输入命令
vim /etc/rc.local
更改为上图,这样uWSGI开机会自动启动
9.配置nginx
安装nginx
任意目录下输入命令
wget https://nginx.org/download/nginx-1.18.0.tar.gz
解压
tar -zxvf nginx-1.18.0.tar.gz
进入解压目录
cd nginx-1.18.0
配置
./configure --prefix=/usr/local/nginx
编译
make
安装
make install
配置软连接
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
配置conf文件
编辑nginx安装目录下的conf文件,输入命令
vim /usr/local/nginx/conf/nginx.conf
将conf文件更改为上图
设置nginx开机自启
cd /lib/systemd/system
touch nginx.service
vim nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
保存后,输入systemctl start nginx.service
此时,可以重启服务器,测试uWSGI和Nginx是否自动启动。
到此,我们的Django+uWSGI+Nginx部署工作,全部完成!
2021/2/1 2:36
将conf文件更改为上图
设置nginx开机自启
cd /lib/systemd/system
touch nginx.service
vim nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
保存后,输入systemctl start nginx.service
此时,可以重启服务器,测试uWSGI和Nginx是否自动启动。
到此,我们的Django+uWSGI+Nginx部署工作,全部完成!
—————————————————————————————————————
谨以此文纪念我们的网站建成
2021/2/1 2:47