centos7 + Nginx+ HTTPS + uwsgi + python3.6 + Docker + Django1.11 + mysql 5.6 + virtualenv 环境搭建

环境搭建:

系统:

​ 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这个脚本在开机的时候就会被执行了,以后再这里面写启动服务的命令就可以了
  
原文地址:https://www.cnblogs.com/liqianglog/p/11186567.html