超详细Centos7+Nginx+Django+uwsgi搭建服务器并部署

安装Centos7后出现的问题

Centos安装后会发现连ping都没法与外界ping通,我们需要修改/etc/sysconfig/network-scripts/ifcfg-ens33来进行修改就可以了。
在这里插入图片描述
然后运行

service network restart

即可ping同网络并使用yum进行一些操作。

环境配置

我们这次项目使用的环境是:
Python3.7.9
Django3.1.3

python3.7.9的安装
安装wget命令
yum -y install wget
yum -y install setup
yum -y install perl
打开centos的远程连接
vi /etc/ssh/sshd_config

然后修改里面三处位置:具体见这篇文章
https://blog.csdn.net/weixin_44959377/article/details/108929108
然后执行以下命令就可以生效

service sshd start
安装net-tools,查看服务器的ip
yum install net-tools
使用远程工具连接服务器

这里推荐使用MobaXterm,功能强大,更重要的是稳定快速。

安装依赖库
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel gcc make 
cd到/usr/local目录

下载python3.7.9的包

cd /usr/local
wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz
tar -xvf Python-3.7.9.tgz # 解压
cd Python-3.7.9 # 进入该目录
./configure --prefix=/usr/local/python3 # 配置编译安装的路径
make
make install
添加软链接

这里要明白软链接的定义,相当于我们在window上添加环境变量,但是Linux的实现是更加简单的

ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3
安装虚拟环境virtualenv

虚拟环境是为了更好的管理我们的python项目。

pip3 install virtualenv

建立软链接

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

建立两个文件夹,用于存放环境和放置项目文件

mkdir -p /data/env 
mkdir -p /data/wwwroot
cd /data/env/
virtualenv --python=/usr/bin/python3 django_project_test
# 通过python去指定python的版本,要不然它默认是python2.0的
# 版本
cd /data/env/django_project_test/bin
source activate # 启动虚拟环境

在这里插入图片描述

在虚拟环境安装django和uwsgi
pip3 install django==3.1.3
pip3 install uwsgi

在这里插入图片描述
可以看到,两个都被安装到了我们虚拟项目中

将我们的项目放置在服务器上

在这里插入图片描述
直接将我们的项目拖拽到我们的服务器上,这也是我们使用远程主机很方便的一点。
修改我们项目的配置文件
在这里插入图片描述
运行我们的项目

cd /data/wwwroot/djangoProject/
python3 manage.py runserver

如果你也是按照前面的步骤进行操作的话,大概率会碰到这个问题:
在这里插入图片描述

解决sqlite版本问题

开启另外一个命令行链接窗口并输入一下命令:

wget https://www.sqlite.org/2019/sqlite-autoconf-3300100.tar.gz
tar zxvf sqlite-autoconf-3300100.tar.gz
cd sqlite-autoconf-3300100/
./configure
make
make install
mv /usr/bin/sqlite3  /usr/bin/sqlite3_old
ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3
export LD_LIBRARY_PATH="/usr/local/lib"

查看版本:

python3
import sqlite3
sqlite3.sqlite_version

但是我们使用上面的方法解决问题之后,会发现我们所在的虚拟环境的sqlite还是使用着老版本,这个时候我们要换个窗口进行重新连接就可以了,因为那个老的好像是没办法及时给他进行更新。重新运行

在这里插入图片描述

配置uwsgi
cd /data/wwwroot/djangoProject

新建一个djangoProject.xml文件,注意这个xml文件要跟项目名是一样的。
填写内容如下:

<uwsgi> 
	<socket>127.0.0.1:8997</socket>
	<!-- 内部端口,自定义 --> 
	<chdir>/data/wwwroot/djangoProject/</chdir>
	<!-- 项目路径 --> 
	<module>djangoProject.wsgi</module> 
	<processes>4</processes> 
	<!-- 进程数 --> 
	<daemonize>uwsgi.log</daemonize>
	<!-- 日志文件 --> 
</uwsgi>
安装并配置nginx
cd /home/
wget http://nginx.org/download/nginx-1.13.7.tar.gz
tar -zxvf nginx-1.13.7.tar.gz
cd nginx-1.13.7
./configure
make
make install

nginx的默认安装路径为/usr/local/nginx
先备份nginx.conf文件

cd /usr/local/nginx/conf
cp nginx.conf nginx.conf.bak
vi nginx.conf

删除这个文件的所有内容,然后加入一下内容:

events { 
	worker_connections 1024; 
}
http { 
	include mime.types; 
	default_type application/octet-stream; 
	sendfile on; 
	server { 
		listen 80; 
		server_name www.django.cn; 
		charset utf-8; 
		location / { 
			include uwsgi_params; 
			uwsgi_pass 127.0.0.1:8997; 
			#端口要和uwsgi里配置的一样 
			uwsgi_param UWSGI_SCRIPT djangoProject.wsgi; 
			#wsgi.py所在的目录名+.wsgi 
			uwsgi_param UWSGI_CHDIR /data/wwwroot/djangoProject; 
			#项目路径 
		}
 	} 
}
vi nginx.conf

光标置于第一行,使用命令行模式输入

.,$d

然后回车,删除全部,然后将上面黏贴复制

cd /usr/local/nginx/sbin
./nginx -t # 这个命令要是没有错,就继续执行
./nginx

然后浏览器直接访问,这个时候会发现还是不行,原因是服务器默认访问墙并没有开启访问,所以这个时候还要对防火墙进行设置

firewall-cmd --zone=public --add-port=80/tcp --permanent
systemctl restart firewalld.service
修改配置并启动uwsgi

对settings.py文件进行修改
在这里插入图片描述

进入/data/wwwroot/djangoProject
cd /data/wwwroot/djangoProject
uwsgi -x djangoProject.xml
cd /usr/local/nginx/sbin
./nginx -s reload

然后访问服务器地址,就可以啦!
在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值