linux下手动搭建php+mysql+nginx

转载自:

https://www.cnblogs.com/yanqingxu/p/9248849.html

https://blog.csdn.net/wangliqiang1014/article/details/82906234

1、首先要更新yum源,不然是默认的老版本,一般都在5.6及以下,但是php7都出来好久了,性能提升50%以上!

按照系统更新yum源,我的是centos7,所以我运行下面的代码!

CentOS/RHEL 7.x:

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpmrpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

如果是centos6,那么执行以下代码:

CentOS/RHEL 6.x:

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpmrpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm

安装php

 然后就可以直接yum安装php7.0了,可以安装的拓展如下:

yum install php70w-common php70w-fpm php70w-opcache php70w-gd php70w-mysqlnd php70w-mbstring php70w-pecl-redis php70w-pecl-memcached php70w-devel

  安装 Nginx 和 PHP7-FPM

  在开始安装 Nginx 和 php7-fpm 之前,我们要先添加 EPEL 包的仓库源。使用如下命令:

yum -y install epel-release(上面更新yum包了这步就可以省略了)

  安装完EPEL 源之后,我们就可以通过仓库源安装nginx了,代码如下:

yum -y install nginx

  执行完上面的命令之后执行nginx -v,会出现nignx版本信息

  接下来,启动nginx,并且把他设置为开机自启动。

systemctl start nginx

systemctl enable nginx

  然后通过浏览器访问我们服务器的公网地址,出现如下界面说明nginx安装和启动成功了。


  然后我们还需要为 php7-fpm 添加另外一个仓库。互联网中有很个远程仓库提供了 PHP 7 系列包,我在这里使用的是 webtatic。

  添加 PHP7-FPM webtatic 仓库:

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

  然后就是安装 PHP7-FPM 以及 一些包。

yum -y install php71w-fpm php71w-cli php71w-gd php71w-mcrypt php71w-mysql php71w-pdo php71w-xml php71w-pear 

php71w-mbstring php71w-mbstring php71w-json php71w-pecl-apcu php71w-pecl-apcu-devel

  最后,从服务器终端里查看 PHP 的版本号,以便验证 PHP 是否正确安装。

php -v

配置 PHP7-FPM

  在这一个步骤中,我们将配置 php-fpm 与 Nginx 协同运行。Php7-fpm 将使用 nginx 用户来运行,并监听 9000 端口。

  使用 vim 编辑默认的 php7-fpm 配置文件。

vim /etc/php-fpm.d/www.conf

  在第 8 行和第 10行,user 和 group 赋值为 nginx。

user = nginx

group = nginx

  在第 22 行,确保 php-fpm 运行在指定端口。

listen = 127.0.0.1:9000

  取消第 366-370 行的注释,启用 php-fpm 的系统环境变量。

env[HOSTNAME] = $HOSTNAME

env[PATH] = /usr/local/bin:/usr/bin:/bin

env[TMP] = /tmp

env[TMPDIR] = /tmp

env[TEMP] = /tmp

  保存文件并退出 vim 编辑器。

  接下来我们编辑nginx.conf的配置文件,让nginx能够解析php文件

vim /etc/nginx/nginx.conf

  然后在nginx.conf里面插入如下代码,记住格式必须要一致,空格之类的不能多也不能少,不然等下重启nginx的时候会报错。

  location ~ \.php$ {

            #root           html;

            fastcgi_pass   127.0.0.1:9000;

            fastcgi_index  index.php;

            #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

            include        fastcgi_params;

        }

  对齐后的格式如下图:

  然后启动 php-fpm 和 Nginx,并且将php-fpm设置为随开机启动的服务。

service nginx restart

systemctl start php-fpm

systemctl enable php-fpm

PHP7-FPM 配置完成。

然后在我们nginx目录下创建phpinfo.php文件(博主的目录为/usr/share/nginx/html)

vi /usr/share/nginx/html/phpinfo.php

接在在里面填写如下信息

<?php

phpinfo();

然后访问http://你的服务器公网ip/phpinfo.php,出现php的信息之后说明配置成功。

接下来,还要一步要做,那就是设置下session有关的东西。如果我们不把session拥有者设置为nginx,session不在同一个页面的话就会出现问题(博主亲身的辛酸经历啊)。我们需要再/var/lib/目录下,创建文件夹,文件夹名字为session,进行如下命令:

mkdir -p /var/lib/php/session

chown nginx:nginx -R /var/lib/php/session

安装和配置 MariaDB或者mysql

在这里我们提供安装mariadb和mysql的,如果不想安装mariadb的,请拉下去看安装mysql的部分。

我这里使用 MariaDB 作为数据库。可以直接使用 yum 命令从 CentOS 默认远程仓库中安装 mariadb-server 包。

yum -y install mariadb mariadb-server

启动 MariaDB,并将其添加到随系统启动的服务中去。

systemctl start mariadb

systemctl enable mariadb

现在开始配置 MariaDB 的 root 用户密码。

mysql_secure_installation

输入完之后,会要求输出现在的密码,默认安装完之后密码为空,直接回车。

键入 Y ,然后设置 MariaDB 的 root 密码。

Set root password? [Y/n] Y

New password:

Re-enter new password:

Remove anonymous users? [Y/n] Y

Disallow root login remotely? [Y/n] Y

Remove test database and access to it? [Y/n] Y

Reload privilege tables now? [Y/n] Y

这样就设置好了密码,然后尝试登陆下:

mysql -uroot -p

自此,我们的linux下安装php+mysql+nginx算是完成了。


安装mysql:

已经安装了上面了的mariadb的,可以不安装这个了,这两个数据库的用法差不多的

  首先Centos7已经不支持mysql,因为收费了你懂得。centos下yum暂时没有mysql-server直接安装包;MariaDB是MySQL社区开发的分支,也是一个增强型的替代品。CentOS7的yum源中默认好像是没有mysql的。为了解决这个问题,我们要先下载mysql的repo源。

1. 下载mysql的repo源

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

2. 安装mysql-community-release-el7-5.noarch.rpm包

rpm -ivh mysql-community-release-el7-5.noarch.rpm

安装这个包后,会获得两个mysql的yum repo源:/etc/yum.repos.d/mysql-community.repo,/etc/yum.repos.d/mysql-community-source.repo。

3. 安装mysql

yum install mysql-server

根据步骤安装就可以了,不过安装完成后,没有密码,需要重置密码。重置密码之前,首先要执行以下操作:

chown -R openscanner:openscanner /var/lib/mysql(这一步可能会报错, 我没有操作成功)

然后重启服务器:

service mysqld restart

接下来登录重置密码:

mysql -uroot

mysql >use mysql;

mysql >update user set password=passworD("123456") where user='root';

mysql> flush privileges;

mysql> exit;

mysql>select version();查询版本

mysql 配置文件一般在 /etc/my.cnf

配置可以参考https://blog.csdn.net/zwlsuperman/article/details/81333890


安装redis数据库

yum install redis

安装完毕后,使用下面的命令启动redis服务

# 启动redis

service redis start

# 停止redis

service redis stop

# 查看redis运行状态

service redis status

# 查看redis进程

ps -ef | grep redis

设置redis为开机自动启动

service enable redis 或者 chkconfig redis on

详细可参考:https://www.cnblogs.com/rslai/p/8249812.html


安装php-redis扩展

列出所有的可以安装的 php 软件包列表(安装对应PHP使用版本的redis)

yum list| grep php70w*

yum 安装 redis 扩展

yum -y install php70w-pecl-redis.x86_64

重启 php-fpm

service php-fpm restart

附:


在linux的搭建文件中有一段是安装 PHP7-FPM 需要的一些包。

yum -y install php70w-fpm php70w-cli php70w-gd php70w-mcrypt php70w-mysql php70w-pear php70w-xml php70w-mbstring php70w-pdo php70w-json php70w-pecl-apcu php70w-pecl-apcu-devel

 在此介绍一下各安装包的作用:

PHP-CLI

CLI是命令行版本。

FPM是作为Apache或者Nginx等服务器软件处理PHP文件的扩展。

PHP的默认版本是不支持线程安全的,这个线程安全问题可以去了解PHP扩展开发方面的相关知识,这是因为C语言方面的问题了。

cli和fpm是php的两种运行方式,而线程安全和非线程安全应该才能说的上是版本。是否开启线程安全可以在编译PHP的时候进行选择的。


php_cli模式优点

1. 使用多进程, 子进程结束以后, 内核会负责回收资源

2. 使用多进程,子进程异常退出不会导致整个进程Thread退出. 父进程还有机会重建流程.

3. 一个常驻主进程, 只负责任务分发, 逻辑更清楚.

4.完全支持多线程

5.如上,可以实现定时任务

6.开发桌面应用就是使用PHP-CLI和GTK包

7.linux下用php编写shell脚本

例如swoole_server就只能用于php-cli环境


怎么运行PHP CLI脚本

  第一种方法是使用php -f /path/to/yourfile.php。调用PHP CLI解释器,并给脚本传递参数。这种方法首先要设置php解释器的路径,Windows平台在运行CLI之前,需设置类似path c:\php的命令,也失去了CLI脚本第一行的意义,因此不建议使用该方法。

  第二种方法是首先运行chmod+x <要运行的脚本文件名>(UNIX/Linux环境),将该PHP文件置为可执行权限,然后在CLI脚本头部第一行加入声明(类似于#! /usr/bin/php或PHP CLI解释器位置),接着在命令行直接执行。这是CLI首选方法,建议采用


php-mcrypt:

  mcrypt 是php里面重要的加密支持扩展库,linux环境下该库在默认情况下不开启。window环境下,PHP>=5.3,默认开启mcrypt扩展。


php-pear:

  PEAR是PHP扩展与应用库(the PHP Extension and Application Repository)的缩写。它是一个PHP扩展及应用的一个代码仓库,简单地说,PEAR之于PHP就像是CPAN(Comprehensive Perl Archive Network)之于Perl。

  PEAR的基本目标是发展成为PHP扩展和库代码的知识库,而这个项目最有雄心的目标则是试图定义一种标准,这种标准将帮助开发者编写可移植、可重用的代码。

  Internet上已经有关于该项目的一些文档。例如,一些初始的资料已经可以在PHP正式手册中找到,更多的资料即将加入。


php-mbstring:

  mbstring库 全称是Multi-Byte String 即各种语言都有自己的编码,他们的字节数是不一样的,目前php内部的编码只支持ISO-8859-*, EUC-JP, UTF-8。

  其他的编码的语言是没办法在php程序上正确显示的。解决的方法就是通过php的mbstring函数库来解决其安装是在编译php的时候加上--enable-mbstring=?"="后面就是跟需要支持的语言,具体参数如下:

  --enable-mbstring=cn for Simplified Chinese support, --enable-mbstring=tw for Traditional Chinese support, --enable-mbstring=kr for Korean support, --enable-mbstring=ru for Russian support, and --enable-mbstring=ja for Japanese support.


php-pecl-apcu:

  类似于缓存,php-pecl-apcu会有效的提高php执行速度。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,271评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,725评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,252评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,634评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,549评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,985评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,471评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,128评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,257评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,233评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,235评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,940评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,528评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,623评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,858评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,245评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,790评论 2 339

推荐阅读更多精彩内容