django-内网项目上线测试部署步骤
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-内网项目上线测试部署步骤的更多相关文章
- django项目上线环境部署
django项目上线环境部署 第一步 安装python虚拟环境 1 安装虚拟环境virtualenv 2 安装virtualenvwrapper工具 3 确认virtualenvwrapper.sh脚 ...
- Vue项目上线环境部署,项目优化策略,生成打包报告,及上线相关配置
Node.js简介 Node.js是一个基于Chrome V8引擎的JavaScript运行环境,用来方便快速地搭建易于扩展的网络应用.Node.js使用了一个事件驱动.非阻塞式I/O的模型,使其轻量 ...
- Centos下内网DNS主从环境部署记录
一.DNS是什么?DNS(Domain Name System),即域名系统.它使用层次结构的命名系统,将域名和IP地址相互映射,形成一个分布式数据库系统. DNS采用C-S架构,服务器端工作在UDP ...
- GNS3内网配置虚拟机测试
一.背景:考虑在GNS3内网配置一台虚拟机系统,用于大流量测试. 二.环境: 1.win10系统已安装:GNS3和配套GNS3VM虚拟机(版本号:2.2.7):vmware虚拟机winxp(名称为:W ...
- [Xcode 实际操作]九、实用进阶-(30)为IAP(支付方式)内购项目添加测试账号,测试内购功能
目录:[Swift]Xcode实际操作 本文将演示如何添加测试账号,以方便对内购功能进行测试. IAP,即in-App Purchase ,是一种智能移动终端应用程序付费的模式, 在苹果(Apple) ...
- windows(Linux)创建”内网穿透“工具(通过自定义域名访问部署于内网的 web 服务,可以用于调试微信支付,支付宝支付,微信公众号等开发项目)
此方法需要自有服务器和域名,如果没有这些的开发者, 可以参考钉钉提供的内网穿透方式:https://www.cnblogs.com/pxblog/p/13862376.html 一.准备工作 1.域名 ...
- Linux系统如何在离线环境或内网环境安装部署Docker服务和其他服务
如何在离线环境或纯内网环境的Linux机器上安装部署Docker服务或其他服务.本次我们以Docker服务和Ansible服务为例. 获取指定服务的所有rpm包 保证要获取rpm包的机器能够上网. 本 ...
- 公司内网搭建代理DNS使用内网域名代替ip地址
企业场景 一般在企业内部,开发.测试以及预生产都会有一套供开发以及测试人员使用的网络环境.运维人员会为每套环境的相关项目配置单独的Tomcat,然后开放一个端口,以 IP+Port 的形式访问.然而随 ...
- 搭建基于HTTP协议内网yum仓库
目录 1. 前言 2. 把rpm包下载到本地 3. 配置nginx对外提供服务 4. 配置本地repo文件 5. 生成repodata信息 6. 检查及使用 7. 对管理机器上的仓库进行更新 参考资料 ...
随机推荐
- poi读取excel内容工具类
该工具类可以读取excel2007,excel2003等格式的文件,xls.xlsx文件格式 package com.visolink; import org.apache.poi.hssf.user ...
- 10--Python入门--异常处理
在程序编写过程中,难免会有一些错误.python中有一些语句可以处理这些异常或者错误,使得程序能够运行,且识别到错误的位置 try..except函数,java中是try catch 在下面的例子中, ...
- 05_解决mac百度网盘下载速度慢问题
第一步:下载软件 下载工具包:aria2GUI和chrom插件 链接:https://pan.baidu.com/s/104t6aZXx9zfxBV9rS_eLfg 密码:yg96 ①下载Aria2 ...
- tomcat升级 遇到的坑
今天说说tomcat升级后出的问题 以前的版本是8.0.30的 因用安全漏洞 需要升级tomcat 为8.5.28的版本 升级后jvm的配置 等等都和一起一样,过了几天发现,我们的错误日志和处理影响转 ...
- java.math.*;(一)
package com.test; /* Math类: java.lang.Math类中包含基本的数字操作,如指数.对数.平方根和三角函数. java.math是一个包,提供用于执行任意精度整数(Bi ...
- [ Codeforces Round #549 (Div. 2)][D. The Beatles][exgcd]
https://codeforces.com/contest/1143/problem/D D. The Beatles time limit per test 1 second memory lim ...
- 在IDEA中实战Git-branch
工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下: 假设小组中有两个人,组长小张,组员小袁 场景一:小张创建项目并提交到远程Git仓库 场景二:小袁从远程Git仓库上获取项目源码 场景三:小 ...
- zabbix性能优化记
以前用zabbix,都是简简单单的把服务端.客户端一搭,模板监控项一弄就完了.没怎么真正去弄过优化啊之类的.现在有个场景就是获取zabbix的数据贼慢,得对zabbix进行优化,开始动手分析一下. ...
- SQL特殊comment语法
SQL 注释的特殊用法: /*!版本号 语句*/ 表示大于等于某个版本是,才执行相应的语句. 在版本为5.7.23的MySQL上做测试如下: 测试1 mysql> select 1 /*!507 ...
- sed用法说明
sed介绍 sed:stream editor 是一个行编辑器,或叫流编辑器,每次处理一行,处理完一行再处理下一行.sed并不直接处理源文件,而是读取一行后放入模式空间(patten space)里, ...