📌

WJ_Project1:武甲项目部署

系统部署

1. 安装

1.1 安装虚拟机

  • mongodb
  • Nginx
  • uWSGI
    • sudo apt-get install mongodb sudo apt-get install nginx sudo pip3 install uwsgi sudo pip3 install virtualenv
  • 报错:sudo: pip3: command not found,安装pip3
    • sudo apt-get install python3-pip

2. 拉取项目

  • /usr/local目录下,新建wjproject_docker文件夹
# 新建文件夹 mkdir wjproject_docker # 切换到拉取项目 git clone https://gitee.com/genghenggao/wjproject_env.git # 没有git,安装 apt install git # wjproject_docker目录下运行 virtualenv wjproject_env # 切换目录wjproject_env,运行虚拟环境 source bin/activate pip install -r requirements.txt

3. 配置信息

  • 安装Vim
sudo apt install vim
  • settings.py
    • # 打开端口号 # DEBUG = True # ALLOWED_HOSTS = ['*', ] # 允许所有的IP可以访问 DEBUG = False ALLOWED_HOSTS = ['127.0.0.1', '39.105.175.144', "www.genghenggao.top","genghenggao.top"]
  • local_settings.py
    • 修改SIMPLEUI_INDEX
    • ''' Description: henggao_learning version: v1.0.0 Author: henggao Date: 2021-07-06 15:54:31 LastEditors: henggao LastEditTime: 2021-07-31 10:21:47 ''' from mongoengine import connect LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai' USE_TZ = False # 连接mongodb中数据库名称 connect(alias='default', db='wjproject',        host='127.0.0.1', port=27017) connect(alias='wjdataform', db='dataform',        host='127.0.0.1', port=27017) # 去admin后台掉默认Logo或换成自己Logo链接 # SIMPLEUI_LOGO = 'http://39.105.175.144/media/logo.png' SIMPLEUI_LOGO = 'https://img2020.cnblogs.com/blog/1389175/202107/1389175-20210730211819913-1178460802.png' # 隐藏右侧SimpleUI广告链接和使用分析 SIMPLEUI_HOME_INFO = False SIMPLEUI_ANALYSIS = False # 修改左侧菜单首页设置 # SIMPLEUI_HOME_PAGE = 'https://cn.bing.com/' # 指向页面 # SIMPLEUI_HOME_TITLE = 'Bing搜索' # 首页标题 # SIMPLEUI_HOME_ICON = 'fa fa-code' # 首页图标 # 修改首页设置, 指向新创建的控制面板 # 设置右上角Home图标跳转链接,会以另外一个窗口打开 SIMPLEUI_INDEX = 'http://192.168.197.1:80/' SIMPLEUI_HOME_PAGE = '/api/tasks/userstatistics/' SIMPLEUI_HOME_TITLE = '控制面板' SIMPLEUI_HOME_ICON = 'fa fa-eye' # 设置默认主题,指向主题css文件名。Admin Lte风格 # SIMPLEUI_DEFAULT_THEME = 'admin.lte.css' # 设置默认主题,指向主题css文件名。Element-ui风格 # SIMPLEUI_DEFAULT_THEME = 'element.css' # 设置默认主题,指向主题css文件名。layui风格 # SIMPLEUI_DEFAULT_THEME = 'layui.css' # 设置默认主题,指向主题css文件名。紫色风格 SIMPLEUI_DEFAULT_THEME = 'purple.css' SIMPLEUI_CONFIG = {    # 是否使用系统默认菜单,自定义菜单时建议关闭。    'system_keep': False,    # 用于菜单排序和过滤, 不填此字段为默认排序和全部显示。空列表[] 为全部不显示.    'menu_display': ['任务管理', '权限认证','友情链接'],    # 设置是否开启动态菜单, 默认为False. 如果开启, 则会在每次用户登陆时刷新展示菜单内容。    # 一般建议关闭。    'dynamic': False,    'menus': [       {            'app': 'auth',            'name': '权限认证',            'icon': 'fas fa-user-shield',            'models': [               {                    'name': '用户列表',                    'icon': 'fa fa-user',                    'url': 'auth/user/'               },               {                    'name': '用户组',                    'icon': 'fa fa-th-list',                    'url': 'auth/group/'               }           ]       },       {            'name': '任务管理',            'icon': 'fa fa-th-list',            'models': [               {                    'name': '任务列表',                    # 注意url按'/admin/应用名小写/模型名小写/'命名。                    'url': '/admin/wjproject_users/task/',                    'icon': 'fa fa-tasks'               },           ]       },       {            'name': '友情链接',            'icon': 'fa fa-th-list',            'models': [               {                    'name': 'Bing搜索',                    # 注意url按'/admin/应用名小写/模型名小写/'命名。                    'url': 'https://cn.bing.com/',                    'icon': 'fa fa-tasks'               },           ]       },   ] }

4. 前端项目

  • dist(新建wjproject_ui/dist)
    • mkdir wjproject_ui
  • 拷贝文件夹,首先是ctrl+alt+t 打开一个终端,运行命令
    • sudo nautilus
  • 传不了文件采用网盘下载
    • https://545c.com/f/30083950-507582109-fda3bd (访问密码:4160)
  • root下移动文件
    • sudo mv /home/henggao/Downloads/dist /usr/local/wjproject_docker/wjproject_env/wjproject_ui/

5. Django配置

  • 定义好模型之后,继续按照Django模型的使用方式,生成数据库迁移,并执行迁移:
    • python manage.py makemigrations python manage.py migrate
  • 运行测试服务器
    • python manage.py runserver
  • 查看浏览器
  • 创建超级用户,用来登录Django管理网站,进入虚拟目目录下,使用如下命令来进行创建
    • python manage.py createsuperuser
  • 收集静态文件
    • python manage.py collectstatic

6. 修改配置信息

  • 配置nginx
    • /etc/nginx/conf.d/wjproject.conf
      • cd /etc/nginx/conf.d touch wjproject.conf
    • 修改server_name
      • server_name 192.168.138.13010
      • server{   listen 80; server_name genghenggao.top www.genghenggao.top; # server_name 39.105.175.144; charset     utf-8; client_max_body_size 1024M; location /media {       expires 30d;       autoindex on;       add_header Cache-Control private;       alias /usr/local/wjproject_docker/wjproject_env/media/;   }   location /static {       expires 30d;       autoindex on;       add_header Cache-Control private;       alias /usr/local/wjproject_docker/wjproject_env/static/;   } location / { root /usr/local/wjproject_docker/wjproject_env/wjproject_ui/dist; index index.html; try_files $uri $uri/ /index.html; } location /api{ # 配置代理路径       proxy_pass http://127.0.0.1:8000/api;   } location /admin{ # 配置Django后台 proxy_pass http://127.0.0.1:8000/admin; } } # Django转发请求到Nginx:127.0.0.1:8000 server { listen 8000; server_name localhost 127.0.0.1; client_max_body_size 1024M; location / { include /etc/nginx/uwsgi_params;       uwsgi_pass 127.0.0.1:8002; } } server { # Vue端口 listen 8004; server_name genghenggao.top www.genghenggao.top; client_max_body_size 1024M; # server_name 39.105.175.144; location / { root /usr/local/wjproject_docker/wjproject_env/wjproject_ui/dist; index index.html; try_files $uri $uri/ /index.html; } # 配置代理路径 location /api{           proxy_pass http://127.0.0.1:8000/api;   } }

7. 启动

  • 在wjproject_env目录下,新建相关文件夹
    • logs
    • media
      • 三维地质模型.mp4
      • https://url50.ctfile.com/f/30083950-507592096-28c7b7 (访问密码:4160) # 移动下载好的文件 sudo mv /home/henggao/Downloads/三维地质模型.mp4 /usr/local/wjproject_docker/wjproject_env/media/
  • 启动nginx
# 启动nginx service nginx start # 重启nginx service nginx reload #停止 service nginx stop
  • 启动uWsgi,在wjproject_env目录下启动
# 启动 uwsgi --ini wjproject_uwsgi.ini # 启动检测文件!保证服务器临时文件检测 python3 monitor_tmp.py # 停止 uwsgi --stop logs/uwsgi.pid pkill -f uwsgi -9 #查看uwsgi端口号 ps -ef |grep uwsgi
  • 保持终端+虚拟机开启
  • monitor_tmp.py
    • #!/usr/bin/python3 import os import sys import time import datetime def delDir(dir, t=120):    # 获取文件夹下所有文件和文件夹    files = os.listdir(dir)    for file in files:        filePath = dir + "/" + file        # 判断是否是文件        if os.path.isfile(filePath):            # 最后一次修改的时间            last = int(os.stat(filePath).st_mtime)            # 上一次访问的时间            #last = int(os.stat(filePath).st_atime)            # 当前时间            now = int(time.time())            # 删除过期文件            if (now - last >= t):                os.remove(filePath)                print(filePath + " was removed!")        elif os.path.isdir(filePath):            # 如果是文件夹,继续遍历删除            delDir(filePath, t)            # 如果是空文件夹,删除空文件夹            if not os.listdir(filePath):                os.rmdir(filePath)                print(filePath + " was removed!") if __name__ == '__main__':    # 获取现在时间    now_time = datetime.datetime.now()    print(now_time)    # 获取明天时间    next_time = now_time + datetime.timedelta(days=+1)    next_year = next_time.date().year    next_month = next_time.date().month    next_day = next_time.date().day    # 获取明天3点时间    next_time = datetime.datetime.strptime(str(        next_year)+"-"+str(next_month)+"-"+str(next_day)+" 03:00:00", "%Y-%m-%d %H:%M:%S")    print(next_time)    # 获取距离明天3点时间,单位为秒    timer_start_time = (next_time - now_time).total_seconds()    print(timer_start_time)    # 获取路径    path = 'tem_data'    # 获取过期时间    # t = 20    t = 3600*24    # 获取定期清理时间    ts = timer_start_time    # ts = 20    while True:        delDir(path, t)        time.sleep(ts)

7.2 linux下 uwsgi开机自启动设置

方法一:

  • 这种方式会产生报错504,数据表加载不出来

1、找到uwsgi位置

whereis uwsgi
得到:/usr/local/bin/uwsgi

2.创建配置文件

cd /etc/systemd/system/ touch server_uwsgi.service vim server_uwsgi.service
写入以下:
[Unit] Description=HTTP Interface Server After=syslog.target [Service] KillSignal=SIGQUIT ExecStart=/usr/local/bin/uwsgi --ini /usr/local/wjproject_docker/wjproject_env/wjproject_uwsgi.ini #注意,重点:这个就是刚才第一步得到的uwsgi的路径,后面这个uwsgi.ini是你自己项目的路径(这行可以删掉) Restart=always Type=notify NotifyAccess=all StandardError=syslog [Install] WantedBy=multi-user.target

3.注意点

  • 如果uwsgi配置文件中配置了 daemonize=/path/uwsgi.log (uwsgi服务以守护进程运行) 会导致sytemctl启动时多次重启而导致启动失败 需改为 logto=/path/uwsgi.log
    • daemonize=/usr/local/wjproject_docker/wjproject_env/logs/uwsgi.log # 修改为 logto=/usr/local/wjproject_docker/wjproject_env/logs/uwsgi.log
  • 将该服务加入到systemd中
    • systemctl enable /etc/systemd/system/server_uwsgi.service
  • 通过systemctl来控制服务的启停
    • # 关闭uwsgi服务 systemctl stop server_uwsgi.service # 开启uwsgi服务 systemctl start server_uwsgi.service # 重启uwsgi服务 systemctl restart server_uwsgi.service

方法二

  • 下面这种方法试了,没起作用
  • 在/ etc/init.d/ 文件夹下创建一个shell脚本 起名字 uwsgi.sh添加如下内容
    • #!/bin/bash -e ### BEGIN INIT INFO # Provides:         adbd # Required-Start: # Required-Stop: # Default-Start: # Default-Stop: # Short-Description: # Description:       Linux ADB ### END INIT INFO uwsgi --ini /home/linaro/Documents/RMSWebManage/uwsgi.ini
  • 修改uwsgi.sh的文件权限
    • sudo chmod 755 uwsgi.sh
  • 添加到开机自动启动
    • sudo update-rc.d uwsgi.sh defaults 99

8. 其他

  • root启动VSCode
sudo code --user-data-dir="~/.vscode-root"
  • 关闭防火墙
systemctl stop firewalld.service systemctl disablefirewalld.service #永久移除

9. 一台电脑访问另一台电脑上的VMware

9.1 需求描述:

我有一台 win10的电脑 A,另一台 win10的电脑B,电脑B安装了VMware Workstation 并安装了Centos7的Linux系统。我想用A电脑用XShell连接到B电脑上VMware 的Centos7

9.2 配置过程

一、首先配置VMware的 “虚拟网络设置”。
notion image
二、“更改设置”
notion image
三、vm信息设置为“桥接模式”
notion image
四、设置vmware安装系统的网络模式
notion image
五、网络适配器-->网络链接 设置为 “桥接模式”
notion image
六、验证一下
6.1 在CentOS7上 ping www.baidu.com 看是否通
6.2 在电脑A ping CentOS7的ip 看是否通
6.3 电脑A 安装xshell测试能否能够连接上
我配置的过程很顺,如果不成功,看看centos的防火墙是否对22端口限制。
  • 查看防火墙
sudo ufw status
  • 系统提示: “Status: inactive”状态:不活跃
    • 上面提示表示没有开启防火墙,并不是没有安装防火墙
  • 如果防火墙活跃,开放22端口
    • sudo ufw allow 22
    • ref

FinalShell连接Windows主机中Ubuntu

1.虚拟机网络设置好,能正常连接网络
2.一般会安装ssh,如果没有,安装ssh:sudo apt-get install ssh;就直接使用该命令进行下载安装就可以了;
sudo apt-get install ssh
3.打开finalshell进行设置连接;