发布于 2015-11-07 21:44:03 | 212 次阅读 | 评论: 0 | 来源: PHPERZ

这里有新鲜出炉的PHP教程,程序狗速度看过来!

PHP开源脚本语言

PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,入门门槛较低,易于学习,使用广泛,主要适用于Web开发领域。PHP的文件后缀名为php。


阿里云( ECS ) Centos7 服务器 LNMP 环境搭建

前言

第一次接触阿里云是大四的时候,当时在校外公司做兼职,关于智能家居项目的,话说当时俺就只有一个月左右的 php 后台开发经验(还是因为无意中选修了一门电子商务的课程,要做课程设计逼迫出来的),因为公司没人接触过后台开发,所以我这个菜鸟就硬着头皮上了。刚开始入门我把精力放在公司业务功能实现上,所用的服务器环境是别人已经配置好的,就是把代码在本地写好,通过 ftp 上传到服务器目录,是用 postman 插件测试一下接口就行了,开发到最后阶段问题来了,因为是智能家居项目,对智能设备的数据的实时性要求很高,需要有一种推送机制当数据变化时及时推送给控制网关,而不能 让控制 网关一直轮询服务器数据是否发生变化,当时“年幼”, 懂不得 什么技术,百度了一下,最后选定了Comet :基于 HTTP 长连接的“服务器推”技术 方案,(这个方案现在想来不是很合适的,最合适应该是 MQTT 技术,当时这个不温不火,居然没百度到),搭建 comet 服务,需要重新译 Nginx 服务器,而且是从源码编译安装,参考 Nginx Push Stream Module , 从那时才开始使用 Xshell 和 Putty 工具连接服务器,然后什么经验也没有, Linux 的基本操作命令也不知道,一顿百度和谷歌,乱起八糟的配置,结果还是把平台搭建好了,现在想来,像搭建服务器环境这些东西还是系统的整理一下比较好,不然用一次忘一次,百度到的文章也没自己亲历写的文章安心。故事讲完了,进入正题。

首先你得有一个阿里云服务器,阿里云最近推出一个云翼计划 ,学生能用极低的几个选一台配置也是极低的 ECS 云服务器,手痒的我毫无犹豫入了一台,购买的时候选择的镜像是 Centos7_64bit (选择 centos 也是道听途说学到的经验),接下来就是要配置环境了,刚开始没经验使用的是 一键安装配置教程 这个已经满足基本要求了,至少我把目前给公司做的一个云平台放上去运行一切 OK 。但是这个毕竟定制化水平比较低,自己掌握从零配置还是很需要的,所以接下来要一点 一点 配置了。永远记住最让人放心的配置方法就是参考官方文档(英语渣渣瞬间:smile:)。永远记住最让人放心的配置方法就是参考官方文档。永远记住最让人放心的配置方法就是参考官方文档
以我目前涉世不深的经验, Linux 下安装软件有两种方式:

  1. 通过软件包管理器 rpm 或 yum 工具命令安装
  2. 下载源码编译安装

rpm 是由红帽公司开发的软件包管理方式,使用 rpm 我们可以方便的进行软件的安装、查询、卸载、升级等工作(可以看成是 windows 系统控制面板里的卸载 / 安装程序功能)。但是 rpm 软件包之间的依赖性问题往往会很繁琐 , 尤其是软件由多个 rpm 包组成 时。 Yum (全称为 Yellow dog Updater, Modified )是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。基 於 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
 

一般如果官方不提供安装 包或者 需要扩展第三方的模块(比如上面说的需要在 Nginx 集成 comet 功能),我们才选择方法 2 来安装配置软件,因为从源码安装配置软件相当复杂,不必多此一举。所以本文大多采用第一种方式来安装软件。

在正式安装配置之前,还得理解一个概念: yum 源,这个大概相当于 windows 或者手机系统里面的应用中心、软件市场之类的东西, Linux 系统添加 yum 源后就可以直接在线下载 rpm 安装包了。这里推荐几个常用的源: epel,remi,rpmforge , webtatic 。 这些源 本身也是一个 rpm 安装包(就像流氓 360 手机助手也是要下载安装一样),需要下载安装。下面提供这几个源的官方胜博发888手机平台,(第三方下载地址也颇多,还是官方最保险)

EPEL - FedoraProject
http://fedoraproject.org/wiki/EPEL
Remi's RPM repository
http://rpms.famillecollet.com/
repoforge
http://pkgs.repoforge.org/
webtatic
http://mirror.webtatic.com/

接下来就是安装 yum 源了,这里我只安装了 epel,remi ,在后面的安装配置 php 会用到。使用终端模拟器连接到服务器(最常用 Xshell 或者 putty, 这两个工具不会使用?百度咯, 毕竟苦逼程序员 ,自己动手,丰衣足食)。

安装 epel (这个源貌似很重要,我看到很多源和软件包依赖这个源)打开上面对应的地址。在页面找到下图所示的介绍。

这里我用的是 Centos7 系统,选择选择第一项,鼠标放在链接上,右键复制下载链接 ,
https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
接下来有两种选择,一是将这个rpm包下载到服务器 ( 是用 wget 命令或者下载到 本地通过 ftp 软件上传到服务器 ) 再用 rpm 命令或者 yum 命令安装,或者直接在线安装。

# wget  https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# rpm - ivh  epel-release-latest-7.noarch.rpm

 或者直接

# rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

或者

# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm  

同理安装 remi 源

# rpm - ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

如何检查 源是否 安装成功?

使用一下命令:

# yum repolist

这个命令会列出系统中所有存在的源。


接下来终于要安装 Nginx 、 MySql 、 PHP 了。

1. 安装配置 Nginx( 貌似近年 Nginx 比 Apache httpd 流行点 )

nginx 与 apache 的区别:
apache 在处理用户请求时采用的是进程,若采用 prefork 的 mpms 机制, apache 在每个时刻都要保持 8 个空闲的子进程,当用户请求过多时,开启的进程较多,占用内存大,效率与 nginx 相比较低,每秒最多的并发连接请求最多不超过 3000 个。但是 apache 有个优点就是非常稳定,当一个进程死掉时,不会影响其他的用户。而 nginx 在处理用户请求时采用的是线程,而线程是共享内存的, nginx 只需要开启少量进程,多个线程就可以共享进程的内存,占用内存小, nginx 采用的是 epoll 机制(事件主动通知机制)每秒最多的并发连接请求理论可以达到 50000 个。但是 nginx 的缺点是,稳定性差,当一个进程死掉时,会影响到多个用户的使用。

接下来 要到官网下载 安装包了,为什么 选择官网呢 ,因为我是一个有强迫症的程序员,一定要将软件更新到最新版本。奉 上官网地址:
nginx news
http://nginx.org/
进入官网,右侧导航 download 进入,最底下提供了 Linux 安装包,犹豫了一下,选择稳定版本吧。

Pre-Built Packages
Linux packages for stable version
Linux packages for mainline version

点击上面的链接就会进入安装介绍页面,里面介绍了安装方法。
按照方法 一:

# wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# rpm - ivh /root/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# yum install nginx

  失败了,失败了,失败了。果断放弃
按照方法二,想在 CentOS 系统上安装 Nginx ,你得先去添加一个资源库,像这样:
vim / etc / yum.repos.d / nginx.repo (这里使用的是 vim 工具来创建这个文件,可以在本地创建再上传)
使用 vim 命令去打开 / etc / yum.repos.d / nginx.repo ,如果 nginx.repo 不存在,就会去创建一个这样的文件,打开以后按一下小 i 键,进入编辑模式,然后复制粘贴下面这几行代码,完成以后按 esc 键退出,再输入 : wq (保存并退出)
[ nginx ]
name= nginx repo
baseurl =http://nginx.org/packages/centos/$releasever/basearch/
gpgcheck = 0
enabled= 1
完成以后,我们就可以使用 yum 命令去安装 nginx 了,安装命令:

yum install nginx

 安装好以后查看一下nginx 服务:
查看状态:

service nginx status

返回:
Redirecting to /bin/ systemctl status nginx.service
nginx.service - nginx - high performance web server
Loaded: loaded (/ usr /lib/ systemd /system/ nginx.service ; disabled)
Active: inactive (dead)
Docs: http://nginx.org/en/docs/
可以看到服务还没启动
再测试一下 nginx 的配置文件:

nginx -t

应该会返回:
nginx : the configuration file / etc / nginx / nginx.conf syntax is ok
nginx : configuration file / etc / nginx / nginx.conf test is successful

... syntax is ok , ... test is successful ,说明配置文件没问题,同时这个结果里你可以找到 nginx 的配置文件 nginx.conf 所在的位置。
nginx 服务启动、重启、停止命令
操纵服务,可以 使用使用 service 命令,它可以启动( start ),重启( restart ),或停止服务( stop ),比如要启动 nginx 服务:

service nginx start
service nginx restart  // 这个会经常用到,每次修改 Nginx 配置文件后,都要重启生效。如果配置文件错误的话,是会启动失败的,可以使用 nginx -t 命令先测试一下配置文件
service nginx stop

配置 nginx 虚拟主机

安装完 nginx 以后,接下来就是配置虚拟主机。先进入到 nginx 配置文件目录:
cd /etc/nginx/conf.d
这个目录里有一个默认配置文件 default.conf ,可以将这个文件复制一份重命名来创建自己的虚拟主机比如 myspace.conf 。复制文件可以使用 cp 命令,像这样:
cp default.conf myspace.conf
// 后面使用的是 vim 来编辑文件的,如果不熟悉 vim 的使用方法,可以在本地编辑好再上传到指定目录。
再去编辑一下这个复制以后的配置文件,可以使用 vim 命令:
vim myspace.conf
你会看到像这样的代码:

server {
  listen 80;
  server_name localhost;
  #charset koi8-r;
  # access_log /var/log/nginx/log/host.access.log main;
  location / {
  root / usr /share/ nginx /html;
  index index.html index.htm;
}
...
}

listen 是监听的端口,默认的 80 ,如果被占用了,可以换一个端口, server_name 就是主机名,如果你有域名指向这个服务器,就填写域名,如果没有就不需要修改了。 location 里面的 root ,就是这个虚拟主机的根目录,也就是胜博发888手机平台所在的目录。比如我们要把胜博发888手机平台的文件放在/home/www 下面,那么这个 root 就是这个路径。在 index 后面加上一种索引文件名,也就是默认打开的文件,这里要加上一个 index.php ,这样访问 服务器就可以直接打开 root 目录下面的 index.php 了。稍后我们再去安装 php 。修改之后,看起来像这样:

server {
  listen 80;
  server_name  localhost;
  #charset koi8-r;
  # access_log / var /log/ nginx /log/host.access.log main;
  location / {
   root /home/www;
  index index.php index.html index.htm;
  }
...
}

 这个配置文件先修改到这,稍后,我们再回来继续修改一下它。保存一下,按 esc ,输入 : wp (保存并退出)。现在虚拟主机应该就可以使用了。我们在 /home/www 目录下放置一个测试文件,比如一张图片文件。
重启 nginx 或者重新加载 nginx 可以让配置文件生效。

service nginx restart

现在,打开浏览器,输入主机 + 资源路径,看看是否能打开你指定的目录里的东西。 

注意在没有配置 php 环境之前,是不能加载动态文件的。接下来配置 php 环境

2. 安装配置 php 环境

nginx 本身不能处理 PHP ,它只是个 web 服务器,当接收到请求后,如果是 php 请求,则发给 php 解释器处理,并把结果返回给客户端。 nginx 一般是把请求发 fastcgi 管理进程处理, fascgi 管理进程选择 cgi 子进程处理结果并返回被 nginx 。 PHP-FPM 是一个常用的 PHP FastCGI 管理器。要让 nginx 能够执行 php 文件,需要去安装一下 php-fpm,它直接包含在了 CentOS 资源库里,所以直接使用 yum 命令可以安装它:

yum install php-fpm

完成以后,可以检查一下 php -fpm 的运行状态,使用 service 命令:

service php-fpm status

返回:
Redirecting to /bin/ systemctl status php -fpm.service
php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/ usr /lib/ systemd /system/ php-fpm.service ; disabled)
Active: inactive (dead)

dead 表明服务未启动,启动完成会变成 Active: active (running), 使用下面的命令启动

php-fpm 服务启动、重启、停止命令:

service php-fpm start
service php-fpm restart
service php-fpm stop

接下来我们就可以配置 nginx 通过php-fpm 解析php 脚本 了。不过你需要修改一下nginx的配置文件,之前我们在配置虚拟主机的时候,创建了一个myspace.conf的配置文件,需要去修改下 nginx 的这个配置文件,才能去执行 php 。使用 vim 命令去编辑它:
vim /etc/nginx/conf.d/myspace.conf
注意你的配置文件不一定叫myspace.conf,应该是你自己命名的配置文件。打开以后,找到下面这段字样的代码:

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \. php $ {
    #     root            html;
    #     fastcgi_pass 127.0.0.1:9000;
    #     fastcgi_ index   index.php ;
    #     fastcgi_ param   SCRIPT _FILENAME   / scripts$fastcgi_script_name ;
# include fastcgi_params ;
#}

  

这是 nginx 默认给我们的用来执行 php 的配置,从 location 开始取消注释,会让这个配置生效,然后我们还得 简单去 修改一下:

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \. php $ {
    #    root            html;
        fastcgi_pass    127.0.0.1:9000;
        fastcgi_ index   index.php ;
        fastcgi_ param   SCRIPT _FILENAME   /home/www$fastcgi_script_name ;
include fastcgi_params ;
}

注意 root 那里仍然是被注释掉的,还有 SCRIPT_FILENAME 后面修改了一下,把 /scripts 换成了胜博发888手机平台根目录 。保存并退出。然后重新启动 nginx:

service nginx restart

测试是否可以执行 php
现在,我们已经安装了 php-fpm ,并修改了 nginx 的配置文件让它可以去执行 php ,下面,我们得去测试一下,可以使用 php 的 phpinfo (); 函数,方法是在你的虚拟主机根目录下面,创建一个 php 文件,命名为 phpinfo.php ,然后在这个文件里输入:

<? php phpinfo (); ?>

保存文件并退出。在浏览器里打开刚才创建的这个 php 文件。打开以后,你应该能看到像下面这样的界面,如果能,说明 nginx 已经可以执行 php 了。

  

可以看到 Centos7 自带的 php 版本是 5.4.16 ,通过命令 php -v 也可以查看 php 版本,现在说它是旧版本也是马后炮了,实际上在安装之前,我们可以通过命令

yum list | grep php

列出安装源里包含的关于 php 的安装包列表,比如我就找到下面几项

php-dba.x86_64 5.4.16-36.el7_1 updates
php-embedded.x86_64 5.4.16-36.el7_1 updates
php-enchant.x86_64 5.4.16-36.el7_1 updates

updates 源是系统自带的,中间的版本号显示是 5.4.16 ,如果你胜博发手机官网这个版本可以满足要求就按照上面的直接安装。

但是,居然不是最新版本,对于有强迫症的程序员怎么能忍。我们先 卸载旧 版本再 安装新版本。
先找出已经安装的关于 php 的软件包,使用命令:

yum list installed | grep php

或者

rpm - qa | grep php

会列出已经安装的包,有的话,我们就通过 rpm -e 命令 或者 rpm -e -- nodeps 命令来卸载掉

rpm -e 包名   // 普通删除模式
或者
rpm -e -- nodeps 包名   // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
或者
yum remove 包名

删除干净过后,我们开始安装新版本, 在官网提供 的最新版本是 5.6.15 ,(对于 php7 这种划时代的大更新我还是暂时不入坑了)
PHP: Hypertext Preprocessor
http://www.php.net/
官网只 提供了源码下载,是否意味着我们只能通过源码安装,如果你准备这么做,我不准备阻止你
但是,还记得我们前面安装的 remi 源吗,使用命令

yum list | grep php

你会发现 这个源 提供了 php5.6 的安装包,其他 php7 版本也有。

这就意味着我们可以直接使用 yum 命令安装
确认安装的 php 版本

# yum list -- enablerepo = remi -- enablerepo =remi-php56 | grep php

安装 php5.6

# yum install -- enablerepo = remi -- enablerepo =remi-php56 php php-opcache php-pecl-apcu php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof php-pdo php -pear php -fpm php -cli php -xml php-bcmath php -process php-gd php -common

php-opcache 及 php-pecl-apcu 会有效的提高 php 执行速度。需要什么模块就安装哪些模块,以后还可以再增加模块
确认 php 版本

# php -v

PHP 5.6.15 (cli) (built: Oct 29 2015 14:18:11)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies
with Xdebug v2.3.3, Copyright (c) 2002-2015, by Derick Rethans
在测试之前看一下 php-fpm 服务是否启动 , 可重启一下

service php-fpm restart

将前面的 phpinfo.php 放到目录下测试一下

OK 了。

3.安装配置mysql

CentOS7 的默认数据库已经不再是 MySQL 了,而是 MariaDB 。 MariaDB 数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可。开发这个分支的原因之一是:甲骨文公司收购了 MySQL 后,有将 MySQL 闭源的 潜在风险,因此社区采用分支的方式来避开这个风险。 MariaDB 的目的是完全兼容 MySQL ,包括 API 和命令行,使之能轻松成为 MySQL 的代替品。

这里我还是到 mysql官网去下载最新的 yum 安装包。
MySQL : : MySQL Downloads
http://www.mysql.com/downloads/
进入,我们选择最下方的社区版进入,左侧导航栏选择
MySQL Yum Repository



MySQL : : A Quick Guide to Using the MySQL Yum Repository
http://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/#repo-qg-yum-installing
官方配置文档在上面的链接,如果不想参考英文的,直接运行下面几条命令。
第一项复制下载链接,使用下面的命令安装

# wget http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
# rpm - ivh mysql-community-release-el7-7.noarch.rpm
# yum install mysql -community-server

成功安装之后重启 mysql 服务

service mysqld restart

Mysql5.7 安装过程中,给 root 用户(此 root 用户和服务器的 root 的用户是两回事)生成了一个随机密码,通过下面的命令可以查看:

# sudo grep 'temporary password' / var /log/mysqld.log

如果你想修改密码,

# mysql -u root -p

系统会提示输入密码,输入上面查询到的密码即可,输入密码后,进入 mysql 配置,使用下面的命令修改密码

alter user ' root'@'localhost ' identified by '[email protected]#ZX';

注意命令后面的是有分号的, 最后面的单引号里的就是新密码,尽量使用复杂的密码,大小写数字符号的组合,密码过于简单,会提示错误,这也是较新版本新加入的特性。配置好后,输入 quit; 退出即可。

 

,另外还有一些安全相关的设置,可以使用下面这行命令去配置一下,它是一个向导,问你一些问题,你要给出答案,比如是否要设置 root 用户的密码, 密码是什么等等。使用命令:

mysql_secure_installation
Enter current password for root (enter for none):
解释:输入当前 root 用户密码,默认为空,直接回车。
Set root password? [Y/n] y
解释:要设置 root 密码吗?输入 y 表示愿意。
Remove anonymous users? [Y/n] y
解释:要移除掉匿名用户吗?输入 y 表示愿意。
Disallow root login remotely? [Y/n] y
解释:不想让 root 远程登陆吗?输入 y 表示愿意。
Remove test database and access to it? [Y/n] y
解释:要去掉 test 数据库吗?输入 y 表示愿意。
Reload privilege tables now? [Y/n] y
解释:想要重新加载权限吗?输入 y 表示愿意。

不行了,我已经眼花缭乱看不清字符,再写下去就要猝死了,睡一觉压压惊。



相关阅读 :
阿里云(ECS)Centos服务器LNMP环境搭建
PHP程序员玩转Linux系列 lnmp环境搭建
如何在Windows7(IIS7)环境下安装 PHP
centos系统下LNMP环境一键安装
Windows2003下php5.4安装配置教程(IIS)
CentOS6.5 编译安装lnmp环境
64位CentOS 6.0下搭建LAMP环境详细步骤
Centos下升级php5.2到php5.4全记录(编译安装)
VPS CentOS-6 下 LNMP HTTP web服务器的搭建步骤
CentOS 6.4安装配置LNMP服务器(Nginx+PHP+MySQL)
新手配置 PHP 调试环境(IIS+PHP+MYSQL)
LNMP服务器环境配置 (linux+nginx+mysql+php)
最新网友评论  共有(0)条评论 发布评论 返回顶部
月排行榜

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  服务