在你的电脑上,应该有个 Web 开发环境,在上面去开发你想要的网站。完成以后可以把网站迁移到服务器上,在服务器也要搭建一个网站运行的环境,这个服务器上的环境叫生产环境。大部分情况,你也需要自己去搭建这个服务器上的生产环境。你的生产环境要在 Linux 类型的操作系统上搭建,比如 Ubuntu,CentOS ... 所以,尽早熟悉 Linux 系统的基本操作,熟悉在命令行下面去做事。
网站最终要运行在生产环境上,你在本地开发它的时候,最好可以为网站搭建一个跟生产环境相近的环境,比如用同样的操作系统,同样版本的软件,同样的设置等等。建议在本地电脑上安装虚拟机,为虚拟机安装 Linux 类型的操作系统,然后在上面安装和配置运行网站需要的软件,比如 Web 服务器,PHP,数据库等等。想要更好的管理虚拟机,推荐使用 Vagrant 。
放弃用一键安装的东西来搭建本地的开发环境,比如 WAMP,MAMP,XAMPP!暂时放弃在服务器的生产环境上安装管理面板。亲自动手,去搭建这个运行环境。
这个网站运行的环境在本地,还有在服务器上搭建的方法是差不多的,就是去安装一些需要的软件,然后通过修改配置文件来改变这些软件的行为。
目标
- 学会 Linux 系统下的基本的命令行工具
- 明白 Linux 系统的权限管理
- 会用 Vagrant 管理在本地的虚拟机
- 在 Linux 系统上搭建可以运行 PHP 应用的环境
搭建开发环境
流程
- 安装 Vagrant 与 Virtualbox
- 添加 Box (虚拟机镜像)
- 为项目初始化,指定 Box ,配置网络,启动 Box
- SSH 连接到 Box
- 添加仓库
- 安装 Web 服务器
- 安装 PHP
- 安装数据库
试着去配置一个这样的本地开发环境
在视频里安装的软件,版本可能会比现在要低,所以,注意看视频里介绍的方法,然后用这些方法试着去配置一个下面这样的开发环境:
- 虚拟机的操作系统是 CentOS 7 +
- Web 服务器是 nginx 1.6 +
- PHP 版本是 5.6 +
- 数据库使用 MariaDB 10 +
准备
设备
你要用来开发网站的电脑,可以是 PC ,也可以是 Mac 。如果是 PC ,建议操作系统是 Windows 8.1 以上。
工具
大部分工作都是在命令行界面进行的,Windows 可以使用 Powershell ,OSX 使用系统自带的 Terminal(终端)。
开始
管理虚拟机
先在电脑上安装好 Vagrant 与 Virtualbox ,推荐使用系统的包管理工具安装,Windows 用 Chocolatey,Mac 可以用 Homebrew。也可以直接去下载它们再手工去安装。然后去添加 Box,Box 是 Vagrant 用来打包发行虚拟机的一种格式,它里面包含了虚拟机操作系统的镜像,还有些其它的东西。在 Vagrant 云上,可以找到别人做好的 Box ,我们可以在命令行下面,去下载这些 Box 。我推荐使用 chef/centos-7.0 这个 Box,在百度云盘(http://pan.baidu.com/s/1qWmc18S)可以把它下载到本地电脑上,然后用 vagrant add 去添加这个 Box(vagrant box add chef/centos-7.0 centos-7.0_chef.box) 。
有了 Box 以后,在用 vagrant init 命令初始化项目的时候,可以使用这个 Box。启动虚拟机用的是 vagrant up 命令,然后用 vagrant ssh 命令登录到虚拟机,这就相当于是登录到了一台 Linux 系统的服务器,确切的说应该是 CentOS 7 这个操作系统。Windows 用户在连接虚拟机的时候,要使用 Putty 这个软件,主机输入 127.0.0.1,端口号是 2200 或 2222 ,用户名是 vagrant,登录的密码也是 vagrant 。
文章
- 虚拟机
- 用 Vagrant 管理虚拟机
- 用 Vagrantfile 配置虚拟机 — 共享目录
- 用 Vagrantfile 配置虚拟机 — 网络
视频
- 安装 Vagrant 与 Virtualbox 02:08
- 添加 box 03:37
- 初始化,启动,连接 03:03
- Windows 用户的补充 02:13
- 启动,停止,重启,销毁 04:07
配置虚拟机
虚拟机的配置是通过一个叫 Vagrantfile 的文件来设置的,这个文件在初始化项目以后会被自动创建,用文本编辑软件可以打开这个文件去编辑它。这一章介绍了配置虚拟机与主机之间的共享目录,还有虚拟机的网络设置。
把文件放到这个共享目录里面,你可以在虚拟机上找到它们,在虚拟机上修改这些文件,在本地电脑上也会看到修改以后的结果,这样我们就可以把网站放到这个共享目录里面,在本地去编辑,在虚拟机上去运行它。
网络的配置决定了虚拟机与主机之间的沟通方式,设置成私有网络,就是把虚拟机与主机之间建立起一个私有的网络,其它人不能通过网络访问虚拟机,只能通过主机访问虚拟机。设置成共有网络的话,除了主机以外,网络内的其它设备也可以访问到虚拟机。
- 共享的目录 02:30
- 配置共享目录 03:01
- 网络配置 01:33
- 私有网络 02:08
- 公有网络 01:58
多台虚拟机
有时候一个网站项目可能需要用到多台服务器,比如 Web 服务,搜索功能,数据库都单独放到一台服务器上。我们在本地也可以虚拟出这样的环境,就是通过 Vagrant 的 Multi-Machine,多机功能。也就是,你可以在一个 Vagrantfile 文件里面,定义多个虚拟机,每台虚拟机都可以有自己的设置,比如共享目录,网络,主机名等等。
- 多主机 01:13
- 定义多个主机 04:31
- 多主机的网络配置 03:47
- 多主机的主机名 02:48
- 多主机的共享目录 02:12
基础命令
现在,启动一台虚拟机(vagrant up),然后用 SSH 连接(vagrant ssh)上去,下面在我们的 CentOS 系统的虚拟机上去练习一些基本的命令。
- ls 列出目录里的内容 02:48
- cat 创建文件和浏览文件内容 01:48
- vim 编辑与修改文件内容 01:16
- mkdir 创建目录 01:13
- cd 更改工作目录 01:33
- cp 复制文件或目录 02:34
- rm 删除文件或目录 01:57
- mv 移动文件或目录 02:38
- tar 制作压缩包文件 03.32
- scp 传文件与 tar 解压 02:40
Linux 的权限管理
- 权限 03:41
- 用户和用户组 03:15
- 理解文件的权限 03:24
- chown 修改文件或目录的所有者与所属用户组 01:35
- chmod 修改文件或目录的权限 02:40
- 理解目录的权限 03:17
配置运行环境
一个可以运行 PHP 语言写的网站的环境的基本组成是:Web 服务器,PHP 解释器,数据库管理系统。Web 服务器可以使用 nginx 搭建,PHP 解释器用来解释 PHP 语言,根据用户的请求作为反应。nginx 不能直接跟 PHP 沟通,它们之间需要一个中介,这就是 php-fpm,nginx 与 php-fpm 会使用 Fast-CGI 协议进行交流。数据库管理系统,就是管理数据库用的一套系统,比如 MySQL / MariaDB,PostgreSQL 等等,大部分 PHP 网站用的都是 MySQL / MariaDB 这个系统,MariaDB 跟 MySQL 是一回事。
这个环境的大概工作流程是这样的:客户用浏览器发生请求,Web 服务器(nginx)收到请求,如果请求的是静态的资源,就直接给客户返回需要的资源,如果请求的是 php,nginx 会把请求交给 php-fpm 去处理,php-fpm 开始执行 php ,可能会有一些数据库的操作,比如去查找出一些内容,处理好以后,php-fpm 会把结果返回给 nginx,nginx 收到以后,又会把结果返回给客户(浏览器)那里。
在本地搭建这个运行环境来开发网站,跟在服务器上搭建生产环境去运行网站是差不多的。注意看视频的时候,不要只模仿每一步的操作,理解动作背后的意思。
文章
- 管理 Linux 上的软件
- 在本地 CentOS 7 上搭建 Web 开发环境 — 准备工作
- 在本地 CentOS 7 上搭建 Web 开发环境 — 数据库管理系统 MariaDB / MySQL
- 在本地 CentOS 7 上搭建 Web 开发环境 — PHP
- 在本地 CentOS 7 上搭建 Web 开发环境 — Web 服务器
- 在本地 CentOS 7 上搭建 Web 开发环境 — nginx 的基本配置
- 在本地 CentOS 7 上搭建 Web 开发环境 — nginx 配置实践
- 在本地 CentOS 7 上搭建 Web 开发环境 — nginx 与 php-fpm
视频
- 安装 Web 服务器 - nginx 03:44
- 设置域名指向服务器的 IP 地址 02:36
- 配置 nginx 的虚拟主机 06:39
- 添加资源库 - epel, ius 03:27
- 安装 PHP 与 php-fpm 02:06
- 让 nginx 与 PHP 配合在一起工作 04:47
- 安装 PHP 的扩展 03:08
- 文件与目录的权限 - 修改 php-fpm 的用户 04:43
- 安装 MySQL 03:55
- 安装与配置 FTP 服务器 05:17
测试一下运行环境
现在,在本地已经有了一个可以运行 PHP 应用的开发环境,下面在这个环境上去运行一下 WordPress 还有 Drupal 。我们使用命令行工具去安装它们,WordPress 会用到 WP-CLI,Drupal 会用到 Drush,它们是日常维护 WordPress 与 Drupal 必备的工具。
文章
- 安装 phpMyAdmin
- 安装 Git,Composer, Drush,WP-CLI
- 在 nginx 上运行 Drupal 8
- 在 nginx 上运行 WordPress
WordPress
- 安装 WP-CLI 04:18
- 使用 WP-CLI 安装 WordPress:下载 03:01
- 使用 WP-CLI 安装 WordPress:创建数据库与配置文件 04:39
- 使用 WP-CLI 安装 WordPress:安装 02:26
Drupal
- 安装 composer 02:31
- 安装 drush 04:05
- 使用 drush 命令下载 drupal 03:08
- 使用 drush 命令安装 drupal - drush site-install 04:46
打包配置好的虚拟机
把配置好的虚拟机,可以重新打包,下次如果有其它的网站项目用的是同样的运行环境,你就可以使用这个自己制作的 Box 去初始化项目。
重新打包 - package 04:27
搭建生产环境
流程
- 购买服务器,比如阿里云,腾讯云...
- SSH 连接到服务器
- 添加仓库
- 安装 Web 服务器
- 安装 PHP
- 安装数据库
准备
购买一台云服务器,不管是阿里云,腾讯云,还是其它的云。基本的操作都是一样的,你可以为服务器选择操作系统,带宽,CPU,内存,以后还可以很方便的去升级它们。有了服务器以后,你需要用 ssh 连接到服务器,这样就可以去控制服务器了,比如在上面去搭建一个可以运行网站的环境,搭建这个环境的方法跟在本地虚拟机上的操作基本都是一样的。
下面的视频里介绍了在阿里云购买服务器,控制服务器。这些方法同样适用在其它的云服务商那里购买的云服务器,只要为服务器选择的操作系统是 CentOS 就行。
- 申请阿里云账号 01:10
- 购买阿里云的 ECS 服务 03:53
- 云服务器的管理后台预览 01:37
控制服务器
- 远程控制 Linux 系统的服务器 02:59
- Windows:使用 putty 远程控制服务器 01:53
- Mac:使用终端工具远程控制服务器 01:48
基本的操作
- 修改主机名 01:54
- 修改服务器的密码 01:18
- 格式化数据盘 - auto_fdisk.sh 01:53
无需密码登录的方法
- Mac:无需密码登录服务器 03:12
- Windows:无需密码登录服务器 - 生成密钥 01:57
- Windows:无需密码登录服务器 - 把密钥保存在服务器里 02:02
- Windows:无需密码登录服务器 - 配置 puTTY 01:51
配置运行环境
参考上面的在本地虚拟机上配置运行环境的方法跟流程。
搭建本地开发环境的具体步骤
上面的文章与视频,可以帮助你理解下面这些步骤的意思。
- Windows 打开 Powershell,Mac 打开 Terminal。
- Windows 安装 Chocolatey,Mac 安装 Homebrew。
- 安装 Vagrant 与 Virtualbox。Windows 输入: choco install vagrant virtualbox ,Mac 输入: brew install Caskroom/cask/virtualbox Caskroom/cask/vagrant 。
- 添加 Box。输入:vagrant box chef/centos-7.0
- 为项目创建目录并初始化。
- cd ~/desktop
- mkdir ninghao-project
- cd ninghao-project
- vagrant init chef/centos-7.0
- 配置虚拟机网络。
- 打开 Vagrantfile 文件
- 添加:config.vm.network "private_network", ip: "192.168.33.10"
- 保存 Vagrantfile 文件
- 启动虚拟机。输入:vagrant up
- ssh 到虚拟机。
- Windows:使用 Putty 工具,主机 127.0.0.1,端口 2200 或 2222,点击 open ,登录的用户名是 vagrant ,密码也是 vagrant
- Mac:输入 vagrant ssh
- 安装仓库。打开 IUS 仓库 可以找到跟操作系统版本对应的 epel 还有 ius 这两个包。
- 安装 epel:sudo rpm -ivh http://dl./pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
- 安装 ius:sudo rpm -ivh http://dl./pub/ius/stable/CentOS/7/x86_64/ius-release-1....
- 输入 yum repolist ,查看仓库列表,你会看到 epel 还有 ius 。
- 安装 vim 编辑器:sudo yum install vim -y
- 数据库管理系统 MariaDB
- 安装:sudo yum install mariadb100u mariadb100u-server -y
- 启动 MariaDB:sudo service mariadb start
- 设置当重启系统时自动启动 MariaDB:systemctl enable mariadb.service
- 执行安全安装:mysql_secure_installation
- Enter current password for root (enter for none): 直接回车
输入当前 root 用户的密码
- Set root password? [Y/n] Y
想要设置 root 用户的密码吗?
- New password: 输入要为 root 用户设置的密码
输入 root 用户的新密码
- Re-enter new password: 再输入一次设置的密码
重新输入为 root 用户设置的密码
- Remove anonymous users? [Y/n] Y
要删掉匿名用户吗?
- Disallow root login remotely? [Y/n] Y
要禁用 root 用户远程登录吗?
- Remove test database and access to it? [Y/n] Y
想要删掉 test 这个数据库吗?
- Reload privilege tables now? [Y/n] Y
现在就要重新载入权限吗?
- php-fpm
- 安装:sudo yum install php56u-fpm
- 修改配置
- vim /etc/php-fpm.d/www.conf
- 按一下 i 键进入编辑模式
- 查找 user = apache ,替换成 user = vagrant
- 查找 group = apache,替换成 group = vagrant
- 按一下 esc 键,退出编辑器模式
- 保存并退出文件,可以输入 :wq
- 安装 php 扩展:sudo yum install php56u-gd php56u-mysqlnd php56u-pdo php56u-mcrypt php56u-mbstring php56u-xmlrpc php56u-pecl-jsonc -y
- 启动 php-fpm:sudo service php-fpm start
- 设置当重启系统时自动启动 php-fpm:systemctl enable php-fpm.service
- Web 服务器 nginx
- 安装 nginx:sudo yum install nginx -y
- 编辑 nginx.conf
- sudo vim /etc/nginx/nginx.conf,按一个 i 进入编辑模式
- 找到 sendfile on;
- 替换成 sendfile off;
- 保存文件并退出:esc 退出编辑模式,再输入 :wq 然后回车!
- 创建新的 nginx 服务器(虚拟主机)
- sudo vim /etc/nginx/conf.d/dp8.ninghao.dev.conf
- dp8.ninghao.dev.conf 文件里的内容见文章底部。
- 保存并退出
- 创建虚拟主机的根目录:mkdir -p /vagrant/drupal8/public
- 测试配置文件是否有效:sudo nginx -t
- 启动 nginx:sudo service nginx start
- 设置当重启系统时自动启动 nginx:systemctl enable nginx.service
- 安装 Git :sudo yum install git2u -y
- 安装 Composer
- cd ~
- curl -sS https:///installer | php
- sudo mv composer.phar /usr/local/bin/composer
- composer --help
- 安装 Drush
- git clone https://github.com/drush-ops/drush.git /usr/local/src/drush
- cd /usr/local/src/drush
- composer install
- sudo ln -s /usr/local/src/drush/drush /usr/bin/drush
- drush help
- 安装 Drupal 8
- 创建数据库
- mysql -u root -p ,回车,输入数据库系统的 root 用户的密码
- 创建数据库:create database drupal_8;
- 为这个数据库指定可以管理它的用户:grant all privileges on drupal_8.* to 'ninghao'@'localhost' identified by 'GcPpQJe0LE9h2Dlhtu69KoOP54RAVz1pN9H5a21fpKU=';
- 退出:exit
- 安装 Drupal
- cd /vagrant/drupal8/public
- drush dl drupal-8
- mv drupal-8.0.0-beta6/.[!.]* .
- wget http://ftp./files/translations/8.x/drupal/drupal-8.0.0-beta4.z... -P core/profiles/standard/translations/
- drush site-install --db-url=mysql://ninghao:GcPpQJe0LE9h2Dlhtu69KoOP54RAVz1pN9H5a21fpKU=@localhost/drupal_8 --site-name=ninghao --locale=zh-hans -v
- 输入 y ,回车
- 提示安装成功,注意看 Drush 会创建一个叫 admin 的管理员(User name: admin User password: tLC4JdVdmd),User Password 后面的密码是随机的,复制一下这个密码,你需要用它登录到 Drupal 后台。
- 编辑自己电脑上面的 hosts 文件
- Windows:C:\Windows\System32\Drivers\etc\hosts
- Mac:/etc/hosts
- 在 hosts 文件里添加:192.168.33.10 dp8.ninghao.dev
- 保存文件
- 打开浏览器,用 http://dp8.ninghao.dev 这个地址,应该可以访问到我们刚才安装的 Drupal 网站。
dp8.ninghao.dev.conf 文件里的内容:
server {
listen 80;
server_name dp8.ninghao.dev;
root /vagrant/drupal8/public;
index index.php index.html index.htm;
location / {
index index.php index.html index.htm;
try_files $uri @rewrite;
}
location @rewrite {
rewrite ^ /index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}
相关资源
学习手册 CentOS nginx php-fpm MariaDB MySQL WordPress Drupal
|