CentOS7.5+uwsgi+nginx+django部署服务器

一、服务器

购买阿里云/腾讯云

选择CentOS7.5系统

(如果系统选择错误可以先强制停机再进行选择)

使用xshell输入命令,使用xftp传输文件

二、安装环境

1.安装gcc

yum install gcc -y

查看下gcc版本,要gcc-8以上版本,否则会报错(报错详情

gcc --v
yum install centos-release-scl
yum install devtoolset-8
scl enable devtoolset-8 bash
gcc --v

2.安装python

安装python依赖包

yum install zlib zlib-devel -y
yum install bzip2 bzip2-devel -y
yum install ncurses ncurses-devel -y
yum install readline readline-devel -y
yum install openssl openssl-devel -y
yum install xz lzma xz-devel -y
yum install sqlite sqlite-devel -y
yum install gdbm gdbm-devel -y
yum install tk tk-devel -y
yum install mysql-devel -y
yum install python-devel -y
yum install libffi-devel -y

检查一下是否有wget,没有的话安装wget

wget -v
yum install wget -y

安装python3.9

#下载安装包
mkdir /data/
cd /data/ 
wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz
tar -xvf Python-3.9.5.tgz
cd Python-3.9.5

#安装(如果gcc版本过低可能会报错,见上安装gcc部分有详述)
./configure
make all
make install

#配置豆瓣源
pip3.9 config set global.index-url https://pypi.douban.com/simple/

#测试不报错
python3

3.安装虚拟环境

#安装virtualenv
pip install -i https://mirrors.aliyun.com/pypi/simple/ virtualenv
(会有warning,不用管他)

#创建虚拟环境
mkdir /envs/
cd /envs/
virtualenv /envs/web --python=python3.9

#激活虚拟环境,成功后会有(web)
source /envs/web/bin/activate

#安装依赖库
pip install Django
...

4.安装uwsgi

安装uwsgi

#激活虚拟环境(还要在刚刚创建的web虚拟环境中安装)
source /envs/web/bin/activate

#安装uwsgi
pip install uwsgi

配置.ini文件(各参数含义可参考),不要有注释#...,识别不了会报错

[uwsgi]

chdir = /data/www/optimization
home = /envs/web
module = optimization.wsgi:application

master = True
processes = 60
max-requests = 5000

socket = 127.0.0.1:8001
uid = 1000
gid = 2000

pidfile = /data/www/optimization_uwsgi/master.pid
daemonize = /data/www/optimization_uwsgi/mysite.log
vacum = True

5.安装nginx

安装nginx

#激活虚拟环境(还要在刚刚创建的web虚拟环境中安装)
source /envs/web/bin/activate
yum install nginx -y

配置nginx

#删除原默认配置文件
cd /etc/nginx
rm nginx.conf

#重新配置
vim nginx.conf
#进入编辑模式
i
#复制下面代码,粘贴至此配置文件
CTRL+C CTRL+V
#退出编辑模式
Esc
#保存
:wq

#启动nginx
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
systemctl enable nginx

/etc/nginx/nginx.conf配置文件具体内容

(倒数第八行:alias  /data/www/optimization/static  -->  alias  自己的项目目录/static)

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

#Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events{ 
	worker_connections 1024;
}

http{
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
	                '$status $body_bytes_sent "$http_referer"'
					'"$http_user_agent" "$http_x_forwarded_for"';
    
	access_log /var/log/nginx/access.log main;
	
    sendfile             on;
	tcp_nopush           on;
	tcp_nodelay          on;
	keepalive_timeout    65;
	types_hash_max_size  4096;
	
    include              /etc/nginx/mime.types;
	default_type         application/octet-stream;
	
    upstream Django {
          server  127.0.0.1:8001; 
	}
	server {
		listen         80;
		listen         [::]:80;
		
		#Load configuration files for the default server block. 
		# include /etc/nginx/default. d/*. conf
	
				location /static {
			alias  /data/www/optimization/static;
		}
		location / {
			uwsgi_pass Django;
			include uwsgi_params;
		}
	}
}

测试是否成功配置,成功后显示如下

#测试nginx是否配置成功
nginx -t

 nginx成功配置后,就可以在浏览器输入http://***.**.***.***/static/test.png(你静态环境中某一个图片名)即可查看该图片。

6.更改Django的setting.py文件

7.上线

#激活环境
source /envs/web/bin/activate

#uwsgi
cd data/www/optimization_uwsgi
uwsgi --ini optimization.ini

#如果Django有改变,重启uwsgi时,要先删除uwsgi所有进程
sudo pkill -f uwsgi -9
uwsgi --ini optimization.ini

 查看是否成功:

  • 成功后会出现如下
  • 查看同目录下mysite.log文件无报错
  • 使用命令:ps -ef|grep optimization.ini会出现(不只是最下面那一行就是对的,很多行就行)

三、写脚本

重启脚本:/data/www/optimization/optimization_uwsgi/reboot.sh

#!/usr/bin/env bash

echo -e "\033[34m---------------------------wsgi process---------------------\033[0m"

ps -ef|grep optimization.ini | grep -v grep 

sleep 0.5

echo -e "\n--------------------------going to close---------------------"

ps -ef |grep optimization.ini | grep -v grep | awk '{print $2}' | xargs kill -9

sleep 0.5

echo -e '\n-----------------------check if the kill action is correct---------------------'

/envs/web/bin/uwsgi --ini optimization.ini & >/dev/null

echo -e '\n\033[42;1m---------------------start...-------------------------\033[0m'
sleep 1

ps -ef | grep optimization.ini | grep -v grep

停止脚本:/data/www/optimization/optimization_uwsgi/end.sh

#!/usr/bin/env bash

echo -e "\033[34m---------------------------wsgi process---------------------\033[0m"

ps -ef|grep optimization.ini | grep -v grep 

sleep 0.5

echo -e "\n--------------------------going to close---------------------"

ps -ef |grep optimization.ini | grep -v grep | awk '{print $2}' | xargs kill -9

sleep 0.5

运行脚本:/data/www/optimization/optimization_uwsgi/start.sh

#提供管理员权限
chmod 755 reboot.sh
chmod 755 stop.sh
#运行重启脚本
./reboot.sh
#运行停机脚本
./stop.sh

小插曲(由于我的脚本是在word里写的,会有'\r',linux识别不了,需要转换一下)

yum -y install dos2unix
dos2unix ./reboot.sh
dos2unix ./stop.sh

四、Mysql配置

安装mysql并启动

#安装服务端与客户端
yum install mariadb-server -y
yum install mariadb -y
#启动/关闭数据库
systemctl start mariadb
#systemctl stop mariadb
#管理数据库
mysql -u root -p

创建数据库以及账户

#创建名称为login的数据库(一定不要忘记加;)
CREATE DATABASE login DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#查看数据库(不要忘记;)
show databases;
#创建账户
insert into mysql.user(user,host,password) values('jyxie','%',password('1126xjy'));
flush privileges;
#授权
grant all privileges on login.* to jyxie@'%';
flush privileges;
#解决在服务器上用账户登录新建数据库时无需密码的情况(原因:进入localhost无需密码)先查看无需密码登录的user名
select Host,User,Password from user;
delete from user where Host='izjsrmv3wplbszz' and User="";
delete from user where Host='localhost' and User="";
flush privileges;

#进入数据库
mysql -u root -p
use login
#创建数据表
CREATE TABLE user (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,usm VARCHAR(255) NOT NULL UNIQUE,pwd VARCHAR(255) not NULL,code VARCHAR(255),gen_time DECIMAL(20,6));
#查看已有数据表
show tables from login;
#查看已有数据
SELECT * FROM user;
#删除已有数据表
DROP TABLE user;
#对已有数据表增加列
ALTER TABLE user ADD COLUMN (code VARCHAR(255),gen_time DECIMAL(20,6));
#删除数据表中所有数据
TRUNCATE TABLE user;

参考

[1]

[2]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值