centOS7下利用nginx+uwsgi部署Django+vue项目

centOS7下利用nginx+uwsgi部署Django+vue项目

一、配置Python3环境

1.安装可能需要的依赖

yum -y groupinstall "Development tools"
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel

2.下载Python3到/usr/local目录下

最新的EPEL 7仓库提供了Python3(python 3.6)的安装源,如果你使用CentOS7或更新的版本的系统你也可以按照下面的步骤很轻松的从EPEL仓库安装。
安装最新版本的EPEL.

sudo yum install epel-release

用yum安装python 3.6:

sudo yum install python36

注意:上面的安装方法并未安装pip和setuptools,如果你要安装这两个库可以使用下面的命令

curl -O https://bootstrap.pypa.io/get-pip.py
sudo /usr/bin/python3.6 get-pip.py

二、安装virtualenv,建议大家都安装一个virtualenv,方便不同版本项目管理

1.执行命令:pip install virtualenv
2.建立软连接
执行命令:ln -s /usr/local/python3/bin/virtualenv/usr/bin/virtualenv

3.在根目录下建立两个文件夹,主要用于存放env和网站文件的(个人习惯,其它人可根据自己的实际情况处理)

mkdir -p /data/env
mkdir -p /data/wwwroot

4.切换到/data/env/下,创建指定版本的虚拟环境

执行命令:cd /data/env  #切换目录
执行命令:virtualenv --python=/usr/bin/python3 pyweb
cd /data/env/pyweb/bin #进入此目录,启动虚拟环境
source activate  # 启动虚拟环境
deactivate  #关闭虚拟环境

5.项目上传到服务器并转移到虚拟环境目录下,/data/wwwroot/下

move /home/hujbo/django_range /data/wwwroot/django_range/

注意:这里看你导入到服务器项目的路径,对他进行转移到虚拟环境下
6.下载依赖包

pip install –r requirements.txt

注意,这里必须是在虚拟环境开启的状态下下载
如果出现mysqlclient库安装失败
在这里插入图片描述
退出虚拟环境,下载所需要的依赖包

deactivate
yum install mysql-devel

如果下载时再次报错:

yum -y install python3-devel  #如果安装失败则用下面的
yum install python3-devel

数据迁移需要在mysql数据库建立一个同名数据库shopping(根据setting里面设置的),编码是utf8格式,然后进行数据迁移,下载完成后进行数据迁移:(必须是在虚拟环境下)

python3.6 manage.py makemigrations
python3.6 manage.py migrate

如果有可导入的数据包,执行下面代码进行导入数据:

python3.6 manage.py loaddata + 要带入的json文件名全称

没有则执行下面代码:

python3.6 manage.py createsuperuser

运行项目

python3.6 manage.py runserver

项目运行起来,则项目环境搭建完毕

三、把前端项目上传到服务器

前端前台代码存放路径:/data/wwwroot/fonrt/
前端后台代码存放路径:在这里,我的这个比较特殊,如果是一个前端代码的话不需要这样,直接夫南方就OK,跟我一样两个前端代码的话需要现在/data/wwwroot/路径下创建一个new文件夹(这个new是根据前端代码meta修改而定的),然后把上传到服务器的后台代码转移到new文件夹下。(也可以是自己其他自定义的文件下,路径记好就可以)
注意:这里不是把整个后台代码文件夹转移到new文件夹下,而是只需要把文件夹下的所有东西转移到new文件夹下就可以。

四、安装uwsgi

下载uwsgi:

pip install uwsgi

如果报错:
在这里插入图片描述
下载依赖包:

yum install python3-devel

创建软连接

ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

在/data/wwwroot创建一个demo.py文件,内容如下:

def application(env, start_response):
    	start_response('200 OK', [('Content-Type','text/html')]) 
    	return [b"Hello World"]

在此目录下输入一下代码,测试uwsgi安装是否成功

uwsgi --http :8000 --wsgi-file demo.py

在浏览器中输入ip+8000,可以看到Hello world字样表示安装成功

五、配置uwsi.ini文件

在/data/wwwroot下创建文件夹my_uwsgi文件,cd到my_uwsgi

mkdir uwsgi.ini
vi uwsgi.ini
# 输入一下代码
[uwsgi]
socket = 127.0.0.1:8080  # 跟nginx的保持一直
home = /data/env/pyweb  #如果有虚拟环境,就写虚拟环境路径,没有此项可以不写
chdir = /data/wwwroot/django_range  # 项目路径,可以看到manage.py
module = django_range.wsgi:application # wsgi文件

master = True

processes = 4
vacuum = True
enable-threads=true
daemonize = /data/wwwroot/my_uwsgi/uwsgi.log # 日志
wsgi-file = django_range/wsgi.py
pidfile = /data/wwwroot/my_uwsgi/uwsgi.pid

六、安装nginx和配置nginx.conf文件

进入到/home目录下,下载nginx

cd /home
wget http://nginx.org/download/nginx-1.13.7.tar.gz 
tar -zxvf nginx-1.13.7.tar.gz  # 如果解压失败,把z参数去掉

进入到nginx-1.13.7目录,依次执行代码

cd nginx-1.13.7
./configure
make
make install

注意:nginx一般默认安装好的路径为/usr/local/nginx
进入 /usr/local/nginx/conf 目录,打开nginx.conf文件

cd /usr/local/nginx/conf
vi nginx.conf
#在server里写入一下代码
server {
        listen       50080;
        server_name  **.***.***.16;  这里可以localhost也可以写自己服务器ip

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   /data/wwwroot/front/;
            index  index.html index.htm;
        }



        location /new {
            alias   /data/wwwroot/new/;
            index  index.html index.htm;
        }
        

        location /proxy/ {
            uwsgi_pass 127.0.0.1:8080;
				Include  /usr/local/nginx/conf/uwsgi_params;
		}
}

注意:这里的uwsgi_pass 要跟uwsgi.ini里的socket保持一致,include是自己nginx安装路径下的uwsgi_params
回到上级目录,进入到sbin目录

cd /sbin
./nginx -t  #测试一下有没有错误

代表没有
代表没有错误,启动nginx

./nginx
./nginx -s reload #重启nginx

七、配置nginx和uwsgi开机自启

在系统服务目录里创建nginx.service文件

vi /usr/lib/systemd/system/nginx.service
# 写入内容如下:
[Unit]
Description=nginx
After=network.target
  
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
  
[Install]
WantedBy=multi-user.target

Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3
设置开机自启动

systemctl enable nginx.service

查看nginx状态

systemctl status nginx.service

如果提示了Active: inactive (dead) 则输入以下命令:

pkill -9 nginx
ps aux | grep nginx
systemctl start nginx

然后再此查看nginx状态,显示active,成功。
重启服务器

Reboot

再次连接后,查看服务状态

systemctl status nginx.service

看到nginx已经启动,至此,nginx自启动配置成功

配置uwsgi开机自启
编写开机自启脚本

vi /start.sh
nohup uwsgi --ini /data/wwwroot/my_uwsgi/uwsgi.ini &

注意:在这里前名加上nohup代表centOS后台运行,后面必须加上&,否在可能会造成centOS开机时卡再进度条启动不起来。
配置rc.local文件

vi /etc/rc.d/rc.local

编辑内容:

/start.sh &

在这里插入图片描述
再最后一行添加,末尾也必须有“&”符号
配置权限问题
如果再启动脚本,保存脚本或者配置文件的时候出现权限问题,需要赋予文件权限
在这里插入图片描述

chmod +x /etc/rc.d/rc.local

脚本文件也需要赋予权限

chmod +x /start.sh

这样就完成uwsgi的开机自启设置

server {
        listen       50070; 							#监听端口设置,也就是你vue项目的端口
        server_name  localhost;						

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
        
        location /tuoputu {
			alias		/data/wwwroot/django_range/tuoputu/;			#前端dist文件夹存放路径
   			try_files $uri $uri/ /index.html;		#解决页面刷新报404错误
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值