django项目创建与配置笔记

一、阿里云申请创建实例centos7.9.64位 服务器
公网IP: 120.56.19.98
主私网IP : 171.25.219.115
VNC 连接密码 password
login learn password
workbench连接与VNC连接的区别在:
1、workbench是一个工作台,关闭(叉掉后)会停止所有,脚本不会执行。
2、VNC是虚拟电脑,连接断开后虚拟电脑照常运行,脚本执行不停止。继续执行。

一、创建用户组和用户(用户挂在用户组下)命令如下:
ssh root@120.56.19.98 输入密码连接成功后即可执行以下命令:
groupadd admin # 创建一个用户组admin
useradd seve -g admin # 创建一个seve用户并挂在damin组下
接下来修改seven用户密码命令:
passwd seve # 然后输入两次密码 password
显示passwd:all authenertication tokens update successfully 表示成功设置密码

二、为用户添加权限(此处是root用户权限)
cd /etc # 进入etc目录 ls 查看目录下有sudoers 和sudo.conf,这里修改sudoers
vi sudoers
vim sudoers

两个操作基本同,vim是vi的升级版;1:vim是vi的演化版2:vim可以用不同的颜色来加亮你的代码。3:可视化操作 ,就是说vim不仅可以在终端运行,也可以运行于linux window、 mac os、 windows。

按i进入插入模式 修改后按ESC键退出插入模式 再按【:wq】为保存并退出;按【:wq!】为强制保存并退出


在 root ALL=(ALL) ALL 行下插入如下 即可
seve ALL=(ALL) ALL

三、禁止root远程登陆(安全原因最禁止root用户远程登录,因为root用户权限太大)
cd /etc/ssh
vim sshd_conf
执行后找到 #PermitRootLogin yes 删除 # 并修改yes为no 如下:
PermitRootLogin no
完毕后还需要重启服务,命令如下:
systemctl restart sshd.service

#

设置ssh通过证书密钥远程连接登陆服务器(避免每次登录需要输入密码)
【本地创建、上传、服务器创建.ssh、authorized_keys、服务器拷贝、删除多余】
windows下运行 powershell
ls查看目录下有无.ssh目录


PS C:\Users\root> ls
目录: C:\Users\root
Mode LastWriteTime Length Name


d----- 2021-05-21 16:57 .android
d----- 2021-10-08 15:11 .codeintel
d----- 2021-11-04 10:14 .ssh
PS C:\Users\root>


没有可以创建,命令如下
mkdir .ssh
然后创建证书,命令如下:(参数t后为加密方式 C后为描述性内容 f后为文件名)
ssh-keygen -t rsa -C decsribe -f sevefile
连续回车几次出现图形后SHA256既成功,此时ls查看可以看到 有两个密钥文件

Mode LastWriteTime Length Name


-a---- 2021-11-05 12:52 2590 sevfile
-a---- 2021-11-05 12:52 563 sevfile.pub
sevfile.pub为公钥 sevfile为私钥
接下来拷贝公钥至服务器,命令如下:(注意完整命令有:.符号)
scp sevfile.pub seve@120.56.19.98:.
回车输入密码后出现 100%...字样即表示ok

接下来登录seve账户在seve用户名下创建.ssh和authorized_keys
mkdir .ssh
cd .ssh # 此目录下创建authorized_keys
touch authoriz_keys #touch命令创建文件
cd .. # 返回上一级 以便执行拷贝 命令如下:
cat sevefile.pub >> ~/.ssh/authorized_keys
拷贝成功后修改.ssh目录权限(可先回到主目录删除sevefile.pub)
chmod 700 .ssh # 在主目录下操作 然后进入.ssh操作以下
chmod 600 authorized_keys # 在.ssh目录下操作
exit # 退出服务器
回到本地电脑.ssh下可以删除sevefile.pub,此时文件已上传至服务器
配置config
cd .ssh
vim config # 编辑如下:
Host seve # 以后使用此名登录,可自定义此名字必须记住
HostName 120.56.19.98 # 服务器公网IP
Port 22 # 端口号
User seve # 登录服务器端的用户账号名
IdentityFile ~/ssh/sevefile # 私钥保存的地址,此后不能修改和移动

Host seve
HostName 120.56.19.98
Port 22
User seve
IdentityFile ~/ssh/sevefile

完成以上设置在本地使用 ssh seve 即可登录服务器端
无需输入密码

# #

设置防火墙和配置端口(此处为用户seve登陆下)
一、首先更新 yum 命令如下:
sudo yum -y update # -y 参数忽略提示要输入yes
二、设置yum自动更新
1、安装两个插件 cronie 和 yum-cron(一个命令可以安装多个中间加空格即可)
sudo yum install -y cronie yum-cron
2、安装插件后配置 命令:
sudo vim /etc/yum/yum-cron.conf
找到apply_updates=no修改为以下:
apply_updates=yes
3、修改后启动服务 命令如下:
sudo systemctl start crond
sudo systemctl start yum-cron
完成 然后正式安装防火墙
命令:
sudo yum install -y firewalld
安装后启动:
sudo systenctl start firewalld.service
检查防火墙启动成功没有
sudo firewall-cmd --list-all
命令行会打印出现有:
services:ssh dhcpvb_client 此即为默认端口22
接下来修改默认端口号22为10000-20000内任意数字,避免常规22不安全

修改ssh端口号需要修改四个位置
1、seve用户名下
sudo vim /etc/ssh/sshd_config
将port后端口号修改为 12345 即可
2、先拷贝
sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/
sudo vim /etc/firewalld/services/ssh.xml
将port改为12345
3、在浏览器上登录,点击控制台->安全组->配置规则->安全组规则内点击手动添加
端口范围填写12345/12345(此处为范围所有是两个数字);目的填写0.0.0.0/0(此处为源)
同时删除22端口号,点击右侧删除即可
***** VNC登录seve用户名 *****
重启两个服务
sudo systenctl restart sshd.service
sudo systemctl restart firewalld.service
4、回到本地电脑cd .ssh
vim config # 修改本地配置
将port修改为12345

修改完毕 ssh seve 测试登录

# # #

安装服务器端数据库mariadb
[seve@learn ~]$
sudo yum -y install mariadb mariadb-server
安装后启动服务命令:
sudo systemctl start mariadb
没有然后提示表示成功
设置每次自动启动命令如下:
sudo systemctl enable mariadb.service
出现以下表示成功
Created symlink from /etc/systemd/system/multi-user . target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
现在设置数据库root用户密码
mysql_secure_installation
回车会提示我们输入当前用户密码直接回车跳过(因为还没有密码)
接下来按y后按照提示输入两次密'password'码 后面一直回车即可完成密码设置

mysql-u root -p
输入密码登录
create database mysite
以上即为创建一个数据库,名为mysite;

# # # #

安装python3环境(系统预安装为python2版本)

          • 先下载后安装
            一、预备动作---创建 py3 临时文件夹
            cd ~
            mkdir py3 # 创建一个目录 下载python3
            二、安装python3依赖环境
            cd py3 #

[seve@learn py;sl$ siudo yum =-y install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel zlib-devel libffi-devel MySQL-python mysql-devel
------------------------------------------------分步安装
sudo yum -y install openssl-devel
sudo yum -y install bzip2-devel
sudo yum -y install expat-devel
sudo yum -y install gdbm-devel
sudo yum -y install readline-devel
sudo yum -y install sqlite-devel
sudo yum -y install zlib-devel
sudo yum -y install libffi-devel
sudo yum -y install MySQL-python
sudo yum -y install mysql-devel
--------------------------------------------------分步安装

三、现在下载python3.9.5
wget -bc https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz
参数-bc为后台下载、断点续传
查看进度使用:tail -f wget-log
退出命令行: CTRL+C
加压缩命令如下:
tar -zxvf Python-3.9.5.tgz
解压完毕后配置安装目录安装路径
cd /usr/local/ # 在此目录下创建python3目录
sudo mkdir python3
回到cd /py3python-3.9.5目录下设置安装路径(通过.configure设置)
命令如下:
./configure --prefix=/usrlocal/python3
再次在py3/python3.9.5目录下
执行命令如下(安装过程可能需要输入seve用户密码):
make # 编译
sudo make install # 安装编译文件
*** 安装完毕后会发现python3目录下有四个文件夹bin include lib share ***
创建设置python3环境变量(在 cd /usr/local/python3目录)
sudo ln -sf /usr/local/python3/bin/python3 /usr/bin/python3

      • -sf参数可以为 -s 加f是覆盖原来的有些系统存在低版本的python3- - -
        创建设置ppi3环境变量(在 cd /usr/local/python3目录)
        sudo ln -sf /usr/local/python3/bin/pip3 /usr/bin/pip3
      • -sf参数可以为 -s 加f是覆盖原来的有些系统存在低版本的pip3- - -

四、最后一步安装python3插件mysqlclient
sudo pip3 install mysqlclient

# # # # #

服务器上安装django
sudo pip3 install django

一、配置django-admin并创建项目
sudo ln -s /usr/local/python3/bin/django-admin /usr/bin/

cd ~ # 回到主目录ls查看只有一个目录seve
sudo mkdir www # 创建一个目录在此目录创建django项目
sudo yum -y install tree # 顺带安装tree

cd www # 在此目录创建django项目 mysite
django-admin startproject mysite
sudo mv mysite root # 将mysite修改为root避免父子目录(上下目录)同名
使用tree查看一下
root
├── manage.py
├── mysite
   ├── init.py
   ├── settings.py
   ├── urls.py
   └── wsgi.py
创建项目成功

二、配置项目

第一步(配置项目views视图):
sudo vim views.py # 编写一个视图函数
from django.http import HttpResponse
def index(request):
return HttpResponse('hello woeld!')

第二步(配置项目urls路由):
sudo vim urls.py # 编写一个视图函数
在urlpatterns内修改为
urlpatterns = [
path('admin/', admin.site.urls),
path('',views.index),
]

第三步(配置项目settings设置):
sudo vim settings.py # 编写一个视图函数
在ALLOWED_HOSTS内修改为
ALLOWED_HOSTS = ['localhost', '120.56.19.98']

下翻至

在DATABASES内修改为
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mysite', # 项目数据库的名称create database mysite
'USER': 'root', # 数据库用户
'PASSWORD': 'password', # 数据库密码
'HOST': 'localhost',
'PORT': '3306', # 连接数据库端口
}
}
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mysite',
'USER': 'root',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '3306',
}
}

三、设置好迁移数据库(cd .. 返回上一级目录在manage.py mysite同级)
sudo python3 manage.py migrate
回车成功 后 启动测试服务命令如下:
sudo python3 manage.py runserver 0.0.0.0:80

    • -启动成功标志
      Django version 2.2,using settings 'mysite.settingsStarting development server at http: //0.0.0.0:80/Quit the server with CONTROL-C.

注意:(处理Error:The port is already in use)
查:ps aux|grep -i 'manage'
杀:sudo kill -9 23110(pid进程数字)

# # # # # #

配置Django项目至VSCode
在本地电脑desktop创建mysite文件夹使用vscode打开
CTRL+SHIFT+x打开插件市场搜索sftp安装并重启

CTRL+SHIFT+P打开sftp.json配置
{
"name": "mysite", # 项目名在VScode显示
"host": "120.56.19.98", # 远程服务器ip
"protocol": "sftp", # sftp
"port": 12345, # 端口
"username": "seve", # 登录服务器用户名
"privateKeyPath": "~/.ssh/sevefile", # 本地私钥文件目录的路径
"remotePath": "/home/www/root", # 远程服务器上项目的路径
"uploadOnSave": true, # 同步至远程服务器上
"ignore": [
".vscode",
".git",
".DS_Store",
"pycache",
], # 忽略的内容(同步至远程服务器上忽略的内容手动添加"pycache",)
"syncOption": {"delete": true}, # (同步删除至远程服务器上)
"watcher": {
"files": "**/*",
"autoUpload": true,
"autoDelete": true
}, # 本地和远程服务器上完全同步操作(无论新建和删除,小心误操作)风险提示!

}

# # # # # # #

一、安装uWSGI和nginx
第一步(安装uwsgi):
sudo pip3 install uwsgi
安装完成后创建链接

sudo ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi3

第二步(安装nginx):
sudo yum -y install nginx
上面在服务器端,下面回到本地操作vscode

      • 在目录下需要创建两个目录templates static 目录与mysite同级,(亦可此时创建uwsgi将来使用的)
      • 在远程服务器上www目录下创建一个目录collected_static 目录与root同级
        第三步(配置settings先导入import os模块):

DEBUG = False
TEMPLATES = [
'DIRS': [
os.path.join(BASE_DIR, 'templates'),
],
] # 在TEMPLATES项目

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

第三步(执行数据迁移【在服务器端cd /home/www/root下】):
sudo python3 manage.py collectstatic
exit
显示119 static files copied to ' /home/www/collected_static'.即迁移成功。

第四步(配置uwsgi.ini文件【在vscode的mysite下与另一个mysite同级】):

      • 再次在目录下需要创建一个目录uwsgi 目录与mysite同级
        新建 uesgi.ini并输入如下:
        [uwsgi]
        socket = 127.0.0.1:8000 # 此处在后面的nginx中也需对应为8000
        chdir = /home/www/root # 此处为服务器端项目路径
        module = mysite.wsgi # 项目下模块文件
        master = true
        processes = 1 # 1核 2线程
        threads = 2 # 1核 2线程
        max-requests = 2000 # 最大请求数
        chmod-socket = 664
        vacuum = true # 退出自动清空

stats = %(chdir)/uwsgi/uwsgi.stats # 状态路径文件
pidfile = %(chdir)/uwsgi/uwsgi.pid # 线程pid路径文件
daemonize = %(chdir)/uwsgi/uwsgi.log # 日志路径文件

第四步(配置nginx【在服务器端cd ~】
sudo vim /etc/nginx/nginx.conf
打开后编辑
首先删除一行 include /etc/nginx/conf.d/*.conf; # 此行删除

server {
listen 80;
server_name localhost;
charset utf-8;
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/root/】)

cd /home/www/root/
ls找到文件如下六个:
manage.py mysite static templates uwsgi uwsgi.ini
执行命令启动uwsgi如下:
[seve@learn root]$ sudo uwsgi3 --ini uwsgi.ini
出现[uwSGI] gettingINI configuration from uwsgi.ini表示启动成功。

进入cd uwsgi目录下查看,此时可以看到三个文件如下:
[seve@learn root]$ cd uwsgi
[seve@learn uwsgi]$ ls
uwsgi.log uwsgi.pid uwsgi.status
如果我们需要重新启动或关闭都需要使用uwsgi.pid文件

最后一步启动nginx命令如下:
[seve@learn uwsgi]$sudo systemctl start nginx
如果没有出现任何内容表示启动成功

现在可以在浏览器服务120.56.19.98
如果我们修改了视图函数views.py的内容,浏览器不能刷新,还需要服务器端重新启动uwsgi如下操作
[seve@learn ~]$ cd / home/www/ root/uwsgi
[seve@learn uwsgi]$ ls # 发现三个文件
uwsgi.log uwsgi.pid uwsgi.status
执行重新启动命令如下:
[seve@learn uwsgil$ sudo uwsgi3 --reload uwsgi.pid

posted @ 2021-11-05 18:53  zechariah1  阅读(162)  评论(0编辑  收藏  举报