远程访问移植到虚拟机centos上的Django项目

centos7网络设置

将虚拟机上的centos7的网络连接方式设置为桥接模式

关闭防火墙:

systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动

查看本地ip地址:

ip add

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

python虚拟环境管理

首先安装好python3,并注意与centos7自带的python2的共存问题

pip3 安装virtualenv,创建管理虚拟环境:
在这里插入图片描述
出错,显示缺少OpenSSL模块

[withong@withong ~]$ rpm -aq|grep openssl  # 搜索openssl 包是否安装
openssl-1.0.2k-16.el7_6.1.x86_64
openssl-libs-1.0.2k-16.el7_6.1.x86_64
openssl098e-0.9.8e-29.el7.centos.3.x86_64
xmlsec1-openssl-1.2.20-7.el7_4.x86_64

估计是太久没更新,更新openssl试试:
从官网下载最新的openssl:https://www.openssl.org/source/

wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz

参考升级过程:https://www.cnblogs.com/itbsl/p/11275728.html

[root@withong openssl-1.1.1d]# openssl version
OpenSSL 1.1.1d  10 Sep 2019

升级成功,再次尝试安装virtualenv
在这里插入图片描述
还是报错,在stackoverflow看到如下解决方法:
在这里插入图片描述
还需要对python3.7重新进行编译安装 带上ssl参数

cd Python-3.7
./configure
make
sudo make install

编译安装python3.7可参考:https://www.cnblogs.com/Liuyt-61/p/11621773.html
操作一:
在这里插入图片描述
成功安装virtualenv

pip3安装virtualenv拓展包:

pip3 install virtualenvwrapper

操作二:创建一个文件夹,用于存放所有的虚拟环境:
     命令:mkdir -p /home/python/virtualenvs (目录自定义)
   操作三:设置环境变量,把下面两行添加到~/.bashrc里。
   命令:vim ~/.bashrc
     添加:export WORKON_HOME=/home/python/virtualenvs (绝对路径)
     添加:source /usr/bin/virtualenvwrapper.sh # 每次登陆用户自动执行下脚本
     添加:export VIRTUALENVWRAPPER_PYTHON=/usr/local/python36/bin/python3 # 指定虚拟使用的python解释器路径
     命令::wq!或者:x----保存设置
     命令:source ~/.bashrc ----使修改生效

在虚拟环境安装项目所需要的包

pip3 install ......

安装Nginx1.16

进入Nginx下载主页:http://nginx.org/en/download.html
操作一:
用yum安装依赖项

yum install gcc pcre-devel zlib-devel

解压:

$ sudo tar -zxvf  nginx-1.11.5.tar.gz # 解压缩
$  cd nginx-1.11.5
$ ./configure --prefix=/usr/local/nginx # 检查平台安装环境
  --prefix=/usr/local/nginx  是nginx编译安装的目录(推荐),安装完后会在此目录下生成相关文件

如果前面的依赖库都安装成功后,执行./configure --prefix=/usr/local/nginx命令会显示一些环境信息。如果出现错误,一般是依赖库没有安装完成,可按照错误提示信息进行所缺的依赖库安装。进行源码编译并安装nginx

$ make # 编译
$ make install # 安装

启动服务

$ /usr/local/nginx/sbin/nginx

重启服务

$ /usr/local/nginx/sbin/nginx -s reload

停止服务

$ /usr/local/nginx/sbin/nginx -s stop

查看服务

$ ps -ef | grep nginx # 查看服务进程

将整个Django项目文件移植到centos7中,试启动下:
在这里插入图片描述

修改Django配置

uwsgi的配置
进入项目根目录下的settings.py文件:

DEBUG=FALSE
ALLOWED_HOSTS=[*] 

在项目根目录新建ini文件,作为wsgi的配置文件:

[uwsgi]
#使用nginx连接时使用
#socket=127.0.0.1:8080
#直接做web服务器使用
http=127.0.0.1:8080
#项目目录
chdir=/Users/smart/Desktop/dj/bj17/dailyfresh
#项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=dailyfresh/wsgi.py
processes=4
threads=2
master=True
pidfile=uwsgi.pid
daemonize=uwsgi.log
virtualenv=/Users/smart/.virtualenvs/dailyfresh

uwsgi的启动和停止:

启动:uwsgi –-ini 配置文件路径 例如:uwsgi –-ini uwsgi.ini
停止:uwsgi --stop uwsgi.pid路径 例如:uwsgi –-stop uwsgi.pid

nginx
nginx 配置转发请求给uwsgi

location / {
	include uwsgi_params;
	uwsgi_pass uwsgi服务器的ip:port;
}

nginx配置处理静态文件:

django settings.py中配置收集静态文件路径:
STATIC_ROOT=收集的静态文件路径 例如:/var/www/dailyfresh/static;

django 收集静态文件的命令:
	python manage.py collectstatic
执行上面的命令会把项目中所使用的静态文件收集到STATIC_ROOT指定的目录下。

收集完静态文件之后,让nginx提供静态文件,需要在nginx配置文件中增加如下配置:
location /static {
	alias /var/www/dailyfresh/static/;
}

nginx转发请求给另外地址:

在location 对应的配置项中增加 proxy_pass 转发的服务器地址。
如当用户访问127.0.0.1时,在nginx中配置把这个请求转发给172.16.179.131:80(nginx)服务器,让这台服务器提供静态首页。
配置如下:
location = /{
proxy_pass http://172.16.179.131;
}
9.2.4 nginx配置upstream实现负载均衡
ngnix 配置负载均衡时,在server配置的前面增加upstream配置项。
upstream dailyfresh {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}

公网通过frp访问虚拟机中Django项目

frp项目地址:https://github.com/fatedier/frp
首先确保你有一台具有公网ip的服务器

在阿里云上配置frps.ini

[common]
bind_port = 7000
vhost_http_port = 8080

在虚拟机上的centos7中配置frpc.ini

[common]
server_addr = xx.xx.xx.xx # 阿里云上的公网ip
server_port = 7000 frp通信端口


[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

[web]
type = http
local_ip = 127.0.0.1
local_port = 80             #网站使用的端口
custom_domains = xx.xx.xx.xx # 阿里云上的公网ip 或域名

启动不同服务器的frp:

前端开启,关闭就会失效
./frps -c ./frps.ini

后段开启
nohup ./frps -c ./frps.ini &

在浏览器里访问xx.xx.xx.xx:8080 成功进入主页

如果需要在公网上访问多个虚拟机中的项目,但是没有域名的情况下,可以采取如下措施,亲测有效,只需要修改frpc.ini:
例如有两个端口分别为887,888的项目:

[web_9990]
type = http
local_ip = 127.0.0.1
local_port = 887               #网站使用的端口
custom_domains = a.free.domain  #随便写个域名保证唯一


[web_9991]
type = http
local_ip = 127.0.0.1
local_port = 888             #网站使用的端口
custom_domains = b.free.domain #随便写个域名保证唯一

重启服务
接下来修改host文件 linux: /etc/hosts :
追加

xx.xx.xx.xx  a.free.domain
xx.xx.xx.xx  b.free.domain

xx.xx.xx.xx 是你的公网服务器IP 地址

刷新 host文件,使得新配置生效:
linux: systemctl restart nscd

打开浏览器

输入: a.free.domain:887 即可访问 web项目 web_887

输入: b.free.domain:888 即可访问 web项目 web_888

成功进入不同web项目的主页

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值