更新系统软件源
sudo apt-get update
pip3安装
sudo apt install python3-pip
安装virtualenvwrapper
pip3 install virtualenvwrapper
修改.bashrc,最后面添加以下代码:
sudo vim ~/.bashrc
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
重新加载配置
source ~/.bashrc
创建虚拟环境
mkvirtualenv 虚拟环境名
进入虚拟环境
workon 虚拟环境名
退出虚拟环境
deactivate
安装mysql
sudo apt-get install mysql-server
安装mysql驱动 sudo apt-get install libmysqlclient-dev
设置mysql允许远程访问,方便使用navicat导入数据.首先编辑文件/etc/mysql/mysql.conf.d/mysqld.cnf
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
注释掉bind-address = 127.0.0.1: #允许远程连接
进入mysql,修改root密码
mysql>alter user 'root'@'localhost' identified with mysql_native_password by '123456';
创建普通用户
mysql>create user 'username'@'%' IDENTIFIED BY 'password';
给普通用户赋权
mysql>
grant all on *.* to username@'%';
刷新
mysql>flush privileges;
退出
mysql>exit
重启mysql,如果远程连接失败报2003可能是服务器没添加安全组
service mysql restart
安装redis
sudo apt-get install redis-server
如果安装不了报这个错的:
Job for redis-server.service failed because a timeout was exceeded. See "systemctl status redis-server.service" and "journalctl -xe" for details. invoke-rc.d: initscript redis-server, action "start" failed. ● redis-server.service - Advanced key-value store Loaded: loaded (/lib/systemd/system/redis-server.service; disabled; vendor preset: enabled) Active: activating (auto-restart) (Result: timeout) since Fri 2019-11-22 15:07:07 CST; 10ms ago Docs: http://redis.io/documentation, man:redis-server(1) Nov 22 15:07:07 haha systemd[1]: redis-server.service: Start operation timed out. Terminating. Nov 22 15:07:07 haha systemd[1]: redis-server.service: Failed with result 'timeout'. Nov 22 15:07:07 haha systemd[1]: Failed to start Advanced key-value store. dpkg: error processing package redis-server (--configure): installed redis-server package post-installation script subprocess returned error exit status 1 Errors were encountered while processing: redis-server E: Sub-process /usr/bin/dpkg returned an error code (1)
1.编辑/etc/redis/redis.conf,将bind 127.0.0.1后面的::1去掉
2.执行命令:
cd /var/lib/dpkg
sudo mv info info.bak
sudo mkdir info
3.重新安装redis-server
---------------------redis配置根据自己需求考虑是否配置-----------------------
修改redis配置
使用redis的访问账号
sudo vi /etc/redis/redis.conf
#取消注释requirepass
requirepass 密码
允许远程访问
#注释bind
# bind 127.0.0.1
重启redis
sudo /etc/init.d/redis-server restart
桌面创建新目录Project
mkdir Project
在项目中创建项目依赖包文件
pip freeze > package.txt
在本地上传项目到服务器Project,或者进入Project使用git克隆
scp -r 本地项目目录 root@服务器IP:/root/Project
git clone 项目地址
安装依赖包
pip install -r package.txt
进入项目修改settings文件
将mysql账号密码修改成服务器的
修改ALLOWED_HOSTS = ['*']
# 测试之前先将项目用到数据导入数据库,不然肯定报错
测试能否正常运行,然后浏览器访问服务器地址
python3 manage.py runserver 0.0.0.0:80
安装uwsgi
sudo pip3 install uwsgi
在manage.py同级目录下创建uwsgi.ini文件
vim uwsgi.ini
编辑内容如下
[uwsgi] #如果单独使用uwsgi来部署Django项目时,就用这一行。 http=0.0.0.0:80 #如果使用nginx+uwsgi来部署Django项目时,就用这行。 # socket=127.0.0.1:8080 # 和nginx连接的端口 #你项目的完整路径。 chdir=/root/Project/MyProject -----------修改 #给socket文件赋权限,这里不用管。 # chmod-socket=664 #启用主线程。 master=true processes=4 threads=2
#加载静态资源
static-map=/static=/home/Project/static ----------------修改
# 日志文件
logto=uwsgi.log
# 进程id
pidfile=uwsgi.pid
# 修改project为你的项目名
module=project.wsgi:application ------------修改
HOME=/root/.virtualenvs/django_env/bin/ ----------------修改
PYTHON=/root/.virtualenvs/django_env/bin/python ---------------修改成自己Python的路径
保存退出后启动uwsgi,如果报错请查看日志文件
uwsgi --ini uwsgi.ini
如果启动uwsgi访问没有问题再继续配置nginx,不然出错不好找。
安装nginx
sudo apt-get install nginx
进入/etc/nginx/备份nginx.conf
sudo cp nginx.conf nginx.conf.bak
删除nginx.conf,重新创建nginx.conf,内容如下:
events { worker_connections 1024; # 不用管 } http{
include /etc/nginx/mime.types; server { listen 80; #这个端口用来监听浏览器的请求。 server_name 0.0.0.0; # 不用管,如果有域名可以填上域名。 charset UTF-8; #日志文件。如果nginx出现问题,都可以通过日志文件来查错。 access_log /var/log/nginx/MyProject_access.log; error_log /var/log/nginx/MyProject_error.log; client_max_body_size 75M; location / { include uwsgi_params; # 使用uwsgi服务器。 uwsgi_pass 127.0.0.1:8080; ---------修改成和uwsgi的socket一样 # 把浏览器发来的请求转发到8080端口,而uwsgi也正在监听8080端口,所以就实现了nginx与uwsgi的通信。 uwsgi_read_timeout 30; #链接超时时间 } location /static/{ # 处理静态文件,处理链接是以/static/开头的请求。 alias /root/DjangoProject/static/; # 项目静态文件的绝对路径。 ---------------修改项目静态文件路径 } } }
最后
修改uwsgi.ini文件,把http=0.0.0.0:80注释掉,使用socket=127.0.0.1:8080
输入:uwsgi -d --ini uwsgi.ini # 启动uwsgi服务器。-d表示在后台运行。这样就不会占用当前窗口了。
输入:/etc/init.d/nginx start # 启动nginx
浏览器访问
重启命令:
uwsgi --reload uwsgi.ini
nginx -s reload
查看端口:netstat -ntulp |grep 80
查看进程:ps -aux|grep uwsgi
杀死进程:kill -9 80