服务器Server
服务器 为客户端提供服务,一般来说服务器都具备承担响应服务请求、承担服务、保障服务的能力。以网络作为媒介,最大的特点就是强大的运算能力.服务器根据不同的服务类型,可分为应用程序服务器,Web服务器等.
根据体系结构 可分为非X86服务器和X86服务器.非X86服务器主要是指的采用RISC(极简指令集)或EPIC(并行指令代码)的处理器,采用UNIX和其它专用操作系统的服务器,主要有IBM公司的POWER和POWERPC处理器等,EPIC处理器主要是由Intel研发的安腾处理器等.稳定性好,性能强,多用于金融,电信等大企业核心系统中.X86服务器,采用CISC(复杂指令集)架构服务器,即PC服务器,使用Intel或Winodws操作系统等服务器,价格便宜,兼容性强,稳定性差,适合中小型企业.
厂家 国内有阿里云,腾讯云,华为云等,国外有微软云,谷歌云,亚马逊云等.
购买:阿里云学生计划.
Putty与FlashFTP:官网下载安装Putty,本地新建文件夹安装.
技术栈:Docker,Centos,Mysql,PHP,Thinkphp,HTML.CSS,JavaScript,Vue
Docker
开源的应用容器引擎,Linux容器的一种封装,也是linux容器解决方案之一.Docker可以为任何应用创建一个轻量级,可移植的容器,然后该容器可运行在任何安装有docker容器上.
具有可更快速的交付和部署,更高效的虚拟化,更轻松的迁移和扩展,更简单的管理.
部署docker环境
安装yum相关工具包
yum install -y yum-utils device-mapper-persistent-data lvm2
添加dokcer下载源,分别添加官方和阿里云下载节点
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum makecache fast
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
安装docker社区版
yum -y install docker-ce
更改镜像源为国内阿里云节点,并指定docker数据存储目录,注意手动创建daemon文件
mkdir -p /data/docker
mkdir -p /etc/docker
vim /etc/docker/daemon.conf
{
"registry-mirrors": ["https://registry.docker-cn.com"], "graph": "/data/docker"
}
启动docker并加入开机启动
systemctl start docker
systemctl enable docker
测试,下载hello-world镜像且运行
docker pull hello-world
docker run hello-world
Docker架构,目录与命令
架构
Docker采用C/S架构模式,使用远程API来管理和创建docker容器,Docker Client向Docker daemon发起请求,Docker daemon负责构建、运行和分发容器。Docker client也可以通过socket或REST API与远程的Docker daemon通信。
- Docker daemon:服务端程序,以后台的方式运行。负责创建、运行、监控容器,构建、存储镜像。
- Docker client:Docker客户端,通过命令行或其他工具使用Docker API与Docker daemon通信。
- Images:Docker镜像,用于创建docker容器的模板,我们通过镜像来创建docker容器。
- Container:Docker容器,是从镜像创建的运行实例,每一个容器都相当于一个虚拟的应用环境,通过容器来运行各式各样的应用。
- Registry:存放Docker镜像的仓库,分为公有仓库和私有仓库两种。
目录
Docker安装成功后,默认没有存储目录,启动时创建目录,查看目录ls -lh /data/docker/
- containerd目录里存放的是与daemon程序相关的数据。
- image和overlay2目录里存放的是与镜像相关的数据。每下载一个镜像,就会在这两个目录下生成此镜像对应的子目录与数据;每运行一个镜像,即通过镜像创建一个容器,这两个目录下也会生成相关子目录与数据信息。
- containers目录里存放的是容器相关的数据,每运行一个容器,就在这个目录下面生成一个容器Id对应的子目录与数据。
- tmp是临时文件存放目录。
- volumes与docker的数据卷相关,在此不进行扩展。
Docker命令
查看docker版本信息
docker -v #查看docker版本号
docker version #查看docker版本详细信息
查看docker系统信息
docker info
从镜像仓库查找镜像
docker search ubuntu #搜索包含ubuntu的镜像
下载镜像
docker pull ubuntu #下载ubuntu官方镜像
查看本地镜像
docker images
REPOSITORY:镜像名称,与镜像仓库上的名称一致
TAG:标记,下载的镜像默认会使用latest标记
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像占用磁盘空间大小
通过镜像创建并启动容器
以交互模式创建并启动一个容器 docker run --name ubuntu\_test -it ubuntu /bin/bash
参数说明
--name:为容器指定一个名称
-i:打开容器的标准输入,即以交互模式运行容器
-t:为容器分配一个伪终端
/bin/bash:表示运行bash shell,即运行命令行界面
以后台的方式创建并启动一个容器docker run --name ubuntu\_test1 -d ubuntu
使用-P参数将80端口映射到主机随机端口 docker run -P -d nginx:latest #例如容器上启动了nginx,端口号为80
使用-p参数指定映射端口,使用-v参数指定映射目录docker run -p 8081:80 -v /data\_test:/data -d nginx:latest
注:将容器的80端口映射到主机8081端口,将容器/data目录映射到主机/datatest目录
将容器的端口映射到主机指定IP的端口上docker run -p 192.168.2.226:8081:80 -d nginx:latest
查看容器信息
#查看所有容器
docker ps -a
#CONTAINER ID:容器ID
#IMAGE:属于哪个镜像
#COMMAND:运行的命令、脚本或其他指令
#CREATED:容器创建时间
#STATUS:运行状态及运行了多长时间
#PORTS:端口映射信息
#NAMES:容器名称
#查看运行中的容器
docker ps
#查看最近创建的3个容器
docker ps -n 3
#查看所有容器的ID#
docker ps -a -q
启动、停止、重启容器(可以指定容器ID,也可以指定容器名称)docker start 665b9b704983
启动之后STATUS会显示Up(运行)及运行了多长时间
docker stop 665b9b704983
docker restart ubuntu_test
删除容器
docker rm wizardly_albattani #不加参数只能删除已停止的容器
docker rm -f -v ubuntu_test #-f强制删除运行中的容器,-v删除与容器关联的数据卷
删除镜像
docker rmi ubuntu:latest
docker rmi -f ubuntu1:test #-f强制删除镜像,即使该镜像正被使用
杀掉一个运行中的容器 docker kill -s KILL ubuntu_test1 #-s "KILL" 表示向容器发送一个KILL信号
Docker安装Centos镜像
注意阿里云服务器要配置加速器:加速器
下载centos的最新镜像 docker pull centos
创建并启动容器 docker run -itd --privileged --name centos\_test -p 80:80 centos /usr/sbin/init
参数说明:
-itd:开启交互模式,分配一个伪终端,-d表示以后台方式运行
--privileged:使容器内的root拥有真正的root权限,可以看到很多host上的设备,甚至允许在容器中启动容器。
-p 80:80:将容器的80端口映射到宿主机(即本机)的80端口
/usr/sbin/init:启动init守护程序
登陆到此容器中 docker exec -it centos\_test /bin/bash
参数说明:
exec:进入到一个运行中的容器里
-i:保持STDIN 打开,即开启交互模式
-t:分配一个伪终端
此时命令行提示符已经改变,主机名变成了容器id
在容器中安装httpd服务 yum -y install httpd
在容器中启动httpd服务,并加入开机启动 systemctl start httpd systemctl enable httpd
退出容器 exit
确保本机没有装httpd服务rpm -qa | grep httpd systemctl status httpd
在本机查看80端口是否已监听 ss -lnt | grep 80
在本机上查看httpd进程信息 ps -ef |grep httpd
把修改过的容器制作成镜像
docker commit -a "xuad.com" -m "xuad httpd" 6f42b25c1f00 centos/httpd:test
参数说明:
-a:提交的镜像作者信息
-m:镜像的说明文字
6f42b25c1f00:容器ID
centos/httpd:test:镜像名称和标记信息
安装Apache服务器
查看 httpd 包是否可用 yum list | grep httpd
安装 Apache yum install httpd
配置 servername vi /etc/httpd/conf/httpd.conf 修改这行: ServerName localhost:80
启动 systemctl start httpd
如果启动失败 请注意错误信息 用 ps -aux | grep httpd 命令发现进程被占用 所以 kill -9 进程号 把 httpd 的进程杀干净 再启动.
设置开机启动 chkconfig httpd on
安装MySQL
安装 MySQL 源 yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
安装 MySQLyum install mysql-community-server
启动 MySQL systemctl start mysqld
获取密码 grep 'temporary password' /var/log/mysqld.log
得到这行 A temporary password is generated for root@localhost: Jqqskhz1Wr(? 冒号后面的就是密码
进入 MySQL mysql -uroot -p
修改密码 ALTER USER 'root'@'localhost' IDENTIFIED BY \*\*\*\*\*\*\*\*\*\* (密码请用引号包起来 注意 MySQL 的密码必须复杂 不复杂会报错)
开放远程访问权限 `use mysql;
update user set host = '%' where user = 'root';`
刷新权限 立即生效 flush privileges;
安装PHP7
由于 linux 的 yum 源不存在 php7.x,所以我们要更改 yum 源rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel\-release-latest-7.noarch.rpm rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic\-release.rpm
yum 安装 php72w 和各种拓展,选自己需要的即可yum -y install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-fpm php72w-gd php72w-mbstring php72w-mysqlnd php72w-opcache php72w-pdo php72w-xml
安装完成后,需要重启apache才能生效service httpd restart
新建测试
`<?php
echo "Hello World";
?>`
安装nginx服务器
安装 EPEL yum install epel-release
安装 Nginx yum install nginx
设置 Nginx 开机启动 systemctl enable nginx
出现 Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
启动 Nginx systemctl start nginx
检查 Nginx 的运行状态systemctl status nginx
然后会输出类型下面的内容
● nginx.service - The nginx HTTP and reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2018-03-12 16:12:48 UTC; 2s ago Process: 1677 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS) Process: 1675 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS) Process: 1673 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS) Main PID: 1680 (nginx) CGroup: /system.slice/nginx.service ├─1680 nginx: master process /usr/sbin/nginx └─1681 nginx: worker process
如果你的服务器开启了防火墙,则需要同时打开 80(HTTP)和 443(HTTPS)端口,通过下面的命令来打开这两个端口
sudo firewall-cmd --permanent --zone=public --add-service=http sudo firewall-cmd --permanent --zone=public --add-service=https sudo firewall-cmd --reload
配置firewalld防火墙允许80端口
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload
验证 Nginx 是否成功启动,打开网站.出现Welcome to nginx!
本地搭建服务器
- Nginx官网下载,解压放到本地文件夹.
- 打开文件nginx.conf文件 ,做出以下修改:
server {
# 启动后的端口
listen 8880;
# 启动时的地址
server_name localhost;
# 启动后,地址栏输入: localhost:8880, 默认会在html文件夹下找 index.html文件
location / {
root html;
index index.html;
}
# 404页面配置,页面同样在html文件夹中
error_page 404 /404.html;
location = /404.html {
root html;
}
# 其他错误码页面配置
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# 配置代理。由于项目是在本地起动的,而我们的request需要请求其他ip地址。如果你的request链接为localhost:8880/abc/login?name=12345,那么下面配的就是location /abc
location /api {
proxy_pass http://192.168.0.0:80;
}
# 一把前端不管用vue,还是react等框架,默认都是单页面的,如果你的项目是多页面的,则需要用到下面的配置。
# 因为此时你的浏览器的url不是localhost:8880/#/login,而是 localhost:8880/a.html/#/login
# 所以我们需要将路径中a.html指向具体的html文件夹中的文件,因为默认是index.html
location /a.html {
alias html;
index a.html;
}
location /b.html{
alias html;
index b.html;
}
}
- 将编译文件放入html文件夹里面
- 启动服务器 $start nginx 关闭 $nginx -s stop 浏览器打开localhost:7777 或者通过任务管理器关闭.
Nginx
一款轻量级的HTTP服务器,采用事件驱动的异步非阻塞处理方式框架,具有极好的IO性能,时常用于服务端的反向代理和负载均衡。
在CentOS上安装Nginx,先用yum进行安装必要程序#yum -y install gcc gcc-c++ autoconf pcre-devel make automake
#yum -y install wget httpd-tools vim
(1)查看Nginx的安装目录: #rpm -ql nginx
(2)新建文件夹,新建四个子文件夹app backup download work文件夹
(3)查看yum是否存在: #yum list | grep nginx
查看nginx配置文件的位置
1、如果没有指定prefix的话,默认应该在/usr/local/nginx/conf下
2、如果指定prefix的话,则find / | grep nginx.conf
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。