从零开始构建PHP应用

前言

罐头做了决定,从MC离职了。犹豫和纠结了好些日子之后,接受了37的offer。来了才知道,我是开荒者啊,没有PHP开发人员,也没有PHP相关环境的服务器。所以入职第一天,我要从零开始构建PHP应用。这整一个过程真的好辛苦,以致我第一天上班就工作到23点。不禁让我想起了以前入职MC,第一周和小伙伴编译LFS,编译到凌晨才下班,大冬天在寒夜里追公交的场景……

知识准备

为了可以更好理解整个流程,这里提前介绍一些基础知识和软件准备:

  • VMware Workstation12
    虚拟机软件,用来挂载Linux
  • CentOS-6.3-x86_64-minimal.iso
    这里选择发行版是无桌面的CentOS
  • SecureCRT
    支持SSH的终端仿真程序,Windows下登录UNIX或Linux服务器主机的软件。
  • SSH
    为 Secure Shell 的缩写,专为远程登录会话和其他网络服务提供安全性的协议。通过配置公钥/私钥可以登录到linux。
  • LNMP(快速安装PHP方案)
    LNMP = linux + nginx + mysql + php

基本流程

  1. 安装VMware Workstation12(下面简称VM)
  2. 在VM创建新的虚拟机,挂载CentOS
  3. 配置VM网络模式,让CentOS可以上网
  4. 生成公钥/私钥。配置并使用SecureCRT(下面简称CRT)
  5. 通过CRT安装LNMP

安装VM

  1. 这里使用的最新的版本 VMware Workstation12,直接使用了百度提供的安装链接下载:
  2. 传送门:http://sw.bos.baidu.com/sw-search-sp/software/d34ff7ffac8/VMware-workstation_full_12.1.1.6932.exe
  3. 安装过程,就不絮叨了,就是平常安装window软件的安装流程。
  4. 安装完成之后,需要序列号激活,就去网上找一下注册机或者搜索一下序列号即可解决。
    这里提供一个 VMware Workstation 12序列号:
    5A02H-AU243-TZJ49-GTC7K-3C61N

安装CentOS

  1. 前面说了CentOS是linux的一个发行版,如果对其他的发行版有兴趣的同学可以私聊。
  2. 可以到官网下载一个镜像包,我这里的组长-君哥给了我一个,这是我唯一感到安慰的时刻了。
  3. 官网地址 https://www.centos.org/ ,搜索CentOS-6.3-x86_64-minimal.iso
  4. 这里细说一下如何安装CentOS
    • 创建新的虚拟机
    • 自定义
    • Workstation 12.0
    • 创建的虚拟机将包含一个空白硬盘
    • linux centos 64
    • 虚拟机命名和位置
    • 自定义硬件(主要注意一下内存大小和网络,不懂的同学可以使用默认推荐设置)
    • 建立虚拟机之后再选择ISO路径,然后开始安装。
    • 系统盘成功引导后,出现下面的界面(到这里算成功一半了,继续加油)
      centos 安装引导界面
    • 选择Install or upgrade an existing system 安装或升级现有的系统
    • 出现是否对CD媒体进行测试的提问,这里选择“Skip”跳过测试。
    • 选择语言 中文(简体)、美国英语式
    • 键盘模式,默认即可
    • 是,丢弃所有数据
    • 时区选择,取消“系统时钟使用UTC时间”前面的勾
    • 设置root密码
    • 选择最后一项,自定义分区。这里说一下如何分区
      假如硬盘总共5G
      系统文件类型:swap 大小(M):1024
      挂载点:/ 文件系统类型:ext4 选中“使用全部可用空间”
      点格式化,将修改写入磁盘
    • 进入安装,安装完毕请重启(到这里算完成)
  5. 我这里没有截太多的图,图文参考传送门:http://www.dedecms.com/knowledge/servers/linux-bsd/2012/0819/8398.html

VM的网络配置

  1. 准备
    VMWare提供了三种工作模式,它们是bridged(桥接模式)NAT(网络地址转换模式)host-only(主机模式)。以后有空再给大家详细分析这三种模式的差异。我们这使用NAT模式,下面简单介绍一下NAT模式。
    使用NAT模式,就是让虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。也就是说,使用NAT模式可以实现在虚拟系统里访问互联网。NAT模式下的虚拟系统的TCP/IP配置信息是由VMnet8(NAT)虚拟网络的DHCP服务器提供的,无法进行手工修改,因此虚拟系统也就无法和本局域网中的其他真实主机进行通讯。采用NAT模式最大的优势是虚拟系统接入互联网非常简单,你不需要进行任何其他的配置,只需要宿主机器能访问互联网即可。

  2. 下面说一下配置流程:

    • 右击选择已创建好的虚拟机,选择设置,弹窗之后选择网络设配器
    • 在窗口右侧选择使用NAT 模式(N):用于共享主机的IP地址
    • 开启宿主机(windows10)中的VMware DHCP Service 和VMware NAT Service服务。(我的计算机->管理->服务)
    • 先把虚拟机关闭了 > 编辑 > 虚拟网络编辑器
      弹出虚拟网络编辑器
    • win10貌似要点击以下按钮,获得管理员权限
      获得管理员权限
    • 选中VMnet8 NAT模式,然后选中NAT模式(与虚拟机共享主机IP地址),勾上将主机虚拟适配器连接到此网络使用本地DHCP服务将IP地址分配给虚拟机
      你可以自定义子网ip,也可以通过点击还原默认配置自动获得子网IP,我这里以192.168.124.0为例子
      虚拟网络编辑器
    • DHCP设置:
      DHCP设置
    • NAT设置,记下这里的子网IP子网掩码网关IP(G)。配置ifcfg-eth0时会用到
      NAT设置
    • 手工配置ip,直接编辑 vi /etc/sysconfig/network-scripts/ifcfg-eth0
      ifcfg-eth0 文件内容如下:
      ifcfg-eth0文件配置
      BOOTPROTO 设置为dhcp,
      IPADDR 设置为上面NET设置里记下来的子网IP
      NETMASK (同上)子网掩码
      GATEWAY (同上)网关IP(G)
      然后service network restart
      再ping 下寄主机的IP试试 是不是通了呢。
  3. 配置把虚拟机的端口映射成宿主机端口,那么就可以在同一局域网网内可访问了。

    • 同理弹出虚拟网络编辑器(参考上面的)-> 选中VMnet8 NAT模式 ->点击NAT设置
      ip
    • 配置一个端口转发(没有点击添加,已有可以点击属性)
      ip
    • 主要配置 [主机端口] [虚拟机端口] [虚拟机IP地址]

配置并使用CRT

  1. 准备
    能使用上CRT的前提,是网络互通,依赖于上一步的配置。除此之外我们还需要:
    • 在CentOS安装SSH服务,并启动它
    • ssh-keygen生产SSH 公钥(装个git,在gitbash下使用,或者用svn也可以)
    • 最后当然就是安装好CRT(也有非安装版本)
  2. 安装SSH,我们直接使用yum安装吧,不需理会依赖问题。
    • yum install ssh
    • 安装成功,启动SSH:
      service sshd start
    • 设置开机运行:
      chkconfig sshd on
      注:一般默认CentOS已经安装了OpenSSH,即使你是最小化安装也是如此。
    • 修改vi /etc/ssh/sshd_config
      Port 22 指定SSH连接的端口号,安全方面不建议使用默认22端口(个人习惯是61618)
    • 修改vi /root/.ssh/authrized.keys
      把SSH公钥id_rsa.pub输入到该文件最后
    • CentOS防火墙的关闭,关闭其服务即可:
      查看CentOS防火墙信息:/etc/init.d/iptables status
      关闭CentOS防火墙服务:/etc/init.d/iptables stop
    • 尝试看看能不能使用CRT连上?
      成功的话就可以愉快地安装LNMP了。

安装LNMP

  1. 准备
    我新装的CentOS连Wegt都没有啊,所以我们需要
  2. 开始安装
    • 解压进入安装
      tar zxf lnmp1.3-full.tar.gz && cd lnmp1.3-full && ./install.sh lnmp
    • 按要求选择安装
      输入数据库密码->选择mysql版本(MySQL 5.5.48)->选择PHP版本(PHP 5.6.22)->选择缓存工具(Don’t install Memory Allocator.)我们暂时不安装缓存工具->回车开始安装
      安装时间可能会几十分钟到几个小时不等,主要是机器的配置网速等原因会造成影响。(请耐心等候,本人装了2个小时)
    • 安装完成
      如果显示Nginx: OK,MySQL: OK,PHP: OK
      ok
      并且Nginx、MySQL、PHP都是running,80和3306端口都存在,并提示Install lnmp V1.3 completed! enjoy it.的话,说明已经安装成功。

补充

基本上按照以上安装步骤,不会有太大问题,都是傻瓜式安装。新安装的CentOS可能会缺比较多的软件,这里建议使用yum安装一下。下面再补充一下关于Linux的一些常用配置。以便日后需要。

  1. 把一些常用的脚本放置root(主要包含php启动、nginx重启等)
    chmod +x * 增加一下执行权限(这样就可以愉快的使用了)

  2. PHP配置
    PHP配置文件:/usr/local/php/etc/php.ini
    我们要开启php的错误日志
    display_errors = On
    html_errors = On
    error_log = /data/logs/php_errors.log(日志目录按自己习惯)
    设置完毕之后,重启一下PHP令其生效(~/fastcgi_restart )
    php-fpm配置文件:/usr/local/php/etc/php-fpm.conf
    listen = /tmp/php-cgi.sock

  3. Nginx配置
    Nginx主配置(默认虚拟主机)文件:/usr/local/nginx/conf/nginx.conf
    添加的虚拟主机配置文件:/usr/local/nginx/conf/vhost/域名.conf

  4. Mysql配置
    MySQL配置文件:/etc/my.cnf

  5. 设置 命令别名~/.bashrc 和 开机脚本/etc/rc.local

[localhost]#  vi ~/.bashrc
--------- 增加两句(个人习惯把mysql密码设置到某个目录,比如/data/pw/mysql_root,避免忘记)----
alias vi='vim'
alias con_mysql='mysql -uroot -p`cat /data/pw/mysql_root`'
[localhost]#vi /etc/rc.local
---------------------------------------------------------------------------------------------
[localhost]# source ~/.bashrc

[localhost]# vi /etc/rc.local
--------- 由于是用vm装的虚拟机,当关机/重启时希望不用手动启动/关闭某些服务--------
/etc/init.d/iptables stop
~/nginx_reload
~/mysql_start
~/fastcgi_start
---------------------------------------------------------------------------------------------
罐头很懒 (⊙v⊙)<br><br>工作日日常 :<br>do {<br>&nbsp;&nbsp;打代码<br>} while ( 发呆 || 吃饭 )<br><br>周末日常 :<br>( 鱼罐头 || 午餐肉 || 炸鸡块 ) +<br>( 罐可乐 || 瓶啤酒 ) +<br>( 盒仔饭 || 艇仔粥 || 即食面 ) +<br>( 轻音乐 || 肥皂剧 || 热网综 ) +<br>( 水果糖 || 甜布丁 )