centos7服务器部署django项目。
用到的工具,xftp(文件互传),xshell(远程连接)
aliyun服务器防火墙开启的端口。80,22(ssh),3306(mysql),8000,9090
部署项目:
1,安装nginx
- 1>http://nginx.org/en/download.html
- 2>下载: wget http://nginx.org/download/nginx-1.17.0.tar.gz
- 3>解压压缩包 tar xf nginx-1.17.0.tar.gz
- 4>安装依赖 yum -y install pcre-devel zlib-devel
- 5>进入解压后的文件 安装nginx: ./configure --prefix=/usr/local/nginx
- 6>make 和 make install
- 7>启动nginx /usr/local/nginx/sbin/nginx 可通过浏览器访问服务器公网ip看到欢迎页面
2,安装mysql数据库
- 安装依赖:yum -y install ncurses-devel gcc-* bzip-* yum -y install gcc-*
- 安装cmake:
- wget https://github.com/Kitware/CMake/releases/download/v3.14.4/cmake-3.14.4.tar.gz
- 解压cmake
- 进入cmake文件夹,运行configure命令 ./configure
- 没有error说明安装成功 然后cmake进行编译 make -j4 make install
- 查看cmake版本确认是否安装成功 cmake --version
- 安装boost 1.59版本
- 下载: https://www.boost.org/users/history/version_1_59_0.html
- 解压boost,因为boost是绿化版,直接解压就好了
- 剪切boost文件夹 mv boost_1_59_0 /usr/local/boost
- 安装mysql
- 从官网下载mysql5.7的社区版压缩包
- 解压并进入解压后的文件夹执行下面的命令:
- cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
- -DMYSQL_DATADIR=/usr/local/mysql/data/ \
- -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
- -DWITH_INNOBASE_STORAGE_ENGINE=1 \
- -DWITH_MYISAM_STORAGE_ENGINE=1 \
- -DENABLED_LOCAL_INFILE=1 \
- -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci \
- -DWITH_DEBUG=0 \
- -DWITH_EMBEDDED_SERVER=1 \
- -DDOWNLOAD_BOOST=1 -DENABLE_DOWNLOADS=1 -DWITH_BOOST=/usr/local/boost
- 代表的意义分别是:
- 指定安装路径
- 指定数据目录
- 指定sock文件路径
- 安装Innodb存储引擎
- 安装Myisam存储引擎
- 允许使用Load data 命令从本地导入数据
- 安装所有字符串,默认字符串utf8,校验字符
- 关闭debug
- 生成一个libmysqld.a的库,这个库同时集成了mysql服务和客户端API
- 允许boost下载boost库文件
- 没有报错的话进行编译 : make -j4 make install
- 如果在编译时候出错,或者make install后出错,可以重新编译make -j4和make install
- 因为可能网速问题,导致一些包没有下载下来,所以重新make -j4和make install
- 就好了
- cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
- ll /usr/local/mysql/
- 添加mysql的用户,用户名为mysql,并利用 chown 将指定文件的拥有者改为指定的用户mysql用户
- useradd -s /sbin/nologin -r mysql
- chown mysql.mysql /usr/local/mysql/ -R
- ll /usr/local/mysql/
- 建立软连接
- ln -sf /usr/local/mysql/bin/* /usr/bin/
- ln -sf /usr/local/mysql/lib/* /usr/lib/
- ln -sf /usr/local/mysql/libexec/* /usr/local/libexec
- ln -sf /usr/local/mysql/share/man/man1/* /usr/share/man/man1
- ln -sf /usr/local/mysql/share/man/man8/* /usr/share/man/man8
- # 编辑配置文件
- vim /etc/my.cnf
- /usr/local/mysql//bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
Q8jZpqqlqG%H 这个是mysql密码,一定记得记录下来
启动mysql
- /etc/init.d/mysql start
- yum -y install lsof
- lsof -i :3306
设置mysql
- mysql_secure_installation
Ctr+d退出
这样才能用Navicat去连接数据库
3,部署python
- 下载python文件 wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz
- 解压并进入python文件夹
- yum -y install gcc-* openssl-* libffi-devel sqlite-devel
- ./configure --enable-optimizations --with-openssl=/usr/bin/openssl
- make -j8 make install
- 默认安装路径:/usr/local/lib/python3.7
- 升级pip pip3 install --upgrade pip
- 安装虚拟环境,因为有可能上线多个项目,每个项目所需工具不一样,所以创建虚拟环境,一个项目一个环境,互不影响:pip3 install virtualenv
- 创建一个虚拟环境 virtualenv -p python3 web
- 使得虚拟环境生效:source web/bin/activate
- 然后在web虚拟环境下安装Django: pip3 install django==2.1.8
- 创建一个django项目: django-admin.py startproject myweb
- django-admin.py
- 修改配置文件
- vim myweb/settings.py
- 指定端口,启动Django项目:python3 manage.py runserver 0.0.0.0:8000
- 通过浏览器访问服务器官网ip+端口号可查看页面信息 119.23.204.209:8000
- 服务器mysql版本:5.7 Django版本:2.1 python版本:3.7
4,发布网站
- 安装uwsgi : pip install uwsgi pip3 install uwsgi
- mkdir /etc/uwsgi
- vim /etc/uwsgi/uwsgi.ini 写入以下内容
- [uwsgi]
- uid=root //谁启动uwgi
- gid=root //组是谁
- socket = 127.0.0.1:9090 //监听的ip地址和端口是多少
- master = true //启动主进程
- vhost = true //多站模式,可以发布多个网站
- no-site = true //多站模式时不设置入口模块和文件
- workers = 2 //子进程数
- reload-mercy = 10 //平滑的重启
- vacuum = true //退出、重启时清理文件
- max-requests = 1000 //开启10000个进程后,启动respawn下
- limit-as = 512 //将进程的总内存量控制在512M
- buffer-size = 30000 //buffer的大小
- pidfile = /var/run/uwsgi9090.pid //pid文件,用于下面的脚本启动、停止该进程
- daemonize = /var/log/uwsgi9090.log
- pythonpath=/root/web/lib/python3.7/site-packages
- 启动uwsgi:uwsgi --ini /etc/uwsgi/uwsgi.ini
- 查看启用端口信息: netstat -ntpl
- 关闭uwsgi:
- cat /var/run/uwsgi9090.pid kill -9 11830
- vim /etc/init.d/uwsgi 写入以下内容
- #! /bin/sh
- DESC="uwsgi daemon"
- NAME=uwsgi
- DAEMON=/usr/local/bin/uwsgi
- CONFIGFILE=/etc/uwsgi/$NAME.ini
- PIDFILE=/var/run/${NAME}9090.pid
- SCRIPTNAME=/etc/init.d/$NAME
- FIFOFILE=/tmp/uwsgififo
- set -e
- [ -x "$DAEMON" ] || exit 0
- do_start() {
- if [ ! -f $PIDFILE ];then
- $DAEMON $CONFIGFILE || echo -n "uwsgi running"
- else
- echo "The PID is exit..."
- fi
- }
- do_stop() {
- if [ -f $PIDFILE ];then
- $DAEMON --stop $PIDFILE || echo -n "uwsgi not running"
- rm -f $PIDFILE
- echo "$DAEMON STOPED."
- else
- echo "The $PIDFILE dosen't found"
- fi
- }
- do_reload() {
- if [ -p $PIDFILE ];then
- echo w > $FIFOFILE
- else
- $DAEMON --touch--workers--reload $PIDFILE || echo -n "uwsgi can't reload"
- fi
- }
- do_status() {
- ps aux|grep $DAEMON
- }
- case "$1" in
- status)
- echo -en "Status $NAME: \n"
- do_status
- ;;
- start)
- echo -en "Starting $NAME: \n"
- do_start
- ;;
- stop)
- echo -en "Stopping $NAME: \n"
- do_stop
- ;;
- reload|graceful)
- echo -en "Reloading $NAME: \n"
- do_reload
- ;;
- *)
- echo "Usage: $SCRIPTNAME {start|stop|reload}" >&2
- exit 3
- ;;
- esac
- exit 0
- # 设置权限
- chmod 755 /etc/init.d/uwsgi
- 启动uwsgi /etc/init.d/uwsgi start
- vim /usr/local/nginx/conf/nginx.conf
- 写入以下内容:
- 注意:如果域名已经解析过了,server_name localhost;改为server_name www.terroristhouse.com;
- server {
- listen 80;
- server_name localhost;
- location / {
- include uwsgi_params;
- uwsgi_pass 127.0.0.1:9090;
- uwsgi_param UWSGI_SCRIPT myweb.wsgi;
- uwsgi_param UWSGI_CHDIR /usr/local/nginx/html/myweb;
- index index.html index.htm;
- client_max_body_size 35m;
- #uwsgi_cache_valid 1m;
- #uwsgi_temp_file_write_size 64k;
- #uwsgi_busy_buffers_size 64k;
- #uwsgi_buffers 8 64k;
- #uwsgi_buffer_size 64k;
- #uwsgi_read_timeout 300;
- #uwsgi_send_timeout 300;
- #uwsgi_connect_timeout 300;
- }
- }
- #移动项目到指定文件夹
- mv myweb /usr/local/nginx/html/
- 静态文件配置
- /usr/local/nginx/conf/nginx.conf文件中设置
- server {
- listen 80;
- server_name www.terroristhouse.com;
- location /static/ {
- #autoindex on;
- alias /usr/local/nginx/html/mysite7/static/;
- break;
- #alias /usr/local/nginx/html/collectedstatic;
- }
- location /media/ {
- alias /usr/local/nginx/html/mysite7/media/;
- break;
- #autoindex on;
- #alias /usr/local/nginx/html/collectedstatic;
- }
- 收集本地项目安装的库项目目录下
- 导出库:pip3 freeze > requirements.txt
- 在服务器虚拟项目中安装库
- 导入库: pip3 install -r requirements.txt
- 重启 uwsgi和nginx 用浏览器访问域名可查看页面
- /etc/init.d/uwsgi stop 停止运行uwsgi
- /etc/init.d/uwsgi start 开启运行uwsgi
- killall -9 nginx 关闭nginx的进程
- /usr/local/nginx/sbin/nginx 启动和查看nginx服务
done。
centos7服务器部署django项目。的更多相关文章
- 腾讯云服务器部署 django项目整个流程
CentOS7下部署Django项目详细操作步骤 前记:购买腾讯云服务器,配置自选,当然新用户免费体验半个月,我选择的系统是centos7系统版本, 接下来我们来看整个配置项目流程. 部署是基于:ce ...
- 转载:CentOS7下部署Django项目详细操作步骤
部署是基于:centos7+nginx+uwsgi+python3+django 之上做的 文章转自:Django中文网 https://www.django.cn/article/sh ...
- CentOS7下部署Django项目详细操作步骤
严格按下面步骤 一.更新系统软件包 yum update -y 二.安装软件管理包和可能使用的依赖 yum -y groupinstall "Development tools" ...
- linux上使用nginx、uwsgi部署django项目
参考:CentOS7下部署Django项目详细操作步骤 注意事项: 在虚拟环境中操作,虚拟环境中安装nginx.uwsgi,虚拟环境外需安装uwsgi -- 临时关闭防火墙:systemctl sto ...
- 在裸机centos7系统中部署django项目的过程
概要 本文用一台安装了centos7.5系统的裸奔Linux机器(当然是虚拟机)详细讲解从无到有部署django项目的过程. 安装必要的工具 配置yum源 至于什么是yum源大家请自行百度,本人用的是 ...
- 云服务器上利用Docker部署Django项目
转载别人的,请看下面链接 云服务器上利用Docker部署Django项目
- nginx+uwsgi部署Django项目到Ubuntu服务器全过程,以及那些坑!!!
前言:自己在windows上用PyCharm编写的Django项目,编写完后在windows上运行一点问题都没有,但是部署到服务器上时却Bug百出.百度,CSDN,sf,各种搜索寻求解决方案在历时3天 ...
- nginx + uwsgi 部署django项目
因项目需求,需要部署django项目,这里是基础的nginx配合uwsgi部署django,后续会采用docker部署的方式 环境: centos7 python3.5.4 django2.1.4 u ...
- 宝塔面板成功部署Django项目流程
宝塔面板部署Django项目完整流程 上线Django项目记录,超简单,避免无意义的踩坑! 第一步:安装python管理器 在宝塔在线面板安装“python项目管理器” 第二步:安装适配python版 ...
随机推荐
- 【技术博客】 Laravel 5.1单元测试(PHPUnit)入门
目录 Laravel 5.1单元测试(PHPUnit)入门 简介 安装与配置 1. 安装 2. 配置 编写测试样例 1. 新建测试样例 2. 编写函数的测试 3. 编写Web功能测试 运行测试与查看结 ...
- 1-5docker私有镜像仓库
1.简单操作 1.在 https://cloud.docker.com 免费注册一个 Docker 账号 2.登录 docker login #命令登录 Docker Hub. 3.注销 docker ...
- ReentrantLock 的公平锁源码分析
ReentrantLock 源码分析 以公平锁源码解析为例: 1:数据结构: 维护Sync 对象的引用: private final Sync sync; Sync对象继承 AQS, Syn ...
- Hyper-V虚拟机安装Ubuntu,启动的时候会出现:Please remove the installation medium,then press ENTER
Hyper-V虚拟机安装Ubuntu成功以后,重启的时候页面会一直卡在下面,并报Please remove the installation medium,then press ENTER,这是因为启 ...
- Java并发编程基础-Unsafe
前言:Unsafe是Java中一个底层类,包含了很多基础的操作,比如数组操作.对象操作.内存操作.CAS操作.线程(park)操作.栅栏(Fence)操作,JUC包.一些三方框架都使用Unsafe类来 ...
- [翻译] InfluxDB 存储机制解析
原文地址: https://medium.com/dataseries/analysis-of-the-storage-mechanism-in-influxdb-b84d686f3697 TODO
- MIME类型对应表:
MIME类型对应表: 常用MIME类型: 扩展名 MIME类型 .iso ISO File .rar application/x-rar-compressed .zip application/zip ...
- SocketChannel简述
前言 在前面的Channel概述的分类中提到过SocketChannel主要是用来基于TCP通信的通道.这篇文章详细介绍下SocketChannel SocketChannel是什么 SocketCh ...
- SAP销售订单需求类型的确定优秀级
需求类型的确定优秀级:1.策略组里的需求类型:2.MRP组里的:3.SO行项目类别+MRP类型4.SO行项目类别 部分截图:
- typing类型注解库
简介 动态语言的灵活性使其在做一些工具,脚本时非常方便,但是同时也给大型项目的开发带来了一些麻烦. 自python3.5开始,PEP484为python引入了类型注解(type hints),虽然在p ...