安装配置 phpMyAdmin


phpmyadmin

为了更好的管理 MySQL/MariaDB 数据库,我们一般需要给服务器安装一个数据库图形管理界面,使用 WEB 页面管理数据库,phpMyAdmin 就是这样一个工具。

如果系统中安装了 epel 仓库,可以直接使用 yum install phpmyadmin 命令安装,不过这样直接安装会提示与之前安装的 php 有依赖冲突,所以建议使用手工安装方法。

安装 phpMyAdmin

官网 上可以找到 phpMyAdmin 的下载链接,使用 curl 命令下载它:

curl -O https://files.phpmyadmin.net/phpMyAdmin/4.7.6/phpMyAdmin-4.7.6-all-languages.zip

使用 unzip 命令解压刚下载的 zip 文件:

unzip phpMyAdmin*.zip

解压完成之后,之前下载的 zip 安装包就可使用 rm -rf phpMyAdmin*.zip 命令删除了。

我们需要将 phpMyAdmin 移动到 nginx 定义的服务根目录下,同时为了安全,可以给它修改成一个常用的名字(我配置有服务器目录为:/vagrant/www/public):

mv phpMyAdmin* /vagrant/www/public/phpMyAdmin

完成后,在浏览器中输入 Nginx 服务器绑定的主机名,加面加 /phpMyAdmin,如果正常的话,就能会看到 phpMyAdmin 的登陆界面了。 继续阅读 “安装配置 phpMyAdmin”

配置安装 WordPress


wordpress-install-config

一般情况下,我们可以在官网(https://wordpress.org)下载好 WordPress 安装包,然后上传到服务器安装,除了这个方法,我们也可以使用 WordPress 命令行工具 WP-CLI 用命令行安装。

配置服务器

首先需要为 WordPress 配置一个主机地址。

在电脑 hosts 文件中添加一条新记录:

192.168.33.10 iiiryan.dev

意思是将 iiiryan.dev 这个主机名指向我们虚拟机的 IP 地址,这样在配置 Nginx 时可以添加一个新的 server

然后我们在 Nginx 服务中配置文件目录中新建一个配置文件:iiiryan.dev.conf,配置内容为:

server {
  listen       80;
  server_name  iiiryan.dev;
  root         /vagrant/www/wordpress;
  index        index.php index.html index.htm;

  location / {
     try_files $uri $uri/ /index.php?$query_string;
  }

  location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include fastcgi_params;  
  }
}

/vagrant/www/wordpress 是网站的根目录,完成后重新加载 Nginx。

下载 WordPress

进行到上面设置的网站根目录下,执行命令:

wp core download

这个命令后可以使用 --locale--version 选项,指定下载的语言和版本。

创建数据库

如果已经安装了 phpMyAdmin,可以直接使用浏览器访问数据库管理页面,创建数据库,也可以使用命令行创建数据库。

先登录到 MySQL:

mysql -u root -p

登录后创建一个名为 wordpress 的数据库:

create database wordpress;

给数据库设定用户名、密码:

grant all grant all privileges on wordpress.* to 'ryan'@'localhost' identified by 'password';

为了安全,可以使用 openssl 生成一个随机密码。

完成后,退出 MySQL 控制台。

安装 WordPress

现在就可以直接在浏览器中输入我们设置的地址访问网站,并随着系统提示一步一步的进行安装了。

也可以使用 WP-CLI 命令行安装,首先需要设置 WordPress 的配置文件 wp-config.php

wp core config --dbname=wordpress --dbuser=ryan --password --dbhost=localhost --dbprefix=wp_ --locale=zh_CN

如果正常,返回信息:

Success: Generated wp-config.php file.

配置文件设置完成后就可使用 wp core install 命令进行安装了:

wp core install --url=http://iiiryan.dev --title='WordPress' --admin_user=ryan --admin_password=1234 --admin_email=mail@mail.com

成功后,返回信息:

Success: WordPress installed successfully.

如果一切顺利,在浏览器中输入设定的网址:http://iiiryan.dev 就能正常访问了。

项目版本控制工具: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”

常用工具的安装


install-tools

本地开发环境搭建还成后,需要在服务器上安装一些常用的工具,如 Git,Composer,unzip,WP-CLI 等等。

Git

Git 可以为项目做版本控制。

安装 Git:

sudo yum install git2u

如果系统里已经包含了低版本的 Git,需要先将系统中的删除才能继续安装。

Git 的简单配置:

// 设置用户名
git config --global user.name "iiiRyan"

// 设置用户邮箱地址
git config --global user.email "85ryan.blue@gmail.com"

Composer

Composer 是 PHP 的包管理工具。

下载 Composer 安装:

curl -O https://getcomposer.org/installer

使用 Composer 安装器安装 Composer:

php installer

把 Composer 放在 /usr/local/bin 这个目录下,执行:

sudo mv composer.phar /usr/local/bin/composer

完成后,执行 composer 会返回一些帮助信息:

   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.4.2 2017-05-17 08:17:52

想让 composer 安装的东西在全局范围内使用,需要对配置文件进行修改:

vi ~/.bash_profile

PATH=$PATH:$HOME/.local/bin:$HOME/bin 的后面添加 :$HOME/.composer/vendor/bin

意思是在用户主目录下的 .composer/vendor/bin 里的东西,我们可以在任何地方执行。

让配置生效,执行:

source ~/.bash_profile

Composer 安装器现在没用了,可以删除掉:

rm -rf installer

设置中国镜像:

composer config -g repo.packagist composer https://packagist.phpcomposer.com

unzip

解压 zip 格式的压缩文件,需要用到 unzip。

安装:

sudo yum install unzip

使用:

unzip FILE_TO_UNZIP.zip

WP-CLI

如果我们使用的 WordPress,并且希望使用命令行去安装、升级以及管理网站上的用户、评论、内容等,可以使用 WP-CLI(官方网站:http://wp-cli.org)。

首先下载安装包:

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

下载完成后,可以验证一下是否能够正常工作:

php wp-cli.phar --info

如果安装成功,返回信息:

PHP binary: /usr/bin/php
PHP version:    7.1.6
php.ini used:   /etc/php.ini
WP-CLI root dir:    phar://wp-cli.phar
WP-CLI vendor dir:  phar://wp-cli.phar/vendor
WP_CLI phar path:   /home/vagrant
WP-CLI packages dir:    
WP-CLI global config:   
WP-CLI project config:  
WP-CLI version: 1.2.1

我们要在系统任何地方都可以使用 wp 这个命令,需要将 wp-cli.phar 移动到系统的环境变量目录里。首先需要先添加一个可执行的权限:

chmod +x wp-cli.phar

然后使用 mv 命令把它移动到 /usr/local/bin 这个目录下面,并且重命名为 wp,这样在系统的任何地方,都可使用 wp 这个命令了:

mv wp-cli.phar /usr/local/bin/wp

完成后可以使用 wp --info 命令测试一下,如果一切正常,则会返回信息:

PHP binary: /usr/bin/php
PHP version:    7.1.6
php.ini used:   /etc/php.ini
WP-CLI root dir:    phar://wp-cli.phar
WP-CLI vendor dir:  phar://wp-cli.phar/vendor
WP_CLI phar path:   /home/vagrant
WP-CLI packages dir:    
WP-CLI global config:   
WP-CLI project config:  
WP-CLI version: 1.2.1

默认情况下,升级 WP-CLI 可以使用以下命令:

wp cli update

但因为我们将 WP-CLI 移动到了系统变量下,使用 wp cli update 会遇到权限问题,可以使用以下命令:

sudo /usr/local/bin/wp cli update

WP-CLI 查看其他命令可以参考官方命令列表:http://wp-cli.org/commands

搭建本地开发环境: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>

Swift 笔记:可选类型与 nil


可选类型

使用可选类型(Optionals)来处理值可能缺失的情况。可选类型表示:

  • 有值,等于 x

或者

  • 没有值
let pNum = "123"
let cNum = Int(pNum)
// cNum 被推测类型为 "Int?",或类型 "Optional Int"

问号暗示包含的值是可选类型,也就是说可能包含 Int 值也可能不包含值

nil

可选变量赋值为 nil 来表示它没有值。
nil 不能用于非可选有常量和变量。
如果在声明一个可选常量或变量时没有赋值,它们会自动被设置为 nil

if 语句以及强制解析

使用 if 语句和 nil 来比较判断一个可选值是否包含值,使用“相等”(==)或“不等”(!=)来执行比较。

当确定可选类型确实包含值时,可以在可选值的名字后面加一个感叹号(!)来获取值。这被称为可选值的**强制解析(Forced Unwrapping):

let possibleNum = "123"
let convertedNum = Int(possibleNum)

if convertedNum != nil {
    print("convertedNum has an integer value of \(convertedNum!).")
}

可选绑定

使用可选绑定(Optional Binding)来判断可选类型是否包含值,如果包含就把值赋给一个临时变量或者变量:

if let constantName = someOptional {
    statements
}

隐式解析可选类型

可选类型第一次被赋值后,可以确定总会有值,这种类型的可选状态被定义为隐式解析可选类型(Implicitly Unwrapped Optionals)。把想要用作可选的类型的后面的问号(String?)改成感叹号(String!)来声明一个隐式解析可选类型。