在阿里云Centos7.6中部署nginx1.16+uwsgi2.0.18+Django2.0.4

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 一直以来想写一篇完整的在阿里云服务器上部署Django服务结合uwsgi,并且通过nginx做反向代理。因为网上的攻略鱼龙混杂,加上技术不断更新,一些年代久远的文章很容易让人在部署的过程中掉坑里,无法自拔,所以本篇文章以最新的阿里云服务器centos7.6为背景,完全阐述如何部署,亲测可用,其实要说难点完全没有,只要按部就班,就不会有问题。

一直以来想写一篇完整的在阿里云服务器上部署Django服务结合uwsgi,并且通过nginx做反向代理。因为网上的攻略鱼龙混杂,加上技术不断更新,一些年代久远的文章很容易让人在部署的过程中掉坑里,无法自拔,所以本篇文章以最新的阿里云服务器centos7.6为背景,完全阐述如何部署,亲测可用,其实要说难点完全没有,只要按部就班,就不会有问题。

当你购买了阿里云的ecs,涉及ecs的有两个密码,一定要搞清楚,一个密码是远程链接密码,也就是通过浏览器连接服务器的密码,另外一个是实例密码,这个密码就是ecs的root密码,一般情况下,我们经常用到的是实例密码。

与此同时,需要设置一下安全组策略,将一些必要的端口暴露出来,否则会被拦截

前置操作完成,就可以进行软件的安装了,可以通过一些三方的ssh软件进行连接,win下面流行的putty,xshell,moba等,这里推荐使用moba,可以语法高亮并且自动记住密码

安装python3 和 django 以及一些django扩展

yum install epel-release

yum install python36

wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py

python3 get-pip.py

安装django 
pip3 install pymysql

pip3 install pillow

pip3 install pycryptodome

pip3 install cryptography

pip3 install Django==2.0.4

pip3 install djangorestframework

pip3 install django-cors-headers

pip3 install celery

pip3 install celery-with-redis

pip3 install django-celery
pip3 install dwebsocket 
安装opencv-python

yum install numpy opencv*
pip3 install opencv-python
yum whatprovides libstdc++.so.6
yum install libstdc++-4.4.7-3.el6.i686
yum install libSM-1.2.2-2.el7.x86_64 --setopt=protected_multilib=false

新建工程,并且测试

django-admin startproject mypro
cd mypro
python3 manage.py runserver 0.0.0.0:8000

安装mysql

wget 'https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm'

rpm -Uvh mysql57-community-release-el7-11.noarch.rpm

yum install -y mysql-community-server
#启动服务
systemctl start mysqld
#查看服务状态
systemctl status mysqld

查看数据库密码
grep 'temporary password' /var/log/mysqld.log
然后利用这个密码进入mysql命令行 mysql -uroot -p查到的密码

SET PASSWORD = PASSWORD('Admin123!');

设置远程登录
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Admin123!' WITH GRANT OPTION;
flush privileges;

vim /etc/my.cnf
在[mysqld]下面添加,不需要分号
字符集:注意是utf8而不是utf-8!
character-set-server=utf8
这时候使用show variables like 'char%';就可以查看到字符集都是utf8了
sql支持group by语句
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
设置时区为东八区
default-time_zone = '+8:00'

重启服务
systemctl restart mysqld

设置开机启动
systemctl enable mysqld
systemctl daemon-reload

如果需要更改为简单的密码

1.停止mysql服务

systemctl stop mysqld.service


2.修改配置文件无密码登录

vim  /etc/my.cnf

在最后加上

skip-grant-tables

保存

3.启动mysql

systemctl  start  mysqld.service


4.登录mysql

mysql -u root

注意这里不要加-p

5.修改密码,mysql5.7用此语法

use mysql;

update mysql.user set authentication_string=password('123456') where user='root' ;  

6.回到第二部把刚加的那句删掉

保存,重启mysql就可以了

测试mysql服务

安装redis

yum install redis

启动服务
systemctl start redis

查看版本号
redis-cli --version

设置开机启动
systemctl enable redis.service

测试redis服务

安装mongodb

vim /etc/yum.repos.d/mongodb-org-3.4.repo

#添加以下内容:
[mongodb-org-3.4]  
name=MongoDB Repository  
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/  
gpgcheck=0
enabled=1  
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

清空缓存
yum makecache

安装
yum -y install mongodb-org

启动服务
systemctl start mongod.service

停止服务
systemctl stop mongod.service

查看服务状态
systemctl status mongod.service

重启服务
systemctl restart mongod.service

测试mongo

安装nginx

#设置源
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

#安装
yum install -y nginx

#启动服务
systemctl start nginx.service

#关闭服务
systemctl stop nginx.service

#开机自启
systemctl enable nginx.service

#修改配置文件

vim /etc/nginx/conf.d/default.conf

改成下面的配置

server {
  listen   80;
  server_name localhost;

  access_log   /root/myweb_access.log;
  error_log   /root/myweb_error.log;


  client_max_body_size 75M;


  location / {
    include uwsgi_params;
        uwsgi_pass 127.0.0.1:8000;
    uwsgi_param UWSGI_SCRIPT mypro.wsgi;
    uwsgi_param UWSGI_CHDIR /root/mypro;

  }

  location /static {
    alias /root/mypro/static;
  }
}
设置项目权限
chmod -R 755 /root/mypro 
#修改配置
vim /etc/nginx/nginx.conf
将第一行改为 user root; 
然后重启nginx
测试nginx服务,这里注意下,在不修改nginx配置文件的时候才会出现下面的欢迎页面,如果修改了以后是不能访问默认欢迎页面的
 ![](https://v3u.cn/v3u/Public/js/editor/attached/image/20190505/20190505115535_20740.png) 

安装uwsgi

uWSGI本身也是web服务器,但因为性能不高,通过nginx中转能够发挥更好的效果

安装依赖
yum install python36-devel

安装
pip3 install uwsgi

软连接
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

进入项目目录启动服务
uwsgi --http :8000 --module mypro.wsgi

效果和 python3 manage.py runserver 0.0.0.0:8000一致

热启动
uwsgi --http :8000 --module mypro.wsgi --py-autoreload=1

进入项目,编写uwsgi.ini配置文件 vim mypro_uwsgi.ini 

[uwsgi]

chdir = /root/mypro
module = mypro.wsgi
master = true
processes = 3
socket = 0.0.0.0:8000
vacuum = true
pythonpath = /usr/bin/python3
pidfile = /root/mypro/mypro.pid
daemonize = /root/mypro/uwsgi.log

启动项目,这里需要注意下,如果你想用uwsgi独立访问网站,就需要把上面配置文件中的socket改成http,如果想用nginx代理,就写成socket

uwsgi --ini mypro_uwsgi.ini

后台启动

uwsgi -d --ini mypro_uwsgi.ini
杀死和关闭 uwsgi服务
killall -s INT /usr/local/bin/uwsgi
停止服务
uwsgi --stop mypro.pid
重载服务
uwsgi --reload mypro.pid

查看服务

ps aux|grep uwsgi

最后,nginx通过监听80端口反向代理uwsgi启动的django服务,访问网站进行测试

大功告成

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
kde
|
27天前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
kde
584 4
|
26天前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
97 5
|
9月前
|
应用服务中间件 PHP nginx
今日小结通过aliyun的本地容器镜像部署我的nginx和php环境
简介: 本教程介绍如何基于 Dragonwell 的 Ubuntu 镜像创建一个运行 Nginx 的 Docker 容器。首先从阿里云容器镜像服务拉取基础镜像,然后编写 Dockerfile 确保 Nginx 作为主进程运行,并暴露 80 端口。最后,在包含 Dockerfile 的目录下构建自定义镜像并启动容器,确保 Nginx 在前台运行,避免容器启动后立即退出。通过 `docker build` 和 `docker run` 命令完成整个流程。
348 25
今日小结通过aliyun的本地容器镜像部署我的nginx和php环境
|
6月前
|
应用服务中间件 Linux 网络安全
技术指南:如何把docsify项目部署到基于CentOS系统的Nginx中。
总结 与其他部署方法相比,将docsify项目部署到基于CentOS系统的Nginx中比较简单。以上步骤应当帮助你在不花费太多时间的情况下,将你的项目顺利部署到Nginx中。迈出第一步,开始部署你的docsify项目吧!
296 14
|
6月前
|
Linux
Centos6配置阿里云yum源报错
在CentOS 6配置阿里云Yum源时,可能出现EPEL仓库访问报错(404 Not Found)。解决方法:编辑`/etc/yum.repos.d/epel.repo`文件,将`enabled`和`gpgcheck`参数设为0 ``` 此设置可解决仓库无法访问的问题。
1576 29
|
10月前
|
弹性计算 运维 安全
阿里云操作系统迁移最佳实践|飞天技术沙龙-CentOS 迁移替换专场
本次方案的主题是阿里云操作系统迁移最佳实践,Alibaba Cloud Linux /Anolis OS 兼容 CentOS 生态,因此能够很丝滑的进行迁移替换。无论是对企业的运维人员,还是对企业操作系统的使用者来说,相对简化了它的维护成本。通过 SMC 操作系统迁移实践带用户深入了解,不仅阐述了原地迁移方案的独特优势,还针对不同的迁移场景,逐步剖析了整个迁移流程,力求使复杂的操作变得直观易懂,实现了真正的“白屏化”体验。 1. CentOS 迁移背景 2. 操作系统迁移实践 3. 迁移故障处理
261 2
|
10月前
|
监控 安全 Linux
龙蜥社区及阿里云CentOS迁移方案|飞天技术沙龙-CentOS 迁移替换专场
本次分享的主题是龙蜥社区及阿里云 CentOS 迁移方案|飞天技术沙龙- CentOS 迁移替换专场,由阿里云产品专家周絮分享。主要分为三个部分: 1.背景介绍 2.方案选型 3.迁移支持
231 0
|
中间件 应用服务中间件 nginx
Nginx+uWSGI+Django原理
Nginx+uWSGI+Django原理
|
前端开发 JavaScript 应用服务中间件
使用nginx部署网站
使用nginx部署网站
|
JavaScript 应用服务中间件 nginx
nginx部署vue项目
本文介绍了将Vue项目部署到Nginx的步骤,包括构建Vue项目、上传dist文件夹到服务器、安装Nginx、配置Nginx代理静态文件以及重启Nginx,确保了Vue应用可以通过域名或IP地址访问。
734 1