linux上项目部署实践笔记,详细步骤

linux基础命令

linux编译python3与虚拟环境统一开发、线上环境

python web项目部署 uwsgi+nginx

nginx反向代理 多虚拟主机 负载均衡配置

crm用nginx反向代理部署,静态文件处理

前后端分离项目部署 vue + drf + mysql + nginx + redis

 


redis基础数据类型 主从赋值 哨兵 集群 数据持久化

docker容器基础 镜像 仓库 容器管理 dockerfile构建镜像

消息队列rabbitmq

运维自动化软件

 

 


http://linux.51yip.com linux在线查询

 

 

 

 

 

 

ls -a 显示隐藏的文件
ll 等于 ls -l
date -f 格式化linux时间
shutdown 关机命令
cat 查看文件内容
pwd 查看当前所在工作目录
mkdir 创建文件见 mkdir -p /s21/douyin/haohaio
echo 相当于print 能够输出变量的值 输出PATH的值 echo $PATH $符号是取出linux变量值的符号
ifconfig 查看linux的网卡信息
free -m 查看linux内存信息
vim linux的文本编辑器
yum linux软件包管理器 yum install nginx/redis
rm -rf rm是删除命令 -r 递归删除文件 -f 不提示强制删除

rm -rf /* 删库到跑路,慎用!!!!
rm -rf /* 删库到跑路,慎用!!!!
rm -rf /* 删库到跑路,慎用!!!!


cd 切换文件夹
cp 复制文件 文件夹
source 加载 执行linux脚本内容 source test.sh
history 查看linux历史命令
chgrp 修改文件的组信息 chgrp alex test.txt
wc 统计文件文本数据
tail 默认显示文本后10行 tail -f file.txt 实时刷新文件
tr 切换删除字符

tar
打包 /tmp下所有的内容 叫做 alltmp.tar
tar -cvf
-c 打包文件
-v 显示打包过程
-f 必须写在参数结尾,指定压缩压缩文件名字

tar -cvf alltmp.tar /tmp/*


tar 压缩且打包,节省磁盘空间
tar -zcvf 压缩文件名 你要压缩的内容

 

lsattr 查看文件是否加锁
取出文件的锁
[root@wupeiqi tmp]#lsattr jiangyi/
-----a---------- jiangyi/a.txt

 

find 查找的命令

#找当当前目录下 所有的 .py文件

#语法:find 从哪找 参数 你要找什么
find . -type f -name "*.py"
-name 指定文件名字
-type 指定文件类型 f 是文本 d是文件夹


cut 切割输出信息

touch 创建文本
man linux的帮助文档
ln 创建链接

mv 移动文件,文件夹
stat 查看文件详细信息
kill 杀死进程 kill -9 pid 进程id号

ps 查看linux进程信息

sort 排序
tree 以树状图显示文件目录结构
gz 压缩

grep 过滤字符信息的

#找到django的配置信息,是否允许所有主机访问
settings.py
ALLOW_HOSTS=['*']

grep 你想要的内容 从哪给文件找

grep -i "allow" settings.py
-i忽略大小写

chown 更改文件属主,更改user
tr 删除

ssh-key -gen 创建ssh密钥
whoami 我是谁,查看当前登陆的用户是谁
iptables -F 清空防火强规则
more 分页显示文本内容
which 显示linux命令的绝对路径
which python3 #which会去path变量中寻找,是否有python3
/opt/python36/bin/python3

wget 在线下载一个资源

wget http://pythonav.cn/xiaobo.jpg 在线下载一个图片



#linux和windows互相传递文件的方式
- yum install lrzsz 这个工具
- sz (send 发送文件)
- rz (recive 接收文件)
- xftp


useradd 创建系统用户 uid用户id
#linux用户信息存放文件是?
/etc/passwd #用户信息在这
通过useradd创建的用户id默认从1000开始
root的uid是0,代表他是超级用户

id root #查看root的信息

 

/etc/ linux的默认配置文件目录
通过yum安装软件,默认的配置文件都会放在这
/etc/my.cnf
/etc/nginx.conf


/etc/ 存放配置文件的
/opt/ 存放第三方自行安装的软件的目录,约定俗称
/root root的家目录,皇宫,普通用户无权访问
/tmp linux的临时文件夹,数据不重要
/usr 常见的命令放在/usr/bin/ls /usr/bin/cd
/home 普通用户的统一管理家目录

diff 比较文件区别
df 查看磁盘信息


uptime 显示系统运行时间,负载情况
w 显示登陆的所有用户身份

mount 挂载磁盘目录
rpm linux的软件包管理命令,这个很low,很烂别用,用yum
sudo linux用户的尚方宝剑 ,


pengpeng 普通用户


sudo linux的提权命令,以root身份去执行命令,需要提前配置才能用

配置步骤
1.打开sudoers文件,添加配置信息
vim /etc/sudoers

2.添加用户信息
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
xiaofeng ALL=(ALL) NOPASSWD: ALL
jy ALL=(ALL) NOPASSWD: ALL


3.此时 jy 和xiaofeng用户已经可以使用sudo了

4. visudo 也是打开/etc/sudoers文件,但是它提供语法检测功能

 

 


1.python3编译安装,通过虚拟环境管理django项目


1.python3在linux下的编译过程

2.首先解决环境依赖问题,如gcc编译工具等
得先保证yum源配置好
配置步骤
1.打开阿里云开源镜像站的官网https://opsx.alibaba.com/mirror

2.获取cengtos的yum源
#yum源的工作目录,/etc/yum.repos.d目录下,只要在这个目录下名字叫做repo的文件,都会被yum取读取
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

 

3.获取epel的yum源(第三方软件仓库,如nginx,redis等等)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

 

2.解决编译python3的基础环境依赖
yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y


3.下载python3源码包
wget https://www.python.org/ftp/python/3.6.7/Python-3.6.7.tar.xz

4.解压缩源代码包,进入py源代码包,开始编译三部曲

1.第一曲 [执行configure脚本文件,指定安装路径] ,释放makefile编译文件 ,让gcc工具去编译的
[root@wupeiqi Python-3.6.7]#./configure --prefix=/opt/s21/python367/

2.第二曲 ,指定make指令,读取makefile,开始编译

3.第三曲,执行make install ,开始安装python3,这一步会生成python3解释器

make && make install

5.编译完成之后,配置path环境变量,让系统可以补全python3的命令
#获取当前环境变量
[root@wupeiqi bin]#echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

#添加python3的环境变量,注意,要添加到开头
#添加python3的环境变量,注意,要添加到开头
#添加python3的环境变量,注意,要添加到开头
#添加python3的环境变量,注意,要添加到开头
#添加python3的环境变量,注意,要添加到开头
#添加python3的环境变量,注意,要添加到开头

注意要写入到全局变量配置文件中,每次开机都加载/etc/profile中

vim /etc/profile 到最低行,加入如下配置

PATH='/opt/s21/python367/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin'

注意,修改完毕/etc/profile 必须 source读取一下
source /etc/profile

 

6.安装虚拟环境,管理python的解释器
1.安装虚拟环境工具,装在物理解释器地下
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv

2.通过命令创建虚拟环境
virtualenv --no-site-packages --python=python3 虚拟环境的名字
--no-site-packages 创建干净隔离的虚拟环境,没有任何模块
--python=python3 #指定以哪个解释器去分身

virtualenv --no-site-packages --python=python3 s21Django1

3.激活虚拟环境,进入虚拟环境,无论是否激活python虚拟环境,影响的只是python相关的东西,和操作系统无关
3.激活虚拟环境,进入虚拟环境,无论是否激活python虚拟环境,影响的只是python相关的东西,和操作系统无关
3.激活虚拟环境,进入虚拟环境,无论是否激活python虚拟环境,影响的只是python相关的东西,和操作系统无关
3.激活虚拟环境,进入虚拟环境,无论是否激活python虚拟环境,影响的只是python相关的东西,和操作系统无关

source s21Django1/bin/activate

4.在虚拟环境下,启动crm项目
-上传crm代码到linux服务器

5.激活虚拟环境,安装django1.11.11
source s21Django1/bin/activate
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django==1.11.1
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pymysql
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django-multiselectfield

6.安装mariadb
yum install mariadb-server mariadb -y

7.启动mariad,通过yum安装的软件,都可以用systemctl管理
systemctl start maridab

8.解决完毕问题之后,启动python项目,注意防火墙,ALLOW_HOSTS相关的修改
8.解决完毕问题之后,启动python项目,注意防火墙,ALLOW_HOSTS相关的修改
8.解决完毕问题之后,启动python项目,注意防火墙,ALLOW_HOSTS相关的修改

python3 manage.py runserver

9.可以退出虚拟环境了
deactivate

#python导出requirement.txt文件

#把你当前解释器所有的模块信息,导出到一个文件中
pip3 freeze > requirement.txt
#导出后发送此文件给服务器即可

#安装安装中的模块
pip3 install -i https://pypi.douban.com/simple -r requirements.txt



nginx软件学习

nginx是个web服务器,常用作静态文件服务器,反向代理服务器,邮件代理服务器,负载均衡服务器

1.安装淘宝nginx,编代码编译安装,先解决模块依赖
yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel -y

2.获取淘宝nginx的源代码
wget http://tengine.taobao.org/download/tengine-2.3.2.tar.gz


3.解压缩源代码包
tar -zxvf tengine-2.3.2.tar.gz

4.进入源代码目录开始编译三部曲
1.指定安装路径
./configure --prefix=/opt/s21/tngx

2.编译且安装
make && make install

3.安装完成之后,进入nginx的目录,
[root@wupeiqi tngx]#pwd
/opt/s21/tngx
[root@wupeiqi tngx]#ls
conf html logs sbin

conf 存放配置文件 , 指定了这个软件各种功能的一个文件而已
html 存放前端页面
logs nginx的运行日志
sbin nginx的可执行命令目录



4.进入sbin目录,启动nginx
./nginx
./nginx -s stop 停止nginx
./nginx -t 检查nginx.conf的语法是否正确
./nginx -s reload 不重启nginx,重新加载nginx配置

nginx的核心学习方式,配置文件学习

1.找到nginx.conf,学习语法
#这里的所有配置是nginx的核心功能
http {

....
}


2.nginx的访问日志功能
http {
include mime.types;
default_type application/octet-stream;
#日志格式化
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log logs/access.log main;


....


}

3.nginx的虚拟主机配置,核心功能再次


http {
#nginx支持多虚拟主机,只需要写入多个server关键字即可
#虚拟主机1

server {
#基于端口的虚拟主机区分
listen 80;
#基于域名的虚拟主机区分
server_name www.old21.com;
#charset koi8-r;
#access_log logs/host.access.log main;
#access_log "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G" main;

#这里是nginx的url匹配,如同django的url规则一样
#当我的请求时 http://192.168.182.130:81/chouhuo.jpg 这样的时候,就进入如下location匹配
#这个是最低级的匹配,所有请求都会走到这里
location / {
#root关键字定义虚拟主机的根目录, 这里是可以修改的
root /opt/alex/;
#必须保证首页文件存在
index index.html index.htm;
}
}

#虚拟主机2
server {
listen 80;
server_name www.old22.com;
#charset koi8-r;
#access_log logs/host.access.log main;
#access_log "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G" main;

#这里是nginx的url匹配,如同django的url规则一样
#当我的请求时 http://192.168.182.130/wupeiqi.jpg 这样的时候,就进入如下location匹配
#这个是最低级的匹配,所有请求都会走到这里
location / {
#root关键字定义虚拟主机的根目录, 这里是可以修改的
root /opt/wupeiqi/;
#index参数是定义首页文件的名字的
index index.html index.htm;
}

}

}


4.nginx的错误页面 404优化
server {
listen 80;
server_name www.old666.com;
#通过这个参数定义即可,
error_page 404 /404.html;
location / {
root /opt/wupeiqi;
index index.html;
}

}


5.nginx反向代理

代理:

用户,客户端 中介,代理服务器, 房东,资源服务器


租房的客户 -> 中介,代理 -> 房东


浏览器 -> nginx -> django

 

环境如下
机器1 192.168.182.130 ,是代理服务器的角色,nginx提供的功能

机器2 192.168.182.131 是资源服务器的角色, nginx静态资源服务器


反向代理服务器配置如下

1.打开192.168.182.130 机器的nginx.conf,修改为如下

找到server{}虚拟主机,修改location如下
server {
listen 80;
server_name www.oldchouhuo.com;
#charset koi8-r;
#access_log logs/host.access.log main;
#access_log "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G" main;

location / {
# root /opt/alex/;
# index index.html index.htm;

#实现反向代理的功能参数
#实现反向代理的功能参数
#实现反向代理的功能参数
proxy_pass http://192.168.182.131;
}
}

 

 


6.nginx负载均衡

环境准备
1台负载均衡服务器,nginx而已 192.168.182.130 是负载均衡服务器

2台资源服务器
192.168.182.131 资源服务器1 ,返回alex的页面
192.168.182.132 资源服务器2 ,返回武大郎的页面


 

 


1.准备好2台资源服务器,本应该提供一样的数据,进行负载均衡,实验目的,看到不同的页面,所以准备不同的页面数据
192.168.182.131 资源服务器1 ,返回alex的页面
192.168.182.132 资源服务器2 ,返回武大郎的页面

2.准备负载均衡服务器,配置如下
在nginx配置文件中,添加如下配置,定义负载均衡池,写入后端项目地址
默认轮询方式
upstream mys21django {
server 192.168.182.131;
server 192.168.182.132;
}

#权重方式
upstream mys21django {
server 192.168.182.131 weight=4;
server 192.168.182.132 weight=1;
}

#ip哈希方式,根据用户的来源ip计算出哈希值,永远只指派给一个服务器去解析
#ip哈希不得与权重共同使用
#ip哈希不得与权重共同使用
upstream mys21django {
server 192.168.182.131 ;
server 192.168.182.132 ;
ip_hash;
}



#虚拟主机配置如下
server {
listen 80;
server_name www.oldchouhuo.com;
#charset koi8-r;
#access_log logs/host.access.log main;
#access_log "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G" main;
location / {
# root /opt/alex/;
# index index.html index.htm;
#请求转发给负载均衡池
proxy_pass http://mys21django;
}
}

 

 


项目部署

nginx + uwsgi + django + mysql

 

1.后端搞起

1.上传crm项目到linux服务器
2.安装uwsgi命令,这是python的一个模块
激活一个虚拟环境去使用

virtualenv --no-site-packages --python=python3 s21uwsgi
pip3 install -i https://pypi.douban.com/simple uwsgi

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django==1.11.1
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pymysql
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django-multiselectfield

 

2.使用uwsgi的命令,参数形式启动 crm项目

以往的python3 manage.py runserver 调用wsgiref去启动django,性能很低,单进程web
使用uwsgi启动django,可以支持并发,多进程,以及日志设置,多种功能

#必须在django项目,第一层敲这个命令

uwsgi --http :8000 --module mysite.wsgi
--http 指定是http协议,去启动项目
--module 指定django目录下的wsgi文件


#uwsgi支持的热加载命令
uwsgi --http :9000 --module Aida_crm.wsgi --py-autoreload=1

 

3.uwsgi以配置文件的形式启动 ,就是把你的启动参数,写入到一个文件中,然后,执行这个文件即可

配置文件名字可以叫做 uwsgi.ini ,内容如下,这个文件是手动生成的
touch uwsgi.ini ,写入如下内容

[uwsgi]
# Django-related settings
# the base directory (full path)
#填入项目的绝对路径 ,项目的第一层路径
chdir = /opt/s21/Aida_crm

# Django's wsgi file
#指定第二层项目下的wsgi文件
module = Aida_crm.wsgi

# the virtualenv (full path)
#找到虚拟环境的绝对路径
home = /opt/s21/s21uwsgi


# process-related settings
# master
master = true

# 以cpu核数来填写,uwsgi的工作进程数
processes = 2


# the socket (use the full path to be safe
#这是以uwsgi_socket协议启动的项目,无法再去通过浏览器访问,必须通过nginx以uwsgi协议去反向代理
#这是以uwsgi_socket协议启动的项目,无法再去通过浏览器访问,必须通过nginx以uwsgi协议去反向代理
#这是以uwsgi_socket协议启动的项目,无法再去通过浏览器访问,必须通过nginx以uwsgi协议去反向代理
socket = 0.0.0.0:8000

#也可以使用http协议去启动(仅用作调试使用)
#也可以使用http协议去启动(仅用作调试使用)
#也可以使用http协议去启动(仅用作调试使用)
#http = 0.0.0.0:9000


# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true

#后台运行参数,将uwsgi运行在后台,并且将django日志输出到uwsgi.log中
daemonize = uwsgi.log


4.指定配置文件启动django

uwsgi --ini uwsgi.ini


nginx的配置,反向代理uwsgi
1.修改nginx.conf如下

server {
listen 80;
server_name www.oldchouhuo.com;
#charset koi8-r;
#access_log logs/host.access.log main;
#access_log "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G" main;
location / {
#转发请求的方式配置在这里
#转发请求的方式配置在这里
#转发请求的方式配置在这里
include uwsgi_params;
uwsgi_pass 0.0.0.0:8000;
}
}

2.重新加载nginx,访问nginx,查看是否反向代理

去浏览器访问nginx的地址,查看能否访问到crm的内容

3.收集crm的所有静态文件,丢给nginx去解析

对django的settings.py配置修改如下

添加如下参数
STATIC_ROOT='/opt/s21static'

STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]

执行命令,收集django的所有静态文件,系统会自动创建'/opt/s21static' 这个文件夹
python3 manage.py collectstatic

4,配置nginx,找到crm的这些静态资源
location / {
include uwsgi_params;
uwsgi_pass 0.0.0.0:8000;
}
#添加一个location,针对nginx的url进行匹配处理
#当请求时 www.oldchouhuo.com/static/..... 这样的url的时候,nginx进行别名修改,去/opt/s21static底下去寻找资源文件
#
location /static {
alias /opt/s21static;
}


5.此时再次访问网站,查看是否处理了静态资源
www.oldchouhuo.com

 


前后端分离的部署笔记

1.后端部署
uwsgi + drf + redis + mysql


2.准备后端代码
wget https://files.cnblogs.com/files/pyyu/luffy_boy.zip

3.创建且激活新的虚拟环境
virtualenv --no-site-packages --python=python3 s21luffy


4.解决模块依赖问题,尝试调试启动drf后台
[root@web02 opt]# cat requirements.txt
certifi==2018.11.29
chardet==3.0.4
crypto==1.4.1
Django==2.1.4
django-redis==4.10.0
django-rest-framework==0.1.0
djangorestframework==3.9.0
idna==2.8
Naked==0.1.31
pycrypto==2.6.1
pytz==2018.7
PyYAML==3.13
redis==3.0.1
requests==2.21.0
shellescape==3.4.1
urllib3==1.24.1
uWSGI==2.0.17.1


pip3 -i install https://pypi.douban.com/simple -r requirements.txt


5.使用uwsgi,启动drf后台

touch uwsgi.ini

[uwsgi]
chdir = /opt/s21vue+drf/luffy_boy

module = luffy_boy.wsgi
home = /opt/s21vue+drf/s21luffy
master = true
processes = 2
socket = 0.0.0.0:8888
vacuum = true
daemonize = uwsgi.log

 


2.前端部署
下载前端vue代码
wget https://files.cnblogs.com/files/pyyu/07-luffy_project_01.zip


vue+nginx的端口 81端口,这是第一个虚拟主机

nginx反向代理端口, 9500 , 这是第二个虚拟主机

drf的后台端口 8888

 


访问步骤:

第一步: 192.168.182.130:81 查看到路飞的首页内容,是vue的静态页面

第二部: 当我点击 课程列表的时候,vue向后台发送请求了,发送的地址应该是 192.168.182.130:9500

第三部:此时 nginx的反向代理,转发请求给了 drf的后台 8888


3.修改vue的请求发送地址,重要!!!!
3.修改vue的请求发送地址,重要!!!!
3.修改vue的请求发送地址,重要!!!!
3.修改vue的请求发送地址,重要!!!!

修改vue请求地址,向服务器的ip地址发送请求

sed -i "s/127.0.0.1:8000/192.168.182.130:9500/g" src/restful/api.js

参数解释:

-i 将替换结果写入到文件

"s/你想替换的内容/替换之后的内容/g" s是替换模式 g是全局替换


4.配置nodejs的解释器环境,打包编译vue代码,生成静态文件夹dist

#这里的node代码包,是二进制包,已经编译好了,可以直接使用
wget https://nodejs.org/download/release/v8.6.0/node-v8.6.0-linux-x64.tar.gz

#解压缩node的代码包
tar -zxvf node-v8.6.0-linux-x64.tar.gz

#配置PATH环境变量
PATH='/opt/s21/python367/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/s21/tngx/sbin:/opt/s21vue+drf/node-v8.6.0-linux-x64/bin'

#检查node是否可用

[root@wupeiqi bin]#node -v
v8.6.0
[root@wupeiqi bin]#npm -v
5.3.0

5.进入vue代码目录,开始编译代码,生成dist静态文件夹

cd /opt/s21vue+drf/07-luffy_project_01/

#开始安装这个项目所有需要的node模块,默认去读取 package.json
npm install

#开始编译vue代码,生成dist静态网页文件夹,丢给nginx
npm run build


6.在正确生成dist之后,配置nginx

 

7.nginx配置如下

#这里配置和luffy学成有关的代码
#这个是nginx+vue的虚拟主机
server {
listen 81;
server_name localhost;
error_page 404 /404.html;
#请求来到这里时,返回vue的页面
location / {
root /opt/s21vue+drf/07-luffy_project_01/dist;
index index.html;
try_files $uri $uri/ /index.html;
}
}

#这个是nginx反向代理,转发vue请求给drf的虚拟主机
server {
listen 9500;
server_name localhost;
location / {
include uwsgi_params;
uwsgi_pass 0.0.0.0:8888;
}

}

 

8.此时访问vue地址即可,看到路飞页面,且可以看到课程列表的数据,可以添加linux,和python的课程,到购物车中,整个部署过程结束

 贴图:

一、部署前端代码

部署前端代码,就是一些静态文件,丢给nginx去解析
前端node js + vue的部署 + nginx的部署

1、下载vue的代码

wget https://files.cnblogs.com/files/songzhixue/07-luffy_project_01.zip

2、编译vue的代码

编译vue的代码,生成dist静态文件夹,需要用到node js解释器环境

# 下载nodejs的源代码包
wget https://nodejs.org/download/release/v8.6.0/node-v8.6.0-linux-x64.tar.gz

3、解压缩node的源码包

tar -zxvf node-v8.6.0-linux-x64.tar.gz

4、配置环境变量

进入源码包目录,直接配置环境变量即可,人家已经编译好了

找到node可执行程序

# 进入目录/opt/s20luff/node-v8.6.0-linux-x64/bin
# 将上面的路径加到/etc/profile中的PATH环境变量里
# 配置完需要执行下
source /etc/profile
node -v
npm -v

5、修改vue的请求发送路径

修改vue的请求发送路径,vue向服务器发起请求,修改127.0.0.1为linux的ip地址

# 进入前端页面(07-luffy_project_01 )找到src文件下的restful,修改ip
sed -i "s/127.0.0.1:8000/192.168.61.129:9000/g"  api.js 

 

修改api.js中的请求ip

6、开始编译vue的代码

复制代码
# 由于网速问题,下载包可能超级慢
# 修改npm的下载源,如同pip 更改豆瓣源一样 
# 进入/node-v8.6.0-linux-x64/bin/   将npm的路径添加到环境变量
# 修改安装源·
npm config set registry https://registry.npm.taobao.org

# 找到/opt/s20luff/07-luffy_project_01执行:
npm install  #找到package.json然后安装模块,如同pip install

npm run build   #这一步会生成dist静态文件夹,路飞首页在这index.html
# (如果修改了vue向向服务器发起请求的ip地址,那么我们修改后需要重新编译vue的代码,也就是重新执行第六步的操作)
复制代码

在这里执行:

7、配置nginx.conf

复制代码
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        # 只需要找到第一个虚拟主机,配置dist的静态文件夹即可
        # 第一个虚拟主机的配置
        location / {
            # 网站首页的静态文件路径
            root   /opt/s20luff/07-luffy_project_01/dist;
            index  index.html index.htm;
            # 确保刷新不出现404
            try_files $uri $uri/ /index.html;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    # 第二个虚拟主机的配置,用作反向代理
    server {
        listen 9000;
        server_name localhost;
        location / {
        include uwsgi_params;
        # django运行的ip端口
        uwsgi_pass 127.0.0.1:9999;
        }

        }
}
复制代码
1
2
3
1、客户端访问默认是80端口,先走nginx
2、nginx配置文件中我们给80端口配置了,返回网站首页的静态文件
3、路飞学成除了首页以外的所有请求都是用的9000端口,这时候我们用到了反向代理

二、后端uwsgi+django的部署

1.激活虚拟环境

mkvirtualenv  s20luffy

workon  s20luffy

2.解决运行路飞所需的依赖环境

方式二选一

复制代码
方式1:
requirements.txt 
    certifi==2018.11.29
    chardet==3.0.4
    crypto==1.4.1
    Django==2.1.4
    django-redis==4.10.0
    django-rest-framework==0.1.0
    djangorestframework==3.9.0
    idna==2.8
    Naked==0.1.31
    pycrypto==2.6.1
    pytz==2018.7
    PyYAML==3.13
    redis==3.0.1
    requests==2.21.0
    shellescape==3.4.1
    urllib3==1.24.1
    uWSGI==2.0.17.1
    
方式2:手动解决依赖关系
    pip3 install -i https://pypi.douban.com/simple django==2.0
    pip3 install -i https://pypi.douban.com/simple django-rest-framework
    pip3 install -i https://pypi.douban.com/simple requests
    pip3 install -i https://pypi.douban.com/simple django-redis
    pip3 install -i https://pypi.douban.com/simple crypto==1.4.1
    pip3 install -i https://pypi.douban.com/simple pycrypto==2.6.1
复制代码

3、下载uwsgi

下载uwsgi,编写uwsgi.ini配置文件,去运行路飞学城后端

 

复制代码
 pip3 install -i https://pypi.douban.com/simple  uwsgi
【在任意位置创建uwsgi.ini文件】
【注意我们用uwsgi启动项目的时候也要在该目录下】
下载项目包wget https://files.cnblogs.com/files/songzhixue/luffy_boy.zip
uwsgi.ini内容如下


[uwsgi]
# Django-related settings
# the base directory (full path)
# 项目目录的绝对路径【第一层】
chdir           = /opt/s20luffy/luffy_boy/
# Django's wsgi file
# 项目目录的第二层目录【wsgi同级】
module          = luffy_boy.wsgi
# the virtualenv (full path)
# 虚拟环境路径【虚拟环境中执行cdvirtualenv,pwd查看路径】
home            = /root/Envs/s20luffy
# process-related settings
# master
master          = true
# maximum number of worker processes
# 开启的进程数
processes       = 4
# the socket (use the full path to be safe
socket          = 0.0.0.0:9999
# clear environment on exit
vacuum          = true
复制代码

4.启动uwsgi后端

# 找到uwsgi.ini这个文件的目录下执行下面命令
uwsgi --ini uwsgi.ini 
# 重启nginx
# 访问页面

5.还得启动redis,才能添加购物车

# 最省事的安装
yum install redis -y 
systemctl start redis

6、将商品添加到购物车,查看redis中的数据

# 登录账户密码
alex 
alex3714
posted @ 2019-09-14 10:02  AnthonyWang  阅读(809)  评论(0编辑  收藏  举报