写在最前面
在部署前,先要修改本地django的settings,
ALLOWED_HOSTS = ["*"], 或者加入公网ip
sudo apt-get update
sudo apt-get install pip3
我的系统会报错
改成
yum instll xxxxx
一 在云服务器安装python3
用pycharm的终端或者xsell。
默认是有py2的,不要删。
1.连接公网
ssh -p 22 root@公网ip
然后,输入密码
2. 安装依赖包
sudo yum -y groupinstall "Development tools"
sudo 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 libffi-devel
3. 安装python3压缩包
wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tar.xz
4. 解压压缩包
tar -xvJf Python-3.7.3.tar.xz
5. 编译安装
cd Python-3.7.3
./configure --prefix=/usr/local/bin/python3
sudo make
sudo make install
6. 创建软连接(相当于快捷方式)
ln -s /usr/local/bin/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/bin/python3/bin/pip3 /usr/bin/pip3
7. 安装完成检查安装版本
python3 --version
二 通过pycharm把项目推到服务器
选择tools的Deploment的configuration
三 安装各种所需的包和文件
四 启动django
我用xshell找到了项目的位置,便于操作
在之前要在服务器创建数据库,一点要和本地的数据库同名, 省的改名字
在终端输入
mysql -u root -p
输入密码
create database 库名 default charset=utf8;
不写utf8回报如下的错
django.db.utils.InternalError: (1366, "Incorrect string value"...)
还可能会报
File "/usr/local/bin/python3/lib/python3.7/site-packages/django/db/backends/mysql/operations.py", line 146, in last_executed_query
query = query.decode(errors='replace')
AttributeError: 'str' object has no attribute 'decode'
根据错误提示用xftp找到云服务器文件位置
把错误代码:query = query.decode(errors='replace')
把decode改为encode即可。
还可能报如下的错
File "/usr/local/bin/python3/lib/python3.7/site-packages/django/db/backends/mysql/base.py", line 36, in <module>
raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.找到上面说的位置,
下的 base.py 文件中,注释掉一下两行代码:
if version < (1, 3, 3):
raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)
启动django
(还要在服务器防火墙8000可以访问)
cd /data
cd myblog
python3 manage.py migrations
python3 manage.py migrate
python3 manage.py runserver 0.0.0.0:8000
# 注意写成python3 manage.py runserver 0.0.0.0: 8000 多了个空格
上面是可以启动django,但是终端一退出, 服务器就gg了,
所以可以这样子启动
方法一
cd /data/myblog
nohup python3 manage.py runserver 0.0.0.0:8000 &
# 多点几次回车
这样即使退出终端服务器也可以正常运行
方法二:这个比较高级,使用screen
1、安装screen
yum install -y screen
2、新建一个screen
screen -S xiedi
这样会新开一个窗口,然后执行命令即可
python manage.py runserver 0.0.0.0:9000
3、重开一个窗口,列出所有screen进程,如下
1. [root@docker ~]# screen -ls
2. There are screens on:
3. 3029.xiedi (Attached)
4、如果想链接上这个会话,执行命令即可
screen -r 3029
结束django进程
[root@iz2zeczv3xrnm2jx6aayhxz myblog]# ps -ef | grep manage.py
root 25962 25922 0 12:46 pts/0 00:00:00 python3 manage.py runserver 0.0.0.0:8000
root 25963 25962 2 12:46 pts/0 00:00:06 /usr/bin/python3 manage.py runserver 0.0.0.0:8000
root 25975 25922 0 12:50 pts/0 00:00:00 grep --color=auto manage.py
[root@iz2zeczv3xrnm2jx6aayhxz myblog]# kill -s 9 25963
ps -ef | grep manage.py 查看manage.py kill杀死进程, 不知道为什么杀的是第二个
navicat连接云服务器
1. 修改mysql的权限
(不知道有没有必要,我TM在本地改了mysql,云端的mysql没改正常连了,)
#mysql -u root -proot
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;
2,
再常规中写入信息,连接名自己起,主机要写:localhost,密码是阿里云中数据库的密码,不是阿里云的登陆密码
然后