配置服务器

本教程使用的本地环境为 Windows 10,服务器环境为 CentOS 7(64 位)。(如果你还不知道服务器是什么的话,我简单解释一下服务器其实就是一台在其他地方运行的主机。这台主机可能没有显示器,就躺在某个服务器厂的架子上。如果你还没有用过服务器,我建议如果仅仅是想搭建一些小的网站的话,可以购买阿里云的学生机服务器,一个月只要9.5。)如果你的环境和我的有所差异(比如 Ubuntu)导致一些命令无法执行,将这些命令转换为你所在环境的命令执行即可,重点在于理解每一步的作用,这样无论在何种环境你都能成功地完成部署,而不是机械地复制粘贴命令。

远程登录到服务器

服务器通常位于云端,需要使用远程登录工具登录后才能对服务器进行操作。我使用的是阿里云的学生机服务器。可以直接平台内的远程连接完成登录

远程登录之后的样子如图所示。

创建一个超级用户

顺利连接到远程服务器了,如果是一台全新服务器的话,通常我们是以 root 用户登录的。在 root 下部署代码不够安全,最好是建一个新用户(如果你已经以非 root 用户登录的话可以跳过这一步)。下面的一些列命令将创建一个拥有超级权限的新用户(把 yangxg 替换成你自己想要的用户名,我这里取我的名字拼音 yangxg):


# 在 root 用户下运行这条命令创建一个新用户,Mrhuo 是用户名
# 选择一个你喜欢的用户名,不一定非得和我的相同
root@server:~# adduser Mrhuo
# 为新用户设置密码
# 注意在输密码的时候不会有字符显示,不要以为键盘坏了,正常输入即可
root@server:~# passwd Mrhuo
# 把新创建的用户加入超级权限组
root@server:~# usermod -aG wheel Mrhuo
# 切换到创建的新用户
root@server:~# su - Mrhuo
# 切换成功,@符号前面已经是新用户名而不是 root 了
Mrhuo@server:$

新用户创建并切换成功了。如果是新服务器的话,最好先更新一下系统,避免因为版本太旧而给后面安装软件带来麻烦。运行下面的两条命令:

Mrhuo@server:$ sudo yum update
Mrhuo@server:$ sudo yum upgrade

更新SQLite3

如果您的数据库不是采用的SQLite可以跳过这段。
为了方便,我们博客使用了 SQLite3 数据库,django 2.2 要求 SQLite3 数据库版本在 3.8.3 以上,而 CentOS 7 系统自带版本低于 django 2.2 所要求的最低版本,所以首先来更新 SQLite3 的版本。

注意有可能你使用的服务器系统发行版 SQLite3 已经高于 3.8.3,这一步就可以跳过。如何查看 SQLite3 的版本呢?请执行 sqlite3 --version
# 创建 src 目录并进到这个目录
Mrhuo@server:$ mkdir -p ~/src
Mrhuo@server:$ cd ~/src
# 下载 sqlite3 源码并解压安装
Mrhuo@server:$ wget https://sqlite.org/2019/sqlite-autoconf-3290000.tar.gz
Mrhuo@server:$ tar zxvf sqlite-autoconf-3290000.tar.gz
Mrhuo@server:$ cd sqlite-autoconf-3290000
Mrhuo@server:$ ./configure
Mrhuo@server:$ make
Mrhuo@server:$ sudo make install

小贴士:


如果 wget 命令不存在,使用 sudo yum install -y wget 安装即可。

至此 SQLite3 更新完毕,接下来安装 Python3。

安装Python3和Pipenv

CentOS 7 自带的 Python 发行版为 2.7,因此需要安装 Python3,为了兼容性,我们安装 Python 3.6.4。
首先安装可能的依赖:

Mrhuo@server:$ sudo yum install -y openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel

然后下载 Python 3.6.4 的源码并解压:

Mrhuo@server:$ cd ~/src
Mrhuo@server:$ wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz
Mrhuo@server:$ tar -zxvf Python-3.6.4.tgz

最后编译安装:

Mrhuo@server:$ cd Python-3.6.4
Mrhuo@server:$ ./configure LD_RUN_PATH=/usr/local/lib LDFLAGS="-L/usr/local/lib" CPPFLAGS="-I/usr/local/include"
Mrhuo@server:$ make LD_RUN_PATH=/usr/local/lib
Mrhuo@server:$ sudo make install

注意这里安装 Python 时,Python 会依赖 SQLite3 的库,所以在 configure 时通过 LD_RUN_PATH 指定依赖的搜索目录(因为我们之前更新了 SQLite3 的版本,指定依赖搜索目录确保使用新的 SQLite3 依赖库),另外两个参数作用类似。

然后输入 python3.6 -V 和 pip3.6 -V 命令测试安装结果,输出版本号说明安装成功了。

有了 pip,就可以安装 Pipenv 了:

Mrhuo@server:$ sudo pip3.6 install pipenv

注意

这里可能会报没有pip3.6这个指令的错。因为加上sudo权限之后它的默认搜索路径是在/usr/bin下面。我们得改一下默认的搜索路径。
备份原有配置,设置python默认版本号为3.xmv /usr/bin/pip /usr/bin/pip.bak再执行:ln -s /usr/local/bin/pip3.6 /usr/bin/pip最后,执行pip -V验证,如图版本变成了3.x小提示
怎么查看自己的pip指令在没在/user/bin/下面呢,你可以用阿里云平台自带的查看文件树的方法,也可以使用第三方工具。比如我用的WinSCP这个工具连接本地电脑和服务器,可以通过拖拽的方式将我本地的文件移到服务器中。

这下再试试,是不是就没有报错了。如果下载得很慢的话可能是因为访问的是其他国家的服务器。所以我推荐采用国内的源。

sudo pip install -i http:pupi.douban.com/simple --trusted-host pypi.douban.com pipenv安装过程行云流水

部署代码

接下来开始准备部署代码,让我们的应用在服务上跑起来,这和在本地开发时的过程是一模一样的。不过为了将应用部署到服务器上,我们首先要对项目做一点配置,打开 settings.py,找到 ALLOWED_HOSTS,将其修改为:
blogproject/settings.py

ALLOWED_HOSTS = ['127.0.0.1', 'localhost ', '你的服务器的公网IP','.你的域名(如果有的话)']

指定了 ALLOWED_HOSTS 的值后,django 将只允许通过指定的域名访问我们的应用,比如这里只允许通过 127.0.0.1,localhost 以及 zmrenwu.com 和其任意子域名(域名前加一个点表示允许访问该域名下的子域名)访问(即 HTTP 报文头部中 Host 的值必须是以上指定的域名,通常你在浏览器输入域名访问网站时,Host 的值就会被设置为网站的域名),这样可以避免 HTTP Host 头攻击。

django 项目中会有一些 CSS、JavaScript 等静态文件,为了能够方便地让 Nginx 处理这些静态文件的请求,我们把项目中的全部静态文件收集到一个统一的目录下,这个目录通常位于 django 项目的根目录,并且命名为 static。为了完成这些任务,需要在项目的配置文件里做一些必要的配置:

blogproject/settings.py# 其他配置...STATIC_URL = '/static/'
# 加入下面的配置
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

STATIC_ROOT 即指定静态文件的收集路径,这里指定为 BASE_DIR(项目根目录,在 settings.py 文件起始处定义)下的 static 文件夹。
现在的关键是把代码传到服务器上来了,方法有很多。我这里介绍两种git和WinSCP.如果你熟悉git的话那就用git上传到仓库再在服务器里拉进文件就好了。如果你不熟悉git,我推荐用WinSCP这个工具。它可以直接从本地拖拽文件置你的服务器。

第一种git

首先安装 git:

Mrhuo@server:$ sudo  yum install -y git

将代码上传到 GitHub 等代码托管平台,这样我们就可以方便地把代码拉取到服务器了。Git 和 GitHub 的使用相信你已经很熟悉了,这里就不赘述过程。如果不知道如何使用地话可以自行百度相关教程。注意数据库文件不要上传!

我通常喜欢把应用代码放在 ~/apps/ 目录下,先来设置一下服务器的文件结构,用于存放应用代码等相关文件:

# 在用户目录下创建 apps 目录并进入
Mrhuo@server:$ mkdir -p ~/apps
Mrhuo@server:$ cd ~/apps
# 拉取博客代码
Mrhuo@server:$ git clone https://github.com/HelloGitHub-Team/HelloDjango-blog-tutorial.git

第二种WinSCP

如图真的超级简单,方便。直接连接上服务器之后拖拽就行了。

然后进入到项目根目录,安装项目依赖:

Mrhuo@server:$ cd ~/apps/HelloDjango-blog-tutorialMrhuo@server:$ pipenv install --deploy --ignore-pipfile

然后创建一下数据库:

如果你部署项目的时候没有发送你的数据库文件的话,才需要创建数据库。否则就不需要。换句话说就是如果你的项目根目录下已经有了sqlite3.db这个文件的话就不需要做次步了。
Mrhuo@server:$ pipenv run python manage.py migrate

启动开发服务器:

Mrhuo@server:$ pipenv run python manage.py runserver 0.0.0.0:8080

这里我们启动开发服务器时指定了服务器运行的 ip 和端口,这将允许通过公网 ip 的 8080 端口访问我们的博客。

访问 ip:8080,可以看到访问成功(其中 ip 为你服务器的公网 ip)。

访问失败?

如果通过ip:8080访问失败的话首先看你运行完pipenv run python manage.py runserver 0.0.0.0:8080是否显示已成功部署了。然后再检测你的服务器的安全组是否打开。
如图,这里有几个端口是需要你手动配置的。授权对象0.0.0.0代表所有其他的电脑都允许访问你当前的这个端口。

如何通过域名访问

  1. 拥有一个自己的域名,可以去阿里云注册一个域名,当然也可以从别人那里买。注意注册的时候要完成实名认证,以及模板创建。这些在你购买的时候都会显示在页面上的。.com类型的域名是在国外的不需要备案。而.cn的域名是需要国内备案的可能需要1-3天。
  2. 购买成功后,再去解析你的域名。意思就是将你的域名与你的服务器的ip地址绑定。
    阿里云域名控制台
    阿里云域名解析

好啦。接下来你就可以直接通过你的域名来访问你的网站啦。

尾声

这篇教程是我在参考别人的教程时所遇到的一些问题,希望能给大家带来一些帮助!

Django的web项目部署至Centos7服务器并配置域名访问相关推荐

  1. Web项目部署到云服务器中—保姆级教程

    文章目录 1.1工具准备 1.2安装JDK 1.3安装Tomcat 1.4安装MySql 1.5配置防火墙 1.6配置云服务器安全组 1.7Tomcat配置与启动 1.8补充知识 8.8.1如何将项目 ...

  2. Web项目部署阿里云服务器全过程——详细篇

    最近学习了Web开发前后端等技术,便想着将项目部署到云服务器,方便后续管理,顺便学习一下部署云服务器的过程. 购买与连接云服务器 部署云服务器,首先需要的便是购买云服务器,这里我选择的是阿里云服务器, ...

  3. java web项目部署到tomcat服务器(一般步骤和自己所犯错误的总结)————高手忽略

    最近由于项目需求,需要将java web项目部署到本地tomcat上(版本为8.0)进行测试.作为一个非计算机专业的菜鸟,之前的工作都是写后台逻辑代码,没接触过web项目部署.部署的时候不知道如何下手 ...

  4. ij运行tomcat_如何把本地Web项目部署到云服务器上

    [写给小白] 上手学Web的同学通常会用本地Tomcat进行测试 当一个网站写得差不多了,如何部署到云服务器,让别人也能远程访问呢? 1. 你需要 配置好Tomcat的云服务器(我用的linux系统) ...

  5. 项目部署到centos7服务器验证码乱码

    由于业务拓展,将业务迁移到centOS7的服务器,配置完jdk和nginx之后,将服务发布到服务器上并部署启动,然后刷新页面,神奇的事情    经和开发探讨,发现下面为此为开发代码中指定的字体库.  ...

  6. IDEA的web项目的创建极其服务器的配置

    WEB流程 1.创建一个WEB项目 先创建一个普通的java项目,然后在ADD Frameworks Support选项中选择Web Application(versions:4.0) 2.配置服务器 ...

  7. web项目部署到linux服务器出现的问题

    为什么80%的码农都做不了架构师?>>>    问题一: could not extract ResultSet-- 后面还有很多错误提示,现在问题解决了,找不到更多的提示了,但是大 ...

  8. 网站部署到其他服务器但无权修改,web项目部署到服务器遇到的问题

    web项目部署到Linux服务器遇到的问题 (内含war包部署产生的问题) 部署项目为:旅游网(可下载源码) 一 Linux部署环境问题 二 war包错误修改 Linux部署环境问题 整个Linux服 ...

  9. Javaweb和微信小程序项目部署阿里云服务器总结(上)

    谈到微信小程序的java后台怎么部署在阿里云服务器上的问题,弯弯绕绕,好多坑,网上的博客资料也特别乱,博主也是在没有任何经验和指导下花了几天的工夫才完成的.这里为了方便大家不踩坑,总结了下整个流程和注 ...

最新文章

  1. Linux常用的基本命令02
  2. 关于qte illegal instruction的一些心得
  3. yolov3 anchor 理解
  4. Show Attend and Tell的词表
  5. vue-day02-vue常用特性
  6. 服务动态选择域名问题
  7. 如果不清楚设计方向,圣诞设计模板可以帮助你轻松建立节日主题。
  8. Git学习总结(14)——Git使用前的注意事项
  9. 计算机领域车牌识别,城市智慧停车的智能眼睛——车牌识别系统
  10. 群晖5.2php核心设置_只需四步, 黑群晖5.2 NAS 最简明搭建教程
  11. linux下列目录清单用命令,Linux入门必看的Is命令实用范例!
  12. MATLAB如何导出高分辨率的模型图片、PDF
  13. VS Code Material Icon Theme插件设置自定义文件夹图标关联
  14. 测试经理必知必会-Kanban和Scrum区别
  15. 台式机耳机插上没声音_如何在台式机上使用移动耳机麦克风
  16. winxpnbsp;sp3
  17. 国产台式电子计算机,国产十大台式电子管名机6——东方红82-Y型收音机(一)
  18. 封装Libuv定时器 - Timer
  19. 李小龙:超人是这样练成的
  20. 极光开发者周刊【No.0806】

热门文章

  1. 综合布线系统需求分析
  2. java nltk,使用NLTK将Tokenizer组合成语法和解析器
  3. 台式计算机显卡驱动位置,台式机显卡怎么安装 台式机显卡安装步骤
  4. matlab符号计算中提取,[matlab]符号表达式中的系数提取问题
  5. kali工具熟悉——存活主机识别
  6. 做你想要成为的那个人《本杰明·巴顿奇事》
  7. 微信小程序view水平垂直居中完美解决
  8. 蓝精灵就在身边 明泰i760华彩展现
  9. 安装win10正式版后网速变慢的解决方法
  10. 虚拟机Ubuntu20安装tensorflow-rocm