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

Onida ·
更新时间:2024-11-10
· 502 次阅读

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

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

**

步骤一:布置环境 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安装 Ubuntu默认安装2.7版本通过设置,可以将默认环境变更为3.6:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150
改回python2sudo update-alternatives --config python 设置好Python后,再使用Python默认就变成python3,但是这个时候,pip会出问题,可以重新装pip
sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall 安装虚拟环境
  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 虚拟环境
  创建:mkvirtualenv 环境变量名
  也可以创建的时候指定Python版本,例如:mkvirtualenv --python=/usr/local/,上面如果将Python3设置成了Python3,默认就是Python3的虚拟环境 步骤三.uwsgi安装 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环境 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安装 首先查看linux系统
cat /proc/version
这表示Ubantu系统 装nginx
sudo apt-get install nginx
过程会让选一个Y同意占用内存。 如果出现无法定位nginx包,进行如下操作:
sudo apt-get update 更新完成之后,安装nginx
sudo apt-get install nginx 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; # } #} nginx启动和关闭
Nginx目录: cd /etc/nginx
开启:service nginx start
关闭:service nginx stop
重启:service nginx restart
查看:ps -ef|grep nginx
退出:sudo nginx -s quit
作者:千万别脱发



部署django django项目 ubuntu Django Python Mysql

需要 登录 后方可回复, 如果你还没有账号请 注册新账号