环境搭建:

系统:

​ centos7.2 x64

开发环境:

python3.6、Django 1.11 (从一到七步)

虚拟环境:

Docker

Docker ==>> mysql 5.6

Docker ==>> redis:3.2

HTTPS:

Nginx、uwsgi

项目启动步骤

1、创建虚拟环境

​ cd /home/evn

​ virtualenv --python=/usr/bin/python3 项目名称

​ 然后进入:cd /home/evn/项目名/bin

​ 启动虚拟环境:source activate

2、上传项目并设置

​ 在settings.py里设置:

​ 1.关闭DEBUG模式。

​ DEBUG = False

​ 2.ALLOWED_HOSTS设置为* 表示任何IP都可以访问网站。

​ ALLOWED_HOSTS = ['*']

​ 3.数据库配置

​ cd /home/www/tencent/

​ 上传文件,并解压 unzip 项目名

​ cd /home/www/tencent/项目名

3、设置 uwsgi中的xml

<uwsgi>
<socket>127.0.0.1:90</socket> <!-- 内部端口,自定义 -->
<chdir>/home/www/tencent/home/</chdir> <!-- 项目路径 -->
<module>home.wsgi</module> <!-- home为wsgi.py所在目录名-->
<processes>4</processes> <!-- 进程数 -->
<daemonize>uwsgi.log</daemonize> <!-- 日志文件 -->
</uwsgi>

新建一个文件,名称:项目名.xml,放入项目根目录

3、安装项目依赖库

​ 执行:pip3 install -r requirements.txt

​ 额外安装:pip3 install uwsgi

4、数据库迁移

​ 1.python3 manage.py makemigrations ----记录一下数据库的变化

​ 2.python3 manage.py migrate ----将变化同步到数据库中

5、启动uwsgi

​ uwsgi -x 项目名.xml

6、配置Nginx

nginx.conf

events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
include /usr/local/webserver/nginx/conf/vhost/*.conf;#主要是这个地方,把新建的两配置文件包含进来
server {
listen 80 default_server;
server_name _;
return 404;
}
}

www.conf

## 将HTTP请求全部重定向至HTTPS
server {
listen 80;
server_name www.liqianglog.top;
charset utf-8;
access_log /home/ssl/tencent/www/log/www-80.access.log;
error_log /home/ssl/tencent/www/log/www-80.error.log;
rewrite ^ https://www.liqianglog.top;
}
server {
listen 443 ssl;
server_name www.liqianglog.top liqianglog.top;
root /home/www/tencent/home/;#项目路径
charset utf-8;
ssl_certificate /home/ssl/tencent/www/public.pem;#.pem证书路径
ssl_certificate_key /home/ssl/tencent/www/private.key;#.key证书路径
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
error_page 497 https://$host$request_uri;
location / {
root html/www;
include uwsgi_params;
uwsgi_pass 127.0.0.1:90;
uwsgi_param UWSGI_SCRIPT home.wsgi;
uwsgi_param UWSGI_CHDIR /home/www/tencent/home/;#项目路径 }
location /static/ {
alias /home/www/tencent/home/static/; #静态资源路径
}
access_log /home/www/tencent/home/www.liqiangtop.log.log;
error_log /home/www/tencent/home/www.liqiangtop.log.error.log;
}

非Django配置SSL

如:gitlab.conf

## 将HTTP请求全部重定向至HTTPS
server {
listen 80;
server_name gitlab.liqianglog.top;
charset utf-8;
access_log /home/ssl/tencent/gitlab/log/gitlab-80.access.log;
error_log /home/ssl/tencent/gitlab/log/gitlab-80.error.log;
rewrite ^ https://gitlab.liqianglog.top;
} ## 请求转发到GitLab容器
server {
listen 443 ssl;
server_name gitlab.liqianglog.top;
charset utf-8;
access_log /home/ssl/tencent/gitlab/log/gitlab.access.log;
error_log /home/ssl/tencent/gitlab/log/gitlab.error.log;
ssl on;
ssl_certificate /home/ssl/tencent/gitlab/public.pem;
ssl_certificate_key /home/ssl/tencent/gitlab/private.key;
ssl_session_timeout 10m;
ssl_session_cache shared:SSL:10m;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_pass http://127.0.0.1:20080;#注意这里的20443端口
}
location ~ .*\.(js|css|png)$ {
proxy_pass http://127.0.0.1:20080;
}
}

命令:

# 启动个人主页虚拟环境中的uwsgi
cd /home/evn/home/bin #进入虚拟环境所在位置
source activate #启动虚拟环境
uwsgi -x /home/www/tencent/home/home.xml # 运行uwsgi pip3 freeze > requirements.txt # 生成requirements.txt文件
pip3 install -r requirements.txt # 安装requirements.txt依赖 virtualenv --python=/usr/bin/python3 项目名称 # 创建virtualenv虚拟环境
source activate # 启动virtualenv虚拟环境
deactivate # 退出virtualenv虚拟环境
rmvirtualenv 虚拟环境名称 # 删除irtualenv虚拟环境 /usr/local/webserver/nginx/sbin/nginx -s reload # 重新载入配置文件
/usr/local/webserver/nginx/sbin/nginx -s reopen # 重启 Nginx
/usr/local/webserver/nginx/sbin/nginx -s stop # 停止 Nginx
/usr/local/webserver/nginx/conf/vhost # conf配置目录
/usr/local/bin/ #docker-compose目录 docker restart 容器名 # 重启容器
docker stop 容器名 # 停止容器
docker start 容器名 # 启动被停止的容器
docker rm -f 容器名 # 删除容器
docker exec -i -t 容器名 /bin/bash # 进入容器 sudo reboot # 重启服务 启动 gitlab
cd /home/gitlab/
docker-compose up -d

自动义开机脚本 shell

1、自己新建一个脚本,如centnet-service.sh
  经过后面的几个步骤后,这个脚本在开机的时候会执行,在这个脚本里面可以写你开机的时候想执行的命令,如启动tomcat,oracle等服务
2、在脚本中输入启动服务的命令,my.sh:
  #!/bin/sh
#chkconfig: 6 20 80
DIR=/home/shell
echo "开始执行脚本" > $DIR/my_log.txt
docker start mymysql # 启动MySQL 容器
docker start goofy_merkle # 启动resis 容器
docker start elegant_kepler # 启动portainer docker可视化容器
docker start gitlab # 启动gitlab 容器
# 启动个人主页虚拟环境中的uwsgi
echo "启动个人主页虚拟环境中的uwsgi"
cd /home/evn/home/bin
source activate
uwsgi -x /home/www/tencent/home/home.xml
deactivate
# 启动小强云盘虚拟环境中的uwsgi
echo "启动小强云盘虚拟环境中的uwsgi"
cd /home/evn/xqyunpan/bin
source activate
uwsgi -x /home/www/tencent/xqyunpan/xqyunpan.xml
deactivate
# 启动12306虚拟环境中的uwsgi
echo "启动12306虚拟环境中的uwsgi"
cd /home/evn/12306/bin
source activate
uwsgi -x /home/www/tencent/cp12306/cp12306.xml
deactivate
/usr/local/webserver/nginx/sbin/nginx # 启动Nginx
echo "结束脚本" > $DIR/my_log.txt 3、文件进行转换
yum install -y dos2unix
dos2unix /home/shell/my.sh
3、执行如下命令,将该脚本标记为可执行文件(添加可执行的权限)
  chmod +x /home/shell/my.sh
4、执行如下命令将/etc/rc.d/rc.local文标记为可执行文件
  在centos7中,/etc/rc.d/rc.local文件的权限被降低了,开机的时候执行在自己的脚本是不能起动一些服务的,执行下面的命令可以文件标记为可执行的文件
  chmod +x /etc/rc.d/rc.local
5、打开/etc/rc.d/rc.local文件,在最后面添加如下脚本
  . /home/shell/my.sh
  这样,my.sh这个脚本在开机的时候就会被执行了,以后再这里面写启动服务的命令就可以了

centos7 + Nginx+ HTTPS + uwsgi + python3.6 + Docker + Django1.11 + mysql 5.6 + virtualenv 环境搭建的更多相关文章

  1. Windows下Python3.6.2+Django-1.11.5+httpd-2.4.27-win64-VC14部署网站

    最近项目组正在上python+django.现在将部署过程总结下,相关文件也备份下,面得每次都要弄半天.网上很多不靠谱的做法,让我反复试错,浪费不少时间. 原材料: Python3.6.2 httpd ...

  2. django1.7 配置demo教程(环境搭建)

    近期又用到django做个简单项目,1年多没用过了有些手生,按理说没啥问题吧 以下是一个简单的环境搭建demo过程: 前提条件:准备了python2.7已经安装 1.搭建django环境下载 http ...

  3. docker集成管理工具-shipyard的开发环境搭建笔记

    前段时间一直在研究openstack,后来老师告诉我需要用docker容器来搭建hadoop集群,所以就将战场转移到docker上来了,话说docker最近这段时间太火了,但是说实话我觉得应用起来还不 ...

  4. LNMP(Linux+Nginx+Mysql+PHP---源码)环境搭建

    LNMP(Linux+Nginx+Mysql+PHP(Perl)) Linux:[root@dep5 mysql]# cat /etc/issueRed Hat Enterprise Linux Se ...

  5. Python3的桌面程序开发利器:Eric6的环境搭建、使用

    本文旨在通过一个简单的demo,介绍基于Python3.PyQT5的环境下开发桌面应用程序的一种方案,当然开发Python的桌面应用程序不止是PyQT 这一种方案,还可以使用Python自带的Tkin ...

  6. CentOS6.5+nginx+mysql+php(laravel)服务器环境搭建

    公司准备迭代会员中心项目,要上laravel框架,替代以前的Ecshop框架,PHP工程师将部分功能页面代码提交,自己也准备着手搭建一个测试环境将项目跑起来: 一. 环境依赖安装设置 关闭防火墙 [r ...

  7. Ubuntu下nginx+uwsgi+flask的执行环境搭建

    选择web framwork是个非常艰难的事情, 主要分为轻量级和重量级框架. 因为没有搭建站点这样的须要, 所以回避SSH, Django这样的框架, 而选择一个轻量级框架. 自己也比較青睐pyth ...

  8. Python3.7&Django1.11.15 兼容性问题

    环境: 1. Windows10 2. python3.7 3. Django1.11.15 启动Django时抛出以下异常: Unhandled exception in thread starte ...

  9. Python环境搭建、python项目以docker镜像方式部署到Linux

    Python环境搭建.python项目以docker镜像方式部署到Linux 本文的项目是用Python写的,记录了生成docker镜像,然后整个项目在Linux跑起来的过程: 原文链接:https: ...

随机推荐

  1. SAP和去哪儿网面试感悟

    这两天先后面了两家公司,个人感觉挺有意思,就写下来.现在是4月份,校招基本没有了,去哪儿网刚好有春招,我就去试试.SAP是同学推荐的. 去哪儿.参加笔试,个人感觉还行.半个月后收到面试通知.到了面试现 ...

  2. Ubuntu设置MySQL允许远程访问

    1.注释bind-address = 127.0.0.1. 代码如下: > sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 将bind-address = ...

  3. mysql 服务压缩包安装,用户创建

    wind7上安装mysql记录: 1.下载的包中没有ini配置文件,需要根目录手动创建my.ini文件 内容如下: [client]port=3306default-character-set=utf ...

  4. 高启全:长江存储自主3D NAND,DRAM研发欢迎美光一起加入(千秋大业,慢慢做)

    台湾DRAM教父高启全转战大陆紫光集团操盘存储器大计划超过1年,日前晋升长江存储的执行董事.代行董事长,接受DIGITIMES独家专访公开未来规划:他指出,已齐聚500名研发人员在武汉投入3D NAN ...

  5. Delphi结束进程模块

    function KillTask(ExeFileName: string): integer; const PROCESS_TERMINATE = $0001; var ContinueLoop: ...

  6. kube框架结构-一个小型响应式CSS框架

    当你开始初建一个新的项目时,你可能需要一个不太复杂的基础框架,Kube框架应该是你最好的选择.一个独立的CSS文件,帮助你更简单的创建响应式的的布局设计. Kube Framework包括网格.按钮. ...

  7. Elasticsearch 6.1.2 搭建及使用教程一

    安装包: es6.1.2 es-head 开发环境:jdk 1.8 搭建流程一一说明: 将下载好的es解压后找到如下图文件 打开后如下图所示配置(已添加详细注释): # 集群的名字 cluster.n ...

  8. <房间内功能>打赏小动画

    截图如下 :        功能:   每次点击礼物,都要通过动画显示一个小图标,最多显示两行图标栏,送多次会显示然后再次显示,显示 XX 送给 XX 一个小礼物的动画样式.动画样式效果为,整体动画模 ...

  9. Qt VS版本添加调试器

    Qt的VS版本默认是不带调试器的,可以去百度一个WinDbg,如下图所示. 将其中的cdb.exe添加到Qt Creator构建和运行的Debuggers标签页即可,如下图所示. http://blo ...

  10. 极简代理IP爬取代码——Python爬取免费代理IP

    这两日又捡起了许久不碰的爬虫知识,原因是亲友在朋友圈拉人投票,点进去一看发现不用登陆或注册,觉得并不复杂,就一时技痒搞一搞,看看自己的知识都忘到啥样了. 分析一看,其实就是个post请求,需要的信息都 ...