赞
踩
写在前面:
这基本是我第一次着手去搭建一套开发环境,从软件到依赖包到服务器部署,代码同步调试,从零看着一大堆资料到搭建出一个基本的开发环境并成功运行,我觉得有必要把其中的过程和对我有帮助的资料重新整理
Mark Zuckberg —社交网络 2018
本文初稿完成于 19 年 8 月,例子和命令可能有些老旧,当时我才刚开始接触服务器端开发与部署,也算是边动手边整理,算是对我当时的思路的留念
基本配置:
开发机:
服务器环境:
由于我们开发的前端网页都是在浏览器中运行,而目前市场上的浏览器又是五花八门,存在不少兼容性问题,选择市场占有率最高,且方便开发调试的Chrome浏览器是开发前的首要工作
直接进入链接下载
https://www.google.cn/chrome/
Chrome 开发者工具
Chrome 开发者工具大大方便了网页调试,打开工具的方式是F12或者右键网页页面,选择检查
开发者工具由几个板块组成,他们的作用是
Network
网络面板,Network面板用于web抓包,记录了每条网络操作的相关信息
Chrome 插件
https://chrome.google.com/webstore/category/extensions
js的包管理工具依赖于node.js运行环境,我们先安装,直接进入官网,选择稳定LTS版本
https://nodejs.org
安装中需要选中ADD TO PATH,安装后打开cmd,运行node -v
,成功即表明安装成功
npm 是node自带的包管理工具,安装node后默认安装
npm虽然是默认的js包管理工具,但有许多历史遗留的常见问题,为了对包管理的性能做出改进,yarn应运而生
官方对yarn的介绍
速度超快
Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率,因此安装速度更快。
超级安全
在执行代码之前,Yarn 会通过算法校验每个安装包的完整性。
超级可靠
使用详细、简洁的锁文件格式和明确的安装算法,Yarn 能够保证在不同系统上无差异的工作。
——————————————————————————————————————————
安装
npm install -g yarn
查看安装成功
webpack
eslint
这一步不再赘述(之前是拿学校的云主机当例子但不具有普适性,所以删了),随便选一个云厂商把服务器买下来就好了
有了可以使用的云服务器,我们就需要对它进行操作,因此我们需要能与服务器建立会话并且能进行文件传输的工具,这就是Xshell与Xftp。
Xshell是一个强大的终端模拟软件,你可以通过Xshell在本地开发机上连接服务器进行远程控制,Xftp可以与服务器进行上传或下载文件的服务
这两个软件在官网上可以通过邮箱进行免费使用
https://www.netsarang.com/zh/free-for-home-school/
填入姓名与邮箱后,下载链接会发送到你的邮箱里
接着下载安装后打开Xshell,在左上角选择新建会话,输入一个名称和你主机的ip地址,点击确定并连接,接着会让你输入你的主机密码,可以在自己的电脑上点击记住密码,方便下次连接
打开Xftp,以同样的方式新建会话并连接,输入你主机的用户名(默认为root) 与密码
之后就形成了一个本地-服务器连接的工作区,可以上传下载文件,也可以通过命令行操作服务器
当服务器系统版本过旧,可以进行升级,一般当服务器可以升级时都会在连接时进行提示,如
输入
do-release-upgrade
之后会有很多让你选择的操作,全部输入y即可,安装之后会重启终端,系统就升级完毕了
更改主机名:主机名一般由云服务器厂商为你分配,如果想更改,按如下步骤:
vi /etc/cloud/cloud.cfg
修改preserve_hostname为true
vi /etc/hostname
将其中的字段改为你要设置的名称
vi /etc/hosts
在127.0.0.1 localhost 后加自己设置的主机名
随后重启服务器(不是重启Shell) 即可看到主机名称完成更改
由于服务器系统大多在linux系统运行,所以熟练掌握linux的各种基本命令是非常重要的,但单纯去学命令容易没有条理,可以跟着教程一步步做着去学,也能掌握每一步命令的用途。
但一开始,熟悉一些必要的命令是有帮助的,我把一些在服务器中常用的linux命令和基本的linux常识列出(#是注释):
linux相信大家不陌生,这是Linus Torvalds在1991年发布的一个基于UNIX内核的开源操作系统内核,尤其适合多用户、多任务、多线程和多cpu的网络作业,所以被广泛用于服务器操作系统
在linux内核的基础上又诞生出了不少发行版系统,可以分为两个系列redhat和Debian,分别衍生出了目前使用范围最广的两个操作系统CentOS与Ubuntu
sudo apt-get install XXX #安装XXX组件
find / -name 'XXX' #查找名为XXX的文件或文件夹
#cd 目录地址 :进入该目录
cd 或 cd~ #进入root文件夹
cd / #进入根文件夹
cd .. #退到上级目录
cd /home
ls 目录地址:列出该目录下的文件和文件夹
ls #列出当前目录的文件和文件夹
ls /etc
Tips: 在实际开发过程中肯定还是会碰到没见过的命令,好习惯是先查一下用法,不要乱用,linux的简单粗暴既是优点也是缺点,有时一行命令就能发生 清空数据库/删除系统文件/电脑开不了机…等等可怕的事情,在网上或书上看到的命令一定要结合自己机器的情况比如系统版本,具体的目录和文件名称,切忌照搬命令。
在了解配置环境之前,我们需要对所配置的环境的各个组件的作用作出了解,在实际配置时,不能一味跟着步骤走,否则如果有一步跟步骤的操作不一样就变得无从下手,为此,我绘制了两张图,一张是用户访问web应用的后台处理机制,一张是开发者开发测试的机制,跟着这两张图,一步一步配置整体的环境
在官网下载最新版python到本地,在官网下载页选择 x86-64 executable(可执行版本)
https://www.python.org/downloads/release/python-373/
在安装时需要选中 Add python3.7 to PATH
安装完成后在cmd中输入
python -V
检查版本号,出现相关版本字样即表示安装成功
有了python环境,就可以搭建一个本地的Web应用测试环境,只需要安装django框架并利用其内置的服务器即可
在开始搭建本地Web测试环境之前,我们先回顾几个基本的概念与命令
python解释器 (Interpreter):在每台计算机中都可以安装多个python版本,他们有着不同的地址,甚至也可以安装两个相同版本不同地址的python,每个python安装目录下都有一个python.exe,这被称为一个解释器,不同于编译器,解释器可以使得python边解释边执行,而不是像C一样整体编译。
python虚环境 (virtual environment):为了项目的依赖独立而创建出的python虚拟运行环境,解决不同项目之间包与解释器版本的依赖冲突问题,继承于一个python解释器,virtualenv在创建环境时会生成一个含有python解释器和依赖包的文件夹,虚环境解释器继承系统的解释器版本,在Scripts文件夹下,在虚环境中安装的包在Lib->site-packages文件夹下,这样便实现了包的隔离
现有成熟的虚环境工具有virtualenv,Anaconda,pyenv等
python包/模块 (Module):Python模块是一个 Python 文件,以 .py 结尾,包含Python 对象定义和Python语句,模块可以定义函数,类和变量,包含可执行的代码,能够通过import有逻辑地组织 Python 代码段,我们将会用到Django等python包
具体关系如下图所示
对于命令的一个约定俗成的规范是使用 **命令 help (–help等变体)**查看该命令的用法
如:
在cmd中可以用pip 快速进行python包的安装,以安装python虚环境为例,可以了解pip命令的基本用法
pip install virtualenv
在命令行当前目录下 (可以用cd命令实现目录跳转)创建virtualenv环境并建立同名文件夹
virtualenv testVenv
默认情况下新的环境会安装pip,setuptools等基本的包,如果还需要继承系统python解释器中的包,需要使用
virtualenv --system-site-packages testVenv
更多功能也可以用
virtualenv -h
查看,接下来激活环境,就在当前目录直接输入以下命令激活
testVenv\Scripts\activate
可以看到新的虚环境中只安装了必需的包,在该环境激活的状态下,使用pip命令会将包安装到该虚环境文件夹下
以同样方法执行
testVenv\Scripts\deactivate
即可使环境失效
在该环境下,我们安装django框架
pip install django
查看版本号,正常出现即安装成功
python
>>> import django
>>> django.VERSION
(2, 2, 3, 'final', 0)
在命令行当前目录下创建项目与应用:
django-admin startproject 项目名称
生成后可以看到工程文件的目录
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。