分享

学习手册:Web 开发环境与服务器生产环境

 蹇胜雄 2015-11-13

在你的电脑上,应该有个 Web 开发环境,在上面去开发你想要的网站。完成以后可以把网站迁移到服务器上,在服务器也要搭建一个网站运行的环境,这个服务器上的环境叫生产环境。大部分情况,你也需要自己去搭建这个服务器上的生产环境。你的生产环境要在 Linux 类型的操作系统上搭建,比如 Ubuntu,CentOS ...  所以,尽早熟悉 Linux 系统的基本操作,熟悉在命令行下面去做事。

网站最终要运行在生产环境上,你在本地开发它的时候,最好可以为网站搭建一个跟生产环境相近的环境,比如用同样的操作系统,同样版本的软件,同样的设置等等。建议在本地电脑上安装虚拟机,为虚拟机安装 Linux 类型的操作系统,然后在上面安装和配置运行网站需要的软件,比如 Web 服务器,PHP,数据库等等。想要更好的管理虚拟机,推荐使用 Vagrant 。

放弃用一键安装的东西来搭建本地的开发环境,比如 WAMP,MAMP,XAMPP!暂时放弃在服务器的生产环境上安装管理面板。亲自动手,去搭建这个运行环境。

这个网站运行的环境在本地,还有在服务器上搭建的方法是差不多的,就是去安装一些需要的软件,然后通过修改配置文件来改变这些软件的行为。

目标

  • 学会 Linux 系统下的基本的命令行工具
  • 明白 Linux 系统的权限管理
  • 会用 Vagrant 管理在本地的虚拟机
  • 在 Linux 系统上搭建可以运行 PHP 应用的环境

搭建开发环境

流程

  1. 安装 Vagrant 与 Virtualbox
  2. 添加 Box (虚拟机镜像)
  3. 为项目初始化,指定 Box ,配置网络,启动 Box
  4. SSH 连接到 Box
  5. 添加仓库
  6. 安装 Web 服务器
  7. 安装 PHP
  8. 安装数据库

试着去配置一个这样的本地开发环境

在视频里安装的软件,版本可能会比现在要低,所以,注意看视频里介绍的方法,然后用这些方法试着去配置一个下面这样的开发环境:

  • 虚拟机的操作系统是 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 。

文章

  1. 虚拟机
  2. 用 Vagrant 管理虚拟机
  3. 用 Vagrantfile 配置虚拟机 — 共享目录
  4. 用 Vagrantfile 配置虚拟机 — 网络

视频

  1. 安装 Vagrant 与 Virtualbox 02:08
  2. 添加 box  03:37
  3. 初始化,启动,连接 03:03
  4. Windows 用户的补充 02:13
  5. 启动,停止,重启,销毁 04:07

配置虚拟机

虚拟机的配置是通过一个叫 Vagrantfile 的文件来设置的,这个文件在初始化项目以后会被自动创建,用文本编辑软件可以打开这个文件去编辑它。这一章介绍了配置虚拟机与主机之间的共享目录,还有虚拟机的网络设置。

把文件放到这个共享目录里面,你可以在虚拟机上找到它们,在虚拟机上修改这些文件,在本地电脑上也会看到修改以后的结果,这样我们就可以把网站放到这个共享目录里面,在本地去编辑,在虚拟机上去运行它。

网络的配置决定了虚拟机与主机之间的沟通方式,设置成私有网络,就是把虚拟机与主机之间建立起一个私有的网络,其它人不能通过网络访问虚拟机,只能通过主机访问虚拟机。设置成共有网络的话,除了主机以外,网络内的其它设备也可以访问到虚拟机。

  1. 共享的目录 02:30
  2. 配置共享目录 03:01
  3. 网络配置 01:33
  4. 私有网络 02:08
  5. 公有网络 01:58

多台虚拟机

有时候一个网站项目可能需要用到多台服务器,比如 Web 服务,搜索功能,数据库都单独放到一台服务器上。我们在本地也可以虚拟出这样的环境,就是通过 Vagrant 的 Multi-Machine,多机功能。也就是,你可以在一个 Vagrantfile 文件里面,定义多个虚拟机,每台虚拟机都可以有自己的设置,比如共享目录,网络,主机名等等。

  1. 多主机 01:13
  2. 定义多个主机 04:31
  3. 多主机的网络配置 03:47
  4. 多主机的主机名 02:48
  5. 多主机的共享目录 02:12

基础命令

现在,启动一台虚拟机(vagrant up),然后用 SSH 连接(vagrant ssh)上去,下面在我们的 CentOS 系统的虚拟机上去练习一些基本的命令。

  1. ls 列出目录里的内容 02:48
  2. cat 创建文件和浏览文件内容 01:48
  3. vim 编辑与修改文件内容 01:16
  4. mkdir 创建目录 01:13
  5. cd 更改工作目录 01:33
  6. cp 复制文件或目录 02:34
  7. rm 删除文件或目录 01:57
  8. mv 移动文件或目录 02:38
  9. tar 制作压缩包文件 03.32
  10. scp 传文件与 tar 解压 02:40

Linux 的权限管理

  1. 权限 03:41
  2. 用户和用户组 03:15
  3. 理解文件的权限 03:24
  4. chown 修改文件或目录的所有者与所属用户组 01:35
  5. chmod 修改文件或目录的权限 02:40
  6. 理解目录的权限 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 收到以后,又会把结果返回给客户(浏览器)那里。

在本地搭建这个运行环境来开发网站,跟在服务器上搭建生产环境去运行网站是差不多的。注意看视频的时候,不要只模仿每一步的操作,理解动作背后的意思。

文章

  1. 管理 Linux 上的软件
  2. 在本地 CentOS 7 上搭建 Web 开发环境 — 准备工作
  3. 在本地 CentOS 7 上搭建 Web 开发环境 — 数据库管理系统 MariaDB / MySQL
  4. 在本地 CentOS 7 上搭建 Web 开发环境 — PHP
  5. 在本地 CentOS 7 上搭建 Web 开发环境 — Web 服务器
  6. 在本地 CentOS 7 上搭建 Web 开发环境 — nginx 的基本配置
  7. 在本地 CentOS 7 上搭建 Web 开发环境 — nginx 配置实践
  8. 在本地 CentOS 7 上搭建 Web 开发环境 — nginx 与 php-fpm

视频

  1. 安装 Web 服务器 - nginx  03:44
  2. 设置域名指向服务器的 IP 地址 02:36
  3. 配置 nginx 的虚拟主机 06:39
  4. 添加资源库 - epel, ius 03:27
  5. 安装 PHP 与 php-fpm 02:06
  6. 让 nginx 与 PHP 配合在一起工作 04:47
  7. 安装 PHP 的扩展 03:08
  8. 文件与目录的权限 - 修改 php-fpm 的用户 04:43
  9. 安装 MySQL 03:55
  10. 安装与配置 FTP 服务器 05:17

测试一下运行环境

现在,在本地已经有了一个可以运行 PHP 应用的开发环境,下面在这个环境上去运行一下 WordPress 还有 Drupal 。我们使用命令行工具去安装它们,WordPress 会用到 WP-CLI,Drupal 会用到 Drush,它们是日常维护 WordPress 与 Drupal 必备的工具。

文章

  1. 安装 phpMyAdmin
  2. 安装 Git,Composer, Drush,WP-CLI
  3. 在 nginx 上运行 Drupal 8
  4. 在 nginx 上运行 WordPress

WordPress

  1. 安装 WP-CLI 04:18
  2. 使用 WP-CLI 安装 WordPress:下载 03:01
  3. 使用 WP-CLI 安装 WordPress:创建数据库与配置文件 04:39
  4. 使用 WP-CLI 安装 WordPress:安装 02:26

Drupal

  1. 安装 composer 02:31
  2. 安装 drush 04:05
  3. 使用 drush 命令下载 drupal 03:08
  4. 使用 drush 命令安装 drupal - drush site-install 04:46

打包配置好的虚拟机

把配置好的虚拟机,可以重新打包,下次如果有其它的网站项目用的是同样的运行环境,你就可以使用这个自己制作的 Box 去初始化项目。

重新打包 - package 04:27

搭建生产环境

流程

  1. 购买服务器,比如阿里云,腾讯云...
  2. SSH 连接到服务器
  3. 添加仓库
  4. 安装 Web 服务器
  5. 安装 PHP
  6. 安装数据库

准备

购买一台云服务器,不管是阿里云,腾讯云,还是其它的云。基本的操作都是一样的,你可以为服务器选择操作系统,带宽,CPU,内存,以后还可以很方便的去升级它们。有了服务器以后,你需要用 ssh 连接到服务器,这样就可以去控制服务器了,比如在上面去搭建一个可以运行网站的环境,搭建这个环境的方法跟在本地虚拟机上的操作基本都是一样的。

下面的视频里介绍了在阿里云购买服务器,控制服务器。这些方法同样适用在其它的云服务商那里购买的云服务器,只要为服务器选择的操作系统是 CentOS 就行。

  1. 申请阿里云账号 01:10
  2. 购买阿里云的 ECS 服务 03:53
  3. 云服务器的管理后台预览 01:37

控制服务器

  1. 远程控制 Linux 系统的服务器 02:59
  2. Windows:使用 putty 远程控制服务器 01:53
  3. Mac:使用终端工具远程控制服务器 01:48

基本的操作

  1. 修改主机名 01:54
  2. 修改服务器的密码 01:18
  3. 格式化数据盘 - auto_fdisk.sh 01:53

无需密码登录的方法

  1. Mac:无需密码登录服务器 03:12
  2. Windows:无需密码登录服务器 - 生成密钥 01:57
  3. Windows:无需密码登录服务器 - 把密钥保存在服务器里 02:02
  4. Windows:无需密码登录服务器 - 配置 puTTY 01:51

配置运行环境

参考上面的在本地虚拟机上配置运行环境的方法跟流程。

搭建本地开发环境的具体步骤

上面的文章与视频,可以帮助你理解下面这些步骤的意思。

  1. Windows 打开 Powershell,Mac 打开 Terminal。
  2. Windows 安装 Chocolatey,Mac 安装 Homebrew。
  3. 安装 Vagrant 与 Virtualbox。Windows 输入: choco install vagrant virtualbox ,Mac 输入: brew install Caskroom/cask/virtualbox Caskroom/cask/vagrant 。
  4. 添加 Box。输入:vagrant box chef/centos-7.0
  5. 为项目创建目录并初始化。
    1. cd ~/desktop
    2. mkdir ninghao-project
    3. cd ninghao-project
    4. vagrant init chef/centos-7.0
  6. 配置虚拟机网络。
    1. 打开 Vagrantfile 文件
    2. 添加:config.vm.network "private_network", ip: "192.168.33.10"
    3. 保存 Vagrantfile 文件
  7. 启动虚拟机。输入:vagrant up
  8. ssh 到虚拟机。
    1. Windows:使用 Putty 工具,主机 127.0.0.1,端口 2200 或 2222,点击 open ,登录的用户名是 vagrant ,密码也是 vagrant
    2. Mac:输入 vagrant ssh
  9. 安装仓库。打开 IUS 仓库 可以找到跟操作系统版本对应的 epel 还有 ius 这两个包。
    1. 安装 epel:sudo rpm -ivh http://dl./pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
    2. 安装 ius:sudo rpm -ivh http://dl./pub/ius/stable/CentOS/7/x86_64/ius-release-1....
    3. 输入 yum repolist ,查看仓库列表,你会看到 epel 还有 ius 。
  10. 安装 vim 编辑器:sudo yum install vim -y
  11. 数据库管理系统 MariaDB
    1. 安装:sudo yum install mariadb100u mariadb100u-server -y
    2. 启动 MariaDB:sudo service mariadb start
    3. 设置当重启系统时自动启动 MariaDB:systemctl enable mariadb.service
    4. 执行安全安装:mysql_secure_installation
    5. Enter current password for root (enter for none):  直接回车
      输入当前 root 用户的密码
    6. Set root password? [Y/n] Y
      想要设置 root 用户的密码吗?
    7. New password: 输入要为 root 用户设置的密码
      输入 root 用户的新密码
    8. Re-enter new password: 再输入一次设置的密码
      重新输入为 root 用户设置的密码
    9. Remove anonymous users? [Y/n] Y
      要删掉匿名用户吗?
    10. Disallow root login remotely? [Y/n] Y
      要禁用 root 用户远程登录吗?
    11. Remove test database and access to it? [Y/n] Y
      想要删掉 test 这个数据库吗?
    12. Reload privilege tables now? [Y/n] Y
      现在就要重新载入权限吗?
  12. php-fpm
    1. 安装:sudo yum install php56u-fpm
    2. 修改配置
      1. vim /etc/php-fpm.d/www.conf
      2. 按一下 i 键进入编辑模式
      3. 查找 user = apache ,替换成 user = vagrant
      4. 查找 group = apache,替换成 group = vagrant
      5. 按一下 esc 键,退出编辑器模式
      6. 保存并退出文件,可以输入 :wq
    3. 安装 php 扩展:sudo yum install php56u-gd php56u-mysqlnd php56u-pdo php56u-mcrypt php56u-mbstring php56u-xmlrpc php56u-pecl-jsonc -y
    4. 启动 php-fpm:sudo service php-fpm start
    5. 设置当重启系统时自动启动 php-fpm:systemctl enable php-fpm.service
  13. Web 服务器 nginx
    1. 安装 nginx:sudo yum install nginx -y
    2. 编辑 nginx.conf
      1. sudo vim /etc/nginx/nginx.conf,按一个 i 进入编辑模式
      2. 找到 sendfile        on;
      3. 替换成 sendfile        off;
      4. 保存文件并退出:esc 退出编辑模式,再输入 :wq 然后回车!
    3. 创建新的 nginx 服务器(虚拟主机)
      1. sudo vim /etc/nginx/conf.d/dp8.ninghao.dev.conf
      2. dp8.ninghao.dev.conf 文件里的内容见文章底部。
      3. 保存并退出
      4. 创建虚拟主机的根目录:mkdir -p /vagrant/drupal8/public
      5. 测试配置文件是否有效:sudo nginx -t
      6. 启动 nginx:sudo service nginx start
      7. 设置当重启系统时自动启动 nginx:systemctl enable nginx.service
  14. 安装 Git :sudo yum install git2u -y
  15. 安装 Composer
    1. cd ~
    2. curl -sS https:///installer | php
    3. sudo mv composer.phar /usr/local/bin/composer
    4. composer --help
  16. 安装 Drush
    1. git clone https://github.com/drush-ops/drush.git /usr/local/src/drush
    2. cd /usr/local/src/drush
    3. composer install
    4. sudo ln -s /usr/local/src/drush/drush /usr/bin/drush
    5. drush help
  17. 安装 Drupal 8
    1. 创建数据库
      1. mysql -u root -p ,回车,输入数据库系统的 root 用户的密码
      2. 创建数据库:create database drupal_8;
      3. 为这个数据库指定可以管理它的用户:grant all privileges on drupal_8.* to 'ninghao'@'localhost' identified by 'GcPpQJe0LE9h2Dlhtu69KoOP54RAVz1pN9H5a21fpKU=';
      4. 退出:exit
    2. 安装 Drupal
      1. cd /vagrant/drupal8/public
      2. drush dl drupal-8
      3. mv drupal-8.0.0-beta6/.[!.]* .
      4. wget http://ftp./files/translations/8.x/drupal/drupal-8.0.0-beta4.z... -P core/profiles/standard/translations/
      5. drush site-install --db-url=mysql://ninghao:GcPpQJe0LE9h2Dlhtu69KoOP54RAVz1pN9H5a21fpKU=@localhost/drupal_8 --site-name=ninghao --locale=zh-hans -v
      6. 输入 y ,回车
      7. 提示安装成功,注意看 Drush 会创建一个叫 admin 的管理员(User name: admin User password: tLC4JdVdmd),User Password 后面的密码是随机的,复制一下这个密码,你需要用它登录到 Drupal 后台。
  18. 编辑自己电脑上面的 hosts 文件
    1. Windows:C:\Windows\System32\Drivers\etc\hosts
    2. Mac:/etc/hosts
    3. 在 hosts 文件里添加:192.168.33.10 dp8.ninghao.dev
    4. 保存文件
  19. 打开浏览器,用 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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多