├── assets ├── image-20201101201910673.png ├── image-20201101202212755.png ├── image-20201101202301868.png ├── image-20201101202306119.png ├── image-20201101202410510.png ├── image-20201101203546587.png ├── image-20201101203637512.png ├── image-20201101203845494.png ├── image-20201101204010265.png ├── image-20201101204147279.png ├── image-20201101204248533.png ├── image-20201110171050954.png ├── image-20201110171139343.png ├── image-20201110171637285.png ├── image-20201110171655464.png ├── image-20201110171821533.png ├── image-20201110171927651.png ├── image-20201110175920002.png ├── image-20201110180037799.png ├── image-20201110180258892.png ├── image-20201110180927023.png ├── image-20201110181243682.png ├── image-20201110181640214.png ├── image-20201110181705101.png ├── image-20201110181826830.png └── image-20201110182259278.png ├── README.md ├── Linux-Connect-Server.md ├── LICENSE ├── Linux-Command.md ├── Linux笔记.md ├── Docker.md ├── Deploy.md └── Linux-Software.md /assets/image-20201101201910673.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Duanzihuang/linux-tutorial/HEAD/assets/image-20201101201910673.png -------------------------------------------------------------------------------- /assets/image-20201101202212755.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Duanzihuang/linux-tutorial/HEAD/assets/image-20201101202212755.png -------------------------------------------------------------------------------- /assets/image-20201101202301868.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Duanzihuang/linux-tutorial/HEAD/assets/image-20201101202301868.png -------------------------------------------------------------------------------- /assets/image-20201101202306119.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Duanzihuang/linux-tutorial/HEAD/assets/image-20201101202306119.png -------------------------------------------------------------------------------- /assets/image-20201101202410510.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Duanzihuang/linux-tutorial/HEAD/assets/image-20201101202410510.png -------------------------------------------------------------------------------- /assets/image-20201101203546587.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Duanzihuang/linux-tutorial/HEAD/assets/image-20201101203546587.png -------------------------------------------------------------------------------- /assets/image-20201101203637512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Duanzihuang/linux-tutorial/HEAD/assets/image-20201101203637512.png -------------------------------------------------------------------------------- /assets/image-20201101203845494.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Duanzihuang/linux-tutorial/HEAD/assets/image-20201101203845494.png -------------------------------------------------------------------------------- /assets/image-20201101204010265.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Duanzihuang/linux-tutorial/HEAD/assets/image-20201101204010265.png -------------------------------------------------------------------------------- /assets/image-20201101204147279.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Duanzihuang/linux-tutorial/HEAD/assets/image-20201101204147279.png -------------------------------------------------------------------------------- /assets/image-20201101204248533.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Duanzihuang/linux-tutorial/HEAD/assets/image-20201101204248533.png -------------------------------------------------------------------------------- /assets/image-20201110171050954.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Duanzihuang/linux-tutorial/HEAD/assets/image-20201110171050954.png -------------------------------------------------------------------------------- /assets/image-20201110171139343.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Duanzihuang/linux-tutorial/HEAD/assets/image-20201110171139343.png -------------------------------------------------------------------------------- /assets/image-20201110171637285.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Duanzihuang/linux-tutorial/HEAD/assets/image-20201110171637285.png -------------------------------------------------------------------------------- /assets/image-20201110171655464.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Duanzihuang/linux-tutorial/HEAD/assets/image-20201110171655464.png -------------------------------------------------------------------------------- /assets/image-20201110171821533.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Duanzihuang/linux-tutorial/HEAD/assets/image-20201110171821533.png -------------------------------------------------------------------------------- /assets/image-20201110171927651.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Duanzihuang/linux-tutorial/HEAD/assets/image-20201110171927651.png -------------------------------------------------------------------------------- /assets/image-20201110175920002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Duanzihuang/linux-tutorial/HEAD/assets/image-20201110175920002.png -------------------------------------------------------------------------------- /assets/image-20201110180037799.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Duanzihuang/linux-tutorial/HEAD/assets/image-20201110180037799.png -------------------------------------------------------------------------------- /assets/image-20201110180258892.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Duanzihuang/linux-tutorial/HEAD/assets/image-20201110180258892.png -------------------------------------------------------------------------------- /assets/image-20201110180927023.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Duanzihuang/linux-tutorial/HEAD/assets/image-20201110180927023.png -------------------------------------------------------------------------------- /assets/image-20201110181243682.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Duanzihuang/linux-tutorial/HEAD/assets/image-20201110181243682.png -------------------------------------------------------------------------------- /assets/image-20201110181640214.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Duanzihuang/linux-tutorial/HEAD/assets/image-20201110181640214.png -------------------------------------------------------------------------------- /assets/image-20201110181705101.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Duanzihuang/linux-tutorial/HEAD/assets/image-20201110181705101.png -------------------------------------------------------------------------------- /assets/image-20201110181826830.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Duanzihuang/linux-tutorial/HEAD/assets/image-20201110181826830.png -------------------------------------------------------------------------------- /assets/image-20201110182259278.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Duanzihuang/linux-tutorial/HEAD/assets/image-20201110182259278.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # linux-tutorial 2 | > 相关链接 3 | 4 | Linux之连接到阿里云CentOS服务器:https://github.com/Duanzihuang/linux-tutorial/blob/master/Linux-Connect-Server.md 5 | 6 | Linux常用命令:https://github.com/Duanzihuang/linux-tutorial/blob/master/Linux-Command.md 7 | 8 | Linux之常用软件安装:https://github.com/Duanzihuang/linux-tutorial/blob/master/Linux-Software.md 9 | 10 | Docker:https://github.com/Duanzihuang/linux-tutorial/blob/master/Docker.md 11 | 12 | 前端项目部署:https://github.com/Duanzihuang/linux-tutorial/blob/master/Deploy.md -------------------------------------------------------------------------------- /Linux-Connect-Server.md: -------------------------------------------------------------------------------- 1 | # Linux 之连接到阿里云CentOS服务器 2 | 3 | ### 使用SSH免密登录 4 | 5 | ``` 6 | # 在自己的Windows或是Mac电脑上生成一对RSA公私钥【参考GitHub生成公私钥】 7 | 参考地址:https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/ 8 | 9 | # 输入如下指令,然后一路回车 10 | ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 11 | 12 | # 将公钥上传到CentOS的 /root/.ssh目录下,可借助FileZilla这个工具 13 | 14 | # 将公钥中的内容拷贝到 authorized_keys 里面,如果没有该文件则创建 15 | touch authorized_keys # 如果没有authorized_keys这个文件,则创建 16 | cat id_rsa.pub >> authorized_keys # 把公钥文件(id_rsa.pub)中的内容拷贝到authorized_keys中 17 | 18 | # 打开Git Bash,使用如下指令进行免密登录 19 | ssh root@你的阿里云服务器地址 20 | 21 | 注意:第一次的时候,你还是需要输入密码才能登录的,等配置好了免密登录之后,就可以实现免密登录了 22 | ``` 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 段子黄 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Linux-Command.md: -------------------------------------------------------------------------------- 1 | ## Linux 常用命令 2 | 3 | ### 一、文件及文件夹操作 4 | 5 | ```bash 6 | # 创建文件夹 7 | mkdir 文件夹名称 8 | 9 | # 删除文件夹 10 | rm -f 文件夹名称 11 | 12 | # 重命名文件夹 13 | mv 旧文件夹名 新文件夹名 14 | 15 | # 解压文件 16 | tar -xf node-v8.11.4-linux-x64.tar 17 | tar -xvf xxx.tar.gz 18 | 19 | # 解压zip包(需要安装zip/unzip yum -y install zip) 20 | unzip mydata.zip -d mydatabak 21 | ``` 22 | 23 | ### 二、执行文件操作 24 | 25 | ```bash 26 | # 创建快捷方式(以node为例) 27 | ln -s ~/node-v8.11.4-linux-x64/bin/node /usr/bin/node 28 | 29 | # 查找文件所在位置 30 | whereis nginx.conf 31 | 32 | # 拷贝文件 33 | cp 源文件(source) 目标文件(destination) 34 | 35 | # 移动文件 36 | mv source destination 37 | 38 | # 删除文件 39 | rm -rf 文件名称 40 | 41 | # 更改文件 & 文件夹权限 42 | chmod 777 文件&文件夹名 43 | ``` 44 | 45 | ### 三、创建服务 46 | 47 | ```bash 48 | # 创建类似于httpd.service的服务 49 | vi /lib/systemd/system/mongodb.service 50 | ``` 51 | 52 | ### 四、进程相关 53 | 54 | ```bash 55 | # 查看所有进程 56 | ps -ef 57 | 58 | # 查看具体某个软件的进程 59 | ps -ef | grep nginx 60 | 61 | # 查看开放的端口号 62 | firewall-cmd --list-all 63 | 64 | # 设置开放的端口号 65 | firewall-cmd --add-service=http -permanent 66 | sudo firewall-cmd --add-port=80/tcp --permanent 67 | 68 | # 重启防火墙 69 | firewall-cmd --reload 70 | ``` 71 | 72 | ### 五、配置文件相关 73 | 74 | ```bash 75 | # 使配置文件生效 76 | source /etc/bashrc 77 | 78 | # 查看hosts文件 79 | cat/vim /etc/hosts 80 | ``` 81 | 82 | ### 六、硬件相关 83 | 84 | ```bash 85 | # 查看网卡等相关配置 86 | ifconfig 87 | 88 | # 查看绑定的虚拟ip 89 | ip a 90 | ``` 91 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /Linux笔记.md: -------------------------------------------------------------------------------- 1 | # 安装软件 2 | 3 | ## yum 4 | Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora 5 | 和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管 6 | 理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依 7 | 赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下 8 | 载、安装。 9 | 10 | 参考:https://baike.baidu.com/item/yum/2835771?fr=aladdin 11 | 12 | ## 安装wget 13 | wget命令用来从指定的URL下载文件。wget非常稳定,它在带宽很窄 14 | 的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下 15 | 载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器 16 | 打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对 17 | 从那些限定了链接时间的服务器上下载大文件非常有用。 18 | 19 | 参考:http://man.linuxde.net/wget 20 | 21 | ## 安装NodeJS 22 | 参考:https://blog.csdn.net/xerysherryx/article/details/78920978 23 | 24 | ## 设置npm全局包的环境变量 25 | http://19911001.iteye.com/blog/2339410 26 | 27 | ## 安装mysql 28 | https://blog.csdn.net/z13615480737/article/details/78906598 29 | 30 | ## 执行sql语句 31 | https://blog.csdn.net/cx136295988/article/details/74188447 32 | 33 | ## 安装Apache 34 | https://blog.csdn.net/Metropolis_cn/article/details/71374594 35 | 36 | https://blog.csdn.net/qiandublog/article/details/52505791 37 | 38 | 开放80端口: 39 | iptables -I INPUT -p TCP --dport 80 -j ACCEPT 40 | 41 | 查看Apache状态: 42 | systemctl status httpd 43 | 44 | 启动Apache 45 | systemctl start httpd 46 | 47 | 重启Apache 48 | systemctl restart httpd 49 | 50 | Apache配置文件所在目录 51 | /etc/httpd/conf/httpd.conf 52 | 53 | Apache访问403错误解决 54 | https://www.cnblogs.com/starof/p/4685999.html 55 | 56 | ## 安装MongoDB 57 | https://www.cnblogs.com/web424/p/6928992.html 58 | 59 | https://www.cnblogs.com/acewhl/p/6638486.html 60 | 61 | mongodb操作 62 | http://www.cnblogs.com/zhoujinyi/p/4610050.html 63 | 64 | -------------------------------- 65 | 66 | # 拷贝代码到CentOS 67 | 68 | ## 搭建FTP服务器并且连接 69 | https://blog.csdn.net/qq_32786873/article/details/78730303 70 | -------------------------------------------------------------------------------- /Docker.md: -------------------------------------------------------------------------------- 1 | ## 基本概念 2 | 3 | > 什么是Docker 详细解释可以参考:https://my.oschina.net/jamesview/blog/2994112 4 | 5 | ``` 6 | 它是一个容器,把我们的代码、运行环境、配置文件、依赖的包等等,打包成为一个镜像,达到能快速移植的目的。 7 | 8 | docker是一个开源的软件部署解决方案; 9 | docker也是轻量级的应用容器框架; 10 | docker可以打包、发布、运行任何的应用。 11 | 12 | 核心思想:镜像(image)、容器(container)、仓库(repository) 13 | 镜像:类 14 | 容器:对象,在容器中运行我们的App 15 | 仓库:集中存放镜像文件的场所 16 | 17 | 关系:有镜像才能创建出容器 18 | 19 | 方便理解:高度浓缩版/袖珍版的Linux(除去了模拟硬件等一系列操作) 20 | ``` 21 | 22 | > 为什么要有Docker 23 | 24 | ``` 25 | 如果没有Docker,那么运维工程师的工作将非常的繁杂,特别是遇到集群部署的时候会非常痛苦。 26 | 除开操作系统不一样之外(可能开的同学用的是Window、Mac系统,运维同学用的是Linux系统),当进行集群部署的时候(部署很多台机器),使用传统的模式,运维同学得一台一台的安装所需要的环境(比如Tomcat、Nginx、Node、JDK等等)。这样的话工作会很繁琐。 27 | 如果使用Docker部署的话,只需要先创建一个Docker镜像,然后再集群部署的时候,把已经创建好的一个Docker镜像(当然里面已经安装好了各种部署需要的软件Tomcat、Node、JDK等),直接拷贝到各个机器上就可以轻松完成各项工作了,并且还可以保证部署的一致性。 28 | ``` 29 | 30 | ## 实战操作 31 | 32 | > Docker的下载、安装&配置 33 | 34 | ``` 35 | # CentOS 6.x 36 | yum install -y epel-release 37 | yum install -y docker-io 38 | 安装后的配置文件:/etc/sysconfig/docker 39 | 启动Docker后台服务:service docker start 40 | 验证是否OK:docker version 41 | 42 | # CentOS 7.x 43 | 参考:https://docs.docker.com/install/linux/docker-ce/centos/ 44 | sudo yum install docker-ce docker-ce-cli containerd.io 【ce是社区版】 45 | 启动Docker后台服务:sudo systemctl start docker / sudo systemctl restart docker 46 | 验证是否OK:docker version 47 | 48 | # 配置镜像加速 49 | 登录阿里云:https://cr.console.aliyun.com/cn-shenzhen/instances/mirrors 获取自己的镜像加速地址 50 | 并且选择 CentOS 按照指令进行配置 51 | 检测是否配置好了:ps -ef|grep docker 52 | 53 | # Hello World 54 | 55 | ``` 56 | 57 | > Docker常见命令 58 | 59 | ``` 60 | # 帮助命令 61 | docker version 62 | docker info 63 | docker --help 64 | 65 | # 镜像命令 66 | docker images 列出本地的镜像,选项 -a(列出所有) -q(只显示镜像ID) --digests(显示摘要信息) --no-trunc(显示镜像的完整信息) 67 | docker search nginx 选项 -s 30(点赞数大于30的) --no-trunc(显示镜像的完整信息,不要省略) 68 | docker pull nginx 选项 :版本 69 | docker rmi 删除某个镜像 选项 -f(强制删除) 70 | docker rmi -f $(docker images -qa) 71 | 72 | # 容器命令 73 | docker run -it 镜像的id/名字 选项 -i(交互) -t(伪终端) --name(指定容器的名字) -d(以守护进程方式启动) 74 | docker run -d 镜像的id/名字 以守护进程的方式启动 75 | docker run -d centos /bin/sh -c "while true;do echo hello girl;sleep 2;done" 76 | docker ps 列出当前所有运行的容器进程 选项 -l(查看上一次的容器) -a(所有的) -n 3(上三次显示的) -q(只显示容器编号) 77 | docker stop 容器id 78 | docker kill 容器id 79 | exit : 容器停止退出 80 | ctrl + p + q :容器不停止退出 81 | docker start 容器id 82 | docker restart 容器id 83 | docker rm 容器id 84 | docker rm -f $(docker ps -aq) 删除全部的容器 85 | docker logs -f -t --tail 容器id 86 | docker top 容器id 87 | docker inspect 容器id 查看容器的信息 88 | docker attach 容器id 重新进入之前停止的容器 89 | docker exec -t 容器id 指令... 重新打开容器并且运行指令 90 | docker cp 容器id:容器内路径 目的主机路径 91 | docker run -it -p 8888:8080 tomcat 开启tomcat容器,tomcat的端口是8080,访问需要使用8888 92 | docker commit -a="作者" -m="注释" 容器id itcast/mytomcat:1.2 根据容器id创建一个新的镜像 93 | ``` 94 | 95 | > Docker 相关概念 96 | 97 | ``` 98 | 数据容器卷 99 | 就是实现docker中的数据持久化用的 100 | 作用:容器的持久化、容器间继承 + 共享数据 101 | ``` 102 | 103 | ## Docker常用命令 104 | 105 | ``` 106 | docker build 107 | 108 | docker pull 109 | 110 | docker run 111 | ``` 112 | 113 | ## Docker相关命令 114 | 115 | ``` 116 | # 查看当前Linux内核版本 117 | uname -r 118 | 119 | # 查看当前Linux的版本 120 | cat /etc/redhat-release 121 | 122 | # 查看当前CentOS中的所有进程 123 | ps -ef 124 | 125 | # 查看Linux进程 126 | top 127 | 128 | # 删除文件 129 | rm -rf 文件名称 130 | ``` 131 | 132 | -------------------------------------------------------------------------------- /Deploy.md: -------------------------------------------------------------------------------- 1 | # 阿里云服务器搭建指南 2 | 3 | ## 购买 4 | 5 | 1. 打开购买链接:https://www.aliyun.com/1111/home?userCode=lgw8ufly 6 | ![image-20201101201910673](assets/image-20201101201910673.png) 7 | 8 | 2. 点击立即购买,打开购买页面 9 | 10 | ![image-20201101202212755](assets/image-20201101202212755.png) 11 | 12 | 3. 确认购买 13 | 14 | ![image-20201101202306119](assets/image-20201101202306119.png) 15 | 16 | 4. 支付 17 | 18 | ![image-20201101202410510](assets/image-20201101202410510.png) 19 | 20 | ## 启动云服务器 21 | 22 | 步骤: 23 | 24 | 1. 登录进入阿里云 25 | 26 | ![image-20201101203546587](assets/image-20201101203546587.png) 27 | 28 | 2. 进入控制台 29 | 30 | ![image-20201101203637512](assets/image-20201101203637512.png) 31 | 32 | 3. 点击进入云服务器ESC 33 | ![image-20201101203845494](assets/image-20201101203845494.png) 34 | 35 | 4. 点击进行实例 36 | 37 | ![image-20201101204010265](assets/image-20201101204010265.png) 38 | 39 | 5. 可以查看到你购买的实例列表 40 | 41 | ![image-20201101204147279](assets/image-20201101204147279.png) 42 | 43 | 6. 点击更多,启动某个实例,那么服务器就启动成功了 44 | 45 | ![image-20201101204248533](assets/image-20201101204248533.png) 46 | 47 | 7. 重置下实例的连接密码,并且重启实例 48 | 49 | ![image-20201110171637285](assets/image-20201110171637285.png) 50 | 51 | ![image-20201110171655464](assets/image-20201110171655464.png) 52 | 53 | ## 使用Git Bash连接到阿里云服务器 54 | 55 | 1. 打开`git bash`终端,里面输入`ssh root@你的阿里云公网IP地址`,按回车 56 | 57 | ![image-20201110171050954](assets/image-20201110171050954.png) 58 | 59 | 2. 是否继续连接那里,选择`yes`,如果没有出现这一步,可以选择忽略 60 | 61 | ![image-20201110171139343](assets/image-20201110171139343.png) 62 | 63 | 3. 输入阿里云实例的密码,进行连接 64 | 65 | ![image-20201110171821533](assets/image-20201110171821533.png) 66 | 67 | 4. 连接成功之后,将有如下提示 68 | 69 | ![image-20201110171927651](assets/image-20201110171927651.png) 70 | 71 | ## 安装Nginx 72 | 73 | 目的:为了运行我们自己打包好的前端代码 74 | 75 | 安装步骤:(在终端中按照如下指令进行输入,按回车即可) 76 | 77 | 1. 下载&编译&安装 78 | ```bash 79 | # 下载压缩包 80 | wget http://nginx.org/download/nginx-1.11.13.tar.gz 81 | 82 | # 解压 83 | tar -zxvf nginx-1.11.13.tar.gz 84 | cd nginx-1.11.13 85 | 86 | # 编译安装 87 | 注意:在安装之前首先检查一下是否已安装nginx的一些模块依赖的lib库,诸如g++、gcc、pcre-devel、openssl-devel和zlib-devel。所以下面这些命令最好挨个跑一遍,已安装的会提示不用安装,未安装或需要更新的则会执行安装及更新: 88 | 89 | yum -y install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel --setopt=protected_multilib=false 90 | 91 | # 切换到nginx目录下,安装完依赖后下面就可以放心开始安装nginx了,输入安装命令并指定安装路径 92 | ./configure --prefix=/usr/local/nginx 93 | 94 | # 通过make以及make install进行编译安装 95 | make && make install 96 | 97 | # 启动 98 | /usr/local/nginx/sbin/nginx 99 | 100 | # 杀掉nginx进程 101 | killall -9 nginx 102 | ``` 103 | 104 | 2. 把Nginx做成服务 105 | 106 | ```bash 107 | # 新建nginx.service 108 | vim /lib/systemd/system/nginx.service 109 | 110 | # 在nginx.service中添加如下代码 111 | [Unit] 112 | Description=The nginx HTTP and reverse proxy server 113 | After=syslog.target network.target remote-fs.target nss-lookup.target 114 | 115 | [Service] 116 | Type=forking 117 | PIDFile=/usr/local/nginx/logs/nginx.pid 118 | ExecStartPre=/usr/local/nginx/sbin/nginx -t 119 | ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 120 | ExecReload=/bin/kill -s HUP $MAINPID 121 | ExecStop=/bin/kill -s QUIT $MAINPID 122 | PrivateTmp=true 123 | 124 | [Install] 125 | WantedBy=multi-user.target 126 | 127 | # 更改nginx.service的权限并让其可用 128 | chmod 745 nginx.service 129 | systemctl enable nginx.service 130 | 131 | # 查看nginx状态 132 | systemctl status nginx.service 133 | 134 | # 启动 135 | systemctl start nginx.service 136 | 137 | # 停止 138 | systemctl stop nginx.service 139 | 140 | # 重新启动 141 | systemctl reload nginx.service 142 | ``` 143 | 144 | 3. 配置Nginx 145 | 146 | ```bash 147 | # 更改nginx端口号 & 运行文件夹 148 | 149 | # 首先找到配置文件在哪 150 | whereis nginx.conf 151 | cd /usr/local/nginx 152 | vim /usr/local/nginx/conf/nginx.conf 153 | 154 | # 修改如下地方 155 | server { 156 | listen 8080; # 端口号更改这里 157 | server_name localhost; 158 | 159 | #charset koi8-r; 160 | 161 | #access_log logs/host.access.log main; 162 | 163 | location / { 164 | root /ftp/nginx; # 运行文件夹所在位置 165 | index index.html index.htm; 166 | } 167 | } 168 | ``` 169 | 170 | 注意: 171 | 172 | 因为上面配置Nginx的时候,有设置root所在的文件夹,所以需要事先创建`ftp`和`nginx`文件夹 173 | 174 | ```bash 175 | # 切换到服务器根目录 176 | cd / 177 | 178 | # 创建ftp文件夹 179 | mkdir ftp 180 | 181 | # 切换到ftp,创建nginx文件夹 182 | cd ftp 183 | mkdir nginx 184 | ``` 185 | 186 | ## 安装FTP服务端和FTP客户端 187 | 188 | 目的:为了能把自己windows上面打包好的前端代码发布到服务器上面去 189 | 190 | 安装FTP服务端及配置 191 | 192 | 1. 安装VSFTP 193 | 194 | ```bash 195 | # 安装 196 | yum install vsftpd 197 | ``` 198 | 199 | 2. 配置VSFTP 200 | 201 | ```bash 202 | # 打开配置 203 | vim /etc/vsftpd/vsftpd.conf 204 | 205 | # 更改配置 206 | 把 anonymous_enable=YES 设置为 anonymous_enable=NO 不允许匿名登录FTP 207 | 208 | # 下面的可以暂时不执行 209 | vi /etc/ssh/sshd_config 210 | 将Subsystem sftp /usr/libexec/openssh/sftp-server 211 | 212 | 改为Subsystem sftp internal-sftp 213 | ``` 214 | 215 | 3. 对VSFTP服务的各种操作 216 | 217 | ```bash 218 | # 启动VSFTP服务 219 | systemctl start vsftpd.service 220 | 221 | # 停止VSFTP服务【暂时不需要执行】 222 | systemctl stop vsftpd.service 223 | 224 | # 重启VSFTP服务【暂时不需要执行】 225 | systemctl restart vsftpd.service 226 | 227 | # 查看VSFTP状态【暂时不需要执行】 228 | systemctl status vsftpd.service 229 | 230 | # 开机自动启动VSFTP服务 231 | systemctl enable vsftpd.service 232 | 233 | # 取消开机自动启动VSFTP服务【暂时不需要执行】 234 | systemctl disable vsftpd.service 235 | ``` 236 | 237 | 4. 创建VSFTP用户及设置权限 238 | 239 | ```bash 240 | # 创建用户 /sbin/nologin:不允许此用户登录系统,但可以登录FTP 241 | useradd -d /ftp/WWW -s /sbin/nologin 你登录FTP的用户名 242 | 243 | # 设置用户密码 回车,输入密码即可(需输入两次) 244 | passwd 你登录FTP的用户名 245 | 246 | # 检查是否设置成功 247 | cat /etc/passwd 248 | ``` 249 | 250 | 安装FTP客户端,并且连接上FTP服务端 251 | 252 | 1. 在windows安装`FileZilla`这个软件 253 | 254 | ![image-20201110175920002](assets/image-20201110175920002.png) 255 | 256 | 2. 连接到阿里云服务器 257 | 258 | ![image-20201110180037799](assets/image-20201110180037799.png) 259 | 260 | ![image-20201110180258892](assets/image-20201110180258892.png) 261 | 262 | 263 | 264 | 3. 把前端代码拖入你要上传的服务器文件夹下 265 | 266 | ![image-20201110180927023](assets/image-20201110180927023.png) 267 | 268 | ![image-20201110181243682](assets/image-20201110181243682.png) 269 | 270 | ## 域名配置 & 运行 271 | 272 | 上面的步骤整好之后,我们启动nginx,就可以运行我们的项目了,如果你还购买了域名,可以进行下域名绑定 273 | 274 | ![image-20201110181640214](assets/image-20201110181640214.png) 275 | 276 | ![image-20201110181705101](assets/image-20201110181705101.png) 277 | 278 | ![image-20201110181826830](assets/image-20201110181826830.png) 279 | 280 | 最后,启动下nginx就可以查看效果了 281 | 282 | ```bash 283 | # 启动 284 | systemctl start nginx.service 285 | 286 | # 查看nginx的状态 287 | systemctl status nginx.service 288 | ``` 289 | 290 | nginx如果启动成功了,就可以在浏览中输入你的地址查看效果了 291 | 292 | ![image-20201110182259278](assets/image-20201110182259278.png) -------------------------------------------------------------------------------- /Linux-Software.md: -------------------------------------------------------------------------------- 1 | CentOS中安装Node、MySQL、Apache、VSFTP、MongoDB等软件 2 | 3 | ### 一、安装及配置Node环境 4 | 5 | #### 1、首先安装wget 6 | 7 | ``` 8 | yum install -y wget 9 | ``` 10 | 11 | #### 2、下载nodejs最新的bin包 12 | 13 | ``` 14 | wget https://nodejs.org/dist/v13.9.0/node-v13.9.0-linux-x64.tar.xz 15 | ``` 16 | 17 | #### 3、解压包 18 | 19 | ``` 20 | xz -d node-v13.9.0-linux-x64.tar.xz 21 | tar -xf node-v13.9.0-linux-x64.tar 22 | ``` 23 | 24 | ####4、部署bin文件(配置环境变量) 25 | 26 | ``` 27 | ln -s ~/node-v13.9.0-linux-x64/bin/node /usr/bin/node 28 | ln -s ~/node-v13.9.0-linux-x64/bin/npm /usr/bin/npm 29 | ``` 30 | 31 | 32 | 33 | ###二、安装MySQL及配置环境变量 34 | 35 | #### 1、下载并安装MySQL官方的 Yum Repository 36 | 37 | ``` 38 | # 安装用的Yum Repository 39 | wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 40 | 41 | # 直接yum安装 42 | yum -y install mysql57-community-release-el7-10.noarch.rpm 43 | 44 | # 开始安装MySQL服务器 45 | yum -y install mysql-community-server 46 | ``` 47 | 48 | #### 2、MySQL数据库设置 49 | 50 | ``` 51 | # 首先启动MySQL 52 | systemctl start mysqld.service 53 | 54 | # 查看MySQL运行状态 55 | systemctl status mysqld.service 56 | 57 | # 此时MySQL已经开始正常运行,不过要想进入MySQL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码 58 | grep "password" /var/log/mysqld.log 59 | 60 | # 进入数据库 61 | mysql -u root -p 62 | 63 | # 新密码设置的时候如果设置的过于简单会报错,可以通过如下指令更改密码策略,再设置密码 64 | set global validate_password_policy=0; 65 | set global validate_password_length=1; 66 | 67 | # 输入初始密码,此时不能做任何事情,因为MySQL默认必须修改密码之后才能操作数据库 68 | ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password'; 69 | 70 | # 此时还有一个问题,就是因为安装了Yum Repository,以后每次yum操作都会自动更新,需要把这个卸载掉 71 | yum -y remove mysql57-community-release-el7-10.noarch 72 | ``` 73 | 74 | #### 3、开启远程连接 75 | 76 | ``` 77 | # 在云主机上连接mysql 78 | mysql -u root -p #根据提示输入密码 79 | 80 | # 依次执行以下sql命令 81 | use mysql; #打开 mysql 数据库 82 | 83 | # 将host设置为%表示任何ip都能连接mysql,当然也可指定为某个特定ip 84 | update user set host='%' where user='root' and host='localhost'; 85 | flush privileges; #刷新权限表,使配置生效 86 | 87 | # 接下来就可以在windows上面使用图形化工具连接了 88 | ``` 89 | 90 | 91 | 92 | ### 三、安装Apache及配置环境变量 93 | 94 | #### 1、安装Apache服务程序(apache服务的软件包名称叫做httpd) 95 | 96 | ```javascript 97 | yum install httpd -y 98 | ``` 99 | 100 | #### 2、对Apache服务操作的一些指令 101 | 102 | ``` 103 | # 启动Apache服务 104 | systemctl start httpd.service 105 | 106 | # 关闭Apache服务【暂时不需要执行】 107 | systemctl stop httpd.service 108 | 109 | # 重启Apache服务【暂时不需要执行】 110 | systemctl restart httpd.service 111 | 112 | # 查看Apache服务状态【暂时不需要执行】 113 | systemctl status httpd.service 114 | 115 | # 把Apache服务做成开机自动启动 116 | systemctl enable httpd.service 117 | ``` 118 | 119 | #### 3、更改Apache默认配置 120 | 121 | ``` 122 | # 首先在项目根目录创建一个ftp/WWW文件夹 123 | cd / 124 | mkdir ftp 125 | mkdir WWW 126 | 127 | # 编辑默认配置 128 | sudo vim /etc/httpd/conf/httpd.conf 129 | 130 | # 更改站点根目录 131 | 修改地方1: DocumentRoot "/var/www/html" 改成 DocumentRoot "/ftp/WWW" 132 | 修改地方2: 改成 133 | ``` 134 | 135 | ### 四、安装VSFTP及配置 136 | 137 | #### 1、安装VSFTP 138 | 139 | ``` 140 | # 安装 141 | yum install vsftpd 142 | ``` 143 | 144 | #### 2、配置VSFTP 145 | 146 | ``` 147 | # 打开配置 148 | vim /etc/vsftpd/vsftpd.conf 149 | 150 | # 更改配置 151 | 把 anonymous_enable=YES 设置为 anonymous_enable=NO 不允许匿名登录FTP 152 | 153 | # 下面的可以暂时不执行 154 | vi /etc/ssh/sshd_config 155 | 将Subsystem sftp /usr/libexec/openssh/sftp-server 156 | 157 | 改为Subsystem sftp internal-sftp 158 | ``` 159 | 160 | #### 3、对VSFTP服务的各种操作 161 | 162 | ``` 163 | # 启动VSFTP服务 164 | systemctl start vsftpd.service 165 | 166 | # 停止VSFTP服务【暂时不需要执行】 167 | systemctl stop vsftpd.service 168 | 169 | # 重启VSFTP服务【暂时不需要执行】 170 | systemctl restart vsftpd.service 171 | 172 | # 查看VSFTP状态【暂时不需要执行】 173 | systemctl status vsftpd.service 174 | 175 | # 开机自动启动VSFTP服务 176 | systemctl enable vsftpd.service 177 | 178 | # 取消开机自动启动VSFTP服务【暂时不需要执行】 179 | systemctl disable vsftpd.service 180 | ``` 181 | 182 | #### 4、创建VSFTP用户及设置权限 183 | 184 | ``` 185 | # 创建用户 /sbin/nologin:不允许此用户登录系统,但可以登录FTP 186 | useradd -d /ftp/WWW -s /sbin/nologin 你登录FTP的用户名 187 | 188 | # 设置用户密码 回车,输入密码即可(需输入两次) 189 | passwd 你登录FTP的用户名 190 | 191 | # 检查是否设置成功 192 | cat /etc/passwd 193 | ``` 194 | 195 | ### 五、安装MongoDB及配置 196 | 197 | #### 1、下载及安装 198 | 199 | ```js 200 | # 下载 201 | wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.1.tgz 202 | 203 | # 解压 204 | tar -zxvf mongodb-linux-x86_64-rhel70-4.0.1.tgz 205 | 206 | # 重命名 207 | mv mongodb-linux-x86_64-rhel70-4.0.1 mongodb 208 | ``` 209 | 210 | #### 2、启动及配置 MongoDB 211 | 212 | ```js 213 | # 移动到 /usr/local目录下 214 | mv mongodb /usr/local 215 | 216 | # 设置环境变量 打开profile 217 | vim /etc/profile 218 | 219 | # 在 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL 上面添加下面命令 220 | export PATH=/usr/local/mongodb/bin:$PATH 221 | 222 | # 按esc 退出编辑 ,按 shift + : 输入wq保存 223 | 224 | # 验证 225 | 输入 mongo 出现版本号,表示配置成功 226 | 227 | ``` 228 | 229 | #### 3、设置成开机启动 230 | 231 | ```js 232 | # 在mongodb的bin目录下创建mongodb.conf,并且写上脚本 233 | touch mongodb.conf 234 | 235 | 写上下面的内容 236 | 237 | dbpath=/home/data/db 238 | logpath=/home/data/logs/mongodb.log 239 | logappend=true 240 | port=27017 241 | ``` 242 | 243 | ### 六、Nginx的安装及配置 244 | 245 | ####1、下载&编译&安装 246 | 247 | ```js 248 | # 下载压缩包 249 | wget http://nginx.org/download/nginx-1.11.13.tar.gz 250 | 251 | # 解压 252 | tar -zxvf nginx-1.11.13.tar.gz 253 | cd nginx-1.11.13 254 | 255 | # 编译安装 256 | 注意:在安装之前首先检查一下是否已安装nginx的一些模块依赖的lib库,诸如g++、gcc、pcre-devel、openssl-devel和zlib-devel。所以下面这些命令最好挨个跑一遍,已安装的会提示不用安装,未安装或需要更新的则会执行安装及更新: 257 | 258 | yum -y install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel --setopt=protected_multilib=false 259 | 260 | # 切换到nginx目录下,安装完依赖后下面就可以放心开始安装nginx了,输入安装命令并指定安装路径 261 | ./configure --prefix=/usr/local/nginx 262 | 263 | # 通过make以及make install进行编译安装 264 | make && make install 265 | 266 | # 启动 267 | /usr/local/nginx/sbin/nginx 268 | 269 | # 杀掉nginx进程 270 | killall -9 nginx 271 | 272 | ``` 273 | 274 | #### 2、把Nginx做成服务 275 | 276 | ```js 277 | # 新建nginx.service 278 | vim /lib/systemd/system/nginx.service 279 | 280 | # 在nginx.service中添加如下代码 281 | [Unit] 282 | Description=The nginx HTTP and reverse proxy server 283 | After=syslog.target network.target remote-fs.target nss-lookup.target 284 | 285 | [Service] 286 | Type=forking 287 | PIDFile=/usr/local/nginx/logs/nginx.pid 288 | ExecStartPre=/usr/local/nginx/sbin/nginx -t 289 | ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 290 | ExecReload=/bin/kill -s HUP $MAINPID 291 | ExecStop=/bin/kill -s QUIT $MAINPID 292 | PrivateTmp=true 293 | 294 | [Install] 295 | WantedBy=multi-user.target 296 | 297 | # 更改nginx.service的权限并让其可用 298 | chmod 745 nginx.service 299 | systemctl enable nginx.service 300 | 301 | # 查看nginx状态 302 | systemctl status nginx.service 303 | 304 | # 启动 305 | systemctl start nginx.service 306 | 307 | # 停止 308 | systemctl stop nginx.service 309 | 310 | # 重新启动 311 | systemctl reload nginx.service 312 | ``` 313 | 314 | #### 3、配置Nginx 315 | 316 | ```js 317 | # 更改nginx端口号 & 运行文件夹 318 | 319 | # 首先找到配置文件在哪 320 | whereis nginx.conf 321 | cd /usr/local/nginx 322 | vim /usr/local/nginx/conf/nginx.conf 323 | 324 | # 修改如下地方 325 | server { 326 | listen 8080; # 端口号更改这里 327 | server_name localhost; 328 | 329 | #charset koi8-r; 330 | 331 | #access_log logs/host.access.log main; 332 | 333 | location / { 334 | root /ftp/nginx; # 运行文件夹所在位置 335 | index index.html index.htm; 336 | } 337 | } 338 | ``` 339 | 340 | #### 4、Nginx其它 341 | 342 | ```js 343 | # nginx是什么,做什么事情 344 | Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器。 345 | 346 | # 正向代理 & 反向代理 347 | 正向代理:翻墙 348 | 反向代理:先把请求发送给Nginx,然后Nginx再把请求转发给其它服务器,比如Tomcat、Node等 349 | 350 | # 负载均衡 351 | 一台服务器不能搞定高并发,那么就多弄几台服务器,然后通过Nginx进行转发,把请求平均分配给其它服务器处理 352 | 353 | # 动静分离 354 | 动态资源(JSP、Servlet)放在Tomcat服务器中处理,并且提供访问 355 | 静态资源(HTML、CSS、JS)放在静态资源服务器中处理,并且提供访问 356 | 357 | # 高可用 358 | 一般会配置多台nginx,一台作为主的Nginx,其它作为备份的Nginx,一旦主的Nginx宕机了,备份的Nginx就开始完成工作 359 | 保证请求的持续可访问 360 | ``` 361 | 362 | #### 5、Nginx常用命令 & 配置文件 363 | 364 | ```js 365 | 前提:要想操作nginx,必须先进入nginx的sbin目录 cd /usr/local/nginx/sbin,并且命令都要以 `./nginx` 开头 366 | # 常用命令 367 | ./nginx -v 查看版本号 368 | ./nginx 启动nginx 369 | ./nginx -s stop 停止nginx 370 | ./nginx -s reload 重新加载配置文件 371 | 372 | # 配置文件 373 | 文件所在目录:/usr/local/nginx/conf/nginx.conf 374 | ``` 375 | 376 | #### 6、反向代理配置 377 | 378 | ```js 379 | 1、进入到nginx配置文件所在目录 380 | cd /usr/local/nginx/conf/ 381 | 382 | 2、使用 `vim` 开始编辑 `nginx.conf` 配置文件 383 | vim nginx.conf 384 | 385 | 3、更改 nginx.conf 中的配置代码 386 | server { 387 | listen 80; 388 | server_name localhost; 389 | 390 | location / { 391 | root /ftp/nginx; 392 | proxy_pass http://127.0.0.1:8081; 393 | index index.html index.htm; 394 | } 395 | } 396 | server { 397 | listen 443 ssl; 398 | server_name localhost; 399 | 400 | ssl_certificate /ftp/nginx/nginx_pem/www.huangjiangjun.top.pem; 401 | ssl_certificate_key /ftp/nginx/nginx_pem/www.huangjiangjun.top.key; 402 | 403 | ssl_session_cache shared:SSL:1m; 404 | ssl_session_timeout 5m; 405 | 406 | ssl_ciphers HIGH:!aNULL:!MD5; 407 | ssl_prefer_server_ciphers on; 408 | 409 | location / { 410 | root /ftp/nginx; 411 | proxy_pass https://127.0.0.1:8082; 412 | index index.html index.htm; 413 | } 414 | } 415 | 4、重新启动nginx.conf的配置文件【切换到nginx的sbin目录】 416 | ./nginx -s reload 417 | ``` 418 | 419 | #### 7、动静分离 420 | 421 | ```js 422 | vim nginx.conf 423 | 424 | http { 425 | server { 426 | listen 80; 427 | server_name localhost; 428 | 429 | location /www/ { 430 | root /statics/; 431 | index index.html index.htm; 432 | } 433 | 434 | location /images/ { 435 | root /statics/; 436 | autoindex on; 437 | } 438 | } 439 | } 440 | ``` 441 | 442 | #### 8、负载均衡 443 | 444 | ```js 445 | vim nginx.conf 446 | 447 | http { 448 | # 配置多个服务器,来处理并发请求,nginx会自动进行负载均衡调用 449 | upstreat myserver { 450 | # ip_hash 每个请求按访问ip的hash结果分配,这样每个访问固定访问一个后端服务器,可以解决Session的问题 451 | ip_hash; 452 | server 192.168.17.129:8080 weight=5; 453 | server 192.168.17.129:8081 weight=10; 454 | xxxx 455 | # fair 按后端服务器的响应时间来分配请求,响应时间短的优先分配 456 | fair 457 | } 458 | 459 | server { 460 | listen 80; 461 | server_name 192.168.17.129; 462 | 463 | location / { 464 | proxy_pass http://myserver; 465 | root html; 466 | index index.html index.htm; 467 | } 468 | } 469 | } 470 | ``` 471 | 472 | #### 9、高并发处理(高可用集群) 473 | 474 | ``` 475 | 步骤: 476 | 1、需要两台(多台)nginx 477 | 478 | 2、需要在每台nginx上面安装keepalived 479 | yum install keepalived -y 480 | 检测是否安装成功 481 | rpm -q -a keepalived 482 | 安装在了 etc 目录中,也可以cd到该目录查看 483 | cd /etc/keepalived 484 | 485 | 3、修改 keepalived.conf 配置文件 486 | 487 | 4、需要配置虚拟ip 488 | 489 | 5、把两台机器上面的nginx和keepalived都启动 490 | ./nginx 491 | systemctl start keepalived.service 可以通过查看进行看是否存在 ps -ef | grep keepalived 492 | ``` 493 | 494 | #### 10、Nginx运行原理解析 495 | 496 | ```bash 497 | # master & worker 498 | 启动nginx之后,会有一个master进程和多个worker进程,其中master负责指挥,worker负责干活 499 | 好处:①可以让Nginx轻松实现热部署 ./nginx -s reload、②每个worker都是独立的,不需要加锁,节省开销 500 | ps -ef | grep nginx # 查看nginx启动之后的进程 501 | 502 | # worker & client 503 | ``` 504 | 505 | 506 | 507 | --------------------------------------------------------------------------------