没事写了个网站,用内网穿透玩的很是不过瘾,正巧华为云搞活动,就像把项目部署到华为云上,下面是步骤也是经历: 背景: 本人在本地写代码测试的时候,由于电脑配置实在是不行,数据库用的事sqlite3,而部署到云服务器上,我打算换成mysql,django版本为3.2,Python让我升级成了3.9。一大早上九点半就等着华为官网放出免费的服务器,抢到一个2核CPU,4G内存,40G云盘,1M带宽的上海机房的云服务器。由于本人之前只弄过win IIS,对linux只是简单了解,一路部署下来,也是云里雾里,在格式化了两次云服务器之后,总算成功了!免费的不怕,使劲折腾,操作系统随便换,真是安逸舒适!
1. 为了上线后更换数据库,我需要把本地项目的数据导出来,以便在服务器部署完成后导入mysql。 django 项目提供了一个导出的方法 python manage.py dumpdata, 不指定 appname 时默认为导出所有的app
python manage.py dumpdata [appname] > appname_data.json
执行如下代码,导出所有app数据,会自动在当前文件生成alldata.json文件
python manage.py dumpdata > alldata.json
2. 配置华为云服务器的安全组,就是开放哪些端口 只要控制入方向就可以,如果不用win的远程登录可以把3389端口删除,其他的作为web服务器都算必须了吧。 3.配置SSH客户端进行远程登录。 为了在win10能操作服务器,需要下载OpenSSH,注意这是64位用的,如果不符合你得系统你可以,选择其他的下载。 链接:https://download.filezilla-project.org/client/FileZilla_3.58.0_win64_sponsored-setup.exe 顺便再下载个FileZilla,方便向服务器传输文件。 链接:https://download.filezilla-project.org/client/FileZilla_3.58.0_win64_sponsored-setup.exe 一顿无脑安装即可。 然后按下win+r组合键,win键就是ctrl和alt中间那个小窗户键,出现运行窗口输入命令cmd
进入后输入以下命令: root为你服务器系统的用户名,@后面为你服务器的公网IP地址,
ssh root@XXX.XX.XX.XXX
之后会提示你输入服务器的密码,完成后就进入到了服务器的命令行,开始我们的部署填坑之旅。 4. 在服务器上开始FTP服务,上传项目文件。 首先更新下服务器软件,时间会稍微有些长
yum update -y
让后是下面一串,说是一堆开发依赖,不知道是什么,都安排上;
yum install gcc ; yum -y install zlib*;yum install openssl-devel -
y
安装vsftpd(very secure ftp daemon,非常安全的 FTP 守护进程)是一款运行在 Linux 操作系 统上的 FTP 服务程序,不仅完全开源而且免费,此外,还具有很高的安全性、传输速度,以 及支持虚拟用户验证等其他 FTP 服务程序不具备的特点
yum install vsftpd
安装完成后开启无脑配置模式,直接下面三条,要一条一条来哦。
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
grep -v "#" /etc/vsftpd/vsftpd.conf_bak > /etc/vsftpd/vsftpd.conf
cat /etc/vsftpd/vsftpd.conf
为了尽量简单我们用本地用户模式配置,输入以下命令,更改配置文件,如果vim编辑器不会用,就随便找找查查吧。
vim /etc/vsftpd/vsftpd.conf
修改参数完成后如下
anonymous_ _enable=NO
local_ _enable=YES
write_ _enable=YES
local_ _umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
重点来了,这个时候ftp还是不能用的,我们还需要修改两个文件,输入以下命令编辑,在root前面加上#号注释掉,保存退出
vim /etc/vsftpd/user_list
vim /etc/vsftpd/ftpusers
然后启动ftp服务
systemctl restart vsftpd
systemctl enable vsftpd
然后打开我们的filezilla软件 左边是你的本地目录,右边是服务器的目录,我们在本地找到项目文件夹,
上传完成了,我们就可以正式开始配置服务器环境了 先来配置python,安装django及其依赖 版本3.68,直接上吧,首先给python换源,否则下载太慢了。
mkdir ~/.pip
vim ~/.pip/pip.conf
输入以下内容
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn
保存退出后安装django
pip3 install django
由于我的代码中用到pillow库,我还需要安装pillow
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade Pillow
安装uwsgi
yum install python36-devel
pip3 install uwsgi
由于数据要换成mysql,所以需要安装mysqlclient
yum install python3-devel mysql-devel
pip3 install mysqlclient
安装mysql,为了避免出现个gpg-key的错误,安装了第二条
yum install https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum install https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
启动mysql,并加入开机启动
systemctl start mysqld
systemctl enable mysqld
查看初始密码
grep 'temporary password' /var/log/mysqld.log
修改mysql密码
mysql -u root -p
输入以下命令,更改密码刷新权限
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY’新密码';`
flush privileges;
配置django导入原数据(由于我是从sqlite3导入mysql,所以比较繁琐) 以下是我的数据库配置,数据库名为django_db,所以我需要进入mysql新建该库。
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_db',
"USER":"root",
"PASSWORD":"a;CXQkeyj03X",
"HOST":"127.0.0.1",
"PORT":"3306",
}
利用django命令导入原数据
python3 manage.py loaddata mysite_all.json
收集静态文件
python3 manage.py collectstatic
以上已经完成大部分的配置工作,接下来是uwsgi和nginx,接入网络服务 安装nginx
yum install nginx
把目录移动到服务器项目文件夹下,配置uwsgi.ini
[root@ecs-358280 shopsite]
内容如下:
[uwsgi]
socket = 127.0.0.1:8001
chdir = /home/www/shopsite
wsgi-file = shopsite/wsgi.py
module = shopsite.wsgi
processes = 4
threads = 2
stats = 127.0.0.1:9191
pidfile=uwsgi.pid
daemonize=uwsgi.log
vacuum = true
log-maxsize=50000000
disable-logging=true
static-map = /static=/home/www/shopsite/static
启动uwsgi 必须在项目根目录下跟uwsgi.ini同一目录执行
uwsgi uwsgi.ini
配置nginx
红框部分表示,我们只要把配置文件放在conf.d目录下就可以了,建立文件
vim /conf.d/django.conf
输入以下内容,保存退出
server {
listen 80;
server_name 122.112.204.124;
charset utf-8;
client_max_body_size 75m;
location /media {
alias /home/www/shopsite/media;
}
location /static {
alias /home/www/shopsite/static;
}
location / {
uwsgi_pass 127.0.0.1:8001;
include /etc/nginx/uwsgi_params;
}
}
保存退出后,测试配置文件,启动服务,加入开机启动
nginx -t
systemctl start nginx
systemctl enable nginx
至此已经全部配置完成,由于我没有域名,所以直接在浏览器里输入服务器公网ip,就可访问网站.实际配置途中其实有许多坑,奉劝大家如果对linux系统不熟悉,像我一样,千万不要编译安装,否则各种依赖,各种操作,真是累觉不爱.
|