全面Centos7部署django+nginx+uwsgi+mysql详细步骤

没事写了个网站,用内网穿透玩的很是不过瘾,正巧华为云搞活动,就像把项目部署到华为云上,下面是步骤也是经历:
背景:
本人在本地写代码测试的时候,由于电脑配置实在是不行,数据库用的事sqlite3,而部署到云服务器上,我打算换成mysql,django版本为3.2,Python让我升级成了3.9。一大早上九点半就等着华为官网放出免费的服务器,抢到一个2核CPU,4G内存,40G云盘,1M带宽的上海机房的云服务器。由于本人之前只弄过win IIS,对linux只是简单了解,一路部署下来,也是云里雾里,在格式化了两次云服务器之后,总算成功了!免费的不怕,使劲折腾,操作系统随便换,真是安逸舒适!

1. 为了上线后更换数据库,我需要把本地项目的数据导出来,以便在服务器部署完成后导入mysql。
django 项目提供了一个导出的方法 python manage.py dumpdata, 不指定 appname 时默认为导出所有的app

python manage.py dumpdata [appname] > appname_data.json

执行如下代码,导出所有app数据,会自动在当前文件生成alldata.json文件

python manage.py dumpdata > alldata.json

2. 配置华为云服务器的安全组,就是开放哪些端口

全面Centos7部署django+nginx+uwsgi+mysql详细步骤
全面Centos7部署django+nginx+uwsgi+mysql详细步骤
3.配置SSH客户端进行远程登录。
为了在win10能操作服务器,需要下载OpenSSH,注意这是64位用的,如果不符合你得系统你可以,选择其他的下载。
链接: https://download.filezilla-project.org/client/FileZilla_3.58.0_win64_sponsored-setup.exe
顺便再下载个FileZilla,方便向服务器传输文件。
链接: https://download.filezilla-project.org/client/FileZilla_3.58.0_win64_sponsored-setup.exe
一顿无脑安装即可。
然后按下 win+r组合键,win键就是ctrl和alt中间那个小窗户键,出现运行窗口输入命令 cmd

全面Centos7部署django+nginx+uwsgi+mysql详细步骤
root为你服务器系统的用户名,@后面为你服务器的公网IP地址,
ssh root@XXX.XX.XX.XXX

之后会提示你输入服务器的密码,完成后就进入到了服务器的命令行,开始我们的部署填坑之旅。

全面Centos7部署django+nginx+uwsgi+mysql详细步骤
4. 在服务器上开始FTP服务,上传项目文件。
首先更新下服务器软件,时间会稍微有些长
yum update -y

让后是下面一串,说是一堆开发依赖,不知道是什么,都安排上;

 yum install gcc ; yum -y install zlib*;yum install openssl-devel -
y

安装vsftpd(very secure ftp daemon,非常安全的 FTP 守护进程)是一款运行在 Linux 操作系
统上的 FTP 服务程序,不仅完全开源而且免费,此外,还具有很高的安全性、传输速度,以
及支持虚拟用户验证等其他 FTP 服务程序不具备的特点

yum install vsftpd

安装完成后开启无脑配置模式,直接下面三条,要一条一条来哦。

mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
grep -v "#" /etc/vsftpd/vsftpd.conf_bak > /etc/vsftpd/vsftpd.conf
cat /etc/vsftpd/vsftpd.conf

为了尽量简单我们用本地用户模式配置,输入以下命令,更改配置文件,如果vim编辑器不会用,就随便找找查查吧。

vim /etc/vsftpd/vsftpd.conf

修改参数完成后如下

anonymous_ _enable=NO
local_ _enable=YES
write_ _enable=YES
local_ _umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

重点来了,这个时候ftp还是不能用的,我们还需要修改两个文件,输入以下命令编辑,在root前面加上#号注释掉,保存退出

vim /etc/vsftpd/user_list

全面Centos7部署django+nginx+uwsgi+mysql详细步骤
vim /etc/vsftpd/ftpusers

然后启动ftp服务

systemctl restart vsftpd
systemctl enable vsftpd

然后打开我们的filezilla软件

全面Centos7部署django+nginx+uwsgi+mysql详细步骤

全面Centos7部署django+nginx+uwsgi+mysql详细步骤
先来配置python,安装django及其依赖
全面Centos7部署django+nginx+uwsgi+mysql详细步骤
版本3.68,直接上吧,首先给python换源,否则下载太慢了。
mkdir ~/.pip
vim ~/.pip/pip.conf

输入以下内容

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn

保存退出后安装django

pip3 install django

全面Centos7部署django+nginx+uwsgi+mysql详细步骤
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade Pillow

安装uwsgi

yum install python36-devel
pip3 install uwsgi

由于数据要换成mysql,所以需要安装mysqlclient

yum install python3-devel mysql-devel
pip3 install mysqlclient

安装mysql,为了避免出现个gpg-key的错误,安装了第二条

yum install https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum install https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm

启动mysql,并加入开机启动

systemctl start mysqld
systemctl enable mysqld

查看初始密码

grep 'temporary password' /var/log/mysqld.log

全面Centos7部署django+nginx+uwsgi+mysql详细步骤
mysql -u root -p

全面Centos7部署django+nginx+uwsgi+mysql详细步骤
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY'新密码';`
flush privileges;

配置django导入原数据(由于我是从sqlite3导入mysql,所以比较繁琐)
以下是我的数据库配置,数据库名为django_db,所以我需要进入mysql新建该库。

 'default': {
         'ENGINE': 'django.db.backends.mysql',
         'NAME': 'django_db',
         "USER":"root",
         "PASSWORD":"a;CXQkeyj03X",
         "HOST":"127.0.0.1",
         "PORT":"3306",
     }

全面Centos7部署django+nginx+uwsgi+mysql详细步骤
python3 manage.py loaddata mysite_all.json

收集静态文件

python3 manage.py collectstatic

以上已经完成大部分的配置工作,接下来是uwsgi和nginx,接入网络服务
安装nginx

yum install nginx

把目录移动到服务器项目文件夹下,配置uwsgi.ini

[root@ecs-358280 shopsite]

内容如下:

[uwsgi]
socket = 127.0.0.1:8001
chdir = /home/www/shopsite
wsgi-file = shopsite/wsgi.py
module = shopsite.wsgi
processes = 4
threads = 2
stats = 127.0.0.1:9191
pidfile=uwsgi.pid
daemonize=uwsgi.log
vacuum = true
log-maxsize=50000000
disable-logging=true
static-map = /static=/home/www/shopsite/static

启动uwsgi
必须在项目根目录下跟uwsgi.ini同一目录执行

uwsgi uwsgi.ini

配置nginx

全面Centos7部署django+nginx+uwsgi+mysql详细步骤

红框部分表示,我们只要把配置文件放在conf.d目录下就可以了,建立文件

vim /conf.d/django.conf

输入以下内容,保存退出

server {
    listen 80;
    server_name  122.112.204.124;
    charset utf-8;
    client_max_body_size 75m;
    location /media {
        alias /home/www/shopsite/media;
    }
    location /static {
        alias /home/www/shopsite/static;
    }
location / {
    uwsgi_pass 127.0.0.1:8001;
    include /etc/nginx/uwsgi_params;
    }
}

保存退出后,测试配置文件,启动服务,加入开机启动

nginx -t
systemctl start nginx
systemctl enable nginx

至此已经全部配置完成,由于我没有域名,所以直接在浏览器里输入服务器公网ip,就可访问网站.实际配置途中其实有许多坑,奉劝大家如果对linux系统不熟悉,像我一样,千万不要编译安装,否则各种依赖,各种操作,真是累觉不爱.

Original: https://blog.csdn.net/weixin_43287121/article/details/123087855
Author: ~白+黑
Title: 全面Centos7部署django+nginx+uwsgi+mysql详细步骤

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/733588/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球