1
0
forked from x/ContextOS
ContextOS/usr/wiki/lamp.md
2018-09-17 23:20:18 +08:00

7.3 KiB
Raw Blame History

《后端技术栈》简介

后端技术栈,是对后端服务器开发中所用到的技术进行组合,不断的优化框架结构与服务水平。

  • Linux
  • Nginx
  • Python 是一种脚本语言,
  • MySQL
  • Redis

基础入门

Linux

Linux系统的应用十分广泛有很多流行的桌面操作系统与移动操作系统尤其是在云计算的服务器领域和物联网的嵌入式设备中 因为有大量免费开源的软件可以自由的下载与使用尤其是有很多优秀的软件开发工具可以搭建起高效的开发与测试环境所以熟练掌握Linux是程序员必备的技能。

严格上意义上讲Linux只是一个系统内核没法直接使用还需要各种应用软件。 GNU是一个软件基金组织提供了各种各样免费开源的自由软件。 Debian就是把Linux内核与GNU软件打包成一个完整的操作系统并且提供了软件包管理工具可以很方便的下载各种应用软件。 Ubuntu在Debian的基础上提供了更加友好的桌面系统降低了使用难度。 Apache也是一个著名的软件基金组织赞助了一系列的开源软件尤其是服务器相关的软件所以推动了WEB繁荣发展。 Mozilla是一个软件社区开发了浏览器Firefox提供了一系列的Web技术与文档推动了WEB繁荣发展。

电脑端常见的操作系统是MacOSX与Windows。 所以使用Linux常用的方式有

  • 购买一个开发板,如树莓派开发板,提供了一整套完整的环境,可以制作各种电子设备,软硬件结合,更加有直观的成就感。
  • 租用一个云主机,如阿里云的服务器也很便宜,再申请一个域名与证书,就可以搭建一服务器,提供各种应用服务,也会很有成就感。
  • 本地安装虚拟机当然最主要的还是在自己电脑上安装一下可以选择各种虚拟机软件安装如VMWare或VirtualBox像应用软件一样安装操作系统。最近流行的Docker容器技术也可以尝试一下。

软件管理

Linux之所以这么流行就是因为有大量优秀的开源软件与免费软件可以自由的获取与使用。 apt是Debian的软件管理工具只需要一条命令即可下载所需的软件。 软件包,是开发人员将程序、文档、脚本、配置等相关打包在一起,方便软件的分发与部署。 软件源,是专门存放软件包的服务器,用户可以在线搜索、查看、下载各种软件包。 软件包之间会存在依赖关系使用apt下载软件包时会检测软件包的依赖关系自动下载并安装相关的软件包。

最常用的两条命令是update与install更新软件信息列表和安装软件包。 更新软件包信息列表,从软件源服务器上下载软件包的信息列表。安装软件时,会根据这些信息下载相关软件包。 需要经常更新一下。

$ sudo apt-get update

安装软件包只需输入软件包名就可以自动下载并安装相关软件。如下安装vim。

$ sudo apt-get install vim

当不知道软件包的完整名字时可以使用search命令如下搜索docker。

$ apt-cache search docker
  • 软件源 /etc/apt/sources.list
  • 软件包清单 /var/lib/apt/lists
  • 软件包缓存 /var/cache/apt/archives/
  • 更新软件源 apt-get update
  • 安装软件包 apt-get install
  • 卸载软件包 apt-get remove
  • 清空软件包 apt-get purge
  • 清理缓存包 apt-get clean
  • 清理无用包 apt-get autoclean
  • 搜索软件包 apt-cache search
  • 查看软件包 apt-cache show

帮助信息

Linux有大量的软件与工具每个软件都有自己的使用方法与参数。 一下子记住这么多信息是不可能的,所以需要快速找到相关的帮助信息。

最直接的帮助信息是软件自带,输入参数-h或是--help就可以查看参数列表及相关信息。如下查看命令ps的帮助信息。

$ ps --help

另外查看更详细的使用信息使用man命令。man手册使用交互式查看文档可以翻页可以搜索。

$ man ps

使用whatis可以查看命令的简要描述信息。

$ whatis ps

查看命令所在的文件。

$ which ps

当不知道命令的完整名字时,可以使用模糊搜索。

$ apropos nice

很多软件都有自己的官网,如果还需要更多的信息,可以去官网查阅在线的文档。

远程登录

很多时候运行环境并不在本机,需要去远程登录设备,如访问服务器,如连接开发板。 这时就会用到ssh工具ssh是security shell的简写提供加密通信的远程连接。可以远程执行各种命令传输文件等。

ssh参数指定所需要用户名与主机地址即可。

$ ssh shy@10.0.0.10

如果使用密码认证,每次都需要输入密码,很是麻烦,尤其是开发环境也在远程设备上,需要频繁的输入密码。 可以使用ssh-keygen命令生成密钥对使用密钥文件登录。

$ ssh-keygen

密钥生成后用ssh-copy-id命令将公钥上传到远程主机。下次再用ssh登录时就不用再输入密码了。

$ ssh-copy-id shy@10.0.0.10

有时候需要上传或是下载文件scp命令像cp命令一样简单可以直接在本机与远程主机传输文件。 与cp不同的是远程文件名前需要加上用户名与主机地址。

将远程主机的文件下载到本地。

$ scp shy@10.0.0.10:/home/shy/.vimrc vimrc

将本地文件上传到远程主机。

$ scp vimrc shy@10.0.0.10:/home/shy/.vimrc

当需传输更多文件时可以使用sftp命令交互式的访问远程目录。使用get下载文件put上传文件。

$ sftp shy@10.0.0.10
  • 私钥文件 ~/.ssh/id_rsa
  • 公钥文件 ~/.ssh/id_rsa.pub
  • 授权公钥 ~/.ssh/authorized_keys

本地化

  • locale

网络管理

  • hostname
  • /etc/hosts
  • /etc/resolv.conf

用户管理

  • /etc/passwd
  • /etc/shadow
  • /etc/group
  • /etc/shells
  • vipw
  • vigr
  • passwd
  • chsh
  • newgrp
  • id
  • addgroup
  • delgroup
  • groupmod
  • adduser
  • /etc/adduser.conf
  • /etc/skel
  • bash
  • /etc/bash.bashrc
  • /etc/profile
  • ~/.bashrc
  • ~/.bash_profile
  • zsh
  • /etc/zshrc
  • /etc/zshenv

时间管理

  • date
  • /etc/timezone

权限管理

  • sudo
  • visudo
  • /etc/sudoers

磁盘管理

  • /etc/fstab
  • mount
  • umount

内核管理

系统启动

system

Nginx

nginx是一种Web服务器尤其是反向代理与负载均衡功能在高并发的服务器上应用广泛。更多信息参考nginx官网

安装nginx

$ sudo apt-get install nginx

启动nginx

$ sudo nginx

访问nginx

$ curl localhost

nginx通过丰富的配置文件启用各种功能。查看nginx相关的文件。

$ nginx -V

Python

Mac上自带python不需要安装。Ubuntu上也自带python。更多信息参考python官网

MySQL

Redis

微服务化

es

etcd

kafka

consul

thrift

databus

源码解析

Linux

Nginx

Python

MySQL

Redis