1.安装python环境

由于测试环境只有内网,所以在外网同系统上安装python.

wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz

yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc gcc-c++ zlib* sqlite-devel

mkdir /home/python3

xz –d Python-3.6.5.tgz.xz

tar -zxvf Python-3.6.5.tgz
cd Python-3.6.5

./configure --prefix=/home/python3

make && make install

2.安装django等第三方库

/home/python3/bin/pip3   install -r requirements.txt     #该文件一般放在项目目录上

request
pymysql
paramiko
pymongo==3.7.
django==1.11.
django-celery==3.2.
celery==3.1.
redis

用django 新建个项目测试测试,有少库的,就装上

/home/python3/bin/django-admin startproject newtest

/home/python3/bin/python3 manage.py runserver 0.0.0.0:8087  运行没错就下一步,有错就根据错误信息解决,一般少库就装库。

如报这个错:

File "/home/python3/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 198, in get_new_connection
conn = Database.connect(**conn_params)
django.db.utils.NotSupportedError: URIs not supported
^Z
[1]+ Stopped /home/python3/bin/python3 manage.py runserver 0.0.0.0:8087

原因分析,这是sqlite3版本3.7的通病,安装3.8的就可以,这里我采用修改源码的方式,直接打开

"/home/python3/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py"这个文件,修改修改大概198行,通过搜索uri查找。
        # between multiple threads. The safe-guarding will be handled at a
# higher level by the `BaseDatabaseWrapper.allow_thread_sharing`
# property. This is necessary as the shareability is disabled by
# default in pysqlite and it cannot be changed once a connection is
# opened.
if 'check_same_thread' in kwargs and kwargs['check_same_thread']:
warnings.warn(
'The `check_same_thread` option was provided and set to '
'True. It will be overridden with False. Use the '
'`DatabaseWrapper.allow_thread_sharing` property instead '
'for controlling thread shareability.',
RuntimeWarning
)
kwargs.update({'check_same_thread': False})
if self.features.can_share_in_memory_db:
kwargs.update({'uri': False}) #这里原来是True,修改为False就可以了
return kwargs

3.安装数据库

mongodb:

下载:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.0.tgz
解压可用
ln -s /home/mongodb/bin/mongo /usr/local/bin/mongo
ln -s /home/mongodb/bin/mongod /usr/local/bin/mongod 添加到环境变量 在mongodb文件夹再里创建三个文件夹:
mkdir data //用来存放数据库数据
mkdir logs //用来存放日志文件
mkdir etc //用来存放配置文件 接下来,进入到logs文件夹里创建 mongo.log文件:touch mongo.log
再到etc文件夹里创建 mongo.conf文件:touch mongo.conf
通过vi命令打开mongo.conf编辑内容:
vi mongo.conf dbpath=/home/mongodb/data
logpath=/home/mongodb/logs/mongo.log
logappend=true
journal=true
quiet=true
port= 启动:mongod -f /home/mongodb/etc/mongo.conf
另一个窗口:
mongo
use admin
db.createUser({user:"admin",pwd:"mima",roles:[{"role":"userAdminAnyDatabase","db":"admin"}]}) 创建管理员
use filedb
db.createUser({user:"file",pwd:"mima",roles:[{"role":"readWrite","db":"filedb"}]}) 创建普通用户
启动:mongod -f /home/mongodb/etc/mongo.conf --fork --auth
停:kill 或者rm /home/mongodb/data/mongod.lock

redis:

安装:

.下载:wget http://download.redis.io/releases/redis-4.0.8.tar.gz

.解压:tar xzvf redis-4.0..tar.gz

.安装
  cd redis-4.0.
  make
  cd src
  make install PREFIX=/usr/local/redis
.移动配置文件到安装目录下   cd ../
  mkdir /usr/local/redis/etc
  mv redis.conf /usr/local/redis/etc
.配置redis为后台启动
  vi /usr/local/redis/etc/redis.conf //将daemonize no 改成daemonize yes
.将redis加入到开机启动(也可以不要,但机器重启要记得手动开启)
  vi /etc/rc.local //在里面添加内容:/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf (意思就是开机调用这段开启redis的命令)
.开启redis
  /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
常用命令  
  redis-server /usr/local/redis/etc/redis.conf //启动redis
  pkill redis //停止redis
  卸载redis:
    rm -rf /usr/local/redis //删除安装目录
    rm -rf /usr/bin/redis-* //删除所有redis相关命令脚本
    rm -rf /root/download/redis-4.0. //删除redis解压文件夹

mysql:

、下载:wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz
、解压:tar -zxvf mysql-5.6.-linux-glibc2.-x86_64.tar.gz
#复制解压后的mysql目录
cp -r mysql-5.6.-linux-glibc2.-x86_64 /usr/local/mysql
、添加用户组和用户
#添加用户组
groupadd mysql
#添加用户mysql 到用户组mysql
useradd -g mysql mysql
、安装
cd /usr/local/mysql/
mkdir ./data/mysql
chown -R mysql:mysql ./
./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data/mysql
cp support-files/mysql.server /etc/init.d/mysqld
chmod /etc/init.d/mysqld
cp support-files/my-default.cnf /etc/my.cnf #修改启动脚本
vi /etc/init.d/mysqld #修改项:
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data/mysql #启动服务
service mysqld start #测试连接
./mysql/bin/mysql -uroot #加入环境变量,编辑 /etc/profile,这样可以在任何地方用mysql命令了
export PATH=$PATH:/usr/local/mysql //bin
source /etc/profile #启动mysql
service mysqld start
#关闭mysql
service mysqld stop
#查看运行状态
service mysqld status

修改mysql的登录密码

>mysql  set password=password('root');

>mysql  grant all privileges on *.* to root@'%' identified by 'root';

>mysql  flush privileges;

yum install mariadb-server mariadb  #有做离线源的也可以这么做

4.配置项目

拷贝nops这个项目的文件到服务器上,例如 /home/www 这个目录

添加权限:chomd +x /home

视情况可将 /home 修改为nginx用户: chown -r nginx:nginx /home

修改配置: \home\www\nops\nops\settings.py

把里面数据库配置都修改为我们创建的

5.启动

因为我们的项目用了celery 所以先要启动这个

后台启动celery:

/home/python3/bin/python3 /home/www/nops/manage.py celery worker --loglevel=info >/dev/null 2>&1 &
有定时任务的话,还需要启动心跳:
/home/python3/bin/python3 /home/www/nops/manage.py celery beat >> /home/www/nops/celery.log 2>&1 &

启动项目:  先

/home/python3/bin/python3 /home/www/nops/manage.py runserver 0.0.0.0:8087 

测试没问题就可以配置uwsgi

6.使用uwsgi部署

安装 uwsgi

sudo  pip install uwsgi --upgrade

使用 uwsgi 运行项目

uwsgi --http :8001 --chdir /home/www/nops  --module nops.wsgi

这样就可以跑了,project.wsgi 指的是 /home/www/nops/wsgi.py 文件

这样只是测试,正式环境下:

先编写uwsgi.ini文件:

[uwsgi]
#home=/home/qitanl/pyenv/soms
chdir=/home/www/nops
# Django项目根目录 (绝对路径)
module=nops.wsgi:application
master=True
# process-related settings
# master
pidfile=/home/www/nops/vm.pid
vacuum=True
# clear environment on exit
max-requests=
daemonize=/home/www/nops/v_uwsgi.log
socket = 0.0.0.0:
#真实服务的端口
#http = 0.0.0.0:

其中soms 改为只能项目名字就行。#是注释掉的,这里保留做学习助于理解。

启动:uwsgi --ini uwsgi.ini

启动成功后uwsgi会占用10000端口运行该项目,但要注意这里没配http,所以不能直接用http访问。

7.安装配置nginx

yum install nginx

安装nginx

然后添加配置文件:

  server
{
listen ;
server_name nops.com;
index index.html;
location / {
root /home/www/nops;
##uwsgi
uwsgi_pass 127.0.0.1:;
include uwsgi_params;
uwsgi_param UWSGI_CHDIR /home/www/nops;
uwsgi_param UWSGI_SCRIPT wsgi;
}
location ~ .*\.(log|php|pl|py|sh|cgi)$ {
return ;
}
location /static/ {
alias /home/www/nops/static;
autoindex on;
}
location ~ .*\.(gif|jpg|png|htm|html|css|js|flv|ico|swf)(.*) {
root /home/www/nops;
expires 30d;
}
location ~ .*\.(js|css)?(.*)
{
root /home/www/nops;
expires 12h;
}
}

重启:

cd /etc/rc.d/init.d
# ./nginx stop
Stopping nginx: [ OK ]
# ./nginx start
Starting nginx:   [ OK ]

到此访问: ip:8082端口即可看到项目

django-内网项目上线测试部署步骤的更多相关文章

  1. django项目上线环境部署

    django项目上线环境部署 第一步 安装python虚拟环境 1 安装虚拟环境virtualenv 2 安装virtualenvwrapper工具 3 确认virtualenvwrapper.sh脚 ...

  2. Vue项目上线环境部署,项目优化策略,生成打包报告,及上线相关配置

    Node.js简介 Node.js是一个基于Chrome V8引擎的JavaScript运行环境,用来方便快速地搭建易于扩展的网络应用.Node.js使用了一个事件驱动.非阻塞式I/O的模型,使其轻量 ...

  3. Centos下内网DNS主从环境部署记录

    一.DNS是什么?DNS(Domain Name System),即域名系统.它使用层次结构的命名系统,将域名和IP地址相互映射,形成一个分布式数据库系统. DNS采用C-S架构,服务器端工作在UDP ...

  4. GNS3内网配置虚拟机测试

    一.背景:考虑在GNS3内网配置一台虚拟机系统,用于大流量测试. 二.环境: 1.win10系统已安装:GNS3和配套GNS3VM虚拟机(版本号:2.2.7):vmware虚拟机winxp(名称为:W ...

  5. [Xcode 实际操作]九、实用进阶-(30)为IAP(支付方式)内购项目添加测试账号,测试内购功能

    目录:[Swift]Xcode实际操作 本文将演示如何添加测试账号,以方便对内购功能进行测试. IAP,即in-App Purchase ,是一种智能移动终端应用程序付费的模式, 在苹果(Apple) ...

  6. windows(Linux)创建”内网穿透“工具(通过自定义域名访问部署于内网的 web 服务,可以用于调试微信支付,支付宝支付,微信公众号等开发项目)

    此方法需要自有服务器和域名,如果没有这些的开发者, 可以参考钉钉提供的内网穿透方式:https://www.cnblogs.com/pxblog/p/13862376.html 一.准备工作 1.域名 ...

  7. Linux系统如何在离线环境或内网环境安装部署Docker服务和其他服务

    如何在离线环境或纯内网环境的Linux机器上安装部署Docker服务或其他服务.本次我们以Docker服务和Ansible服务为例. 获取指定服务的所有rpm包 保证要获取rpm包的机器能够上网. 本 ...

  8. 公司内网搭建代理DNS使用内网域名代替ip地址

    企业场景 一般在企业内部,开发.测试以及预生产都会有一套供开发以及测试人员使用的网络环境.运维人员会为每套环境的相关项目配置单独的Tomcat,然后开放一个端口,以 IP+Port 的形式访问.然而随 ...

  9. 搭建基于HTTP协议内网yum仓库

    目录 1. 前言 2. 把rpm包下载到本地 3. 配置nginx对外提供服务 4. 配置本地repo文件 5. 生成repodata信息 6. 检查及使用 7. 对管理机器上的仓库进行更新 参考资料 ...

随机推荐

  1. SQL JOIN语法,以及JOIN where 和and区别,还有where和join效率问题。

    语法 join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据. Join 和 Key 有时为了得到完整的结果,我们需要从两个或更多的表中获取结果.我们就需要执行 join. 数据库中的表可 ...

  2. 安装pitchpork 及 pacbioscience 的问题及解决

    1. error while loading shared libraries: libpbbam.so: cannot open shared 解决: find -name  libpbbam.so ...

  3. php7之严格模式RFC

    首先需要开启严格模式: declare(strict_types = ); 严格模式下,形参和返回值可加限制.对返回值的限制需要在参数的()后面加上引号加类型限制即可,例: function demo ...

  4. Geoserver 发布shp格式地图服务

    本文实践参考https://blog.csdn.net/zj3172172173/article/details/53336704 第一步: 安装geoserver . 自己去官方下载一个安装包 第二 ...

  5. Javascript内置对象、原生对象、宿主对象关系

    https://blog.csdn.net/foamflower/article/details/9165691

  6. 【工具】switchhost

    1.前提 主要功能切换host 2.下载路径 https://oldj.github.io/SwitchHosts/ 3.使用略(太简单)

  7. golang-grpc-Unimplemented-desc

    golang 调用grpc 服务方法时候提示:"rpc error: code = Unimplemented desc ="的错误, 这是由于pb中的package name 被 ...

  8. sql job定时备份数据库

    ---------------------------------------- 对TestDB1进行备份 ---------------------------------------- decla ...

  9. nodejs教程 安装express及配置app.js文件的详细步骤

    来自:http://www.jb51.net/article/36710.htm   express.js是nodejs的一个MVC开发框架,并且支持jade等多种模板.下面简单来说说express的 ...

  10. ros有一个比较安全的登录方案:二次登录防火墙

    原文: https://www.winbox.org/ /ip firewall address-list add address=10.0.0.0/8 list=login /ip firewall ...