nginx+vue+django 响应慢_实战 | 一文掌握Centos7下搭建Django前后端分离项目部署环境...

  点击上方 3ab2b95a0691bffde68a927ad3e1168b.png

“Python Web与Django大咖之路”关注我!

工 作 原 理

9cb4256d47e549d93f1c8fab6394a5c0.png

一、安装nginx

  • 安装依赖包

yum install gcc gcc-c++ pcre-devel patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl-devel -y
  • 准备用户

groupadd nginxuseradd -g nginx nginx
  • 下载、配置、编译、安装

# 下载源码包wget http://nginx.org/download/nginx-1.16.1.tar.gz# 解压tar -zxvf nginx-1.16.1.tar.gz# 进入目录cd nginx-1.16.1/# 配置./configure --user=nginx --group=nginx --prefix=/usr/local/nginx/ --with-http_stub_status_module --with-http_ssl_module --with-stream# 编译make# 安装make install# 查看cd /usr/local/nginx  # conf:  配置目录  # logs: 日志文件——access.log、error.log  # sbin: 运行nginx的目录  # html: 显示html的文件
  • 小技巧

    • 如果想要将centos7下面的Nginx的配置文件nginx.conf的代码高亮,那么就要将下载的源码包contrib/vim/*的文件拷贝到本机安装的vim下:

cp -r contrib/vim/* /usr/share/vim/vim74/
  •  将启动nginx的运行目录加入环境变量,这样你就可以在任何目录下直接输入nginx运行 —— 编辑文件:vim ~/.bash_profile

vim ~/.bash_profile# 编辑环境变量PATH=/usr/local/nginx/sbin:$PATH:$HOME/bin# 通过source使更改生效:source ~/.bash_profile

二、安装node环境(部署前端项目需要)

  • 下载源码包、解压、转移软件、做软连接

# 下载源码包wget https://nodejs.org/dist/v12.16.2/node-v12.16.2-linux-x64.tar.xz# 解压tar -xf node-v12.16.2-linux-x64.tar.xz# 移动到你选择的安装目录mv node-v12.16.2-linux-x64 /usr/local/node-v12.16.2# 做软连接ln -s /usr/local/node-v12.16.2 /usr/local/node
  • 小技巧

将node添加进环境变量 —— 编辑文件:vim ~/.bash_profile

vim ~/.bash_profile# 编辑环境变量PATH=/usr/local/node/bin:/usr/local/nginx/sbin:$PATH:$HOME/bin# 通过source使更改生效:source ~/.bash_profile

进行测试:

node -vnpm -v

更新npm版本:

npm i -g npm

部署前端项目

# 假设现在linux上有一个文件:storm_vue,是一个vue前端项目, 路径是/djano_project/storm_vue# 第一步:进入目录cd storm_vue# 第二步:npm install# 第三步:准备编译打包vue项目,替换api.js配置文件所有地址,改为服务器地址# xx.xxx.xxx.xxx为服务器地址sed -i 's#127.0.0.1#xxx.xxx.xxx.xxx#g' /djano_project/storm_vue/src/restful/api.js# 第四步:此时打包vue项目,生成一个dist静态文件夹npm run build# 至此vue代码就结束了,只需要让nginx配置,找到vue的index.html首页文件即可.# 第五步: 配置nginx.conf,指向生成的dist文件夹vim /usr/local/nginx/conf/nginx.conf   """   server {   listen 80;   server_name vue.stormztt.com;   location / {     root /djano_project/storm_vue/dist;     index index.html index.htm;   }    error_page 400 403 404 405 /40x.html; }   """# 检测nginx语法nginx -t# 不停机重新加载nginxnginx -s reload

三、安装Python环境

  • 下载配置Python

# 下载源码包wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz# 解压tar -zxvf Python-3.6.4.tgz# 进入目录cd Python-3.6.4/# 生成Python环境安装文件./configure --prefix=/usr/local/python3 --enable-optimizations  --with-ssl # 编译make# 安装make install# 创建软链接ln -s /usr/local/python3/bin/python3 /usr/local/bin/python3ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3# 验证是否安装成功python3 -Vpip3 -V# 修改pip安装源(一般如果是买的服务器都已经自动设置好的)cd ~mkdir .pipcd .pipvim pip.conf    #进入后添加以下内容,保存退出.    [global]    index-url = http://mirrors.tencentyun.com/pypi/simple    trusted-host = mirrors.tencentyun.com
  • 安装包管理工具virtualenv

# 安装pip3 install virtualenvyum install python-setuptools python-develpip3 install virtualenvwrapper# 配置全局变量# 查找/virtualenvwrapper.sh路径find / -name virtualenvwrapper.sh# 查找python3路径find / -name python3# 查找virtalenv路径find / -name  virtualenv# 编辑.bashrc文件vim ~/.bashrc# 打开.bashrc文件将下面五行添加到末尾WORKON_HOME=~/EnvsVIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/python3/bin/virtualenvsource /usr/local/python3/bin/virtualenvwrapper.sh # 重启配置文件  source ~/.bashrc
虚拟环境列表 workon新建虚拟环境  mkvirtualenv [虚拟环境名称]启动/切换虚拟环境  workon [虚拟环境名称]删除虚拟环境  rmvirtualenv [虚拟环境名称]离开虚拟环境  deactivate
  • 测试:新建虚拟环境

mkvirtualenv project_env

     如果报错:

...Creating virtual environment...usage: virtualenv [--version] [--with-traceback] [-v | -q] [--app-data APP_DATA] [--clear-app-data] [--discovery {builtin}] [-p py] [--creator {builtin,cpython2-posix}] [--seeder {app-data,pip}] [--no-seed] [--activators comma_sep_list]                  [--clear] [--system-site-packages] [--symlinks | --copies] [--download | --no-download] [--extra-search-dir d [d ...]] [--pip version] [--setuptools version] [--wheel version] [--no-pip] [--no-setuptools] [--no-wheel]                  [--symlink-app-data] [--prompt prompt] [-h]                  destvirtualenv: error: unrecognized arguments: --no-site-packages...

没有这个参数 –no-site-packages ,是 virtualenv 版本问题。升级:

pip3 install --upgrade virtualenv==16.7.9

四、新建Python环境,安装django常用的包

# 新建虚拟环境mkvirtualenv [虚拟环境名称]# 安装uwsgipip3 install uwsgi# 安装djangopip3 install django==2.2.4# 一次性安装pip3 install -r /django_project/requirements.txt    文件requirements.txt的内容    """    amqp==2.5.2    billiard==3.6.3.0    celery==4.4.2    certifi==2019.11.28    chardet==3.0.4    coreapi==2.3.3    coreschema==0.0.4    Django==2.2.4    django-cors-headers==3.2.1    django-crispy-forms==1.9.0    django-filter==2.2.0    django-formtools==2.2    django-guardian==2.2.0    django-redis==4.11.0    djangorestframework==3.11.0    djangorestframework-jwt==1.11.0    drf-extensions==0.6.0    elasticsearch==7.6.0    idna==2.9    importlib-metadata==1.6.0    itypes==1.1.0    Jinja2==2.11.1    kombu==4.6.8    Markdown==3.2.1    MarkupSafe==1.1.1    mongoengine==0.19.1    Pillow==7.0.0    Pygments==2.6.1    PyJWT==1.7.1    pymongo==3.10.1    PyMySQL==0.9.3    pytz==2019.3    redis==3.4.1    requests==2.23.0    six==1.14.0    sqlparse==0.3.1    uritemplate==3.0.1    urllib3==1.25.8    vine==1.3.0    zipp==3.1.0    """

五、部署django项目

# 假设Linux上有一个django项目:blog-storm, 路径为:/django_project/blog-storm
  • 配置uwsgi

vim /django_project/blog-storm/uwsgi.ini# 进入文件后,写入下列语句[uwsgi]# 指定运行目录chdir=/django_project/blog-storm# Django项目的wsgi文件的所在位置module=blog-storm.wsgi# http:直接做web服务器使用http=127.0.0.1:9001# 项目运行环境所在路径 virtualenv=/root/Envs/project_env# master允许主进程存在master=true# 开启的进程数量processes=1# pidpidfile=/django_project/blog-storm/uwsgi.pid# 日志daemonize=/django_project/blog-storm/uwsgi.log# 当服务器退出的时候自动清理环境,删除 unix socket 文件和 pid 文件vacuum = true
  • 启动uwsgi

# uWSGI配置为开机自启uwsgi --ini /django_project/blog-storm/uwsgi.ini &
  • 配置nginx

vim /usr/local/nginx/conf/nginx.conf# 进入文件后,新启一个server{},修改为下列语句upstream django {  server 127.0.0.1:9001;}server {   listen 8000;   server_name blog.stormztt.com;   charset utf-8;   client_max_body_size 75M;   location / {     root /django_project/blog-storm;     # uwsgi_pass 指的是本机 IP 和端口号,并且要与 uwsgi.ini 配置文件中的 IP 和端口号必须保持一致。     uwsgi_pass django;     # uwsgi_params文件的位置     include /usr/local/nginx/conf/uwsgi_params;   }   location /static {     alias /django_project/blog-storm/static;   }   location /media {     alias /django_project/blog-storm/media;   }}
  • nginx负载均衡

vim /usr/local/nginx/conf/nginx.conf# 写入"""{  worker_processes 1;  events {     worker_connections 1024;  }  http {     include mime.types;     default_type application/octet-stream;     sendfile on;     keepalive_timeout 65;     upstream backend {         server xxx.xxx.xxx.1:80 weight=1;         server xxx.xxx.xxx.2:80 weight=1;      }     server {         listen 80;         server_name www.stormztt.com;         location / {             index index.html index.htm;             proxy_pass http://backend;             proxy_set_header Host $host;             proxy_set_header X-Forwarded-For $remote_addr;             proxy_connect_timeout 60;              proxy_send_timeout 60;              proxy_read_timeout 60;              proxy_buffer_size 4k;              proxy_buffers 4 32k;             proxy_busy_buffers_size 64k;              proxy_temp_file_write_size 64k;      }   }}"""

六、安装、配置git

  • 安装git

# yum安装yum -y install git# 测试git --version
  • 配置git账户

    • 配置账户和密码

git config --global user.name "xxxx"git config --global user.email "xxxx@xxx.com"
  • 查看配置是否生效

git config --list
  • 配置SSH用于拉取远程仓库
    • 先在本地生成ssh key,生成公钥和私钥,后续在github配置中需要。

ssh-keygen -t rsa -C "xxxx@xxx.com"
    • 确认路径按1次回车,提示:Enter passphrase(输入密码),不用输密码再按2次回车即可。生成的密钥存放路径 /root/.ssh/

    • id_rsa:私钥 ,id_rsa.pub:公钥            

  • 配置github

    1、打开网址:https://github.com/,找到settings

015cce6161df19fcd1034177788a9ba4.png

         2、复制刚才生成的 id_rsa.pub 公钥,Add SSH key

5469fa6e8172d0b8122d2ea623992c6c.png

  • 测试拉github私有项目
git clone [git@github.com:xxxx.git]

八、安装MySQL、Redis、Mongo

  • MySQL安装

# 查询出来已安装的mariadbrpm -qa|grep mariadb  # 卸载mariadb,文件名为上述命令查询出来的文件rpm -e --nodeps 文件名  # 创建mysql用户组groupadd mysql# 创建一个用户名为mysql的用户并加入mysql用户组useradd -g mysql mysql# 进入目录/usr/localcd /usr/local# 创建目录mkdir mysql# 进入目录cd mysql/# 新建文件夹mkdir data# 下载wget  http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.23.tar.gz# 解压tar -zxvf mysql-5.6.23.tar.gz# 进入解压目录cd mysql-5.6.23# yum方式安装相关依赖包yum -y install cmake bison git ncurses-devel gcc gcc-c++ autoconf# 设置安装参数cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/usr/local/mysql/data -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DENABLE_DOWNLOADS=1# 编译安装makemake install # 安装完之后,清除临时文件make clean# 修改目录属主权限chown -R mysql:mysql /usr/local/mysql/data/chown -R mysql:mysql /usr/local/mysql/# 创建MySQL Server系统表cd /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data# 配置启动脚本cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql# 启动mysql/etc/init.d/mysql start# 查看状态/etc/init.d/mysql status # 设置环境变量vim ~/.bash_profile    PATH=/usr/local/mysql/bin/:$PATH    export PATHsource ~/.bash_profile# 开机启动chkconfig  --level 345 mysql on# 最后设置数据库管理员的登录密码:/usr/local/mysql/bin/mysqladmin -u root  password 'xxxxxx'# 设置完成进入mysqlmysql  -uroot -p
  • Redis安装

# 进入目录/usr/localcd /usr/local# 下载wget http://download.redis.io/releases/redis-stable.tar.gz# 解压tar -zxvf redis-stable.tar.gz# 进入解压目录cd redis-stable# 装包yum -y install centos-release-sclyum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutilsscl enable devtoolset-9 bashecho "source /opt/rh/devtoolset-9/enable" >>/etc/profile# 编译make MALLOC=libc # 进入src目录cd src# 安装 (作用:将/usr/local/redis-stable/src目录下的文件加到/usr/local/bin目录)make install# 修改/usr/local/redis-stable/redis.conf文件  daemonize no 更改为 daemonize yes  # 设置redis连接密码  requirepass 密码  # 允许redis远程连接  bind 127.0.0.1 更改为 0.0.0.0  # 指定redis.conf文件启动./redis-server /usr/local/redis-stable/redis.conf# 放行6379端口firewall-cmd --zone=public --add-port=6379/tcp --permanentfirewall-cmd --reload# 检查端口是否开启firewall-cmd --query-port=6379/tcp

Linux下登录redis:

# 命令行登录redisredis-cli  # 输入密码auth [password] # 选择数据库: 1-15(redis默认16个数据库)select xx

注意:

        当修改了redis.conf,都要进行更新

cd /usr/local/redis-stable/src./redis-server /usr/local/redis-stable/redis.conf

Mongo安装

# 进入目录/usr/localcd /usr/local# 创建目录mkdir mongodb# 进入目录cd mongodb# 下载mongodb安装文件wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.2.4.tgz# 解压安装文件tar -zxvf mongodb-linux-x86_64-rhel70-3.2.4.tgz# 解压包移动到指定目录mv mongodb-linux-x86_64-rhel70-3.2.4/* /usr/local/mongodb# 配置全局变量并启用配置vim ~/.bash_profile  """    .......    PATH=/usr/local/mongodb/bin/:$PATH    export PATH  """source ~/.bash_profile# 将mongo路径软链到/usr/bin路径下,方便随处执行mongo命令ln -s /usr/local/mongodb/bin/ /usr/local/bin/mongo# 创建数据库及log目录cd /usr/local/mongodb/bin mkdir -p data/test/db mkdir -p data/test/logs# 创建配置文件vi mongodb.conf》》》》》》》》》》》》》》》》》》》》》》》》》》#  设置数据文件的存放目录dbpath = /usr/local/mongodb/bin/data/test/db# 设置日志文i件的存放目录及其日志文件名logpath = /usr/local/mongodb/bin/data/test/logs/mongodb.log# 设置端口号(默认的端口号是 27017)port = 27017# 设置为以守护进程的方式运行,即在后台运行fork = true# 关闭http接口,默认关闭27018端口访问nohttpinterface = true # 设置允许远程连接bind_ip = 0.0.0.0》》》》》》》》》》》》》》》》》》》》》》》》》》# 启动配置./mongod -f mongodb.conf      # 如果要取消配置文件:关闭配置      ./mongod -f ./mongodb.conf --shutdown# 查看MongoDB进程ps -ef | grep mongodb# 进入mongodb,查看mongodb是否真的已经安装成功cd /usr/local/mongodb/bin./mongo# 创建数据库用户use admin... db.createUser(  ...   {  ...     user: "admin1",  ...     pwd: "admin1234",  ...     roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]  ...   }  ... )# 测试是否可以访问db.auth("admin1","admin1234")1

九、使用图形化工具连接管理MySQL、Redis、Mongo

  • Navicat连接mysql

    第一步:使用xshell做隧道转换:

    261b293f826b4e90bf4bb07ab501e253.png

               数字1:表示你将在window电脑上侦听的端口;

               数字2:表示服务器上mysql数据库的端口;

    6155b03acb7713c22b65918eb226e9d2.png

        第二步:使用navicat连接: 

94435871dd8d805f6241a4892a75969d.png

  • RedisDesktopManager连接redis

    Name: 连接名;

    Host:服务器ip

    Port:端口

    Auth: 数据库密码

6545735e0f30cf07f65447465c43f6dd.png

  • Robo 3T 连接Mongo数据库

1、Name:连接名

2、Address:远程服务器的ip地址:端口

d9ebb2bc18b9bb3e591ae914ca648c5b.png

    对admin数据库进行操作,则需要进行Authentication验证:

cfd0b0799a6e1b63acbde707396f53d2.png

END c5db79eb0aab3dcfb4af72997d9d0f17.png eaf21e0944f44dc16fe2e6eac93d9e0b.png 2b72a2977e652de2333962d01f4023c3.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值