一、Linux操作记录&&常用指令备查

SSH登录使用

  1. 用户名密码方式登录
    ssh user@192.168.10.1
    #user - 需要登录的用户名
    #192.168.10.1 - 服务器地址,可以是ip也可以是域名
    
  2. 秘钥方式登录
    ssh -i xxx/xxx/key.pem user@192.168.10.1
    # xxx/xxx/key.pem - 为秘钥文件的路径
    # user - 要登录的用户名
    # 192.168.10.1 - 服务器地址,ip或域名
    

scp远程拷贝

  1. 使用用户名密码方式
    #格式:scp 源地址 目标地址
    scp -r /Desktop/fileDir/test.txt root@192.168.10.1:/user/data/download/test.txt
    # 操作符	->	scp -r -f等,依据情况使用
    # 源地址	->	拷贝的源文件 本地文件为原文件直接path就可以,远程文件为原文件 user@server_address:/path
    # 目标地址	->	要拷贝到的地址 同上
    
  2. 使用秘钥
    #格式:scp -i 秘钥地址 源地址 目标地址
    scp -i -r /temp/vps.pem /Desktop/fileDir/test.txt root@192.168.10.1:/user/data/download/test.txt
    # 操作符	->	scp -r -f等,依据情况使用
    # 源地址	->	拷贝的源文件 本地文件为原文件直接path就可以,远程文件为原文件 user@server_address:/path
    # 目标地址	->	要拷贝到的地址 同上
    

修改用户密码

  1. 初始化设置root密码

    大部分服务器初始化后是不开放root用户的,需要时候用默认用户登录,然后在切换至root账号设置密码

    sudo -i //切换到root权限
    passwd //设置root用户初始化密码
    
  2. root账号修改其他用户密码
    # 必须保证当前用户是root用户
    ##格式 passwd <username>	->	修改<username>用户的密码
    passwd user1
    
  3. 修改当前账号密码
    [beinan@localhost ~]$ passwd
    Changing password for user beinan. 注:更改beinan用户的密码;
    (current) UNIX password: 注:请输入当前密码;
    New UNIX password: 注:请输入新密码;
    Retype new UNIX password: 注:确认新密码;
    passwd: all authentication tokens updated successfully. 注:更改成功;
    

二、常用环境部署

服务功能搭建

  1. 整体服务器搭建架构思

drawing
  1. 搭建步骤

    • Linux 安装Docker
      • 确认是否已安装curl,如果未安装请执行安装

        ## 亚马逊 aws linux或Redhat系列
        yum update
        yum install curl
        
      • 安装Docker容器

        ## 亚马逊 aws Linux 镜像
        sudo yum install -y docker
        
      • 启动Docker,并设置Docker开机启动

        systemctl start docker ##启动docker
        systemctl enable docker ##允许开机启动
        
    • Docker下安装Nginx

      安装详见:https://blog.csdn.net/BThinker/article/details/123507820

      docker run -p 80:80 -p 443:443 --name nginx -v /media/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /media/docker/nginx/conf/conf.d:/etc/nginx/conf.d -v /media/docker/nginx/log:/var/log/nginx -v /media/docker/nginx/html:/usr/share/nginx/html -d nginx:latest
      

      Nginx 需要映射三个目录出来,分别为:conf、cong.d、html

      conf —— 基本上是Nginx本身的配置项,一般不用修改

      conf.d —— 该目录的default.config文件为Nginx做二级域名转发和https配置的主要文件

      html —— 该目录是Nginx默认的静态网站目录

    • Docker下安装portainer

      以下脚本可以一键安装 中文版Portainer;详见:https://github.com/eysp/public

      sh -c "$(curl -kfsSl https://gitee.com/expin/public/raw/master/onex86.sh)"
      

      部署成功后运行docker ps查看是否成功运行

      [root@ip-172-31-16-20 ~]# docker ps
      CONTAINER ID   IMAGE                    COMMAND        CREATED         STATUS         PORTS                                                           NAMES
       159c93b9f545   portainer/portainer-ce   "/portainer"   7 seconds ago   Up 5 seconds   8000/tcp, 9443/tcp, 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp   portainer
      [root@ip-172-31-16-20 ~]# 
      
    • Docker下安装 mysql

      参考其他容器部署方式,基本无难度

      docker run -d --name mysql --restart always -p 3306:3306 mysql:latest
      
    • Docker下安装 yapi容器

      详见:https://www.jianshu.com/p/a97d2efb23c5

      • 第一步:创建MongoDB容器

        # 创建存储卷
        docker volume create mongo-data
        
        # 启动 MongoDB
        docker run -d \
         --name mongodb \
         -v mongodb/data:/data/db \
         -e MONGO_INITDB_ROOT_USERNAME=user \
         -e MONGO_INITDB_ROOT_PASSWORD=password \
         mongodb
        
      • 第二步:配置Ypai的config.json文件

        {
           	 "plugins": [
            	    {
            	        "name": "add-user",
            			"options": {}
        			}
              ],
        		"adminAccount": "yapi-user",
         	"adminPassword": "yapi-user-pwd",
         	"closeRegister": false,
         	"db": {
        		    "servername": "db-server-addr",
        		    "port": 27017,
        		    "DATABASE": "yapi",
        		    "user": "db-user",
        		    "pass": "db-user-pwd",
        		   "authSource": "admin"
        	 },
        	 "mail": {
        		    "enable": true,
        		    "host": "smtp.163.com",
        		    "port": 465,
        		   "from": "xxxx@163.com",
        		    "auth": {
        	 	       "user": "xxxx@163.com",
        	 	       "pass": "email-pwd"
        		    }
         	 },
         	"ldapLogin": {
            	 "enable": false
         	 },
         	 "port": 3000
         }
        
    • 第三步:初始化Yapi数据库

      这里借用了registry.cn-hangzhou.aliyuncs.com/anoyi/yapi 镜像的install-server脚本来初始化数据库。

      docker run -it --rm \
        --link mongodb:mongo\
        --entrypoint npm \
        --workdir /yapi/vendors \
       -v xxx/config.json:/yapi/config.json \
        registry.cn-hangzhou.aliyuncs.com/anoyi/yapi \
        run install-server
      

      之后在命令行或者是Navicat 中查看数据库是否创建成功

    • 第四步:安装Yapi 数据库创建成功后,随便用哪个Yapi的Docker镜像基本都可以了,只需要将config.json文件映射的本地第二步中所创建的config.json文件即可。

      docker run -d --name yapi --restart always -p 3000:3000 -v 	/media/docker/yapi/config.json:/yapi/config.json 	jayfong/yapi:latest
      
  2. 配置Nginx代理

    1. 为什么需要Nginx:

      通过Nginx代理最终实现我们的构想:服务器只开放80和443端口,所有的其他服务均由Nginx 通过二级域名代理到具体的Docker容器中,https的证书也只需要在Nginx中配置即可。

    2. 配置Nginx容器映射出来的default.config文件

      ##Http Server
      server {
      	listen       80;
      	listen  [::]:80;
      	server_name  www.xxx.com xxx.com;
      	## 将http请求自动重定向到https
      	return 301 https://www.xxx.com$request_uri; 
      }
      ## Https 请求的配置
      server {
      	listen 443 ssl;
      	listen [::]:443;
      	## 可以响应的域名
      	server_name www.xxx.com xxx.com;
      	## 静态网页根目录
      	root /usr/share/nginx/html/;
      	index  index.html index.htm;
      		## 证书配置,需要申请好证书,放置到对应目录下
      	ssl_certificate      /etc/nginx/conf.d/crt/www.xxx.com/pem.pem;
      	ssl_certificate_key  /etc/nginx/conf.d/crt/www.xxx.com/key.key;
      
      	ssl_session_timeout 5m;
      	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
      	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      	ssl_prefer_server_ciphers on;
      
      	error_page   500 502 503 504  /50x.html;
      	location = /50x.html {
      	  root   /usr/share/nginx/html;
      	}
      }
      
      ##Portainer配置
      server {
      	listen 80;
      	listen [::]:80;
      	server_name docker.xxx.com;
      	return 301 https://docker.xxx.com;
      }
      
      server {
      	listen 443 ssl;
      	listen [::]:443;
      
      	server_name docker.xxx.com;
      
      	ssl_certificate /etc/nginx/conf.d/crt/docker.xxx.com/pem.pem;
      	ssl_certificate_key /etc/nginx/conf.d/crt/docker.xxx.com/key.key;
      	ssl_session_timeout 5m;
      	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
      	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      	ssl_prefer_server_ciphers on;
      
      	## Nginx代理转发配置
      	location / {
      	## 转发时的请求头带入处理
      		proxy_set_header HOST $host;
      		proxy_set_header X-Forwarded-Proto $scheme;
      		proxy_set_header X-Real-IP $remote_addr;
      		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      		root /usr/share/nginx/html;
      		index index.html index.htm;
      		## 要转发到的地址,这里是我们容器地址和端口转发到域名应该也可以
      		proxy_pass https://xxx.xxx.xxx.xxx:9000/;
      	}
      	error_page 500 502 503 504 /50x.html;
      	location = /50x.html{
      		root /usr/share/nginx/html;
      	}
      }
      
      ## PhpAdmin配置
      server {
      	listen 80;
      	listen [::]:80;
      	server_name db.xxx.com;
      	return 301 https://db.xxx.com;
      }
      
      server {
      	listen 443 ssl;
      	listen [::]:443;
      
      	server_name db.xxx.com;
      
      	ssl_certificate /etc/nginx/conf.d/crt/docker.xxx.com/pem.pem;
      	ssl_certificate_key /etc/nginx/conf.d/crt/docker.xxx.com/key.key;
      	ssl_session_timeout 5m;
      	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
      	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      	ssl_prefer_server_ciphers on;
      
      	location / {
      		proxy_set_header HOST $host;
      		proxy_set_header X-Forwarded-Proto $scheme;
      		proxy_set_header X-Real-IP $remote_addr;
      		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      		root /usr/share/nginx/html;
      		index index.html index.htm;
      		proxy_pass http://xxx.xxx.xxx.xxx:9080/;
      	}
      	error_page 500 502 503 504 /50x.html;
      	location = /50x.html{
      		root /usr/share/nginx/html;
      	}
      }
      
      ## Yapi配置
      server {
      	listen 80;
      	listen [::]:80;
      	server_name yapi.xxx.com;
      	return 301 https://yapi.xxx.com;
      }
      
      server {
      	listen 443 ssl;
      	listen [::]:443;
      
      	server_name yapi.xxx.com;
      
      	ssl_certificate /etc/nginx/conf.d/crt/yapi.xxx.com/pem.pem;
      	ssl_certificate_key /etc/nginx/conf.d/crt/yapi.xxx.com/key.key;
      	ssl_session_timeout 5m;
      	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
      	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      	ssl_prefer_server_ciphers on;
      
      	location / {
      		proxy_set_header HOST $host;
      		proxy_set_header X-Forwarded-Proto $scheme;
      		proxy_set_header X-Real-IP $remote_addr;
      		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      		root /usr/share/nginx/html;
      		index index.html index.htm;
      		proxy_pass http://xxx.xxx.xxx.xxx:3000/;
      	}
      	error_page 500 502 503 504 /50x.html;
      	location = /50x.html{
      		root /usr/share/nginx/html;
      	}
      }
      

      如果Nginx容器在运行中,修改完config.json文件后需要docker exec -it nginx /bin/sh 进入Nginx容器执行命令重新加载配置;当然,我这里使用了懒办法,直接 docker restart nginx 重启nginx容器也能生效。

V2ray搭建相关

其他相关

  • todo
文章作者: 嘿手大叔
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 i·Space
学习记录 服务器 Linux Docker
喜欢就支持一下吧
打赏
微信 微信
支付宝 支付宝