CentOS 7 上搭建Nginx、uWSGI、Django项目
2020-06-04 06:38
337 查看
💖 作者
Author | Blog | |
---|---|---|
冬酒暖阳 | https://blog.csdn.net/u011746586/article/details/mailto:1067764354@qq.com | 博客:www.lifepoem.cn |
安装环境
- centOS 7.8
- Python 3.6.9
- Django 2.2.6
- uWSGI 2.0.18
- Nginx 1.9.9
步骤
1. 关闭 防火墙
[root@localhost ~]# systemctl stop firewalld [root@localhost ~]# systemctl disable firewalld #开机禁用firewall服务
2. 关闭 SElinux
[root@localhost ~]# getenforce #查看SELinux状态 Enforcing [root@localhost ~]# setenforce 0 #临时关闭SElinux [root@localhost ~]# getenforce Permissive [root@localhost ~]# vim /etc/selinux/config #永久关闭 将 "SELINUX=enforcing" 改为 "SELINUX=disabled",保存后退出,重启才会生效
3. 安装基础环境包
yum install gcc-c++
(为centos系统增加编译功能)
yum install wget openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
(安装这些模块都是为了成功编译安装python3,防止出现各种异常)
4. 编译安装 Python
# 切换到 home 目录 cd /home # 下载 Python 源码包 wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz # 下载完成后,执行解压指令 tar -zxvf Python-3.6.3.tar.gz cd Python-3.6.9 # 编译安装,依次执行下面的命令 # 将python3安装到/usr/local/python3/路径下 ./configure --prefix=/usr/local/python3 make -j2 make install -j2 # 创建 python3 和 pip3 的软链接 ln -s /usr/local/python3/bin/python3.9 /usr/bin/python3 ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
5. 安装 django 和 uwsgi 及 及创建uwsgi的配置文件
pip3 install django # 若 django 项目需要其他的第三方库,自行一并安装 pip3 install uwsgi ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi # (为了在任何位置使用uwsgi命令,创建uwsgi软链)
-
将 django 项目放置在 /home/www 目录下(或任何其他目录)
cd /home mkdir www cd www # 然后将django项目部署在www目录下
-
测试 django 项目是否可以正常运行
cd 到 django项目目录中
-
# 执行下面的命令 python3 manage.py runserver 0.0.0.0:8001
-
若能在浏览器中通过 ip地址:8001 来访问则通过测试
注:若启动报错
django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).
原因时系统自带 sqlite3 版本太低,升级即可。
# 切换目录 cd /home # 下载源码包 wget https://www.sqlite.org/2019/sqlite-autoconf-3300000.tar.gz # 解压编译 tar -zxvf sqlite-autoconf-3300000.tar.gz cd sqlite-autoconf-3300000/ ./configure --prefix=/usr/local make make install # 替换系统低版本 sqlite3 mv /usr/bin/sqlite3 /usr/bin/sqlite3_old ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3 echo "/usr/local/lib" > /etc/ld.so.conf.d/sqlite3.conf ldconfig sqlite3 -version # 若返回 3.30.0,则安装成功 # 安装成功后重启 django 项目测试即可
测试 uwsgi 是否安装成功
编写一个测试文件
vi test.py
写入以下内容,保存退出
# !/usr/bin/python3 def application(env, start_response): start_response('200 OK', [('Content-Type', 'text/html')]) return [b'UWSGI Test...']
启动 uwsgi 服务测试
uwsgi --http :8001 --wsgi-file test.py
使用浏览器访问 ip地址:8001
若出现一下界面则测试成功
创建 uwsgi 配置文件
vi uwsgi.ini
填入以下内容,并根据项目,进行对应修改(一般情况下,仅需配置chdir,module)
[uwsgi] # Django-related settings # 127.0.0.1 表示本机,后面的 8001 表示端口 # 这里配置的端口要和后面Nginx配置文件中的socket端口相同。 socket = 127.0.0.1:8001 # the base directory (full path) # 设置django项目根目录 chdir = /root/Learning-Python3/cmdb # Django's wsgi file # 设置django项目wsgi文件,格式为: django项目名 + ".wsgi" module = cmdb.wsgi # process-related settings # master master = true # maximum number of worker processes # 设置进程数 processes = 4 # ... with appropriate permissions - may be needed # chmod-socket = 666 # chown-socket = nginx:nginx # clear environment on exit vacuum = true # enable-threads = true [uwsgi] socket = 127.0.0.1:8085 chdir = /root/Learning-Python3/cmdb module = cmdb.wsgi # process-related settings # master master = true # maximum number of worker processes # 设置进程数 processes = 4 # ... with appropriate permissions - may be needed # chmod-socket = 666 # chown-socket = nginx:nginx # clear environment on exit vacuum = true # enable-threads = true
(若后续启动 uwsgi 服务时出现问题,则将中文注释全部删除)
安装 nginx 并配置 nginx.conf 文件
安装 nginx
# 进入 /home 目录 # 执行以下命令 wget https://nginx.org/download/nginx-1.9.9.tar.gz # 若下载速度过慢,也可以使用华为提供的 nginx 镜像 # wget https://mirrors.huaweicloud.com/nginx/nginx-1.9.9.tar.gz # 下载完成后,依次执行以下命令: tar -zxvf nginx-1.9.9.tar.gz cd nginx-1.9.9 ./configure make make install
配置 nginx.conf
nginx一般默认安装好的路径为/usr/local/nginx
cd /usr/local/nginx/conf vi nginx.conf
将 http 中 server 的内容替换为以下内容,并根据项目具体情况修改
server { listen 80; server_name www.your_domain.com your_domain.com your_ip_addr; # server_name 中的值 修改为域名或ip地址 location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8001; } location /static/ { alias /home/www/myproject/static/; #项目静态路径设置 } location /media/ { alias /home/www/myproject/media/; #项目媒体路径设置 } }
修改后 wq 保存,执行以下命令,完成 nginx 配置检测
cd /usr/local/nginx/sbin/ ./nginx -t
若提示下图内容,则配置文件通过测试
# 通过测试后,执行以下命令,启动 nginx ./nginx
6. 启动 uwsgi
-
# 切回项目所在目录,执行以下命令 uwsgi --ini uwsgi.ini
7. 若以上步骤都没有出错,即可打开浏览器访问django项目
附录(运维相关)
1. nginx 的启动、停止 与 重启
-
启动
systemctl start nginx
-
停止
systemctl stop nginx
-
重启
systemctl restart nginx
若提示
Failed to start nginx.service: Unit not found.
则需要,在/etc/init.d/目录下新建文件,文件名为nginx
vi /etc/init.d/nginx
插入以下代码片段
#!/bin/sh # nginx - this script starts and stops the nginx daemin # # chkconfig: - 85 15 # description: Nginx is an HTTP(S) server, HTTP(S) reverse \ # proxy and IMAP/POP3 proxy server # processname: nginx # config: /usr/local/nginx/conf/nginx.conf # pidfile: /usr/local/nginx/logs/nginx.pid # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ "$NETWORKING" = "no" ] && exit 0 nginx="/usr/local/nginx/sbin/nginx" prog=$(basename $nginx) NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf" lockfile=/var/lock/subsys/nginx start() { [ -x $nginx ] || exit 5 [ -f $NGINX_CONF_FILE ] || exit 6 echo -n $"Starting $prog: " daemon $nginx -c $NGINX_CONF_FILE retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval } stop() { echo -n $"Stopping $prog: " killproc $prog -QUIT retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval } restart() { configtest || return $? stop start } reload() { configtest || return $? echo -n $"Reloading $prog: " killproc $nginx -HUP RETVAL=$? echo } force_reload() { restart } configtest() { $nginx -t -c $NGINX_CONF_FILE } rh_status() { status $prog } rh_status_q() { rh_status >/dev/null 2>&1 } case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart|configtest) $1 ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" exit 2 esac
保存退出并执行以下语句
cd /etc/init.d chmod 755 /etc/init.d/nginx chkconfig --add nginx
相关文章推荐
- CentOS+nginx+uwsgi+Python+django 环境搭建
- Ubantu14.0+Django2.2+nginx+uWSGI+阿里云ESC搭建个人网站实践(五)——使用uwsgi启动Django项目
- Centos8下django项目部署 nginx+uwsgi的教程
- 基于Centos搭建nginx+uwsgi运行django环境
- Centos7.2下nginx+uwsgi+python/Django搭建生产环境
- CentOS + Python3.3 + Django1.7 + uwsgi + nginx + mysql web发布环境搭建
- CentOS7.2 nginx和uwsgi部署django项目步骤:
- centos7下通过uwsgi+nginx+django将项目部署到服务器
- 基于centos搭建nginx+uwsgi运行django环境
- CentOS 7 下使用Uwsgi及nginx搭建Django站点
- CENTOS7 使用 Nginx + Uwsgi 部署 Django 项目
- CentOS6.8下Django项目运行坏境搭建-uwsgi(五)
- Nginx+Uwsgi 部署 Django 项目(阿里云ECS-CentOS 7.3)
- Centos5.4+Nginx-0.8.50+UWSGI-0.9.6.2+Django-1.2.3搭建高性能WEB服务器
- CentOS6.4 搭建Django+Nginx+uWSGI
- 从零开始搭建个人网站(6)nginx+uWSGI部署Django项目(上)
- centos7下nginx+uwsgi部署django项目问题记录
- Centos7下搭建Django+uWSGI+nginx基于python3
- 从零开始搭建个人网站(7)nginx+uWSGI部署Django项目(下)
- centos下用uwsgi + nginx + mysql部署django项目