Django搭建服务器

1. 设置用户组
(1)连接云服务器:在终端命令行中输入 ssh root@(公网IP)
ssh root@132.232.122.26
(2)添加用户组:groupadd (用户组名)
gruoupadd admin
(3)添加用户名:useradd (用户名)-g (用户组名)
useradd Sunday -g admin
(4)设置用户密码:passwd (用户名)
passwd Sunday
(5)进入到指定目录,找到 sudoers 修改用户权限,并配置其他文件:
cd /etc
vim sudoers
(6)更改配置文件:

)

(7)在该行下面添加:
Sunday  ALL=(ALL)       ALL
(8)为了安全,应该禁止随便登录 root 用户:

​ 进入 SSH 目录:

cd /etc/ssh

​ 找到 sshd_config ,修改配置内容:

​ 去掉该行的 # ,把yes改为no:

PermitRootLogin no

​ 重启 sshd 服务:

systemctl restart sshd.service
2. 设置登录证书
(1)为了不用每次连接云服务器都要输入密码,在本地生成秘钥连接:

​ 进入本地 .ssh 文件夹:

cd .ssh

​ 生成秘钥:

ssh-keygen -t rsa -C Sunday -f Sundayfile
(2)将秘钥文件拷贝到远程服务器中:
scp Sundayfile.pub Sunday@132.232.122.26:.
(3)连接云服务器,并创建一个 .ssh 文件夹,在 .ssh 文件夹中创建一个 authorized_keys 文件,将拷贝的文件写入到 authorized_keys 中:
ssh Sunday@132.232.122.26mkdir .sshcd .sshtouch authorized_keyscat Sundayfile.pub >> ~/.ssh/authorized_keys
(4)为了安全,修改 .sshauthorized_keys 文件的权限,只对Sunday用户开放各种权限:
chmod authorized_keys 600chmod .ssh 700
(5)退出远程登录,删除已经被拷贝的秘钥文件(可不删),在 .SSH 文件夹中,编辑一个 config 文件:
rm Sundayfile.pubvim config

​ 在 config 文件中写入以下内容(如果系统是WIN,直接新建记事本写入进去,然后更改文件名为 config ,不要有后缀 .txt):

Host Sunday	HostName 132.232.122.26	port 22	User Sunday	IdentityFile ~/.ssh/Sundayfile

​ 以后连接云服务器只需要输入以下命令:

ssh Sunday
3. 设置防火墙和端口
(1)设置系统自动更新:
ssh Sundaysudo yum -y update

​ 安装插件:

sudo yum install -y cronie yum-cron

​ 更改配置,使其能够自动更新:

sudo vim /etc/yum/yum-cron.conf

​ 找到下图中的位置,把 no 改为 yes

​ 启动 crondyum-cron 服务:

sudo systemctl start crondsudo systemctl start yum-cron
(2)安装防火墙(有的话就不用安装):
sudo yum install -y firewalld

​ 启动防火墙:

sudo systemctl start firewalld.service

​ 查看防火墙是否启动:

sudo firewall-cmd --list-all

​ 为了安全,修改 SSH 默认端口(端口范围为:1024-66535):

sudo vim /etc/ssh/sshd_config

​ 找到下图位置,将22更改为,你想要设置的端口号(10245):

​ 修改防火墙中的 SSH 服务配置,先获取这个文件,然后拷贝到防火墙工作路径中:

sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/sudo vim /etc/firewalld/services/ssh.xml

​ 找到下图中的位置,将22更改为(10245):

(3)修改云服务器,安全组规则(删除端口22和443),添加自定义端口:

10245

(4)在云服务器上,重启防火墙和ssh服务:
sudo systemctl restart sshd.servicesudo systemctl restart firewalld.service
(5)修改本地 SSH 中配置文件的端口(10245):
notepad coinfig
4. 安装数据库
(1)Centos支持 mariadb ,所以需要安装它和它的服务器插件:
sudo yum -y install mariadb mariadb-server

​ 启动数据库,并设置为开机自动启动:

sudo systemctl start mariadbsudo systemctl enable mariadb.service
(2)设置 root 用户密码(Tang1024):
mysql_secure_installation

​ 登录数据库,并创建一个数据库(为后面的Django用):

mysql -uroot -pcreate database mysite;
5. Centos系统安装python3
(1)检查系统自带的Python版本,如果不是Python3,先安装前置依赖:
python --versionsudo yum -y install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel zlib-devel libffi-devel MySQL-python mysql-devel
(2)创建一个文件夹 py3,去官网找到链接地址,下载Python3最新版本到该文件夹中:
mkdir py3cd py3wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz
(3)将下载的python包,解压缩:
tar -zxvf Python-3.8.0.tgz
(4)设置Python的配置文件,使其能够安装到指定位置:
cd /usr/local/sudo mkdir python3cd ~/py3/Python-3.8.0./configure --prefix=/usr/local/python3/
(5)编译python,并安装,安装成功后,进入到指定的文件夹,查看是否安装成功:
makesudo make installcd /usr/local/python3/ls
(6)创建一个 Python3pip3 链接:
sudo ln -s /usr/local/python3/bin/python3 /usr/bin/python3sudo ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
(7)安装一个 pip3 插件:
sudo pip3 install mysqlclient
6. 安装测试Django
(1)使用 pip3 安装 Django ,并创建链接:
sudo pip3 install djangosudo ln -s /usr/local/python3/bin/django-admin /usr/bin
(2)测试 Django 是否安装成功,并安装一个 tree 插件(让文件以树结构显示):
cd /home/sudo mkdir wwwcd wwwsudo django-admin startproject rootsudo yum -y install treecd rootcd rootsudo vim views.py

​ 写入以下内容:

from django.http import HttpResponsedef index(request):    return HttpResponse('Hello,world!')

​ 更改 urls.py 中配置,

sudo vim urls.py

​ 找到图下位置,并修改:

​ 更改 settings.py 中配置,

sudo vim settings.py

​ 找到图下的位置,并修改:

​ 迁移数据库:

cd ..sudo python3 manage.py migrate

​ 启动 Django 服务器,并使用80端口,在浏览器中输入公网IP,就可以查看是否成功:

sudo python3 manage.py runserver 0.0.0.0:80
7. 配置Django项目
(1)创建一个项目文件夹(mysite),打开 VScode ,下载一个 sftp 插件,使用快捷键(ctrl+shift+p),输入以下内容,修改其中的配置:
sftp:config

(2)修改云服务器上,项目文件的权限用户(Sunday),
cd /home/www/sudo chown -R Sunday root

​ 进入 VScode 中,从远程服务器同步到本地:

​ 为了方便,修改 sftp.json 配置,添加以下内容,可以实时同步各种操作在本地和云服务器之间(不是必须添加,根据自己需求):

"syncOption":{	"delete":true},"watcher":{	"files":"**/*",	"autoUpload":true,	"autoDelete":true}
8. 设置Nginx和uWSGI
(1)云服务器上安装 uWSGI ,并创建链接:
sudo pip3 install uwsgisudo ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi3
(2)安装 Nginx
sudo yum -y install nginx
(3)更改 setting.py 配置,将调试模式改为 False
DEBUG = False

​ 如果项目中用到模板的话,必须把模板放到 templates 中,在文件夹里面新建一个 templates 文件夹,

'DIRS': [	os.path.join(BASE_DIR,'templates'),]

​ 配置静态文件,并在文件夹中新建一个 static 文件夹:

STATIC_ROOT = os.path.join(BASE_DIR,'../collected_static')STATICFILES_DIRS = (	os.path.join(BASE_DIR,'static'))

(4)登录远程服务器,在 www 目录下创建 collected_static 文件夹(所有的静态文件,都会打包放在该文件夹中),
cd /home/www/sudo mkdir collected_static

​ 打包静态文件,

cd rootsudo python3 manage.py collectstatic
(5)打开 VScode ,新建一个 uwsgi 文件夹和一个 uwsgi.ini 文件,在 uwsgi.ini 中添加以下内容:
[uwsgi]socket = 127.0.0.1:8000chdir = /home/www/rootmodule = mysite.wsgimater = trueprocesses = 1threads = 2max-requests = 2000chmod-socket = 664vacuum = truestats = %(chdir)/uwsgi/uwsgi.statuspidfile = %(chdir)/uwsgi/uwsgi.piddaemonize = %(chdir)/uwsgi/uwsgi.log
(6)远程服务器中编辑 nginx 的配置文件,
sudo vim /etc/nginx/nginx.conf

server {        listen       80;                                            server_name  localhost;        # Load configuration files for the default server block.        location / {            uwsgi_pass 127.0.0.1:8000;                                 include /etc/nginx/uwsgi_params;        }        location /static {                                             alias /home/www/collected_static/;                                                       }        error_page 404 /404.html;            location = /40x.html {        }        error_page 500 502 503 504 /50x.html;            location = /50x.html {        }    }

​ 启动 uwsgi

cd /home/www/rootsudo uwsgi3 --ini uwsgi.ini

​ 启动 nginx 服务器,

cd ~sudo systemctl start nginx

​ 当你更改了 views.py 文件,需要重新启动 uwsgi.pid

cd /home/www/root/uwsgisudo uwsgi3 --reload uwsgi.pid

Django搭建服务器
https://everysunday.github.io/2022/02/24/Django搭建服务器/
作者
T-River
发布于
2022年2月24日
许可协议