Linux
目录
-
Linux
-
1 Linux安装
-
1.2 虚拟机中系统的联网
-
- 软件下载和安装方式
-
5.Django项目发布
-
- 发布django项目
1 Linux安装
1.1 安装虚拟机
虚拟机软件,可以帮我们模拟一台真实电脑!
- 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一样,都可以从软件内置仓库中下载资源
1.2 VMWare使用
- 使用快照备份和还原系统[经常使用]
右击系统菜单----快照---拍摄快照-->输入名字和介绍
右击系统菜单----快照---快照管理--->选择恢复到哪个
- 克隆
右击系统--->管理--->克隆
- 编辑虚拟机
1.2 虚拟机中系统的联网
第1: 虚拟机联网方式(选桥接)
- 桥连接: 相当于一台局域网中的新电脑!
和主机在同一个网段
IP: xxx.xxx.xxx.xxx IP地址由4位组成! xxx.xxx.xxx.256 1和256 都被路由器使用!
主机: 172.16.45.44
同一局域网段: 172.16.45.xx
IP的前两位相同, 就默认是一个局域网.是可以相互通讯的!
- NAT连接: 不同的是IP的第4位, 最多模拟254台电脑!
- NAT模式: 不同的是IP的第3位, xxx.xxx.1-255 组建大型局域网!
- 仅主机(虚拟机和主机之间通讯)
第2: 确保网络开关已经打开
# 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
第3: 手动修改网络配置文件打开网络开关
# 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 restart
第4: 安装网络工具
centos mini版不自带网络工具的,需要手动下载
网络工具软件: net-tools
# 安装网络工具
yum -y install net-tools # 默认ifconfig 不能用!
#查看IP的指令
ifconfig
第5: 客户端(SSH)连接
-
Putty
-
FinalShell (
http://www.hostbuf.com/downloads/finalshell_install.exe
)
- 是SSH客户端,可以通过命令控制服务器
- 自带FTP软件,实现文件上传!
-
XShell
-
等....
2. Linux目录结构(重要)
在linux系统中,无盘符概念,都是文件/目录
bin 存放二进制可执行文件(ls,cat,mkdir等)
boot 存放用于系统引导时使用的各种文件
dev 用于存放设备文件
etc 存放系统配置文件
home 存放所有用户文件的根目录
lib 存放跟文件系统中的程序运行所需要的共享库及内核模块
mnt 系统管理员安装临时文件系统的安装点
opt 额外安装的可选应用程序包所放置的位置
proc 虚拟文件系统,存放当前内存的映射
root 超级用户目录 sbin 存放二进制可执行文件,只有root才能访问
tmp 用于存放各种临时文件
usr 用于存放系统应用程序,比较重要的目录/usr/local 本地管理员软件安装目录
var 用于存放运行时需要改变数据的文件
3. 常用的Linux指令
- 查看常用命令文档
链接:https://pan.baidu.com/s/1uTwLeP8LbQkesVa2rXyV8w
提取码:wvia
- Linux命令速查手册
链接:https://pan.baidu.com/s/1x7fGKdNvcTyvW4R59C-tGg
提取码:jywc
4. 软件下载和安装方式
从yum软件仓库源中下载
yum 和pip 指令一样,都可以从远程软件源/仓库中下载软件!
yum install -y xxxx #安装 -y 忽略安装提示!
yum remove xxx #卸载
yum update #更新所有的软件源
yum update xxxx #更新某个
yum list #查看所有课安装的软件列表
yum search xxx #从软件源仓库中查找软件
- 默认软件源地址:
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中
5.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.......
5.1 安装开发工具包
耗时长!安装完后一定制作快照
# 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
5.2 安装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
5.3 卸载python3
所有安装步骤: 下载安装包, 解压, 进入解压目录 ,编译, 安装, 建软连接, 加配置
所有软件删除步骤:
- 删了软件安装目录!
- 删除软件连接!
- 删除配置文件!
# 1. 进入 /usr/bin 目录,查看软连接
cd /usr/bin
ls -al python*
ls -al pip*
# 2. 删安装目录 (安装目录在/usr/local)
cd /usr/local
dir # 查看目录
rm -rf python3
5.4 建虚拟环境下载依赖库
习惯在 /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
5.5 下载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 # 可以不创,如果不创建,必须激活虚拟环境才能用!
5.7 安装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端口)
5.5 替换ngxin默认首页为自己的页面
# 1. 找nginx安装位置
whereis nginx #(安装位置etc 中, 网页在:/usr/share/nginx/html中)
# 2. 上传自己的网站到nginx的html目录
# /usr/share/nginx/html
注意:云服务器(比如:阿里云,腾讯云等...)依然拒绝访问!因为:云服务器的端口是通过后台管理界面控制的!
5.6 安装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端口,客户端连接并操作数据库
6. 发布django项目
发布django 项目三个步骤
- 本地新建djang项目正常运行
- 配置uwsgi
- 配置nginx
- 同步依赖模块
- 上传项目到服务器
1. 新建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
3. 上传项目到/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的配置文件
# 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.启动项目
- runserver指令启动uwsgi测试项目是否正常访问!
- 启动uwsgi
- 检查nginx配置语法
- 启动ngxin
- 检查:端口. 内网访问,外网访问
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
6. 通过域名访问
- 更改nginx.conf 添加域名
- 阿里云后台开放80端口
- 访问:
www.xxx.com