话说Centos下nginx,php,mysql以及phpmyadmin的配置

大话centos下部署phalcon框架

Centos还是ubuntu?

当我沿用这个标题的时候,心里在想“我能说我之前用的windows吗?",windows下xampp,wamp一键配置啊,有木有!我刚开始的时候就很傻很天真的在刚买的阿里云服务器安装了window Server 2008,着手部署xampp,两个小时把解析环境全部配置好了,心里各种吐槽什么服务器难搞定,在本大(diao)神(si)眼里全是渣!心里各种喜悦啊,开始乐呵乐呵的测试公司的网站(根本没问题啊),然后我就没多想了(果然还是太年轻),之后的几天开始沉浸在项目开发中无法自拔,就没去折腾服务器了。

由于项目接近尾声,开始试上线,我就把本地程序上传到了服务器(由于服务器是windows环境,桌面远程连接(我真是忍不住要吐槽)在mac实在是难用),由于没有配置好windows下远程FTP连接,然后就悲剧的共享磁盘驱动来更新程序(谁用谁知道),各种慢就不说了,还总是丢失。但是这些都没有让我产生放弃windows怀抱的想法。

因为项目前后台都是我自己弄的,前端用的h5+js,免不了各种ajax调用数据接口,然后悲剧就此产生~ windows的apache 2会三五分钟就嗝屁,客户后台总是登不进去,基本就是一会一个电话,我心里想还是换linux系统,就此开始了我3 * 24小时的CentOs+nginx+php+mysql+phpmyadmin+phalcon折腾之旅(据说nginx是7*24小时不重启的小金刚)。

因为最开始我是部署的unbun12.04的系统,在开始之前还是有思考过要用ubuntu还是用centos呢?最后,我还是选择了centos,原因是因为我觉得名字感觉大气一点(任性一把)。

环境安装

  • 因为PHP-FPM 在 CentOS 的官方程序库中不存在,所以我们首先得添加第三方扩展软件源,运行以下命令:

      rpm --import https://fedoraproject.org/static/0608B895.txt 
      rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-        release-6-8.noarch.rpm
      rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
      rpm -ivh http://rpms.famillecollet.com/enterprise/remi-     release-6.rpm
      yum install yum-priorities
  • 然后,编辑:vi /etc/yum.repos.d/epel.repo:

      [epel]
      name=Extra Packages for Enterprise Linux 6 - $basearch
      baseurl=http://mirrors.aliyun.com/epel/6/$basearch
      http://mirrors.aliyuncs.com/epel/6/$basearch
      mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
      failovermethod=priority
      enabled=1
      priority=10
      gpgcheck=0
      gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
  • 接着:vi /etc/yum.repos.d/remi.repo:

      [remi]
    
      name=Les RPM de remi pour Enterprise Linux 6 - $basearch
      baseurl=http://rpms.famillecollet.com/enterprise/6/remi/$basearch/
      mirrorlist=http://rpms.famillecollet.com/enterprise/6/remi/mirror
      enabled=1
      priority=10
      gpgcheck=1
      gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

下面我们就可以安装所需要的包文件了:

安装MySQL服务器

yum install mysql mysql-server

-安装Nginx

yum install nginx

安装PHP及相关组件

    yum install php-fpm php-cli php-mysql php-gd php-imap php-ldap      php-odbc php-pear php-xml php-xmlrpc php-magickwand php-magpierss       php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap       php-tidy php-pecl-apc
  • 启动MySQL

      chkconfig --levels 235 mysqld on
      service mysqld start
  • 启动Nginx

      chkconfig --levels 235 nginx on
      service nginx start
  • 启动PHP-FPM

      chkconfig --levels 235 php-fpm on
      service php-fpm start
  • 若 Nginx 启动失败,则有可能是因为 Apache httpd 服务占用了该接口,这时,要么我们修改 Nginx 的坚挺端口,要么修改Apache httpd的或者直接删除 Apache httpd。

      apachectl stop
      yum remove httpd
      chkconfig --level 235 httpd off
  • 修改mysql密码
  • 运行 mysql_secure_installation 命令,因为我们是首次安装所以直接回车,然后进入设置新密码

配置 PHP

  • 打开 PHP 配置文件:vi /etc/php.ini
  • 设置 cgi.fix_pathinfo=0:(此处有坑~!)

[...]

; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI.  PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is.  For more information on PATH_INFO, see the cgi specs.  Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec.  A setting
; of zero causes PHP to behave as before.  Default is 1.  You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
    ; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo
cgi.fix_pathinfo=0
[...]

设置 upload_max_filesize 最大文件上传尺寸为 upload_max_filesize 为 16MB:

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 16M

设置 post_max_size 为 32MB:

; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data   reading
; is disabled through enable_post_data_reading.
; http://php.net/post-max-size
post_max_size = 32M

打开:vi /etc/php-fpm.d/www.conf :

;listen = 127.0.0.1:9000
listen = /var/run/php-fpm.sock;

以及:

listen.owner = www
listen.group = www
listen.mode = 0660

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default     user's group
;       will be used.
; RPM: apache Choosed to be able to access some dir as httpd
user = www
; RPM: Keep a group allowed to write in log dir.
group = www
  • 以上就是所有环境配置基本完毕(一般1个小时所有就能搞定,2M带宽的话),以上安装配置参考 潘韬 个人博客:http://xingzhewujiang.org/press/install-nginx-mysql-php-fpm-pahclon-on-centos-65.html。
    配置完这些我当时觉得我应该是离配置完成不远了,感觉自己棒棒哒啊~

域名解析

-由于之前就已经解析好了域名,所以我只需要配置一下nginx虚拟主机

  • 静态解析

  • 静态解析按照nginx提供的virtual.conf里面提供的例子解析即可

    listen 80;
    server_name somename alias another.alias;

    location / {
    root html;
    index index.html index.htm;
    }
    }

  • 动态解析,因为nginx本身不能解析php,所以它会把php转发到9000端口,提交给php-fpm去解析,这里我贴出我的配置文件

      server {
    
          listen       80;
          server_name  yourservername.com(需要解析的域名);
          index  index.html index.htm index.php;
    
          set $root_path  yourpath(项目入口文件位置);
          root $root_path;
    
          try_files $uri $uri/ @rewrite;
    
          location @rewrite {
              rewrite ^/(.*)$ /index.php?_url=/$1;
          }
    
          location ~ \.php {
          fastcgi_pass  127.0.0.1:9000;
          fastcgi_index /index.php;
    
          include /etc/nginx/fastcgi_params;
    
          fastcgi_split_path_info       ^(.+\.php)(/.+)$;
          fastcgi_param PATH_INFO       $fastcgi_path_info;
          fastcgi_param PATH_TRANSLATED $document_root            $fastcgi_path_info;
          fastcgi_param SCRIPT_FILENAME $document_root            $fastcgi_script_name;
          }
    
          location ~* ^/(css|img|js|flv|swf|download)/(.+)$ {
          root $root_path;
          }
    
      location ~ /\.ht {
      deny all;
      }
      }

-这里有一个地方需要注意,如果你在重启nginx的时候,出现无法识别$document_root,你需要将你的 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;里面的$document_root换成你项目入口文件位置,我就在这个地方纠结了好久,弄半天才整出来,这个解析规则基本能满足大部分php项目解析。

安装phpmyadmin

  • 资源下载
  • 进入phpmyadmin首页(http://www.phpmyadmin.net/home_page/index.php),打开download,下载最新的phpmyadmin(多国语言(all-languages))的版本,下载完成之后,打包用ftp工具上传到服务器,地址的话建议放home目录下新建phpmyadmin文件夹下。

  • 解析phpmyadmin
  • 配置一个虚拟主机解析到phpmyadmin根目录下,还是沿用上方动态解析规则即可。

常见错误

  • 安装完成之后,一个经常会出现的错误出现了,访问phpmyadmin的时候,出现错误代码如下:
  • Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly.
  • 这个时候网上提供什么5个步骤就能解决神马的,我就很认(sha)真(bi)的一一试过,然后····神奇的事情发生了,根本没用!类似这种解决方案(http://www.7edown.com/edu/article/soft_4365_1.html),全是复制粘贴的答案,根- 本没有用(因为缺失前后文关系,大家就乱搞)。
  • 最后我根据session的配置文件,找到phpmyadmin/ libraries/session.inc.php ,修改一下代码:

      if (! isset($_COOKIE[$session_name])) { 
      // on first start of session we check for errors 
      // f.e. session dir cannot be accessed - session file not created 
      $orig_error_count = $GLOBALS['error_handler']->countErrors(); 
      //session_save_path('./tmp'); 
      session_save_path("/tmp"); 
      $r = session_start(); 
      if ($r !== true 
      || $orig_error_count != $GLOBALS['error_handler']->countErrors() 
      ) { 
      setcookie($session_name, '', 1); 
      /* 
      * Session initialization is done before selecting language, so we 
      * can not use translations here. 
      */
          PMA_fatalError('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.'); 
      } 
      unset($orig_error_count); 
      } else { 
      session_save_path("/tmp"); 
      session_start(); }
  • 记得在根目录下新建tep文件夹,给予读写权限(chmod 777 ./),我的比较简单粗暴,有一点安全隐患。
  • 至此,打开虚拟主机域名就可以正常访问phpmyadmin了!

phalcon环境的搭建

  • 因为以上步骤基本已经搭建好了前台环境,最后需要搭建今天的主角嘉宾(phalcon框架)的搭建了。
  • phalcon介绍(http://www.phalconphp.com/)
  • phalcon是一款由c语言直接编写的php框架,以灵活性(低耦合),可拓展性强,高性能闻名,也是以组建注册,工厂服务形式存在的php框架。

  • 因为我们的系统是Centos,所以根据官方给我们的案例(http://phalconphp.com/zh/download,我们需要自己手动编译phalcon模块

  • 安装两个编译环境和工具:

     yum install gcc libtool make git
     yum install php55w-devel    
     (此处应该根据你自己的php版本去安装,具体版本信息可以输出phpinfo()查看)。
  • 下载最新的phalcon文件

     git clone git://github.com/phalcon/cphalcon.git
     cd cphalcon/build
  • 然后执行

    ./install
  • 编译好的.so文件目录地址:

     /usr/lib64/php/moudels/phalcon.so
  • 常见错误

  • 最后我们需要把.so拓展文件引用至.ini文件中,这个地方需要注意的是Centos不可以直接在/etc/php.ini中直接加入:extension=phalcon.so,这样重启php-fpm的时候会报 php:startup()这个错误。
  • 我们需要在/etc/php.d中新建一个 phalcon.ini文件,

     vi phacon.ini
  • 加入一下内容:

      extension=phalcon.so
  • 然后保存,重启php-fpm服务,这个地方搞了我好几个小时,因为开始的时候没有仔细阅读文档,查半天返现centos需要重新新建一个.ini文件才能加载进来。
  • 其次我被php-fpm重启也坑了半天,其重启命令是

         services php-fpm restart

我在/etc/init.d/php-fpm restart半天也没反应,一直重启不起来,原来搞半天口令都错了。

  • 至此,phalcon框架算是加载进来了,然后就是部署项目到服务器了

  • 同样,解析一个域名到服务器,然后沿用之前的动态解析配置文件,然后我们只需要在浏览器轻轻的输入您的网址,不出意外,报错!
  • 如果你仔细看我之前写的文档,你就会发现我们在配置nginx环境修改php.ini的时候我写了一个此处有坑,我们需要找到etc/php.ini:

     cgi.fix_pathinfo=0改成
     cgi.fix_pathinfo=1
  • 修改完成之后重启服务器,紧接着出现第二个错误
  • 第二个错误应该是权限错误,错误代码:Volt can't be writen!,我们需要给项目文件读写权限(775)chmod 755 -R ./
  • 之后我们就可以看到熟悉的phalcon界面了!
  • 开心~撒花。

目前服务器配置如上,基本能满足小型项目需求,但是nginx对于后台php等解析还是不是特别理想,所以我打算再抽出几天时间把前后台服务器分离,前端用ubuntu+nginx+mongodb,后台用apache2+centos+mysql(postgresql)+php,最后后台实现业务与数据持久层分离,把数据接口和数据库放到另外一台服务器上面,实现一个分布式架构。

附录:

  • centos常用命令:

      php-fpm重启命令:  services php-fpm restart
      nginx重启命令:services nginx restart  抑或在/etc/init.d/nginx -s reload
  • 赋予权限:

      chmod 777 -R ./
      chrow  www:www(用户组:用户名) -R ./
  • 如果您对本文档有任何疑问或者建议,请您发送邮箱至zhoukai@dreamzk.cn,我会在第一时间给您答复,谢谢。
    转载请表明出处,谢谢。

转载于:https://www.cnblogs.com/dream-zk2014/p/4282734.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值