Linux安装、发布Django项目

Linux安装

安装虚拟机
虚拟机软件,可以帮我们模拟一台真是电脑!

·VMware
·virtualbox

https://www.cnblogs.com/itzixueba/p/13945524.html
https://blog.csdn.net/java_xinshou1/article/details/100010099

安装重点:

1. 虚拟的联网方式 桥连接, NAT

相当于一台新电脑. 自动分配和主机一个网段的IP
比如:  主机IP: 172.16.45.42  自动分配的: 172.16.45.xxx

2. 要打开网络开关

忘记打开,后期手动改网络配置文件

3. 手动分区(分配文件大小)

boot 启动分区:  保存系统启动的引导文件的,大小一般300M/500M
swap内存交换分区: 物理内存不足时.充当内存用!
/ 跟分区:  占剩余的所有空间!
 
linx系统中,无盘符概念! 只有文件!!!

4. 一定记住root密码

所有linxu系统.默认最高权限用户:root.  默认常用密码:root/123456

5. 记住自己IP

window 电脑打查看Ip

ipconfig -all

centos  查看IP

ifconfig     # 或 addr /address

ifconfig 默认不能用!,需要安装网络工具

yum -y install net-tools  # -y表示忽略安装提示 # yum 和 pip一样,都可以从软件内置仓库中下载
资源

VMware使用
·使用快照备份和还原系统[经常使用]
右击系统菜单----快照---拍摄快照-->输入名字和介绍
右击系统菜单----快照---快照管理--->选择恢复到哪个


·克隆
右击系统--->管理--->克隆


·编辑虚拟机

虚拟机中系统的联网

第一:虚拟机联网方式(选桥接)
·桥连接:相当于一台局域网中的新电脑
和主机在同一个网段
IPxxx.xxx.xxx.xxx IP地址由四位组成 xxx.xxx.xxx.256 1和256都被路由器使用
主机:172.16.45.44
同一局域网段:172.16.45.xx
IP的前两位相同,就默认是一个局域网.是可以相互通讯的

·NAT连接:不同的是IP的第四位,最多模拟254台电脑
·NAT模式:不同的是IP的第三位,xxx.xxx.1-255 组建大型局域网
·仅主机(虚拟机和主机之间通讯)

第二:确保网络开关已经打开

1. 检查是否有IP, 检查网络状态

ifconfig   # 如果有IP.联网成功了!
service  network  status   # 检查网络装填! 可用显示active表示可用!

2. 查看网络配置文件(默认是动态分配IP,网络开关是关闭的:ONBOOT=no)

cat /etc/sysconfig/network-scripts/ifcg-ens33

3. 手动打开网络开关

必须改: ONBOOT="yes"  #打开

4. 重新启动网络服务

service network restart

第三:手动修改网络配置文件打开网络开关

1. Linux自带vi文本编辑器   vim是vi的升级版(yum install -y vim)

vi /etc/sysconfig/network-scripts/ifcg-ens33

2. 进入编辑模式

键盘i键---->表示进入编辑模式/状态
  各种修改...

3. 保存退出

按键 ESC  -----退出编辑状态
 :wq ---------- 保存退出
 :q! ---------- 不保存退出

4. 必须重启网络服务器

service network restar

第四:安装网络工具
centos mini版不自带网络工具的,需要手动下载
网络工具软件:net-tools

安装网络工具

yum  -y install  net-tools  # 默认ifconfig 不能用!

查看IP的指令

ifconfi

第五:客户端(SSH)连接
Putty
FinalShell (http://www.hostbuf.com/downloads/finalshell_install.exe)
是SSH客户端,可以通过命令控制服务器
自带FTP软件,实现文件上传!
XShell
等....

Linux目录结构
在Linux系统中,无盘符概念,都是文件/目录

·自己软件安装位置:/usr/local
·系统配置:/etc
·还可以操作(home.root,opt)opt:是yum下载安装的地址

bin 存放二进制可执行文件(ls,cat,mkdir等)
boot 存放用于系统引导时使用的各种文件
dev 用于存放设备文件
etc 存放系统配置文件
home 存放所有用户文件的根目录
lib 存放跟文件系统中的程序运行所需要的共享库及内核模块
mnt 系统管理员安装临时文件系统的安装点
opt 额外安装的可选应用程序包所放置的位置
proc 虚拟文件系统,存放当前内存的映射
root 超级用户目录 sbin 存放二进制可执行文件,只有root才能访问
tmp 用于存放各种临时文件
usr 用于存放系统应用程序,比较重要的目录/usr/local 本地管理员软件安装目录
var 用于存放运行时需要改变数据的文件

常用的Linux指令
·查看常用命令文档
链接:https://pan.baidu.com/s/1uTwLeP8LbQkesVa2rXyV8w
提取码:wvia
·Linux命令速查手册
链接:https://pan.baidu.com/s/1x7fGKdNvcTyvW4R59C-tGg
提取码:jywc

软件下载和安装方式

从yum软件仓库源中下载
yum和pip指令一样,都可以从远程软件源/仓库中下载软件
yum install -y  xxxx  #安装  -y 忽略安装提示!
yum remove  xxx    #卸载
yum update       #更新所有的软件源
yum update xxxx    #更新某个
yum list        #查看所有课安装的软件列表
yum search  xxx    #从软件源仓库中查找软件

·默认软件源地址:

·添加新软件源(阿里的软件源仓库)
centos自带的源位于国外服务器,可能下载速度慢,可以添加国内的软件仓库/软件源
https://blog.csdn.net/jiangzhangha/article/details/85531022

wget指令从某个网址中下载

默认Centos mini 版本 wget不存在

查本地wget指令是否可用

rpm -qa| grep 'wget' (了解)

安装

yum install -y wget

下载python3.6.6

wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz

window下完安装包,传到Linux中

Django项目发布
centos7+nginx+uwsgi+python3+django+其他依赖模块+ 数据库
python3.x --->底层运行环境
通过pip 安装第三方库(django,flask,pymysql,requests,....)
uwsgi: 项目发布软件,发布django项目(启动后就可以在浏览器访问django项目 )
默认访问地址:http://127.0.0.1:8000/
nginx: web项目发布软件(比uwsgi强) 可以绑定域名! 做负载均衡....
数据库: mysql,sqlite, redis.......

安装开发工具包
耗时长,安装完后一定制作快照

1. 更新yum库

yum update -y

2. 下载开发工具集

yum -y groupinstall "Development tools"
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-
devel psmisc libffi-devel

安装python3
centos自带python2.7

1. 查看python是否安装

python -V

2. 查看python指令解析流程

which  python  # 看到python位置
cd /usr/bin
ls -al  python*  # 查看python相关指令

需要安装python3.x
实现方式:添加python3指令---软件连接指向python3.6.6的安装目录

1. 下载Python3.6.6

cd /usr/local
wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz

2. 解压

tar -zxvf Python-3.6.6.tgz

3. 进入解压目录,编译

cd /usr/local/Python-3.6.6
./configure --prefix=/usr/local/python3 # 编译时会检查安装个包是否可用,且指定安装目录

4. 安装

cd /usr/local/Python-3.6.6
make
make install

5. 建立python3 指令软连接

ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3

6. 测试python是否可用

python3 -V

7. 建立pip3 软连接

ln -s /usr/local/python3/bin/pip3.6 /usr/bin/pip3

8.测试

pip3 -V
pip3 list

9. 更新pip3指令

pip3 install --upgrade pip

卸载python3
所有安装步骤: 下载安装包, 解压, 进入解压目录 ,编译, 安装, 建软连接, 加配置
所有软件删除步骤:

  1. 删了软件安装目录!
  2. 删除软件连接!
  3. 删除配置文件!

1. 进入 /usr/bin 目录,查看软连接

cd /usr/bin
ls -al python*
ls -al pip*

2. 删安装目录 (安装目录在/usr/local)

cd /usr/local
dir  # 查看目录
rm -rf python3


建虚拟环境下载依赖库

习惯在 /data目录中新建 evn: 保存所有的虚拟环境!
wwwroot : 保存所有项目源码!
(个人习惯,其它人可根据自己的实际情况处理)

·建目录
mkdir -p /data/env   # env保存所有虚拟环境  -p表示递归创建:如果data目录不存在,会自动创
建!
mkdir -p /data/wwwroot  # 保存待发布的项目源码

·创建虚拟环境
virtualenv/virtualenvwrapper django中文官网文档教程中使用
venv Python3.3 以后自带的虚拟环境管理软件!
pipenv pip和virtualenv的结合版
·使用venv创建虚拟环境

1. 进入虚拟环境目录

cd /data/env

2. 新建

python3 -m venv 虚拟环境名
python3 -m venv my_env01  # 新建的

3.激活

cd /data/env/my_env01/bin
source activate  # 退出 deactivate

4. pip安装软件指令

pip install  django==2.1.8
pip list
pip uninstall django

5. 导出虚拟环境中软件文档列表

pip freeze > 任意文件名.txt
pip freeze > requirements.txt

6. 根据依赖包的文本文档导入

pip install -r 文件名.txt
pip install -r  requirements.txt

下载uwsgi
发布web项目需要:uwsgi+nginx [java,php支持]
uwsgi: 是python的第三方模块/库!
uwsgi 是web发布服务软件:
作用:1. 发布项目,在浏览器通过域名访问! 2. 动态解析请求,根据请求动态调用后台的业务逻辑! 2.
缺点: 对静态资源(文本,图片,视频,音乐)处理不好!

·uwsgi
https://uwsgi-docs.readthedocs.io/en/latest/ConfigLogic.html
·安装

1.进入虚拟环境并激活

cd /data/env/my_env01/bin
source acticate

2. 安装

pip install uwsgi         # 注意:uwsgi必须进入虚拟环境后才能用!

3.为了方便使用,可以添加软连接

ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi # 可以不创,如果不创建,必须激活虚拟环境才
能用

安装nginx(默认监听80)
ngxinx : 强大的web项目发布服务软件!
1.支持域名解析
2.支持流量监控
3.对静态资源处理能力强大
4.负载均衡配置。反向解析等

通过yum安装
centos的软件源中默认无nginx软件,centos软件源位置:/etc/yum.repos.d/

1.添加nginx的软件源

vi /etc/yum.repos.d/nginx.repo

按i进入编辑模式

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

保存退出

:wq

2. 安装

yum install -y  nginx

3. 添加为系统服务(可以开机自启动)

systemctl enable nginx

4. 启动/停止/重启

systemctl start/stop/reload  nginx

5. 查看运行的端口

netstat  -atunp

6. 本地访问nginx默认发布的首页

curl 127.0.0.1:80  # 80可以不写

7. 关闭防火墙,外网可以通过Ip访问nginx默认的首页

systemctl stop firewalld.service

·通过源码安装

1. 先下载

cd /usr/local
wget http://nginx.org/download/nginx-1.13.7.tar.gz

2. 解压

tar -zxvf nginx-1.13.7.tar.gz

3. 编译

cd nginx-1.13.7
./configure

4. 安装

make
make insatll

5. 启动并访问默认页面

cd /usr/local/nginx/sbin
./nginx  #启动-------->启动成功后,可以访问默认的nginx页面
./nginx -s stop #停止
./nginx -s reload #重启
./nginx -t  #检查nginx.conf配置文件的语法

6. 检查运行状态

netstat  -atunp  # 查看80端口
curl 127.0.0.1:80  # 本地访问默认页面
http://IP地址:80 # 远程访问nginx默认页面 (前提:云服务器控制台手动打开80端口)

替换ngxin默认首页为自己的页面

1. 找nginx安装位置

whereis nginx #(安装位置etc 中, 网页在:/usr/share/nginx/html中)

2. 上传自己的网站到nginx的html目录

/usr/share/nginx/html



注意:云服务器(比如:阿里云,腾讯云等...)依然拒绝访问!因为:云服务器的端口是通过后台管理界面控制的!

安装mysql
数据库: 可以安装mysql 也可以安装mariadb
mysql https://www.django.cn/article/show-2.html
maraidb https://www.cnblogs.com/itzixueba/p/13949469.html

mysql5.7安装

一、添加MySQL Yum库

二、选择要安装的MySQL版本

三、安装MySQL

四、设置MySQL密码。

五、阿里云开发3306端口,客户端连接并操作数据库

发布django项目
发布django 项目三个步骤

  1. 本地新建djang项目正常运行
  2. 配置uwsgi
  3. 配置nginx
  4. 同步依赖模块
  5. 上传项目到服务器
  6. 新建django项目
    django项目


    setting.py配置修改

1. 允许任意IP访问

ALLOWED_HOSTS = ['*']

2. 导入自己的app

INSTALLED_APPS = [
 ....
  'users'
]

3.删除sqlite3的配置或配置连接mysql

4. 语言,时区.静态资源配置

LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False
STATIC_URL = '/static/'  # 相对路径方式查找
STATICFILES_DIRS = (    # 通过项目绝对路径找
  os.path.join(os.path.join(BASE_DIR, 'static')),
)

2.配置uwsgi

添加配置选择

[uwsgi]

配置和nginx连接的socket连接

socket=127.0.0.1:8000

配置项目路径,项目的所在目录

chdir=/data/wwwroot/mysite01/

配置wsgi接口模块文件路径,也就是wsgi.py这个文件所在的目录名

wsgi-file=mysite01/wsgi.py

配置启动的进程数

processes=4

配置每个进程的线程数

threads=2

配置启动管理主进程

master=True

配置存放主进程的进程号文件

pidfile=uwsgi.pid

配置dump日志记录

daemonize=uwsgi.log

uwsgi操作指令

启动

uwsgi  --ini  uwsgi.ini
显示 [uWSGI] getting INI configuration from uwsgi.ini 表明uwsgi运行成功

可能通过ps -ef|grep uwsgi  查看确认是否uwsgi启动.

停止运行uwsgi,通过包含主进程编号的文件设置停止项目

uwsgi --stop uwsgi.pid

重启uwsgi

uwsgi --reload uwsgi.pid

上传项目到/data/wwwroot/

1. 命令启动项目查看是否能正常运行

cd /data/my_env02/bin
source activate       #激活虚拟环境

2. 进入项目

cd /data/wwwroot/mysite01
python manage.py runserver

3. 新打开SSH客户端,内网访问8000

curl 127.0.0.1:8000 #成功表示项目运行良好

nginx的yum安装方式默认安装好的路径为/etc/nginx

在/etc/nginx/conf/中先备份一下nginx.conf文件,以防意外。

cp nginx.conf nginx.conf.bak

然后打开nginx.conf,把原来的内容删除,直接加入以下内容:

events {
  worker_connections  1024;
}
http {
  include    mime.types;
  default_type  application/octet-stream;
  sendfile     on;
  server {
    listen 80;
    server_name  127.0.0.1:80; #改为自己的域名,没域名修改为127.0.0.1:80
    charset utf-8;
    location / {
     include uwsgi_params;
     uwsgi_pass 127.0.0.1:8000;  #端口要和uwsgi里配置的一样
     uwsgi_param UWSGI_SCRIPT mysite01.wsgi;  #wsgi.py所在的目录名+.wsgi
     uwsgi_param UWSGI_CHDIR /data/wwwroot/mysite01/; #项目路径
    
   }
    location /static/ {
    alias /data/wwwroot/mysite01/static/; #静态资源路径
   }
}
}

执行./nginx -t命令先检查配置文件是否有错,没有错就执行以下命令:

重新启动nginx

systemctl reload nginx

5.启动项目

  1. runserver指令启动uwsgi测试项目是否正常访问!
  2. 启动uwsgi
  3. 检查nginx配置语法
  4. 启动ngxin
  5. 检查:端口. 内网访问,外网访问

uwsgi启动8000

1. 进入虚拟环境,激活

cd /data/env/my_env02/bin
source activate

2. 在虚拟环境中进入项目,启动uwsgi

cd /data/wwwroot/mysite01
uwsgi --ini uwsgi.ini  #启动

显示: [uWsgi] getting INI configuration from uwsig.ini 表示成功

端口8000是否启动

netstat -atunp  #8000是启动的

启动nginx的80端口

1. 进入nginx目录

cd /usr/local/nginx/sbin

2. 检测语法

./nginx -t  #
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

3. 启动

./nginx  #启动
./nginx -s reload #重启
./nginx -s stop #停止

4. 检测80

netstat -atunp

5. 本地测试

curl  127.0.0.1:80

6. 外网测试

http://172.16.45.53:80  #

7. 通过域名访问

http://www.xxx.com

  1. 通过域名访问
    更改nginx.conf 添加域名

阿里云后台开放80端口

7阿里云服务器开放端口
网络与安全---安全组--->创建一个安全组---配置

必须手动打开某些端口:注意端口分为入口和出口



安装mysql/Mariadb
Centos7操作系统YUM库列表里默认不再提供MySQL,已经被MariaDB代替。如果我们想通过YUM在
线安装Mysql,我们需要添加MySQL Yum库
我们直接安装mysql的替代软甲:mariadb
参考:https://www.cnblogs.com/itzixueba/p/13949469.html

小结:检查系统环境

1. 检查python指令是否可用?

检查python3指令是否可用
python -V
python3 -V

2.python 指令的解析过程

which python3
cd /usr/bin
ls -al python* # 看到python命令的指向!

3. 查看ngxin是否启动(80端口打开就是启动)

netstat -atunp   #查看所有正在运行的端口

4. 启动/暂停/重启 nginx

systemctl start/stop/reload  nginx
kill -9 软件PIP编号  # kill -9 49195 (强制杀死进程,经常需要杀死多遍)

5. 启动nginx,检查启动状态

systemctl start nginx
netstat -atunp

6. 可以访问默认的ngixn首页

curl 127.0.0.1:80  #80可省略

7.关闭防火墙(云服务器通过后台管理控制防火墙,不是通过命令控制的)

systemctl stop firewalld.service

8. 通过浏览器输入IP地址可以访问成功

http://IP:80 #http://172.16.45.53

9. 必须清楚浏览器的缓存! 否则错误页面会一直存在!


域名服务器介绍
域名:(网址,方便记忆)
www开头的域名是一级域名, 需要购买 (www.zhouzhengyang.cn)
不以www开头的域名叫二级域名或子域名 1个一级域名包含N个二级域名

百度一级域名

www.baidu.con

二级/子

map.baidu.com  #百度地图
tieba.baidu.com # 百度贴吧
news.baidu.com  # 百度新闻
zhidao.baidu.com  #百度知道
m.baidu.com    #百度wap页

域名后缀介绍
.com # 表示商业公司
.cn  #中国
.org  #国际域名
.edu  #学校等教育机构
.gov  #政府机构
... .中国  .love .top

购买

域名购买: 阿里云, 百度云,腾讯云, 华为云 ,新浪云

阿里云域名购买

https://wanwang.aliyun.com/?spm=5176.19720258.J_8058803260.1294.e9392c4apaoN4P

DNS域名解析
必须配置前缀: www/@/*
二级域名前缀: 任意
m.xxx.com #表示手机网站
blog.xxx.com #表示博客网站
mp3.xxx.com #表示音乐网站
movie.xxx.com #视频网站

服务器
服务器: 大内存,大硬盘,高CPU的 电脑主机! 而且24小时运行!
建议购买:BAT 三大公司云服务器 和 华为云服务器

购买学生机
https://www.baidu.com/s?
wd=%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%20%E5%AD%A6%E7%94%9F%E6%9C%BA&rsv_spt=1&rs
v_iqid=0xb9158799000379dd&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-
8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=tb&rsv_sug2=0&rsv_btype=i&inputT=19738&rsv_su
g4=22769

阿里云服务器流程
https://blog.csdn.net/yundashi168/article/details/108536303

腾讯校园服务器
https://cloud.tencent.com/act/campus?
fromSource=gwzcw.3775923.3775923.3775923&utm_medium=cpc&utm_id=gwzcw.3775923.37759
23.3775923

阿里服务器
https://www.aliyun.com/1111/ecs?utm_content=se_1007409450


重置密码


公网IP

SSH客户端连接

常用问题总结

  1. 建议安装Centos mini版

  2. 如果安装的是带桌面的版本.CPU和内存一定调高!(2G,4核)
    3.安装时一定要打开网络开关


如果忘记,需要更改ens33的配置文件 ONBOOT=yes

更改网络配置,打开网络开关

vi  /etc/sysconfig/network-script/ifcg-ens33

打开网络开关

ONBOOT=yes

重启网络服务器

service network restart

4.安装网络工具

网络工具

yum install net-tools

查看本机IP

ifconfig

  1. 安装Python相关软件前必须下载Develops tools 和相关依赖软件

1. 更新yum库

yum update -y

2. 下载开发工具集 [必做]

yum -y groupinstall "Development tools"
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-
devel psmisc libffi-devel

  1. 下载python3.x
    通过源码安装python3.x

3.6.6

wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz

所有版本

https://www.python.org/ftp/python/

  1. 百度Centos7安装python3.x
    https://www.cnblogs.com/anxminise/p/9650206.html


  1. 默认无SQLite3
    https://www.cnblogs.com/anxminise/p/9650142.html

  2. 必须添加软连接

如何删除软连接

cd /usr/bin
rm -rf python3


10.为什么pip3 软连接无法建立?


安装软件是否安装成功?启动成功?关闭

python3 -V
pip3 -V

nginx 是否成功?

netstat -atunp   # 进程列表中有80端口.表示成功了!
curl 127.0.0.1  #访问默认的nginx首页面!
kill -9 进程PID  #万能杀死进程/软件

uwsgi ? django ? flask 等第三方库成功?

pip  list

外网为什么不能访问???

1. 自己服务器,检查防火墙是否开放了该端口!

2. 云服务器,通过后台管理界面控制端口是否开放?

3. 任何web项目,访问前.必须清空浏览器缓存!

posted on 2020-11-26 20:17  华北陈冠希  阅读(278)  评论(0编辑  收藏  举报