项目版本控制工具:Git


git

Git 是一种为项目做版本控制的工具。

安装 Git

macOS 系统使用 Homebrew 安装,执行:

brew install git

CentOS 系统 yum 安装,执行:

sudo yum install git2u
  1. 系统仓库中如果没有最新版本,需要先安装第三方仓库。
  2. 如果系统里已经包含了低版本的 Git,需要先将系统中的删除才能继续安装。

基本流程

仓库 repository

使用 Git 为项目做版本控制,需要首先为项目添加一个 Git 仓库。

git init

这个命令可以为项目初始化一个仓库,初始化只需要执行一次,它会在项目目录下创建一个 .git 目录,Git 会把它需要的东西存储在这个 .git 目录下,这其实就是项目的仓库。

暂存区 staging area

把对项目做的修改、先放到暂存区,然后再做提交。

把对某个文件的所有修改添加到暂存区:

git add <file>

把在某个目录下做的所有修改添加到暂存区:

git add <directory>

把做的所有修改与新文件添加到暂存区(不包含删除文件):

git add .

把所有东西都添加到暂存区(修改、新文件、删除文件):

git add -A

把做的所有修改还有删除添加到暂存区:

git add -u

继续阅读 “项目版本控制工具:Git”

搭建本地开发环境:LEMP


lemp-centos-nginx-mysql-mariadb-php

我们需要在本机电脑搭建一个供学习、测试用的开发环境,此处我们选择 LEMP 开发环境,即 Linux(系统),Nginx(服务器),MariaDB/MySQL(数据库),PHP(开发语言)。

如果想完整的学习,请放弃 WAMP、MAMP、XAMPP 或者其他的一些一键速成的开发环境。

安装 Nginx

Nginx 是一种 web 服务器,接受 web 请求,并且把请求的内容发给用户。

安装 Nginx,执行:

sudo yum install nginx

启动 Nginx,执行:

sudo systemctl start nginx

设置 Nginx 开机启动,执行:

sudo systemctl enable nginx

在浏览器中访问 http://192.168.33.10 (或者其他你设置的服务器地址),如果看到 NGINX 的欢迎界面,则安装成功。

MariaDB / MySQL

MariaDB 是 MySQL 的一个分支,是加强版的 MySQL,它可以完全取代 MySQL。

CentOS 7.0 已经用 MariaDB 替换掉了 MySQL,所以默认只能使用包管理工具安装 MariaDB。

安装 MariaDB

使用包管理工具 yum 安装 MariaDB 执行以下命令(此处以安装 MariaDB 10.1 版本为例):

sudo yum install mariadb101u mariadb101u-server

安装过程中如果返回一个错误:Error: mariadb101u-errmsg conflicts with 1:mariadb-libs-5.5.52-1.el7.x86_64,说明系统安装 mariadb-libs-5.5.52-1.el7.x86_64 与现在安装的版本冲突,使用 sudo yum remove mariadb-libs-5.5.52-1.el7.x86_64 命令删除即可解决。

安装完成后,查看 MariaDB 的状态,执行:

service mariadb status

在返回信息中会发现:

Active: inactive (dead)

表示服务是停止的状态。

启动 MariaDB

service 命令启动 MariaDB 服务,执行:

sudo service mariadb start

想开机自动启动,用 systemctlenable 命令:

sudo systemctl enable mariadb.service

数据库安全设置

安装完 MariaDB 以后,可以执行一下安全设置,这样可以为 root(MariaDB 的超级管理员)用户添加密码,删除匿名用户还有 test 数据库等等。执行:

mysql_secure_installation

会返回以下信息:

  • Enter current password for root (enter for none):输入当前 root 用户的密码
  • Set root password? [Y/n]:想要设置 root 用户的密码吗?
  • New password:输入 root 用户的新密码
  • Re-enter new password:重新输入为 root 用户设置的密码
  • Remove anonymous users? [Y/n] :要删掉匿名用户吗?
  • Disallow root login remotely? [Y/n] :要禁用 root 用户远程登录吗?
  • Remove test database and access to it? [Y/n]:想要删掉 test 这个数据库吗?
  • Reload privilege tables now? [Y/n]:现在就要重新载入权限吗?

测试验证

登录数据库控制台,执行:

mysql -u root -p

输入密码后执行:

show databases;

会显示数据库系统的所有数据库:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

PHP-FPM

Web 应用如果是用 PHP 语言写的,比如 Drupal,WordPress,Laravel 等等,需要在服务器上安装 PHP 的解释工具。还需要让 Web 服务器可以跟 PHP 解释工具能够交流,这样 Web 服务器才能为用户输出请求的内容。因为我们选择使用 Nginx 服务器,它跟 PHP 的交流方式可以使用 PHP-FPM,因此首先来安装 PHP-FPM。 继续阅读 “搭建本地开发环境:LEMP”

CentOS 基础


centos-7

SSH 连接

要对服务器进行控制操作,首先需要使用 SSH 连接到服务器。

SSH 的基本使用形式:

ssh 用户@主机

用户 即为登录服务器使用的用户名,@符号右边是服务器的主机名或者 IP 地址。

使用 SSH 远程登录到 Linux 服务器主要有两种难用户身份的方法:

  • 用户名 + 密码
  • 密钥

在服务器端,可以通过配置 SSH 服务,让用户只能使用某种方法验证身份。相比用户名+密码登录,密钥登录是一种更为安全的做法,因此一些服务器会禁用用户名+密码登录,只允许使用密钥登录。

密钥 ssh-key

SSH 密钥,即在本机电脑上使用命令生成一对密钥,一个私钥(Private Key),一个公钥(Public Key),然后将公钥告诉服务器,以后在登录服务器的时候,服务器端的公钥会与本机电脑端的私钥进行匹配,如果匹配,则通过验证。

生成密钥

密钥一般只需要生成一次,最好也只生成一次。

生成密钥前,可以先检查一下之前是否有生成过密钥。一般密钥会放置在用户主目录下的 .ssh 这个目录下面,可使用 ls ~/.ssh 命令查看这个目录下是否存在密钥文件。如果是空白,或者显示没有这个目录,那就说明之前没有生成过 SSH-KEY,如果里面有两个文件,id_rsa 和 id_rsa.pub,说明已经有了 SSH-KEY。

如果没有,生成 SSH-KEY,执行命令:

ssh-keygen

命令会返回信息问将密钥放在哪里,输入密码等,可以不设置,直接回车即可。

需要注意的是,生成的密钥只对当前登录到系统的这个用户有效。

使用密钥

配置服务器使用 SSH-KEY 方式登录,需要将生成的公钥告诉服务器。

查看公钥文件里的内容,执行:

cat ~/.ssh/id_rsa.pub

复制返回密钥,然后登录的服务器,编辑当前登录用户主目录下面的 .ssh/authorized_keys,如果没这个文件,可以创建一个。然后把刚复制的公钥内容插入到 authorizes_keys 文件里面。这样下次再使用服务上的这个用户登录到服务器的时候,就不再需要输入密码。 继续阅读 “CentOS 基础”

使用 Vagrantfile 配置虚拟机


configuring-vagrant-virtual-machine

Vagrantflie

在项目的目录下面有个名为 Vagrantfile 的文件,它是执行 vagrant init 命令时创建的一个虚拟机配置文件,这个配置文件包含项目使用的虚拟机的相关配置。

Vagrantfile 文件里的内容大部分都是注释内容,里面介绍了可用的配置选项还有相关的解释。去掉注释内容,实际有效的代码只有三行:

Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
end

中间一行代码就是配置的主体内容,上面的这行配置指定了虚拟机使用的 Box 是 centos/7,可以在这个代码块中添加其他自定义的配置:

Vagrant.configure("2") do |config|
  # 配置内容放在这里
end

虚拟机网络配置

把虚拟机作为一台服务器,就需要将主机(电脑)与虚拟机之间通过网络连接在一起,网络中的其他设备也可能要跟虚拟机相连,这就需要配置虚拟的网络,让虚拟机可以被访问。

可以通过 Vagrantfile 去配置虚拟机的网络,Vagrant 提供了以下三种方法:

  • 端口转发 forwarded_port
  • 公有网络 private_network
  • 私有网络 public_network

启动虚拟机后,虚拟机可以使用 nat 方式上网,即如果本机电脑能上网,虚拟机内部也可以上网。

在启动虚拟机返回的日志里,会有如下的相关配置:

==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)

上述配置意思是从主机使用 SSH 连接虚拟机的时候把主机(host)上的 2222 端口转发到虚拟机(guest)上的 22 端口。

可以通过 vagrant ssh 命令进入虚拟机内容,使用 ping 命令测试一下某个网站的连接。 继续阅读 “使用 Vagrantfile 配置虚拟机”

使用 Vagrant 管理虚拟机


vagrant-virtualbox-centos7

使用 Vagrant 可以很方便的管理虚拟机,只需要一行命令可以操作管理虚拟机,也可以重新打包成新的镜像,分享他人使用。

安装 Vagrant

可以通过 Homebrew 使用命令行安装,可以直接去 Vagrant 官网(https://www.vagrantup.com)下载安装包手动安装。

// 命令行安装 Vagrant
brew install Caskroom/cask/vagrant 

虚拟机需要用到虚拟机软件,比如 VirtualboxVMwareParallels Desktop 等等,因为 Virtualbox 开源且免费,所以此处使用 Virtualbox。安装 Virtualbox 同样可以通过命令行或者官网(https://www.virtualbox.org)下载安装包手动安装。

// 命令行安装 Virtualbox
brew install Caskroom/cask/virtualbox

Vagrant Box

Box 是 Vagrant 使用的一种包含虚拟机镜像、虚拟机配置和 Vagrant 配置的封装包文件。在 Vagrant 提供的云服务(https://vagrantcloud.com/)上可以下载到其他人制作好的 Box。

添加 Box

Vagrant 添加 Box 的命令为:

vagrant box add <name>

此处以 CentOS 7 为例,如果指定的 Box 在本地电脑上不存在,Vagrant 会到云上自动下载执行:

vagrant box add centos/7

安装成功后界面如下:

vagrant-add-box-virtualbox-centos7

完成以后,可以查看一下在本地上的 Box 列表:

vagrant box list

也可将 Box 手动下载到本地电脑上,再执行 vagrant box add 命令去手工添加 Box:

vagrant box add <name> <path>

升级 Box

检查是否有可用的升级,执行命令:

vagrant box outdated

返回:

Checking if box 'centos/7' is up to date...

执行升级:

vagrant box update

删除 Box

不再需要的镜像可以从电脑中删除掉,执行:

vagrant box remove <box name>

即使你删除了安装在电脑上的镜像,已经使用这个镜像创建的我虚拟机也仍然是可以正常使用的。不过为了更安全一些,你最好在删除镜像之前 ,先去销毁所有使用了这个镜像创建的虚拟机。 继续阅读 “使用 Vagrant 管理虚拟机”

使用 Homebrew 安装软件


homebrew-for-ma

Mac App Store 像是一个图形界面的包管理工具,也可以很方便的管理系统上软件。不过有很多软件是在 App Store 上找不到的,可以通过 Homebrew 这个包管理工具,使用命令行管理软件。

安装 Homebrew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

使用 Homebrew

Homebrew 的命令以 brew 开头,后面接着具体的命令,例如:

// 查看帮助信息
brew help

// 安装包
brew install

// 升级已经安装的包
brew upgrade

搜索包

搜索能够使用 Homebrew 安装的东西,使用的命令是 brew seach,后面加上搜索的关键词:

brew search <keyword>

访问某个包的可以使用 brew home 命令,再加上包的名字,就可以直接在浏览器中打开包的主页:

brew home <package>

安装

安装包的命令是 brew install,后面加上包的名字.

brew install <package>

一般用 Homebrew 安装的东西都是一些命令行的工具,这些工具大部分都是开发的时候要用的,不过你会看到一些 Cask 开头的包,Cask 扩展了 Homebrew ,它可以让我们用 Homebrew 去安装一些带图形界面的软件。

查看使用 brew 包装的东西,使用命令:

brew list

升级

升级 Homebrew 本身使用 brew update 命令,升级已经安装的包,使用 brew upgrade 命令,如果后面不加具体包的名字,Homebrew 会升级所有已安装的包,如果升级具体的某个包,需要在命令后面加上包的名字:

brew upgrade <package>

升级 cask 安装包

Homebrew upgrade 升级命令并不能直接升级 cask 安装的软件,需要单独下载安装包手工更新,不过可以给 Homebrew 安装一个扩展工具:brew-cask-upgrade 来实现命令升级 Cask 安装包。

安装 brew-cask-upgrade:

brew tap buo/cask-upgrade

安装完成后,就可以直接使用命令行升级 Cask 安装包了,执行:

brew cu

如果想单独升级某一个安装包,可以在命令后添加具体的 Cask 名称:

brew cu [cask]

brew cu 命令后还可以添加一些控制选项:

Usage: brew cu [CASK] [options]
    -a, --all          Include apps that auto-update in the upgrade
        --cleanup      Cleans up cached downloads and tracker symlinks after updating
    -f  --force        Include apps that are marked as latest (i.e. force-reinstall them)
    -y, --yes          Update all outdated apps; answer yes to updating packages

使用命令 brew help cu 可以查看命令的帮助信息。

删除

删除 Homebrew 安装的包,使用命令 brew uninstall,后面加上要删除的包的名字:

brew uninstall <package>