linux mint 19.03安装软件和环境

linux mint 19.03安装软件和环境

  • linux mint 19是基于ubuntu 18.04版本的

    cat /etc/issue   # 查看当前linux mint的版本
    linux mint 19.03安装
    
系统源的选择
  • 我们将software sources下Mirrors换成国内源,这样速度会快些。可自由选择

    • Main换成ustc源
    • Base换成aliyun源
    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
    
typora安装
  • 直接官网下载deb包安装即可 https://typoraio.cn/#linux
安装SSH服务
  • 系统默认没有安装SSH服务,默认无法SSH远程登录的

    sudo apt-get install openssh-server
    
redis安装
sudo apt install redis-server
MongoDB下载和安装
  • 官网下载 https://www.mongodb.com/try/download/enterprise

    • 选择on-premises MongoDB locally
    • 选择MongoDB Community Server
    • Version: 4.4.14 Platform: Ubuntu 18.04 Package: tgz
    • 点击Download下载
  • 安装

    • 先将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中文件
    
MQTT服务端mosquitto安装和环境配置
  • 先添加软件源

    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
      
      • 完成后用户名和密码自动写入pwfile文件中
    • 创建权限配置文件

      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  # 停止
    
安装使用python3下需要使用的包
  • 先安装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
      
nginx直接安装(使用不了上传文件模块)
  • 直接安装方式简单,但用不了上传文件模块,需要用上传文件模块请直接源码安装方式

  • 安装

    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源码安装(使用上传文件模块只能源码安装)
  • 安装参考文档

    • https://blog.csdn.net/jegbrother/article/details/88619991
    • https://blog.csdn.net/weixin_47980221/article/details/123516857
  • 安装依赖包。

    • 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
      
      • 如果提示OpenSSL library is not used,那么make的时候就会出现各种undefined错误,是因为没有启用NGX_OPENSSL宏。解决的办法是在编译时启用ngx_http_ssl_module,启用NGX_OPENSSL宏。如果你太衰了,还是编译不过,那么就直接下载Openssl源码,指定编译路径吧。
      ./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

            • postman上传后HTTP服务中名称对应不上,对应key自行修改
            • 选择form-data,KEY右边选择File,选择上传的文件。
        • 若出现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  # 注意结束位置
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值