腾讯云ubuntu18.04部署django项目

Ubuntu18.04部署Django

ubuntu18.04部署django

也算是第一次接触linux内核,成功部署全靠玄学+硬刚,结束后记录一下过程,新手,文章内容是回忆
环境:Ubuntu18.04
Python3.7
Django2.2.3+uWSGI+Nginx
Mysql5.7

热身

1.设置root密码

腾讯云默认登陆用户ubuntu,第一次登录时root没有密码

$ sudo passwd root

然后切换成root用户

$ su - root

更新源地址

# apt-get update
2.安装python3.7
# apt-get install python3.7

ubuntu18.04内置了python2.7和python3.6,它的python3不是我需要的版本,所以设置一下,先删除原本指向python3.6的软链接

# rm -rf /usr/bin/python3

再建立新的软链接

# ln -s /usr/bin/python3.7 /usr/bin/python3

此时可以使用python3指令了
然后安装python3-dev

# apt-get install python3.7-dev     可能需要指定3.7,有点忘了
3.安装pip3
# apt-get install python3-pip

接下来就可以使用pip3安装第三方包了

4.安装指定版本的django
# pip3 install django==2.2.3

安装Mysql5.7

使用# apt-get install mysql-server安装的最新版本应该是8.0以上了,我要用5.7,所以要指定版本

其实看到一篇文章说MySQL5.7最高只是配到Ubuntu17.04,而MySQL8.0最高适配到Ubuntu18.04。

但是没出什么问题也就没考虑换8.0,毕竟之前用的也都是5.7

# apt-get install mysql-server-5.7
# apt-get install libmysqlclient-dev
# apt-get install mysql-client

关于链接mysql连接python3

# pip3 install mysqlclient   
目测可行,但是当时装了好几个乱七八糟的,所以不能保证

此时的mysqlroot账户是没有密码的,

# sudo mysql_secure_installation
对mysql进行初始化,很关键

可以参考这个非常详细
然后根据提示安装,显示Success.之后表示结束初始化,但是还有一个很大的问题,输入mysql进入mysql shell

依次
mysql> use mysql;
mysql> show tables;
mysql> select Host,User,plugin,authentication_string from user;

可以看到

+-----------+------------------+-----------------------+-------------------------------------------+
| Host      | User             | plugin                | authentication_string                     |
+-----------+------------------+-----------------------+-------------------------------------------+
| localhost | root             | auth_socket           |                                           |
| localhost | mysql.session    | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | mysql.sys        | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | debian-sys-maint | mysql_native_password | *9FD2128DA457CDBF327277BA59C9DE1BAFA88816 |
+-----------+------------------+-----------------------+-------------------------------------------+

发现root的插件是auth_socket,查询后发现

它只检查用户是否使用套接字进行连接,然后比较用户名,并没有密码验证。

此时无法通过其他用户如ubuntu账号登录
authentication_string字段用于存放密码,需要修改plugin和密码

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';

必须用一句话执行而不能分开,可以参考这篇文章
现在root账户密码已经设置好了,之后登录mysql需要输入密码

# mysql -u root -p

OK完成,需要设置远程登录数据库,同样可参考这篇文章

安装uWSGI

# pip3 install uwsgi
  • chemaid
    • chemaid
      • settings.py
      • wsgi.py
      • 省略
    • login
    • manage.py
    • __ pycache __
    • static
    • uwsgi.ini

项目结构如上,首先使用django指令python3 manage.py collectstatic收集静态文件,生成上图中加粗的static,然后在manage.py同级目录下新建uwsgi.ini,使用vim编辑器

$ vim uwsgi.ini

后进入vim界面

[uwsgi]
#此端口必须与后面的Nginx一致
socket=127.0.0.1:8000
#此路径为项目的绝对路径
chdir=/home/ubuntu/chemaid正式2
#此路径为相对路径,注意是在chemaid/chemaid/wsgi.py
wsgi-file=chemaid/wsgi.py
process=1
# 每个进程的线程个数
threads=2
# 是否开启管理员进程,该进程用于管理其它进程,不与用户交互,如果需要,设为true
master=true
# 服务的pid记录文件,不需要自己动手新建
pidfile=uwsgi.pid
# 服务的目志文件位置,不需要自己动手新建
daemonize=uwsgi.log

安装Nginx

# apt install nginx

输入

# cd /etc/nginx/
# ls 

显示

conf.d        fastcgi_params  koi-win     modules-available  nginx.conf    scgi_params      sites-enabled  uwsgi_params
fastcgi.conf  koi-utf         mime.types  modules-enabled    proxy_params  sites-available  snippets       win-utf

进入conf.d,新建my_nginx.conf

# cd conf.d
# vim my_nginx.conf
server {
    listen      80;
    server_name xx.xxx.xx.xx;       #这里填你主机的公网IP
    charset     utf-8;
    client_max_body_size 75M;
  
  # 媒体文件目录(MP4,MP3等用户上传的数据,如果没有可以不写)
    location /media  {
        alias /home/ubuntu/....;    #你的media文件路径
    }
  # 静态文件目录(js,css等)
    location /static {
        alias /home/ubuntu/...;     #你的static文件路径
    }
    # 项目文件路径
    location / {
        uwsgi_pass  127.0.0.1:8000;   #这里与uwsgi一致
        include     /etc/nginx/uwsgi_params;
        uwsgi_read_timeout 15;
                # try_files $uri $uri/ =404; # 将这行注释掉
    }
}

启动服务

重启Nginx

# service nginx restart
# netstat -ntlp      可以查看网络状态

进入django项目文件目录下即uwsgi.ini同级目录下输入

$ sudo uwsgi --ini uwsgi.ini

到此完结撒花~

浏览器输入公网IP尝试访问,出问题了找百度/ Google / Stackoverflow / Github

pillow包也报错了,有空再记。
其实还没完成,后续再记录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值