关于自己的网站-python-uwsgi-nginx
本文主要是将django项目放到云服务器上面
购买一个自己的服务器
这里先空着:
- 我目前还在摸索当中 ,只是买了一个服务器,很多细节我还不了解,后期会不断补充;
- 修改你的服务器密码,登录你的服务器,然后开始装装装
在服务器上安装python3
我买的是腾讯云服务器(10块钱一个月,买来测试,因为没有钱!!!!),腾讯云默认安装的是python2.7版本!!所以自己动手安装一下python3,不要问为什么,复制粘贴就对了!
- 转到cd目录下,我建议安装一个WinSCP,登录你的服务器,然后就可以看到你的文件夹啦!
cd /home
wget http://cdn.npm.taobao.org/dist/python/3.6.5/Python-3.6.5.tgz
- 解压安装python3
tar -zxvf Python-3.6.5.tgz
- 安装编译Python3源文件所需的编译环境
yum install -y gcc
yum install -y zlib*
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
- 进入文件夹下面编译
cd Python-3.6.5/
./configure --prefix=/usr/local/python3 --with-ssl(这里是指定安装目录)
make
make install
- 建立软连接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
然后python3就算装好了
安装django
pip3 install django==3.0.4(给他指定版本,因为我本地的是用这个版本写的)
安装mysql
- mysql的安装源
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
- 安装
rpm -ivh mysql80-community-release-el7-3.noarch.rpm
yum install mysql-server
- systemctl start mysqld.service #启动
systemctl stop mysqld.service #关闭
systemctl restart mysqld.service #重启
systemctl status mysqld.service #查看状态
systemctl enable mysqld.service #开机自启动
systemctl disable mysqld.service #开机不自启动 - 启动mysql,找到你的数据库初始密码
tail -n2000 /var/log/mysqld.log
找到这句话:A temporary password is generated for root@localhost: oCWkjd5Olf)g,oCWkjd5Olf)g就是你的初始密码
5. 登录数据库
mysql -uroot -p
密码是刚才那个
6. 进去之后,修改你的密码
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘******’;
******就是你修改的密码了,要复杂的不然设置不成功,有大小写数字加上符号
7. 创建一个新的用户,并授权
create user ‘abc’@’%’ identified with mysql_native_password by ‘*****’;
systemctl stop firewalld.service # 关闭防火墙,重启会重新开启
create database deepmovie charset utf8;这个是创建一个新的数据库
grant all privileges on . to ‘abc’@’%’; #授权所有库表+所有权限给wade在任何地方访问
flush privileges; #刷新授权
数据库就算装好啦,接下来就比较复杂了!
安装uwsgi
为什么这里比较复杂,因为刚开始啥都不懂很容易出错,我是通过WinSCP直接把django项目放在了服务器上
重要的事情放在前面!将你项目中setting.py文件中ALLOWED_HOSTS=[]改成这样:ALLOWED_HOSTS = [’*’],表示都可以访问,后面成功之后再修改这个地方
- 安装
pip3 install uwsgi
- 看一下你的项目能不能跑起来!
python manage.py runserver 0.0.0.0:8080
然后去浏览器打开你的网址(公网ip:8080)看看能不能成功访问,不能就先解决问题!直到你能成功跑起来!
我这里是失败了的,原因是因为我的django数据库版本,emmm,我没用django自带的数据库但是他会影响我,有相同问题的看下面!
报错信息:django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
这句话的意思就是版本不服,我虽然没用,但是这个不对还是不让我跑,我找了个可以解决的办法,大家也可以看别的办法:
通过WinSCP找到你django的安装目录,按照我的安装顺序的话,他的位置应该在/usr/local/python3/lib/python3.6/site-packages/下面,然后djando/db/backends/mysql下面找到base.py文件,找到这个地方把if后面的东西注释掉加上pass
version = Database.version_info
if version < (1, 3, 13):
pass
“”"
raise ImproperlyConfigured(
‘mysqlclient 1.3.13 or newer is required; you have %s.’
% Database.version
)
“”"
你还可能会遇到这个问题django的No module named ‘django.urls’,这是django版本不对
还有这个问题django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.Did you install mysqlcl…
解决办法:进入到django项目的配置文件目录(包含setting.py文件的目录), 编辑 init.py 文件,# 添加如下内容
import pymysql
pymysql.install_as_MySQLdb()
我遇到过的问题就解决啦,还有其他问题的,自行解决
如果跑起来了就证明成功了,然后ctrl+c关掉你的项目!!!一定要关掉不然地址就要被占用啦!
ps -ef | grep python查看正在运行的python进程
4. 转到你django项目下面去,创建uwsgi.ini文件,前面的ip先设置成0.0.0.0,后面怎么改再说,端口要是没有被占用的!,项目目录一定要是你放项目的位置!
[uwsgi]
#使用nginx连接时使用
#socket=127.0.0.1:8080
#直接做web服务器使用
http=127.0.0.1:8080
#项目目录
chdir=/project/Caradmin
#项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=Caradmin/wsgi.py
processes=4
threads=2
master=True
pidfile=uwsgi.pid
daemonize=uwsgi.log
- 启动uwsgi
uwsgi --ini uwsgi.ini
- 查看有没有启动成功
ps ajx|grep uwsgi
出现红框内的内容就是启动成功,然后去访问一下,还是(公网ip:8080)
如果有static的,务必请在uwsgi.ini文件最后加上static路径
按照我的就是:static-map = /static=/project/Caradmin/car/static
7. 退出uwsgi
uwsgi --stop uwsgi.pid