Ubuntu 18.04.1+Mysql 5.7.29+Python 3.6.9部署django项目

最近被django项目部署搞得头疼,查阅了一些相关的资料,终于解决这个问题,因此在这里记录一下,加深印象。
**

  • 服务器环境:Ubuntu 18.04.1+Mysql 5.7.29+Python 3.6.9

**

步骤一:布置环境

  1. mysql安装(sudo apt-get update):
    1.1命令安装
    (1)sudo apt-get install mysql-server
    (2)sudo apt-get install mysql-client
    (3)sudo apt-get install libmysqlclient-dev
    1.2使用
    (1)启动服务
    sudo /etc/init.d/mysql start
    可通过systemctl status mysql.service检查mysql服务状态
    (2)查看可登录的用户名和密码(安装过程如果设置可跳过,我安装的时候没有提示设置账号和密码,查阅资料后解决)
    sudo cat /etc/mysql/debian.cnf
    (3)根据上面的密码登录
    mysql -u -p
    (4)MySQL中 password字段已从mysql.user表中删除,新的字段名是“authenticalion_string”.先检查一下root 的 plugin字段是否为mysql_native_password
    use mysql;
    select user, plugin from user;
    然后
    update user set plugin=‘mysql_native_password’ where user=‘root’;
    (5)修改密码
    update user set authentication_string=password(‘需要设置的密码’) where user=‘root’;
    flush privileges; #刷新mysql权限
    (6)重新登录
    (7)可视化界面安装(workbench)
    sudo apt-get install mysql-workbench
    (8)workbench启动命令:mysql-workbench

步骤二.python安装

  1. Ubuntu默认安装2.7版本通过设置,可以将默认环境变更为3.6:
    sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150
    改回python2sudo update-alternatives --config python
  2. 设置好Python后,再使用Python默认就变成python3,但是这个时候,pip会出问题,可以重新装pip
    sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall
  3. 安装虚拟环境
      3.1virtualenv是一个python工具,可以用apt-get、pip、easy-install安装
        sudo pip install virtualenv
        sudo pip install virtualenvwrapper
      3.2配置virtualenvwrapper
        默认的virtualenvwrapper安装在/usr/locak/bin 目录下,需要运行virtualenvwrapper.sh文件配置如下:
创建目录存放虚拟环境 
			mkdir  $HOME/.virtualenvs
			打开并在~/.bashrc中添加行: 
			export WORKON_HOME=$HOME/.virtualenvs 
			source /usr/local/bin/virtualenvwrapper.sh
			运行: 
			source ~/.bashrc
  1. 虚拟环境
      创建:mkvirtualenv 环境变量名
      也可以创建的时候指定Python版本,例如:mkvirtualenv --python=/usr/local/,上面如果将Python3设置成了Python3,默认就是Python3的虚拟环境

步骤三.uwsgi安装

  1. pip install uwsgi
    在项目文件加下新建uwsgi.ini文件,内容如下:
[uwsgi]
#如果单独使用uwsgi来部署Django项目时,就用这一行。
#http=127.0.0.1:8000
#如果使用nginx+uwsgi来部署Django项目时,就用这行。其中,8000端口用来跟nginx通信。也要在阿里云防火墙中添加8000端口。
socket=0.0.0.0:8000
#你项目的完整路径。(如何查看,cd进入到目录下->pwd查看完整路径)
chdir=路径
wsgi-file=DegreeInformation/wsgi.py
#给socket文件赋权限,这里不用管。
chmod-socket=664
#启用主线程。
master=true
#指定启动的进程数
processes=4
#指定启动的线程数
threads=2
#指定日志文件(会自动创建)。这个很重要,如果uwsgi出现错误,可以通过日志文件来查错。
logto=uwsgi.log
#指定进程号文件(会自动创建)。这个也很重要,如果要重启和关闭uwsgi,则需要这个文件,里面记录了进程号。
pidfile=uwsgi.pid
#指定wsgi文件。在与settings.py同级目录中会有一个wsgi.py文件。
module=MyProject.wsgi:application
virtualenv=/home/donglang/.virtualenvs/degreeinfoenv  #python环境
  1. uwsgi启动和关闭
    首先进入python环境,然后进入到uwsgi.ini文件所在的目录下
    启动:uwsgi --ini uwsgi.ini 查看是否开启:ps aux|grep uwsgi
    关闭:uwsgi --stop uwsgi.pid
    重启:uwsgi --reload uwsgi.pid

python环境创建成功之后,在django的settings.py里面讲Debug关闭,并添加STATIC_ROOT=os.path.join(BASE_DIR,‘static’),之后运行python manage.py collectstatic 将网站所需的静态资源收集到一起。

步骤四.nginx安装

  1. 首先查看linux系统
    cat /proc/version
    这表示Ubantu系统
  2. 装nginx
    sudo apt-get install nginx
    过程会让选一个Y同意占用内存。
  3. 如果出现无法定位nginx包,进行如下操作:
    sudo apt-get update
  4. 更新完成之后,安装nginx
    sudo apt-get install nginx
  5. Ubuntu安装之后的文件结构大致为:
    1)所有的配置文件都在/etc/nginx下,并且每个虚拟主机已经安排在了/etc/nginx/sites-available下
    2)程序文件在/usr/sbin/nginx
    3)日志放在了/var/log/nginx中
    4)并已经在/etc/init.d/下创建了启动脚本nginx
    5)默认的虚拟主机的目录设置在了/var/www/nginx-default (有的版本默认的虚拟主机的目录设置在了/var/www, 请参考/etc/nginx/sites-available里的配置)

Nginx.conf文件内容如下:(cd /etc/nginx->ls->sudo vi nginx.conf)

user root;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
	worker_connections 768;
	multi_accept on;
}
http {
    # Basic Settings
	##
	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 65;
	types_hash_max_size 2048;
	# server_tokens off;

	# server_names_hash_bucket_size 64;
	# server_name_in_redirect off;

	include /etc/nginx/mime.types;
	default_type application/octet-stream;

	##
	# SSL Settings
	##

	ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
	ssl_prefer_server_ciphers on;

	##
	# Logging Settings
	##

	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;

	##
  	# Gzip Settings
	##

	gzip on;
        
        server {
        listen 800;   #这个端口用来监听浏览器的请求。(默认为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 0.0.0.0:8000;    # 把浏览器发来的请求转发到8000端口,而uwsgi也正在监听8000端口,所以就实现了nginx与uwsgi的通信。
            #uwsgi_read_timeout 30;   #链接超时时间
	    
        }
        location /static{    # 处理静态文件,处理链接是以/static/开头的请求。即:如果是静态文件,就不用发给uwsgi了,nginx自己处理。
            alias /home/xxx/static/;       # 项目静态文件的绝对路径。即:告诉nginx应该去哪里找静态文件。后面会介绍。
       }
     }
	# gzip_vary on;
	# gzip_proxied any;
	# gzip_comp_level 6;
	# gzip_buffers 16 8k;
	# gzip_http_version 1.1;
	# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

	##
	# Virtual Host Configs
	##

	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
}


#mail {
#	# See sample authentication script at:
#	# http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
# 
#	# auth_http localhost/auth.php;
#	# pop3_capabilities "TOP" "USER";
#	# imap_capabilities "IMAP4rev1" "UIDPLUS";
# 
#	server {
#		listen     localhost:110;
#		protocol   pop3;
#		proxy      on;
#	}
# 
#	server {
#		listen     localhost:143;
#		protocol   imap;
#		proxy      on;
#	}
#}


  1. nginx启动和关闭
    Nginx目录: cd /etc/nginx
    开启:service nginx start
    关闭:service nginx stop
    重启:service nginx restart
    查看:ps -ef|grep nginx
    退出:sudo nginx -s quit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rehan_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值