linun ubuntu下面部署uwsgi+ngix+django兼容lnmp

准备工作
linux ubuntu 环境
为了避免不必要的麻烦 保证程序绝对能运行成功 这里重装linu ubuntu系统为18.04 64位
django程序 我的是 yqj
程序在线下能正常运行
因为ubuntu下面自带python3.6所以可以使用自带的python3.6输入python3测试
阿里云公网ip:39.105.124.140
阿里云私有ip:172.17.160.34
阿里云域名 yqj.xiezejun.com
关闭防火墙
sudo ufw status查看防火墙状态;inactive防火墙关闭状态 active是开启状态
sudo ufw enable开启防火墙
sudo ufw disable关闭防火墙
下面开放3306端口规则
iptables -L -n --line-numbers 查看规则
iptables -D INPUT 6删除规则
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT 添加规则

  1. 安装uwsgi
    把程序放在 /home/ 下面 可以自己改
    sudo apt-get update 新装的服务器需要更新源列表
    sudo apt-get install python3-pip 安装pip3
    pip3 install uwsgi 安装uwsgi
    pip3 install django 安装django
    pip3 install pymysql 安装pymysql django使用mysql要安装这个
    cd到/home/yqj 下面 我的django程序叫yqj 下面不在复述
    python3 manage.py runserver 127.0.0.1:9001
    在本地浏览器输入 39.105.124.140成功运行 到此证明django程序能正常运行
    uwsgi --http 172.17.160.34:80 --file yqj/wsgi.py --static-map=/static=static
    在本地浏览器输入 39.105.124.140成功运行 到此证明uwsgi+django程序能正常运行
    2 配置uwsgi
    在/home/yqj/script下面创建 uwsgi.ini
    sudo chmod 755 uwsgi.ini 修改权限
    输入下面配置

[uwsgi]
# 项目目录
chdir=/home/yqj/
# 启动uwsgi的用户名和用户组
uid=root
gid=root
# 指定项目的application
module=yqj.wsgi:application
# 指定sock的文件路径
socket=/home/yqj/script/uwsgi.sock
# 启用主进程
master=true
# 进程个数
workers=5
pidfile=/home/yqj/script/uwsgi.pid
# 自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
# 序列化接受的内容,如果可能的话
thunder-lock=true
# 启用线程
enable-threads=true
# 设置自中断时间
harakiri=30
# 设置缓冲
post-buffering=4096
# 设置日志目录
daemonize=/home/uwsgi.log
#文件结束
cd到/home/yqj 输入 uwsgi --ini uwsgi.ini 读取uwsgi配置
ps -ef |grep -i uwsgi 查看uwsgi运行情况
成功运行后会有2个文件 uwsgi.pid 和 uwsgi.sock

3 安装nginx
apt-get install nginx 已有lnmp环境不要安装
lnmp下面在/usr/local/nginx/conf/vhost/否则在/etc/nginx/conf.d/
创建yqj.xiezejun.com.conf
sudo chmod 755 yqj.xiezejun.com.conf 修改权限
输入下面配置
server {
listen 80;
#server_name 172.17.160.34;
server_name yqj.xiezejun.com;
#access_log /var/log/nginx/access.log;
charset utf-8;
gzip on;
gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream;
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
# 指定项目路径uwsgi
location / {
include uwsgi_params;
uwsgi_connect_timeout 30;
uwsgi_pass unix:/home/yqj/script/uwsgi.sock;
}
# 指定静态文件路径
location /static/ {
#alias /home/yqj/static_all/;
alias /home/yqj/static/;
index index.html index.htm;
}
}
#文件结束
5 在yqj的settings.py添加 这里是收集静态文件 可以不用
#STATIC_ROOT = os.path.join(BASE_DIR, “static_all”)

6 启动nginx
uwsgi --ini uwsgi.ini 读取uwsgi配置
lnmp restart 或者nginx -s reload 启动nginx
浏览器输入 yqj.xiezejun.com访问成功
到此 uwsgi+nginx_django 配置成功

7 配置自动启动程序
在/home/yqj/script/ 下面创建 manage_yqj.sh
sudo chmod 755 manage_yqj.sh 修改权限
输入下面配置
#!/bin/bash
### BEGIN INIT INFO
# Provides: manage_yqj.sh
# Required-Start: $local_fs $network
# Required-Stop: KaTeX parse error: Expected 'EOF', got '#' at position 14: local_fs #̲ Default-Start:…SCRIPT_FILENAME
# PID
PID=“uwsgi.pid”
# 启动函数
d_start(){
# 进入到项目目录
cd $SCRIPTS_DIR
# 判断这个PID是否存在
if [ ! -f KaTeX parse error: Expected 'EOF', got '\n' at position 25: …n echo -e "\̲n̲\033[34mNAME项目启动中…\033[0m"
# 如果不存在执行
uwsgi --ini uwsgi.ini
#lnmp restart
# 自动收集静态文件
###cd KaTeX parse error: Expected 'EOF', got '&' at position 13: PROJECT_DIR &̲& python3 manag…NAME 项目启动完成…\033[0m"
exit 0
fi
echo -e “\n\033[33m$NAME 项目已启动请勿重复启动\033[0m”
}
# 关闭函数
# 关闭项目
d_stop(){
# 进入脚本目录
cd KaTeX parse error: Expected 'EOF', got '#' at position 17: …CRIPTS_DIR #̲ 判断这个pid文件是否存在 …NAME 项目已经关闭了请先启动\033[0m"
fi
echo -e “\n\033[34m$NAME 项目关闭中…\033[0m”
echo -e “\nStop $DESC: KaTeX parse error: Expected 'EOF', got '#' at position 11: NAME" #̲ 如果没有关闭 uws…NAME 项目关闭完成…\033[0m”
}
d_restart(){
d_stop
sleep 1
d_start
}
case “$1” in
start)
echo -e “\nstarting $DESC: $NAME”
d_start
;;
stop)
echo -e “\nStop $DESC: $NAME”
d_stop
;;
restart)
echo -e “\nRestart $DESC: $NAME”
d_restart
;;
*)
###echo -e “\nRestart $DESC: $NAME”
###d_restart
echo “Usage: $SCRIPTNAME {start|stop|restart}” >&2
exit 3
;;
esac
#文件结束
./manage_yqj.sh start 启动
./manage_yqj.sh stop 停止
./manage_yqj.sh restart 重启

8 配置开机启动
把 manage_yqj.sh 复制到 /etc/init.d/
sudo chmod 755 manage_yqj.sh 修改权限

在 /etc/apt/source.list 在最后加入

deb http://archive.ubuntu.com/ubuntu/ trusty main universe restricted multiverse
sudo apt-get install sysv-rc-conf 安装sysv-rc-conf
sudo apt update 更新apt-get源
sudo ln -s /usr/lib/insserv/insserv /sbin/insserv 创建insserv软链
insserv -v -d /etc/init.d/manage_yqj.sh 添加到开机启动文件
sudo update-rc.d manage_yqj.sh defaults 6 开启开机启动级别6
sudo update-rc.d -f manage_yqj.sh remove 删除开机启动
重启服务器 正常运行
到此 程序完成部署成功

使用service操作 在任意位置操作
service manage_yqj.sh start 启动
service manage_yqj.sh stop 关闭
service manage_yqj.sh restart 重启

ln -s /etc/init.d/manage_yqj.sh /usr/local/bin 创建软链可以直接执行manage_yqj 不建议
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值