Apache/Nginx+MySql+PHP配置


1. 裝完系統后開啟 sshd, 關閉防火牆 (不然外鏈接是訪問不了 apache) 關閉安全系統 SELinux( 不然報403 訪問頁面錯誤 )
    重啟后永久性生效
        chkconfig sshd on  (   開啟  sshd)
        chkconfig iptables off (   關閉防火牆   )
         修改  /etc/selinux/config 文件中設置   SELINUX=disabled  (  關閉 SELinux)
    即時生效   ,  重啟后失效
        #service sshd start  (   開啟  sshd)
        #service iptables stop(   關閉防火牆   )
        #setenforce 0 (   關閉  SELinux)
2.  默認 centos6   裝了  mysql+apache  可用 rpm -q mysql   httpd  查看是否已經裝   默認已安裝          
chkconfig 設成開機啟動   ( chkconfig --list  是列出當前  ,  如果   list  里面沒有 mysqld    httpd 則用   chkconfig --add mysqld  httpd)
接着 chkconfig httpd on   chkconfig mysqld on  這只是要重啟后才永久生效      如果即時生效     service httpd start  service mysqld start 
3.  修改 apache   的配置文件比如更改網站文檔目錄或不同域名指向不同的文件夾或開端口等等   默認配置文件在   /etc/httpd/conf  文件夾下的  httpd.conf
    1). 修改網站文檔目錄在   httpd.conf  下修改   DocumentRoot "/var/www"  <Directory "/var/www">  這二要目錄一樣
    2). 不同域名指向不同目錄   httpd.conf   查找  #Inculde /etc/httpd/conf/httpd-vhosts.conf  去掉前面的  # 號如果不存在剛加上這一句且創建   httpd-vhosts.conf  文件 (   或者直接在   /etc/httpd/conf.d  目錄下建一個  httpd-vhosts.conf 因為  http.conf 已經#Inculde /etc/httpd/conf.d/*.conf   )               
      #  確保  Apache 在監聽   80  端口    httpd.conf 文件里要有下面一句話 其實也可以放在httpd-vhosts.conf
      Listen 80
       修改    httpd-vhost.conf 文件格式如下
      #  為虛擬主機在所有   IP  地址上監聽   
 
NameVirtualHost *:80
      <VirtualHost *:80>
          ServerAdmin edu1211@163.com
          DocumentRoot /var/www/
          ServerName www.example.com
          # 你可以在這里添加其他指令
      </VirtualHost>
      <VirtualHost *:80>
         DocumentRoot /var/www/a
         ServerName www.a.com
         # 你可以在這里添加其他指令
         Errorlog "logs/a.log"
         CustomLog "logs/b.log" common
       </VirtualHost>
 
上面可以在外部電腦更改   /etc/hosts  文件   如在  windows 平台更改   C:\Windows\System32\drivers\etc\hosts   文件  ( 假設   192.168.0.110  是我們部署的服務器  )
127.0.0.1       localhost
192.168.0.110  www.example.com
192.168.0.110   www.a.com
192.168.0.110   www.b.com

        則在外部電腦輸入   www.example.com       則跳到  /var/www/ 目錄
        則在外部電腦輸入   www.a.com             則挑到  /var/www/a 目錄
        則在外部電腦輸入   www.b.com             則挑到  /var/www/ 目錄
        為什么輸入  www.b.com  會挑到   /var/www/  目錄下   因為服務器在   httpd-vhosts.conf  找不到虛擬主機名剛默認挑到   80  端口的第一個虛擬目錄下
   3).   為網站開不同端口   首先在 httpd.conf httpd-vhosts.conf(建議寫在這里面)加上要監聽的端口
        Listen 8080 //   添加的要開的斷口
       然后  httpd-vhost.conf 添加格式跟   80  端口一樣
4.  安裝  php  初始系統是沒有安裝的   yum install php  即可
php 配置文件是   php.ini   可以用 find / -name php.ini  一般在  /etc/php.ini 這個位置
現在要 apache  支持  ( 綁定   )php  腳本語言
   即修改 apache   的配置文件   httpd.conf  #AddType application/x-tar .tgz   下加上以下二行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.html index.html.var index.php//即加上訪問目錄時index.php
其實上面可以改  /etc/httpd/conf.d 目錄下的   php.conf  就可以了 ( 建議這樣 因為  /etc/httpd/conf/httpd.conf 已經有   Include conf.d/*.conf)
php.conf 里面我們都可以看到 Apache 綁定PHP 腳本語言的代碼所以上面的 httpd-vhosts.conf 文件可以直接寫在 /etc/httpd/conf.d目錄下就可以了
   同時修改 php   的配置文件   php.ini   打開 mysql   擴展   即去掉   ;extension=mysql.so  的分號
    然后重啟   apache  即可   service httpd restart
5.  安裝  phpMyAdmin  
  1)  到官網下載最新的  phpMyAdmin
  2)  解壓包  tar zxvf phpMyAdmin-2.113-all-languages.tar.gz
  3) mv phpMyAdmin-2.113-all-languages /var/www/phpMyAdmin
  4) phpMyAdmin 的配置文件在   /phpMyAdmin/libraies/config.default.php  文件  ( 如果是以根目錄下   config.ini.php  配安裝例外  )
   安裝完成   即可通過網頁登錄   但是默認   mysql  是空密碼    phpMyAdmin 禁止空密碼登錄   則可通過命令行的方式更改   mysql  密碼或改 phpMyAdmin   的配置文件讓允許空密碼登錄
   打開配置文件找到
$cfg['Servers'][$i]['nopassword'] =false
$cfg['Servers'][$i]['AllowNoPassword'] =false 
把這二行的  false 都改成   true  即可
  $cfg['Servers'][$i]['auth_type'] ='cookie';
是默認的 ,   如果更成
$cfg['Servers'][$i]['auth_type']='config';
config   模式時需要   user,password  參數,這時登錄  PhpMyAdmin 不需要輸入用戶名密碼,安全性較低,適合多用戶測試開發即
$cfg['Servers'][$i]['user']='root';  
$cfg['Servers'][$i]['password']='';  就生效了   即以種默認身份登錄
6.  安裝  PHP 擴展模塊
linux   PHP  擴展安裝模塊比如打開  phpMyAdmin 的話會提示      沒有找到  PHP  擴展  mbstring ,而您現在好像在使用多字節字符集。沒有   mbstring  擴展的  phpMyAdmin  不能正確分割字符串,可能產生意想不到的結果   .
   則在   php.ini  加上 extension=mbstring.so   重啟  apache(httpd) 還是不行   那么運行 find / -name mysql.so  找到存放模塊的目錄一般是   /usr/lib/php/modules/mysql.so  這個位置則找找  /usr/lib/php/modules/ 目錄下有沒有   mbstring.so
   很顯示沒有   那么得安裝   yum install php-mbstring  然后再重啟  apache(httpd) 剛提示錯誤沒有了
7.  安裝  Nginx+PHP(要源碼安裝 )
  1) 安裝   Nginx
centos 默認是安裝了   apache  那么用 yum remove httpd  然后再安裝   ngnix  因為 yum   源是不包含   ngnix
   官網有提供  yum 安裝說明   :
CentOS:
To add nginx yum repository, create a file named /etc/yum.repos.d/nginx.repo and paste one of the configurations below:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
其它系統參考   http://wiki.nginx.org/Install
當然也有源碼安裝但是需要你安裝依賴包   (  有點麻煩 )
Nginx 的配置文件在     /etc/nginx/nginx.conf
但是文件的最后是包含其它文件的    Include /etc/nginx/conf.d/*.conf;
然后    #service nginx start    #chkconfig nginx on
2) 安裝   PHP
但是安裝 PHP   的時候如果直接   yum  安裝 php   是不行的
因為默認情況下  Nginx   PHP  他倆之間是一點感覺沒有的,在之前,很多朋友都搭建過   Apache+PHP   Apache+PHP   編譯后生成的是模塊文件,而   Nginx+PHP  需要 PHP   生成可執行文件才可以,所以要利用   fastcgi  技術來實現  N ginx   PHP  的整合,這個只要我們安裝是啟用   FastCGI  即可。此次我們安裝  PHP 不僅使用了   FastCGI  ,而且還使用了  PHP-FPM 這么一個東東,   PHP-FPM  說白了是一個管理  FastCGI 的一個管理器,它作為   PHP  的插件純在,在安裝  PHP 要想使用   PHP-FPM  時就需要把  PHP-FPM 以補丁的形式安裝到   PHP  中,而且 PHP   要與  PHP-FPM 版本一致,這是必須的,切記!
所以  PHP 得源碼安裝的時候把   PHP-FRM  選項帶上即解壓   PHP  源碼包后
先安裝 gcc   套件這是個編譯器   yum install gcc   yum install gcc-c++  (libmcrypt 要用到   )
./configure --prefix=/usr/local/php --with-gd --enable-mbstring --with-mysql --with-mysqli --with-jpeg-dir --with-zlib --with-openssl --with-mcrypt --enable-fastcgi --enable-fpm

    此過程會出現以下錯誤
a)  error: xml2-config not found. Please check your libxml2 installation.
因為 php5   是需要  libxml2 支持     rpm -qa|grep libxml2
只需要安裝  libxml2-dev ,  yum install libxml2-devel    
b)   同樣出會出現   openssl  錯誤那么 yum install openssl-devel
c)  configure: error: jpeglib.h not found.  解決方法是:  yum install libjpeg-devel
d)  configure: error: png.h not found    解決方法是:  yum install libpng-devel
e)  configure: error: mcrypt.h not found. Please reinstall libmcrypt.       
解決方法 yum   碼安裝不了   所以得百度搜  libmcrypt 源碼
下載頁面  http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/   (  這個跟 php   版本可以不一至   )
libmcrypt./configure  (  這里不能  --prefix 指定安裝路徑不然下面安裝還是會出錯   )  可能會報 check ....no   忽視這些   checking for g77... no   什么 fastcgi   警告     但是沒出現錯誤比如   configure: error: No F77 compiler found   就可以了所以
接着 #make   #make install
跳到 php   目錄下繼續   ./configure  --prefix=/usr/local/php --with-gd --enable-mbstring --with-mysql --with-mysqli --with-jpeg-dir --with-zlib --with-openssl --with-mcrypt --enable-fastcgi --enable-fpm
安裝 php   過程會遇到的報錯可以參考   http://www.cnblogs.com/1110111abc/articles/2528102.html
接着
#make
#make install
#cp php.ini-production   /usr/local/php/etc/php.ini
#mv /usr/local/php/etc/php-fpm.conf.default  /usr/local/php/etc/php-fpm.conf  //不然下面啟動php-fpm會報錯找不到php-fpm.conf文件

下面我們就要啟動  PHP-FPM
#/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini //如果不加上-c參數指定他的php.ini參數(必須不然以后沒法修改他的php.ini文件)    (lsof -i:9000  可以查看9000端口占用詳細情況)  網上說后面加上start是不行的(可能以前版本要吧)

vim /etc/rc.local
在這個文件的最后加入如下語句   :
/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini    這里你所要啟動的服務一定要寫成是絕對路徑的形式   !!  不然的話 ,   這個服務是啟動不起來的   !!
最后一步關聯  Nginx   PHP 
#vim /etc/nginx/conf.d/default.conf
#location ~ \.php$ {
#    root           html;
#    fastcgi_pass   127.0.0.1:9000;
#    fastcgi_index  index.php;
#    fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
#    include        fastcgi_params;
#}

改成
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  了還不行,還需要  PHP 知道咋找   Nginx  ,這點我們不需要擔心,   PHP-FPM  已經在配置文件中定義了從哪接受   PHP  請求,我們可以打開配置文件看一下   (Apache  卻不同   只要  Apache 綁定了   PHP  就行)  
#vi /usr/local/php/etc/php-fpm.conf
如果要把 9000   端口改成其它的端口那么二個文件的端口要改成一至
最后重啟 Nginx 

#service nginx restart
建一個測試頁面加上  vim /usr/share/nginx/html/a.php
<?php
phpinfo();
?>
執行 phpinfo();date   時區不正確   解決方法 vim /usr/local/php/etc/php.ini   設置為  date.timezone = Asia/Shanghai
 
如果要在Nginx 開端口什么的跟 Apache 上一樣
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;
    }
    #error_page  404              /404.html;
    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}
    # 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  /usr/share/nginx/html$fastcgi_script_name;
        include        fastcgi_params;
    }
    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #location ~ /\.ht {
    #    deny  all;
    #}
}

復制一下 server   然后修改一下就可以了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM