登录腾讯云
进入腾讯云官网,点击右上角控制台,微信扫码登录
点击云服务器进入实例界面
点击左侧安全组,新建安全组(放通全部端口表示可以通过网络访问实例所有端口)
点击实例最右边-更多-安全组-配置安全组,选择刚刚那个新建的就好了
点击登录,微信扫码,选择第一种登录方式,使用购买腾讯云默认的账号密码登录(如果忘了点击更多重置密码,一步一步来就好了)
安装环境
Ubuntu18.04自带python3 ,但是没有下载pip,我们先安装一下所有必要的环境
sudo apt install python3-pip
sudo pip3 install uwsgi
sudo apt install nginx
sudo apt install mysql-server
由于安装MySQL可能会未设置密码(很有可能),我们判断一下MySQL是否安装成功,并且查看默认密码
netstat -tap | grep mysql
# 查看默认密码
cat /etc/mysql/debian.cnf
user和password就是用户和密码,使用默认用户密码进入MySQL
mysql -u'user' -p'password'
# mysql -udebian-sys-maint -p8CpdQIbo3hAjmwwk
更改密码和一些设置
use mysql;
update mysql.user set authentication_string=password('123456') where user='root';
# 如果不修改如下字段很可能会报错
update user set plugin="mysql_native_password";
# 刷新一下
flush privileges;
quit;
接下来就可以用刚刚设置的新密码登录MySQL了
mysql -uroot -p123456
上传项目文件
打开本地终端(此处我是ubuntu18.04,其他的可能有所区别),输入命令连接腾讯云:
ssh -q -l '你的用户名' -p 22 '你服务器的IP'
# ssh -1 -l ubuntu -p 22 1.1.1.1
输入yes ,然后输入密码(你的登录密码)
在腾讯云终端设置root密码(这个密码可以无限改,输入命令就可以,尽量复杂一点,因为我有过被黑客破解密码的经历,如果数据重要请务必请专业人士):
sudo passwd root
修改配置,找到PermitRootLogin 这项 将其改为 yes,保存退出
sudo vim /etc/ssh/ssh_config
重启ssh服务:
sudo service ssh restart
在本地终端输入命令上传文件
scp '本地文件' root@'腾讯云IP地址':'上传后的文件路径'
# scp /home/oo/python/xiangmu.tar.gz root@1.1.1.1:/home/ubuntu/xiangmu.tar.gz
上传文件如果报错
1.确认已连接(第一步),你的腾讯云安全组必须开通端口22
2.删除用户主目录下的./ssh/known_hosts文件并重试(确实有效,不过不懂(⊙_⊙)?)
cd ~
sudo -rm ./ssh/known_hosts
创建数据库
创建数据库(此处的数据库名为你的Django数据库名)
create database '数据库名' charset=utf8;
你的数据库可能需要导入数据
# 将本地数据库数据导出
# 备份命令格式
mysqldump -u root -p '数据库名' > ./'数据库名'.sql(保存在当前文件夹)
# 将当前目录的sql文件导入数据库
# 恢复命令格式
mysql -u root -p '数据库名' <'数据库名' .sql(恢复当前文件夹的数据库)
如果没有数据,需要迁移数据库,cd到项目文件夹(有manage.py的文件夹)
python3 manage.py makemigration
python3 manage.py migrate
配置uWSGI
在manage.py同级文件创建uwsgi.ini
vim uwsgi.ini
需要用到的vim:
i 编辑
Esc(键盘左上角) 退出编辑
:wq 保存退出
写入如下配置:
[uwsgi]
# Http通信方式的 IP地址:端口号(不使用nginx,可以通过浏览器直接访问)
# http=127.0.0.1:8000
# 套接字方式的 IP地址:端口号(需要映射到nginx)
socket=127.0.0.1:8000
# 项目当前工作目录(绝对路径)
chdir=/home/oo/.../my_project 这里需要换为项目文件夹的绝对路径
# 项目中wsgi.py文件的目录,相对于当前工作目录
wsgi-file=my_project/wsgi.py
# 进程个数
process=1
# 每个进程的线程个数
threads=2
# 是否开启管理员进程,该进程用于管理其它进程,不与用户交互,如果需要,设为true
master=false
# 服务的pid记录文件
pidfile=uwsgi.pid
# 服务的目志文件位置
daemonize=uwsgi.log
配置nginx
修改nginx 的配置文件
sudo vim /etc/nginx/sites-enabled/default
下面没有的就不要修改了
server {
listen 80;
server_name www.xxx.com; # 你的域名(需要备案,不然一天内就封了)或者公有云公网IP
charset utf-8;
client_max_body_size 75M;
# 媒体文件目录(MP4,MP3等用户上传的数据,如果没有可以不写)
location /media {
alias /path/to/project/media;
}
# 静态文件目录(js,css等)
location /static {
alias /path/to/project/static;
}
# 项目文件路径
location / {
# 和uwsgi.ini一样的IP和端口
uwsgi_pass 127.0.0.1:8000;
include /etc/nginx/uwsgi_params;
# try_files $uri $uri/ =404; # 将这行注释掉
}
}
重启nginx
sudo /etc/init.d/nginx restart
启动服务
启动uWSGI
sudo uwsgi --ini uwsgi.ini
重启服务需要先关闭服务
停止uWSGI(如果uwsgi.ini进程数大于1且没有设置管理员进程,停止将无法起作用)
sudo uwsgi --stop uwsgi.pid
此时需要强制终止一些进程
ps -acux|grep uwsgi
kill -9 'pid号'
ps:如果一切正常,启动服务就可以在公网访问你的网站了,不过世事往往不尽如人意,希望各位能够一次成功,出现错误就找百度吧!
出现的错误写在uwsgi.log,太多了就删了,启动服务自动创建
cat uwsgi.log
来源:CSDN
作者:OconanO
链接:https://blog.csdn.net/OconanO/article/details/103464360