赞
踩
linux mint 19是基于ubuntu 18.04版本的
cat /etc/issue # 查看当前linux mint的版本
linux mint 19.03安装
我们将software sources下Mirrors换成国内源,这样速度会快些。可自由选择
sudo apt-get update
官网下载deb包 https://pinyin.sogou.com/linux,正常情况下,输入法依赖包没有安装全,直接安装会错误
先解决依赖问题:
sudo apt-get install -f # -f和--fix-broken一样
再直接安装deb包
sudo dpkg -i sougoupin... # 安装自己下载的deb包
fcitx configuration的input method,点击"+",去掉only show current language选项,将sougou添加进去
若列表显示空,先点击一下fcitx
若打不开GUI界面
sudo apt-get install fcitx-config-gtk
系统默认没有安装SSH服务,默认无法SSH远程登录的
sudo apt-get install openssh-server
sudo apt install redis-server
官网下载 https://www.mongodb.com/try/download/enterprise
安装
先将tgz包解压
tar -zxvf mongodb-linux-x86_64-ubuntu1804-4.4.14.tgz
将解压后的包移动到/usr/local/mongodb目录下
sudo mv mongodb-linux-x86_64-ubuntu1804-4.4.14 /usr/local/mongodb
在mongodb目录下,创建存储数据的data目录,logs目录,conf目录,mongodb.log文件,mongodb.conf文件
mkdir data
mkdir conf
mkdir logs
touch logs/mongodb.log
touch conf/mongodb.conf
编辑 conf/mongidb.conf 配置文件
#数据库路径 dbpath=/usr/local/mongodb/data #日志输出文件路径 logpath=/usr/local/mongodb/logs/mongodb.log #错误日志采用追加模式 logappend=true #启用日志文件,默认启用 journal=true #这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false quiet=true #端口号 默认为27017 port=27017 #允许远程访问 bind_ip=0.0.0.0 #开启子进程 fork=true #开启认证,必选先添加用户,先不开启(不用验证账号密码) # auth=true
启动mongodb服务
/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/conf/mongodb.conf
查看是否启动成功
netstat -lanp | grep "27017"
配置mongoDB数据库用户信息
/usr/local/mongodb/bin/mongo # 进入数据库
> use admin #切换数据库
> db.createUser({user:"root",pwd:"root",roles:[{role:"root",db:"admin"}]}) # 创建账号
> db.shutdownServer() # 关闭数据库服务
开启认证,需要账号密码。将conf/mongidb.conf文件最后一行打开
#开启认证,必选先添加用户,先不开启(不用验证账号密码)
auth=true
启动mongodb服务,即可以正常使用了。创建新用户或别的操作时直接使用robo3T图形化界面
/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/conf/mongodb.conf
备份与恢复工具下载
新版本mongoDB默认没有mongodump、mongorestore等工具
官网下载 https://www.mongodb.com/try/download/database-tools
选择Tools Boost productivity
选择MongoDB Database Tools
Version: 100.5.2 Platform: Ubuntu 18.04 x86_64 Package: tgz
点击Download下载
解压
tar -zxvf mongodb-database-tools-ubuntu1804-x86_64-100.5.2.tgz
将解压包下/bin目录的mongodump和mongorestore拷贝到//usr/local/mongodb/bin/下
cp mongodump /usr/local/mongodb/bin/
cp mongorestore /usr/local/mongodb/bin/
备份命令如下:
mongodump -h 114.100.57.203 -d turingOA -u fang -p gamma123 -o /home/fang
# -h: 需要备份的ip地址
# -d: 数据库名称
# -u: 用户名 -p: 密码
# -o: 导出的目录
恢复命令如下:
./mongorestore -h 127.0.0.1 -d test -u fang -p gamma123 /gamma/turingOA/
查看磁盘和分区信息
fdisk -l
查看磁盘是否时挂载上的
df -h
对磁盘进行分区操作
fdisk /dev/vdb # n => p => 回车 => 回车 => 回车 => w
partprobe # 同步分区表
mkfs.ext4 /dev/vdb # 格式化磁盘
mount /dev/vdb /mnt # 将vdb磁盘挂载到mnt下
df -h #查看挂载结果
echo /dev/vdb /mnt ext4 defaults 0 0 >> /etc/fstab # 写入fsck文件
mount -a # 加载/etc/fstab中文件
先添加软件源
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa # 若有错误则添加自己的key,如下
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5E64E954262C4500
sudo apt update
安装(版本1和2有区别的)
sudo apt-get install mosquitto
修改配置文件信息
Mosquitto升级到2.x版本后改变了监听器的策略,在2.x版本后没有配置监听器的情况下,只允许本地客户端(也就是localhost或127.0.0.0)的地址连接Mosquitto,在这种情况下是允许匿名连接,也就是说没有配置监听器时,你在mosquitto.conf配置的用户校验是无效的,要想解决很简单在mosquitto.conf配置监听器就行了。添加listener 1883就行了。版本1.x不用添加
注意区别:
pid_file /var/run/mosquitto.pid # 版本1.x才有
listener 1883 # 版本2.x才有
修改/etc/mosquitto/mosquitto.conf文件如下:
# Place your local configuration in /etc/mosquitto/conf.d/ # # A full description of the configuration file is at # /usr/share/doc/mosquitto/examples/mosquitto.conf.example # pid_file /var/run/mosquitto.pid 版本1.x才有 # 消息持久存储 persistence true persistence_location /var/lib/mosquitto/ # 日志文件 log_dest file /var/log/mosquitto/mosquitto.log # 其他配置 include_dir /etc/mosquitto/conf.d listener 1883 # 版本2.x才有 # 禁止匿名访问 allow_anonymous false # 认证配置 password_file /etc/mosquitto/pwfile # 权限配置 acl_file /etc/mosquitto/aclfile
认证配置文件,创建文件
touch /etc/mosquitto/pwfile
创建用户名和密码(用户名是自己取的,每个项目单独再取用户名),输入下面指令后会要求输入两次密码
mosquitto_passwd /etc/mosquitto/pwfile 用户名 # 例如用户名为 ESOP
创建权限配置文件
touch /etc/mosquitto/aclfile
按需求编辑自己的权限配置文件aclfile
# 用户ESOP只能发布以esop为前缀的主题,订阅以esop开头的主题.
# 若需要其他的直接接着添加即可
user ESOP
topic write esop/#
topic read esop/#
启动
mosquitto -c /etc/mosquitto/mosquitto.conf -d # -c:指定配置文件 -d:后台运行
查询启动指令
service mosquitto start # 启动
service mosquitto status # 状态
service mosquitto stop # 停止
先安装pip3
sudo apt install python3-pip
安装python3下的包
pip3 install tornado # tornado包 tornado-6.1
pip3 install redis # redis包 redis-4.3.1
pip3 install pymongo # mongoDB pymongo-4.1.1
安装python3下的mqtt包
pip3 install paho-mqtt # paho-mqtt-1.6.1
若出现ModuleNotFoundError: No module named ‘setuptools’,需要先安装一下setuptools
pip3 install setuptools # setuptools-59.6.0
直接安装方式简单,但用不了上传文件模块,需要用上传文件模块请直接源码安装方式
安装
sudo apt install nginx # 安装后默认启动状态
service nginx stop
service nginx start
service nginx status
配置
默认配置目录 /etc/nginx/
默认log日志目录 /var/log/nginx/
默认首页目录 /usr/share/nginx/html/
全局配置文件是/etc/nginx/nginx.conf,文件中有include /etc/nginx/conf.d/*.conf。它会加载所有/conf.d/目录下的.conf文件
在/conf.d目录下新建nginx.conf配置文件,并配置如下:
server {
listen 8080;
location / {
root /home/fang/ESOP/static;
index index.html;
}
}
# 因为80端口nginx默认使用了,若需要使用80端口。需要将/etc/nginx/nginx.conf全局配置文件下的 include /etc/nginx/sites-enabled/*; 屏蔽掉
nginx配置文件与导入
nginx -t # 查看nginx配置文件是否有错
nginx -s reload # 重新导入配置文件
安装参考文档
安装依赖包。
Nginx的功能是不同的模块组成,其中部分模块会使用pcre、zlib、OpenSSL等三方库,所以要先安装这些库。
安装PCRE库,PCRE库支持正则匹配,另外nginx rewrite规则依赖于正则匹配。
sudo apt-get install libpcre3 libpcre3-dev
# ——dev是指develop,libpcre3-dev用于PCRE二次开发,这也是编译Nginx所必须使用的。
安装zlib库,zlib库用于对HTTP包的数据做gzip格式的压缩以减少数据量,当nginx.conf中配置了gzip on时,必须使用zlib。
apt-get install zlib1g-dev
安装Openssl库,安全的SSL协议,也是支持MD5、SHA1等散列函数的库。
apt-get install openssl libssl-dev
开始安装
安装Nginx,地址 http://nginx.org/download/
或者直接下载安装
wget http://nginx.org/download/nginx-1.15.9.tar.gz
解压,并且进入解压目录
tar -zxvf nginx-1.15.9.tar.gz
cd nginx-1.15.9
运行配置,编译,安装:
./configure --prefix=/usr/local/nginx # 配置
make # 正常情况下不会有error
make install # 安装
启动
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf # 启动
ps -aux | grep nginx # 查看nginx是否启动了
为Nginx添加nginx_upload_module模块
nginx_upload_module模块最初的版本是十几年前的了,但是目前仍然才2.2版本,不清楚后续是否不在更新了,配置起来也有些麻烦。
官方给的2.2的包有各种问题和坑,建议直接下载给定https://github.com/winshining/nginx-upload-module, 感谢开源,你只要知道这个模块填平了打补丁、宏定义、手动创建目录的坑即可。
模块下载完成后,需要在configure中加入模块,并重新编译。仍然在nginx-1.15.9目录下:
./configure --prefix=/usr/local/nginx --add-module=../nginx_upload_module
./configure --prefix=/usr/local/nginx --add-module=../nginx_upload_module --with-http_ssl_module
编译,安装
make # 编译
make install # 安装
重启服务:
/usr/local/nginx/sbin/nginx/sbin/nginx -s reload
nginx_upload_module模块测试
将/usr/local/nginx/conf/nginx.conf内容修改成下面这样
user fang; worker_processes 4; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 8633; # 80 client_max_body_size 100m; location / { root /home/fang/ESOP/static; index index.html index.htm; } error_page 405 =200 @405; # Upload form should be submitted to this location location /upload { if ($request_method = 'GET'){ root html; } if ($request_method = 'POST'){ # Pass altered request body to this location upload_pass @test; # Store files to this directory # The directory is hashed, subdirectories 0 1 2 3 4 5 6 7 8 9 should exist upload_store /home/fang/ESOP/upload 1; # Allow uploaded files to be read only by user upload_store_access user:rw; # Set specified fields in request body upload_set_form_field "${upload_field_name}_name" $upload_file_name; upload_set_form_field "${upload_field_name}_content_type" $upload_content_type; upload_set_form_field "${upload_field_name}_path" $upload_tmp_path; # Inform backend about hash and size of a file upload_aggregate_form_field "${upload_field_name}_md5" $upload_file_md5; upload_aggregate_form_field "${upload_field_name}_size" $upload_file_size; upload_pass_form_field "^submit$|^description$"; upload_cleanup 400 404 499 500-505; } } # Pass altered request body to a backend location @test { #content_by_lua ngx.say("upload success!"); proxy_pass http://localhost:8888; # return 200; } } }
注意一下几点:
因为上传文件的用户默认是nobody,所以没有普通权限去读写操作,所以建议添加当前用户,第一行添加 user fang;,注意是电脑自己的用户名哦
第二行可以修改如下worker_processes 4;
访问文件时,修改成自己需要的访问目录 root /home/fang/ESOP/static;
临时存储目录根据自身需求修改 upload_store /home/fang/ESOP/upload 1;
需要在/ESOP/upload目录下新建 0-9 10个文件夹,并且权限均修改成777
mkdir -p ESOP/upload/{0..9}
chmod 777 {0..9}
若没有HTTP服务,proxy_pass http://localhost:8888;后需要添加return 200;
开启一个tornado的HTTP服务,端口号不要一样就行**proxy_pass http://localhost:8888;**用来接收文件传输成功的信息,以及后续处理。将临时文件直接mv到需要的文件夹。具体需求自行修改
# coding:utf-8 import tornado.ioloop, tornado.options import tornado.web, tornado.httpserver import time, datetime, os class Upload(tornado.web.RequestHandler): def post(self): self.set_header("Access-Control-Allow-Origin", "*") key = self.request.arguments.keys() print(key) file_path = self.request.arguments['file_path'] name = self.request.arguments['file_name'] size = self.request.arguments['file_size'] md5 = self.request.arguments['file_md5'] content_type = self.request.arguments['file_content_type'] path = file_path[0].decode() os.system("mv " + path + " /home/fang/ESOP/static/" + name[0].decode()) tornado.options.define("port", type=int, default=8888, help="fang") application = tornado.web.Application([ (r"/upload", Upload), ]) if __name__ == "__main__": tornado.options.parse_command_line() http_server = tornado.httpserver.HTTPServer(application) http_server.listen(tornado.options.options.port) tornado.ioloop.IOLoop.current().start()
上传文件夹的形式
python的requests模块
import requests
file = {'file': open('aa.md', 'rb')}
r = requests.post(url="http://127.0.0.1/upload", files=file)
print(r.status_code) # 状态码
postman
若出现404问题,是没加载成功,建议重启一下
在ubuntu 18中,没有/etc/rc.local文件了
新建并且更改权限
touch /etc/rc.local
chmod +x /etc/rc.local
rc.local文件内容如下
#!/bin/sh -e
/home/fang/start.sh
exit 0
开机自启动任务可以都放置到start.sh文件中,start.sh文件权限777
#!/bin/bash
/usr/local/nginx/sbin/nginx
su - fang -c "python3 /home/fang/Desktop/HttpServer.py"
su - fang -c "python3 /home/fang/Desktop/HttpServer.py" # 要有双引号,不然只会执行第一个单词
su - fang << EOF
python3 /home/fang/Desktop/HttpServer.py
EOF # 注意结束位置
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。