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:WindowsSystem32driversetchosts 檔案 (假設 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 連接埠一樣
參考文檔 http://blog.111cn.net/edisonlg/article/details/7217153
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
大功告成 參考 http://wenku.baidu.com/view/570b78b765ce050876321377.html
如果要在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 然後修改一下就可以了