一、服务器
购买阿里云/腾讯云
选择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;