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)为了安全,修改 .ssh 和 authorized_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 :
启动 crond 和 yum-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),添加自定义端口:
(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)创建一个 Python3 和 pip3 链接:
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