系统部署1. 安装1.1 安装虚拟机2. 拉取项目3. 配置信息4. 前端项目5. Django配置6. 修改配置信息7. 启动7.2 linux下 uwsgi开机自启动设置方法一:1、找到uwsgi位置2.创建配置文件3.注意点方法二8. 其他9. 一台电脑访问另一台电脑上的VMware9.1 需求描述:9.2 配置过程FinalShell连接Windows主机中Ubuntu
系统部署
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 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的 “虚拟网络设置”。
二、“更改设置”
三、vm信息设置为“桥接模式”
四、设置vmware安装系统的网络模式
五、网络适配器-->网络链接 设置为 “桥接模式”
六、验证一下
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
FinalShell连接Windows主机中Ubuntu
1.虚拟机网络设置好,能正常连接网络
2.一般会安装ssh,如果没有,安装ssh:
sudo apt-get install ssh
;就直接使用该命令进行下载安装就可以了;sudo apt-get install ssh
3.打开finalshell进行设置连接;