独立开发者训练营现在报名,享受优惠立即启程

在阿里云 CentOS 服务器(ECS)上搭建 nginx + mysql + php-fpm 环境

阿里云的云服务器(ECS)可以选择多种操作系统,打算用它运行 Drupal 或者 WordPress ,你最好选择 Linux 系统,这篇文章的演示是基于阿里云的 CentOS 操作系统的服务器。我们在上面搭建一个 nginx + mysql + php-fpm 的环境,这就是常说的 LEMP(Linux NGINX MySQL / MariaDB PHP) 。我们不过多解释什么是什么,而是着重讲流程与方法,想了解具体的细节,去搜索下吧:)这个手册是在阿里云上测试的,不过应该也适用于其它使用 CentOS 系统的服务器。

2016.12.05:更新了安装配置的方法,适用 CentOS 7.x,另外运行环境上的软件也都更新了,比如之前是 PHP 5.3,现在是 PHP 7。还有一篇在本地使用虚拟机搭建这套环境的方法,可以参考。我还专门做了一套视频课程《 LEMP 网站应用运行环境 》,介绍了搭建 PHP 运行环境的整个过程,包括解决遇到的一些问题。了解更多关于 Linux 的东西,可以参考  《 CentOS 》这个课程包。现在我更推荐使用 Docker 来做网站的运行环境,可以参考 《 Docker 》课程包。

背景

宁皓网的《 CentOS:在阿里云上运行网站 》这个课程里面演示了在阿里云服务器上搭建 AMP 环境,也就是 Apache + MySQL + PHP,并且介绍了 Linux 系统的基本的操作,还有文件目录权限的问题。这些非常重要,可以先看看。

这次想用 Nginx 代替 Apache 服务器,宁皓网现在用的是 Apache 服务器,最近出了点问题。所以想更换服务器的系统,并且把 Web Server 换成 Nginx。顺便也去学习一下环境的优化,还有打算把 memcache 也用上,也可能会加上 varnish ,我会把整个过程写下来与大伙分享。下面开始第一步,创建一个阿里云服务器的实例。

创建服务器实例

创建一个服务器实例其实就是去购买一台相应配置的云服务器。注册并登录到阿里云的网站,在 产品服务 里选择 云服务器 ECS ,点击页面上的 立即购买。可以 包年包月 的购买,也可以 按量付费,也就是用多少花多少,不过这种方式不支持网站的备案。

确定后,可以按需要去配置服务器,建议最初可以选择最低配置,因为后续升级也非常容易。选择 CPU,内存,带宽,不同的配置价格不同。你还要选择 地域 ,也就是云服务器所在的地方,目前只有 青岛 与 杭州。再去选择操作系统,这篇文章所做的测试用的是 CentOS 6.3 64 位。需要的话可以再增加一块数据盘,默认会带一个系统盘,一共 20 G ,足够我们测试用了。

2016.12.05:现在推荐使用 CentOS 7 64 位。

aliyun-05

点击 立即购买,预览一下所选的服务器,然后 提交订单

aliyun-01

选择支付方式,然后点击 确认支付

aliyun-02

注意支付以后,可能会等一小会儿订单才能生效。至少我是等了一会儿,也可能是因为我用的手机版的支付宝。支付成功以后,打开你的个人账户页面,选择 管理控制台,在这里,你可以找到购买的云服务器。云服务器默认的 root(超级管理员) 用户的密码,会发送到你的手机上,你也可以点击 修改密码,去修改 root 用户密码。

在这个界面,你还可以 停止  或 重启 去服务器。也可以找到你的服务器的公众的 IP 地址。我购买的这台服务器地址是 218.244.147.196,使用这个地址配合 root 用户和密码,你可以使用工具登录到服务器,对它进行远程管理,比如安装软件,修改设置,重启服务等等。

aliyun-04

远程控制你的服务器

远程控制 Linux 类型的系统的服务器,比如 CentOS 系统的服务器,一般不像 Windows 服务器那样,使用图形界面的远程控制。我们需要使用命令行工具,远程连接到服务器,然后使用命令去控制服务器。Windows 用户可以使用 Putty ,Mac 用户可以使用系统自带的终端工具。然后用 ssh 命令,连接到你的服务器。像这样:

ssh root@218.244.147.196

@ 左边的 root 是连接时使用的用户的名字,@ 右边的数字是你的服务器的 IP 地址。这行命令的意思就是,使用 root 用户,登录到 218.244.147.196 这台服务器上。回车以后,会提示你输入 root 用户的密码(这个密码阿里云会发送到你手机上)。

添加新用户并分配 Root 权限

为了安全,我们可以单独创建一个平时操作服务器的用户,并且给这个用户分配可以使用 Root 的权限,也就是如果需要 Root 权限,可以在命令的前面加上 sudo 获取到 Root 用户的权限。

添加新用户

比如添加一个名字是 wanghao 的用户,可以这样:

adduser wanghao

设置密码

为用户设置密码:

passwd wanghao

分配 Root 权限

让我们新创建的用户拥有 Root 用户的权限,执行:

gpasswd -a wanghao wheel

把 wanghao 这个用户名换成你自己的用户名。

用新用户登录服务器

ssh wanghao@218.244.147.196

仓库

为了可以使用 CentOS 系统的包管理工具去安装更多的东西,我们需要单独安装一些额外的软件仓库。

EPEL

sudo yum install epel-release -y

IUS

sudo yum install https://centos7.iuscommunity.org/ius-release.rpm -y

IUS 仓库里面有我们需要的一些新的软件包,比如 PHP 7。注意我们安装的是为 CentOS  7 这个系统准备的 IUS 仓库,如果你的系统是 CentOS 6,你需要到 IUS 网站上去查找适合的仓库的下载地址。

安装 NGINX

NGINX 这个软件包已经包装在 EPEL 仓库里了,之前我们已经安装了这个仓库,所以可以直接使用包管理工具去安装 NGINX。

sudo yum install nginx -y

启动

sudo systemctl start nginx

开启自启动

sudo systemctl enable nginx

 

服务启动以后,你就可以在浏览器上使用服务器的 IP 地址,或者指向这个地址的域名访问服务器指定的目录了。你会看到类似下面的这些文字。

Welcome to nginx! If you see this page, the nginx web server is successfully installed and working. Further configuration is required. For online documentation and support please refer to nginx.org. Commercial support is available at nginx.com. Thank you for using nginx.

配置 nginx 虚拟主机

安装完 nginx 以后,第一件想到的事应该就是去创建虚拟主机,虚拟主机允许我们在同一台服务器上运行多个网站,我们可以为不同的域名绑定不同的目录,访问这个域名的时候,会打开对应目录里面的东西。之前介绍过为 Apache 服务器创建虚拟主机,下面来看一下为 nginx 配置虚拟主机。先进入到 nginx 配置文件目录:

cd /etc/nginx/conf.d

创建一个新的配置文件,比如我要为 nginx.ninghao.net 这个主机名创建一个虚拟主机,可以这样:

 

vim nginx.ninghao.net.conf

把下面的配置代码放到这个配置文件里:

server {
  listen        80;
  server_name   nginx.ninghao.net;
  root          /home/www/nginx.ninghao.net;
  index         index.php index.html;

  location / {
    try_files $uri $uri/ /index.php?$query_string;
  }

  location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi.conf;
  }
}

上面这个配置文件支持一些的 PHP 应用,比如 WordPress,Drupal,Laravel。第一个 location 区块可以让 PHP 应用支持地址的重写功能,第二个 Location 设置了让虚拟主机可以去处理 PHP 的请求。注意这里用了 include 命令,包含进来一个 fastcgi.conf 文件,你要确定这个文件存在。

你也可能会找到 fastcgi_params 这个文件,如果没有 fastcgi.conf 就把 fastcgi_params 这个文件包含进来,并且在处理 php 的那个 location 区块里再添加一条配置:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

server_name 就是主机名,也就是跟这个虚拟主机绑定在一块儿的域名,我事先把 nginx.ninghao.net 指向了服务器,这个虚拟主机就是为它准备的,所以,server_name 后面的东西就是 nginx.ninghao.net 。紧接着 server_name 下面可以是一个 root,就是这个虚拟主机的根目录,也就是网站所在的目录。比如我们要把 nginx.ninghao.net 这个网站的文件放在 /home/www/nginx.ninghao.net 下面,那么这个 root 就是这个路径。

然后去掉 location / 里面的 root 这行代码。再在 index 后面加上一种索引文件名,也就是默认打开的文件,这里要加上一个 index.php ,这样访问 nginx.ninghao.net 就可以直接打开 root 目录下面的 index.php 了。稍后我们再去安装 php 。

保存一下,按 esc ,输入 :wp(保存并退出)。现在虚拟主机应该就可以使用了。主机的域名是 nginx.ninghao.net,访问它的时候,打开的是 /home/www/nginx.ninghao.net 这个目录里面的东西,你可以在这个目录下放点东西。

重启 nginx 或者重新加载 nginx 可以让配置文件生效。

sudo systemctl reload nginx

现在,打开浏览器,输入你为虚拟主机设置的域名,看看是否能打开你指定的目录里的东西。

PHP

要让 nginx 能够执行 php 文件,需要去安装一下 php-fpm,我要安装的是比较新的 PHP 7 ,这个软件包可以在 IUS 仓库里找到,所以你需要先安装 IUS 仓库。

sudo yum install php70u-fpm -y

启动

sudo systemctl start php-fpm

开机自启动

sudo systemctl enable php-fpm

安装 PHP 扩展

为了可以正常运行一般的 PHP 应用,你需要再安装一些其它的 PHP 扩展,通常你在安装 PHP 应用,比如 WordPress,Drupal,Laravel 的时候,都会提示你缺少的 PHP 扩展。下面是一些常用的 PHP 扩展:

sudo yum install php70u-gd  php70u-mysqlnd php70u-pdo php70u-mcrypt php70u-mbstring php70u-json php70u-opcache php70u-xml -y

重新加载 PHP-FPM

sudo systemctl reload php-fpm

测试是否可以执行 php

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

<?php phpinfo(); ?>

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

安装 MySQL / MariaDB

MySQL 与 MariaDB 是相互兼容的,现在社区推荐使用 MariaDB,所以我们可以去安装一下 MariaDB ,用它代替 MySQL 。

sudo yum install mariadb101u-server -y

如果出现冲突的提示,是因为系统本身自带 MariaDB,我们需要先删除掉系统本身带的,才能正常安装比较新的。一般可以这样来删除:

sudo yum remove mariadb-libs -y

启动

sudo systemctl start mariadb

开机自启动

sudo systemctl enable mariadb

安全配置

然后我们需要简单配置一下 mysql ,默认安装以后 mysql 的 root 用户是没有密码的,对于生产环境来说,这肯定是不行的,另外还有一些安全相关的设置,可以使用下面这行命令去配置一下,它是一个向导,问你一些问题,你要给出答案,比如是否要设置 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 表示愿意。

目录与文件的权限问题

网站上面有些目录或文件需要有写入权限,这样你得为这些目录和文件分配合适的权限,一般可以把它们的拥有者设置成 php-fpm 使用的用户,查看一下谁在运行 php-fpm 这个服务:

sudo ps aux|grep php

修改所使用的用户,php-fpm 的配置文件是:/etc/php-fpm.conf,还有在 /etc/php-fpm.d/* 这个目录里的所有文件都是 php-fpm 的配置文件。默认这个目录里有一个 www.conf ,你可以编辑这个文件来修改 php-fpm 所使用的用户名称。使用 vim 命令:

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

打开文件以后你可以搜索下关键词 user ,输入 :/user  ,会搜索到结果,按小 n 可以继续向下查找,按大 N 可以向上查找。直到你看到:

user = php-fpm

这个 php-fpm 就是运行 PHP-FPM 的用户的名字,你看到的也可能是其它的名字,这不重要。你只要知道这个用户是谁,在哪里可以修改这个用户就行了。在遇到目录写入权限的问题,比如不能正常上传网站的文件,你可以把保存上传文件的那个目录的拥有者修改成运行 PHP-FPM 的用户就可以了。

修改目录的拥有者可以使用这样的命名:

sudo chown -R 用户名 目录

这样就会把指定的目录的拥有者修改成指定的用户了。也就是如果你把目录的拥有者修改成运行 PHP-FPM 的那个用户,那么在网站上再去上传文件就不会有权限的问题了,因为目录的拥有者一般都会拥有可以写入的权限。

服务器 nginx php-fpm

评论

皓哥,与其写这么长一段不如把这个做成视频,如何安装配置ngnix和memcache等软件,服务器性能优化是我们必须考虑的问题,出个教程吧!

嗯。我看行。不过,先写写,总结一下吧,写到哪儿算哪儿。

直接用wdcp也挺不错。不需要自己配置~该有的都有了~

嘿嘿。我想先动手试试看,这样知道自己都做了啥。

建议用Redis代替mc

好,我去学习一下:)

不错,网上虽然很多教程,但这个教程简明扼要,不冗余繁杂。

啊哈,未完待续,感谢皓哥分享!

1、测试是否可以执行 php部分第一段下面应该有一个<?php phpinfo(); ?>代码,我使用火狐浏览器+Win7操作系统,没有显示出来这个代码;
2、实际用户购买阿里云主机后,都会购买一个数据盘,而对于linux系统需要安装完系统后手工加载,教程中没有提到;
3、对于不熟悉LInux的同学来说,手动安装nginx还是有难度的,而且还要涉及到绑定域名、分配目录、安装FTP服务等等操作,如果是在一个阿里云主机中搭建多个网站,更麻烦,因此可以建议有需要的同学关注一下LuManager,提供linux操作系统控制面板,还是比较方便的。

感谢 iplaywind 1,2,3 总结,嘿嘿。1,没有显示出 php 的页面应该是因为没有正确的配置 php 。2,的确是需要挂载数据库,在 《 CentOS:在阿里云上运行网站 》 这个课程的 03-01 里面讲到了,这次测试没有购买数据库,就略过了挂载数据盘的步骤。3,的确需要先理解下 Linux 的基本操作,同样可以参考:《 CentOS:在阿里云上运行网站 》。有控制面板的确是很方便,不过对于只想创建几个网站的用户来说,可能手工安装跟配置服务器会比较好一点。应该能节省点内存吧,还有就是安全问题。

第一个问题,我的意思是你写的文章不完整,文章内容部分缺少了“<?php phpinfo(); ?>”这几个字符,呵呵~~

哦。哈哈。多谢纠错:)

我很同意王老师说的,对于我们这些只想创建几个网站的人,真的不想用面板,如果自己觉得linux知识不足,补一补是没有坏处的

带面板的将来做缓存加速的时候给linux服务器加模块时不好做。

你视频存放的空间 有没有使用阿里云开放存储服务 OSS

打算用,暂时还没有。

这教程简直是碉堡了~

已实践一遍,感谢感谢。。。
PS:发现一个小地方,让 “nginx 可以执行 php”那段最后重启nginx——yum nginx restart,是不是显示错了= =

哈,感谢。已修正,应该是:service nginx restart

在安装 php-fpm的时候出现了这样的错误,请问该怎么处理呢。
Transaction Check Error:
file /etc/php.ini from install of php-common-5.3.3-27.el6_5.x86_64 conflicts with file from package php53u-common-5.3.27-1.ius.centos6.x86_64
file /usr/lib64/php/modules/curl.so from install of php-common-5.3.3-27.el6_5.x86_64 conflicts with file from package php53u-common-5.3.27-1.ius.centos6.x86_64
file /usr/lib64/php/modules/fileinfo.so from install of php-common-5.3.3-27.el6_5.x86_64 conflicts with file from package php53u-common-5.3.27-1.ius.centos6.x86_64

Transaction Check Error:
file /etc/php.ini from install of php-common-5.3.3-27.el6_5.x86_64 conflicts with file from package php53u-common-5.3.27-1.ius.centos6.x86_64
file /usr/lib64/php/modules/curl.so from install of php-common-5.3.3-27.el6_5.x86_64 conflicts with file from package php53u-common-5.3.27-1.ius.centos6.x86_64
file /usr/lib64/php/modules/fileinfo.so from install of php-common-5.3.3-27.el6_5.x86_64 conflicts with file from package php53u-common-5.3.27-1.ius.centos6.x86_64

我猜你是不是之前安装过 PHP。如果是应该可以先移除掉之前安装的 PHP,然后再安装 php-fpm 。

谢谢啊!卸载了php后可以了!

:)

收藏了先,以后慢慢学习。

自动安装的版本还是太老了,竟然是PHP 5.3,我这种升级强迫症的人还是喜欢编译安装。

哈哈。那更好啊。

安装了,很不错,有个问题:
运行phpMyAdmin出错
Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly. Also ensure that cookies are enabled in your browser.

这应该是一个目录权限的问题,我遇到过。你可以查看一下 phpinfo ,看看 session 目录的位置在哪里,然后去设置一下这个目录的权限。

教程写的很详细,在最后一步设置权限事,user = apache 后面还有个group = apache 这个用户组也需要改吗?

期待后续接着出更详细的,比如memcache等配置

再试了一下,把后面的group = apache 也改为nginx就可以解决wordpress 在线升级及删除主题等需要Ftp的问题,而不需要在wordpress配置文件中加一行代码,我是这么改的,具体它是不是决定这错误的关键还不能确认。

偶像我来支持你了,嘿嘿。

chown -R nginx 目录名/文件名

比如?

没看明白。。

chown 这个命令可以更改目录或者文件的拥有者,-R 参数是递归的意思,如果你修改一个目录的拥有者,并添加了 -R 参数,就表示,把目录以及目录里包含的其它的目录的拥有者都设置成指定的拥有者。比如 chown -R nginx sites ,这行命令的意思就是,把 sites 这个目录的拥有者修改成 nginx ,包括 sites 这个目录里面的其它的目录的拥有者也都设置成 nginx 这个用户。

太喜欢你的网站了,请问是全部自己开发的,还是借助什么框架啊?很想学习你的网站

谢谢啊。宁皓网是基于 Drupal 做的。

在64位下512MB的内存 竟然装上mysql了?难道用yum就可以装?
我是自己编译安装 用cmake以后 make无论如何是通不过的。报错!百度N久误解。
See <URL:http://bugzilla.redhat.com/bugzilla> for instructions.
make[2]: *** [sql/CMakeFiles/sql.dir/sql_yacc.cc.o] Error 1
make[1]: *** [sql/CMakeFiles/sql.dir/all] Error 2
make: *** [all] Error 2

最后是通过升级内存到1G问题解决!

皓哥,为啥安了php55u-gd 。重启了php-fpm 和nginx 。但是打开IP/phpinfo.php找不到gd扩展。(我安装drupal8时提示Disabled
Drupal requires you to enable the PHP extensions in the following list (see the <a href="http://drupal.org/requirements">system requirements page</a> for more information):<div class="item-list"><ul><li>gd</li></ul></div>)

等我试一下哈。

刚试了。安装 Drupal 8 成功。看了 phpinfo ,能看到 gd 扩展。三刀安装的 php 版本是 php5.5 吗?

又安了一次,发现安好nginx 和php-fpm后都可以看到时gd扩展。但这后我又安了mysql 然后安vsftpd 后来 又安了phpmyadmin.。这时发现php的gd扩展就不见了

我猜跟 phpmyadmin 肯定没关系。我没有安装 vsftpd 。我的环境是按照 《 阿里云 ecs 》这个课程配置的。

可不可以用putty直接上传文件。而不用ftp

这个到是可以的,使用 scp 命令。或者,如果你用的是 windows ,可以使用 WinSCP 这个工具。

又从头安了一次。先安的ngixn 然后是php-fpm。然后安的php 扩展.。这时都是都 正常的。在ip/phpinfo.php中都能找到gd 扩展。接下来安了mysql 并设了mysql密码。用mysql -u root -p可以查看数据库。这时我service php-fpm restart。就显示(Starting php-fpm: [31-Aug-2014 21:30:24] NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/gd.so' - libvpx.so.0: cannot map zero-fill pages: Cannot allocate memory in Unknown on line 0) 。。。。。。在ip/phpinfo.php中也找不到时gd 扩展了。..。。。可以肯定和安装mysql有关,是不是要先安mysql,再安php扩展。而不是先安php扩展,再安mysql

这个还真得实验一下,你的 mysql 是什么版本?

mysql56

嗯。我也试一下看看。

这时我先service mysqld stop再service php-fpm restart这时php又正常了。在ip/phpinfo.php中又能找到gd 扩展了。。。。。。。不知道mysql哪安错了

你都安装了哪些 php 扩展?

php55u-pdo php55u-mysqlnd php55u-gd php55u-mcrypt php55u-mbstring php55u-xmlrpc php55u-pecl-jsonc php55u-xml

安php55u-xml时提示已经安了Package php55u-xml-5.5.16-1.ius.centos6.x86_64 already installed and latest version

我也重新试了一次,系统是 centos 6.5 ,先安装了 nginx,又安装了两个资源库,然后安装的是 php55u-fpm,接着安装了你说的那些 php 扩展,又安装了 mysql56u-server。这个过程其本就是我在 《阿里云 ECS》这个课里介绍的一样。重启 mysql ,重启 nginx 或者 php-fpm ,都没有影响,都可以正常的显示 gd 扩展。

会不会和磁盘的挂载地方有关。?我在/root中没找到auto_fdisk.sh 于是我就手动挂的,挂在了/mnt下

我想跟这个没有关系。

我又搜索了一下,有人说,你遇到这个错误跟 php,gd,mysql 都没有关系。原因是 gd 需要 swap 文件,有人说他添加了一个 1GB 的 swap 文件就解决问题了。具体的添加 swap 的方法,参考:https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-cent...

我也是按《阿里云 ECS》来的。安完mysql后只要一重启就报下面的错
[root@AY1407161250374430a1Z ~]# service php-fpm restart
Stopping php-fpm: [ OK ]
Starting php-fpm: [31-Aug-2014 23:16:21] NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/gd.so' - libvpx.so.0: cannot map zero-fill pages: Cannot allocate memory in Unknown on line 0
[ OK ]

[root@AY1407161250374430a1Z ~]# service php-fpm restart这后就显示</br>
Stopping php-fpm: [ OK ]
Starting php-fpm: [31-Aug-2014 23:16:21] NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/gd.so' - libvpx.so.0: cannot map zero-fill pages: Cannot allocate memory in Unknown on line 0
[ OK ]

不过我把 mysqld和php-fpm 都停了后(service mysqld stop @service php-fpm stop)......。。。。然后先启动php-fpm (ervice php-fpm start),再启动mysqld (service mysqld start)这是php是正常的。。。。。。。就是不能再用service php-fpm restart这个命令。(除非先关了mysqld)

service php-fpm restart 会出现 NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/gd.so' - libvpx.so.0: cannot map zero-fill pages: Cannot allocate memory in Unknown on line 0

多半和session有关。安装phpmyadmin时报错 Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly。于是mkdir /var/lib/php/session
chown -R nginx:nginx /var/lib/php/session service php-fpm restart
这样phpmyadmin倒是用得起了

果然是因为 gd 需要 swap 文件。我按浩哥给的网址,安了swap 就对了

你好啊,我跟着你的步骤来,但在浏览php的时候变成了下载php文件了,求解啊

很难判断你遇到的具体的问题在哪里,不过我猜应该就是你配置的 nginx 不对,没有让 nginx 能够执行 php ,每个细节都再检查一次吧。先要知道你需要做什么才能让它正常工作。

nginx 把 durpal /?= 去掉?

参考这个吧:http://work.ninghao.net/blog/663

这个问题弄了一天,最后老师一下就点破。学ninghao网真超值!

请问如果Joomla又要怎么写?照着官网的写,不成功。百度来的东西都是抄来抄去。VPN连不上,谷歌不能访。

您好,我在我的博客转载了您的这篇文章,地址:http://donghongfei.com/在阿里云-centos-服务器(ecs)上搭建-nginx-mysql-php-fpm-环境.html

宁老师,感谢您的教程,请问,还会出这个后续的,比如php版本升级教程么?我按这个教程装好以后,php是5.3.3的,感觉版本是不是低了,却不知道该怎么升级,也不知道该升级到哪个版本会合适稳定。看了很多其他的教程,总担心把服务器弄乱了,又要重来。

现在已经有了,你可以参考《阿里云 ECS》这个课程里面介绍的方法,去安装新版本的 php 。

王老师,我用你这个教程里面的方式还是无法升级php版本
请问如何解决,我是已经安装了php5.3之后用你教程里面的方式去升级的,没有成功
现在该怎么办?

皓哥最近配置服务器遇到了一些问题,忘帮忙解答一下,总结了一下:
1.我在阿里云服务器上安装phpmyadmin来管理mysql,安装成功后访问phpmyadmin界面,网页弹出下载对话框,phpmyadmin页面显示错误
2.之前我安装了wordpress本来能正常的访问到,现在却突然访问不了,想问下这是哪里有错误?
3.设置在Windows系统下无需密码就可登录服务器的功能,总是拒绝我登录
4.成功安装WP-CIL,测试区不能正常工作,我已经安装了php了
这些都是在阿里云服务器上操作的,若是在vagrant搭建的环境下做这些操作,都可以吗?

1,我觉得问题可能是 session 目录权限的问题。2,突然访问不了,有没有提示呀。3,我也不能判断是什么问题。4,我也在阿里云上测试过,是可以执行的。再仔细检查一下,应该能行的。

1.session目录权限我不太懂,要怎么去修改它呢?
2.会弹出要我现在phpmyadmin的下载任务框,页面显示"已取消到该网页的导航"
4.我自己再试试吧!

皓哥 这个环境能运行drupal8 啊

yum安装不是最新版,该如何升级呢?比如如何升级php版本?

一般您需要安装新的资源库,这里库里有比较新的版本,比如 epel 与 ius 这两个资源库,安装好以后,你可以安装 php56u ,这是新版本的 PHP 。

一般最新的安装源在哪里下载啊?

我是在这里:https://iuscommunity.org/pages/Repos.html ,下载对应版本的 epel 还有 ius 仓库。

你好,我是centos7.0的系统,yum检测不到mysql-server,不用Mariadb的话,只能下载mysql的安装包后上传安装吗?

不会,您可以使用 yum 去搜索一下,比如 yum search mysql ,看看都有时候。如果你想用新版的软件,需要安装一些其它的资源仓库,比如 epel 还有 ius 。

下面在测试是否可以执行 php时候

测试是否可以执行 php ,直接说了 在虚拟主机根目录下面创建一个php文件,这个怎么创建,根目录是哪个,我是纯小白,你的帖子让我看到了乐趣,我想先搭一个在慢慢研究,谢谢了
-----------------------------------------------------》》》》》
现在,我们已经安装了 php-fpm,并修改了 nginx 的配置文件让它可以去执行 php,下面,我们得去测试一下,可以使用 php 的 phpinfo(); 函数,方法是在你的虚拟主机根目录下面,创建一个 php 文件,命名为 phpinfo.php,然后在这个文件里输入:

<?php phpinfo(); ?>

虚拟主机的根目录,是在您的 NGINX 的配置文件里使用 root 指令定义的。创建文件可以使用 vi 或 vim ,比如 vi phpinfo.php ,回车,按一下小 i ,输入内容,再按 esc ,然后输入 :wq ,表示保存并退出。

浩哥您好:
按照您说的 我就应该使用 vim /home/www/diandian-life.com/phpinfo.php 这个去创建 phpinfo.php 这个文件,其中 diandian-life.com 是我的域名。然后 i 输入 <?php phpinfo(); ?> 然后 ESC保存 , :wq 退出, 会弹出这样一个错误如下:

"/home/www/diandian-life.com/phpinfo.php" E212: Can't open file for writing
Press ENTER or type command to continue
不知道如何解决, 虚拟主机根目录 上面不是root 到了 /home/www/diandian-life.com 下面,所以应该是这样写的。很无解。谢谢回复

上 talk.ninghao.net 上来讨论吧,更方便回复 :)

我的default.conf必须删除后其他*.conf文件才能生效,这样对吗?
default.conf对其他配置文件有啥影响呢?

如果你用不到它,可以删掉。

皓哥 我根据这篇文章配置了 阿里云服务器 然后又安装了vsftp 但是我的mysql总是过几个小时自己挂掉 而且启动不起来 只能重启系统才行,mysqld服务挂掉之后status查看运行状态是mysql已死但是 subsys 被锁,网上的方法都试过了 没用 ,没办法,重装了服务器系统重新配置的服务器但是还是那样,求教!!!

我猜这可能是 MySQL 的配置问题。我想应该可以通过一些设置去限制 MySQL 所使用的资源。

呃 不是太明白 您能详细说说吗?

我先用你的帐号试一下。

我下载了相应版本的epel包并安装了也并没有发现有可用于yum安装的mysql-server

还有php的openssl扩展模块该如何安装呢?

安装 PHP 扩展,可以先去搜索一下,比如搜索 openssl , yum search openssl ,看一下返回来的结果,可能会有一些 php 开头的东西,然后再判断一下,哪个扩展是自己想要的,比如你要考虑 PHP 的版本。

很详细!

这里有个新的:http://ninghao.net/blog/2879

请问我在配置 nginx 虚拟主机之后,打开域名显示的不是网站根目录下的文件,而是404页面是怎么回事?

那应该是您配置错了。正确的话不会有问题。您可以来 talk.ninghao.net 上讨论。

如何保持ssh到阿里云的对话一直有效,我这边ssh过去没过几分钟就断了。又得重新连

这样试试,编辑:/etc/ssh/sshd_config ,有几处配置:ClientAliveInterval 30 然后是:TCPKeepAlive yes 再看看:ClientAliveCountMax 99999 ,然后重新启动一下 sshd 服务。

那些扩展是必须都得安装的吗?跟您的视频教程上的有点不一样

嗯,这篇文章早了点,现在可能需要用到新的软件了,比如更高版本的 php 。您参考这个:http://ninghao.net/blog/2879

放网站文件的时候为什么要创建那么多文件夹,直接在根目录创建一个文件夹放可以吗?

可以,您感觉合适就行。

皓哥,在安装完所有的东西后,我开始配置wordpress,其中要填数据库名,用户名和密码,这个东西怎么查看呢!求指导。

这个是您自己设置的。数据库管理系统里面可以添加多个用户,每个用户可以去管理不同的数据库。你可以在命令行下面使用 mysql 登录到你的数据库,也可以使用图形界面的工具,比如通过浏览器,可以使用 phpmyadmin ,它可以管理你的服务器上的数据库,你可以去创建数据库,添加用户,设置密码等等。

皓哥,我按照,《路径(十九):在本地 CentOS 7 上搭建 Web 开发环境 — phpMyAdmin》,文章安装phpmyadmin,将解压的phpmyadmin复制到了/usr/share/nginx/html/phpmyadmin路径中,然后按照ip/phpmyadmin/打开,但是现实403 Forbidden/nginx/1.0.15,请问这是什么问题?

1.主机名是不是自己随便取的还是需要申请一个主域名?
2“我事先把 nginx.ninghao.net 指向了服务器”这个应该怎么弄?

我是学习使用的,以前从来没用过

如果是学习使用,您可以在本地创建一台 Linux 系统的虚拟机,然后在上面去搭建网站的运行环境。推荐使用 Vagrant 去管理虚拟机,非常方便。

浩哥,php7都出来了,更新一下吧 :)

嗯,好的。

皓哥,小白想问一下低级的问题,配置虚拟机的时候,域名需要解析才能访问的吗?我跟着教程安装配置了,没有任何错误,但是域名就是打不开,没有走配置的根目录里面的文件,希望回到一下,非常感谢!!!

是啊,您需要配置域名,让它指向你的服务器的 IP 地址,然后您再配置这个域名的虚拟主机,设置 server_name 指令,它的值就是你的域名(主机名),配置好以后,需要重新启动 NGINX 。

浩哥,那个phpinfo文件放在那个文件下。

浩哥,那个phpinfo文件放在那个文件下。

浩哥,我把PHPinfo文件用FileZilla 上传到/usr/share/nginx/html/phpmyadmin路径中,然后按照ip/phpmyadmin/打开,然后显示是File not found.

您需要配置一下 NGINX,也就是可以为你的每一个网站都单独创建一个 NGINX 的配置文件,这些配置文件里,说明监听的主机名,使用的根目录等等,这样访问对应的主机名就会打开对应的根目录下的文件。

帮我录个视频吧,浩哥,给个红包。

哈哈,搭建 LEMP 环境,宁皓网上面有完整的视频哦 :)

上面订阅太贵,我给不起哈

别着急,多试几次就好了,先理解每一步的操作。知道是哪里的问题。一个问题一个问题的解决。

谢谢浩哥

别客气 :)

浩哥,按照这个操作,源码上传路径是那一个

应该是这个:/home/www/nginx.ninghao.net

就是纠结HOME下面没有WWW文件夹,

就是纠结HOME下面没有WWW文件夹,

自己创建一个就可以了。

教我一下怎创建

sudo mkdir -p /home/www/nginx.ninghao.net

浩哥,微信多少,我加您。

wanghao_8088

皓哥,CentOS 7.2版本添加资源库,用你的这个链接http://iuscommunity.org/pages/Repos.html ,安装有问题...

用这个地址:https://centos7.iuscommunity.org/ius-release.rpm,可以直接执行: sudo yum install https://centos7.iuscommunity.org/ius-release.rpm

皓哥刚刚试了一下, 用你的执行后,目录里没有你后面步骤说的这个文件 epel-release-6-5.noarch.rpm...我的是腾讯云 CentOS 7.2 64位,顺便问一下CentOS 版本高低有什么影响么。 我觉得皓哥文章下面应该加个打赏,比较喜欢看你的文章。

上面我给您提示的是用在 CentOS 7.x 上的 ius 仓库,直接使用 yum 安装,所以不会下载文件到当前的目录,安装好以后,你就可以去安装在 ius 仓库里的软件包了。不需要担心别的。建议用 CentOS 7.x ,不要再用 CentOS 6 了 :)

centos 7.2 安装nginx后在 /etc/nginx/conf.d 目录下没有 default.conf ,该怎么解决。

没事,可以自己创建。怎么样都可以。

比如创建一个123123.conf 文件,在123123.conf文件中要修改什么吗?还是创建好了就可以了。

修改什么取决于你要做什么,在 conf.d 里的 .conf 文件,Nginx 都会认为是它的配置文件。具体怎么配置,参考 nginx 这个课程。

我的为什么报404 只能打开首页

哈哈,终于更新了cent os 7了~

啊,你是怎么发现的?哈哈。昨天晚上刚刚修改了一下 :)

皓哥,按照你的方法操作一遍7.0的,感觉有点问题。直接用创建用户vim ninghao.net.conf的话不能保存,要用root用户才可以保存。 sudo systemctl reload nginx 重新加载nginx没有响应,html文件上传到root指定目录也打不开。 而且配置也没错,因为以前6.5已经玩的很熟了-_- 所以希望皓哥看看是不是哪里出了问题...

嗯,因为配置文件的拥有者是 root ,你可以把文件的拥有者修改成你自己创建的新用户,这样以后编辑就没有问题了。 NGINX 的配置基本上是一样的,不会受到 CentOS 的版本变化的影响。sudo systemctl reload nginx ,执行的时候没有特别的反应 :)

现在目录里面文件打开了,我把nginx配置index index.php index.html; 放在了location /{ }里面...

所以烦请皓哥看下:配置 nginx 虚拟主机 这块是不是有点问题.... 感觉和6.5的配置不一样...

皓哥 这里是我nginx配置
erver {
listen 80;
server_name www.lzreo.com;
root /home/www/sky;
index index.php index.html;

location / {
try_files $uri $uri/ /index.php?$query_string;
}

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}
为什么sky目录下放个index.html打不开...



微信好友

用微信扫描二维码,
加我好友。



微信公众号

用微信扫描二维码,
订阅宁皓网公众号。



240746680

用 QQ 扫描二维码,
加入宁皓网 QQ 群。

统计

13463
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点