PHP程序員玩轉(zhuǎn)Linux系列文章:
1.PHP程序員玩轉(zhuǎn)Linux系列-怎么安裝使用CentOS
在平常的工作中,我作為PHP程序員經(jīng)常要搭建一下環(huán)境,這個(gè)環(huán)境就是Linux系統(tǒng)下安裝nginx,php,mysql這三個(gè)軟件,對(duì)軟件進(jìn)行配置,然后在瀏覽器上能夠正常打開(kāi)運(yùn)行查看項(xiàng)目。CentOS中安裝軟件有好幾種方式,我經(jīng)常用的是包安裝方式,因?yàn)檫@種非常簡(jiǎn)單一句命令就能安裝成功,這也是與windows下安裝軟件最大的不同點(diǎn)。包安裝方式就一個(gè)關(guān)鍵單詞就是yum。
解決找不到nginx包的問(wèn)題
我先安裝一下web服務(wù)器nginx,按好這個(gè)軟件,他就可以監(jiān)聽(tīng)80端口,綁定域名,提供web服務(wù),就能在瀏覽器訪(fǎng)問(wèn)我們的項(xiàng)目。我使用命令 yum install nginx ,此時(shí)報(bào)錯(cuò)No package nginx available,這是沒(méi)有這個(gè)包啊,這個(gè)時(shí)候需要安裝一下企業(yè)Linux擴(kuò)展包epel,使用命令yum install epel-release,然后從新試一下安nginx,這個(gè)時(shí)候就可以安裝了,并且解決了依賴(lài)問(wèn)題。使用service nginx start開(kāi)啟nginx
yum install epel-release
yum install nginx
service nginx start
解決web服務(wù)無(wú)法ip訪(fǎng)問(wèn)的問(wèn)題
此時(shí)我打開(kāi)windows的瀏覽器,訪(fǎng)問(wèn)我上一篇設(shè)置的地址: ,無(wú)法訪(fǎng)問(wèn)到,遇到這種情況,我先使用ps命令查看一下nginx的進(jìn)程是否開(kāi)啟,然后使用netstat命令查看一下80端口是否監(jiān)聽(tīng)
ps aux|grep nginx
netstat -altupn|grep 80
這兩個(gè)命令查看后發(fā)現(xiàn)都是正常的,那應(yīng)該是防火墻給阻攔了,我使用service iptables stop關(guān)閉掉了防火墻,這時(shí)候訪(fǎng)問(wèn)ip,nginx的測(cè)試頁(yè)面就出現(xiàn)了,說(shuō)明確實(shí)是防火墻問(wèn)題,我要開(kāi)放防火墻的80端口,iptables的開(kāi)放端口配置文件是/etc/sysconfig/iptables,我復(fù)制了它自帶的那條22端口的規(guī)則,改成80,保存后,service iptables start,這個(gè)時(shí)候訪(fǎng)問(wèn)也是正常的了。
綁定域名
我想通過(guò)域名來(lái)訪(fǎng)問(wèn)這個(gè)站點(diǎn),比如我訪(fǎng)問(wèn),可以查看到服務(wù)器上的站點(diǎn)目錄,這個(gè)時(shí)候就要配置nginx來(lái)綁定域名了。進(jìn)入目錄/etc/nginx/conf.d,復(fù)制自帶的配置文件virtual.conf,改成了,注意后綴一定要是.conf,編輯這個(gè)配置文件,重啟一下nginx。
server {
listen 80;
server_name ;
location / {
root /usr/local/web;
index index.html index.htm;
}
}
我在/usr/local/web目錄下新建了個(gè)index.html的文件,里面隨便寫(xiě)了一句話(huà),修改一下windows的host文件,把域名指向到我的虛擬機(jī)ip
192.168.2.100
此時(shí)我直接訪(fǎng)問(wèn)域名就能看到剛才的那個(gè)index.html的文件了,瀏覽器也會(huì)提示你這個(gè)域名被重定向了
此時(shí)我可以去看下nginx的訪(fǎng)問(wèn)和錯(cuò)誤日志,默認(rèn)是/var/log/nginx/access.log,使用tail -f這個(gè)命令,可以實(shí)時(shí)監(jiān)看這個(gè)日志文件
tail -f /var/log/nginx/access.log ,這個(gè)可以幫助我知道,此時(shí)nginx確實(shí)是運(yùn)行正常的。
安裝并配置PHP
我在剛才的目錄下新建了個(gè)index.php的文件,直接訪(fǎng)問(wèn)這個(gè)文件,瀏覽器會(huì)彈出下載框,文件被直接下載了,這個(gè)時(shí)候就要安裝PHP了
yum install php
#查看一下版本
php -v
這個(gè)版本還是PHP 5.3已經(jīng)非常老了,稍后我會(huì)去寫(xiě)升級(jí)PHP。這個(gè)時(shí)候PHP已經(jīng)安裝成功了,但是還沒(méi)有和nginx進(jìn)行搭配起來(lái),還需要安裝php-fpm
yum install php-fpm
#開(kāi)啟php-fpm
service php-fpm start
此時(shí)php-fpm已經(jīng)開(kāi)啟了,并且默認(rèn)監(jiān)聽(tīng)9000端口,配置nginx來(lái)支持PHP,編輯,改成如下配置文件。配置文件中應(yīng)該注意這樣幾點(diǎn):
1. root指令提到location指令外面來(lái),解決file not found錯(cuò)誤
2.fastcgi_pass指令,nginx連接fastcgi
3.fastcgi_param SCRIPT_FILENAME指定這個(gè)參數(shù),也是解決file not found錯(cuò)誤
4. file not found錯(cuò)誤時(shí),nginx的error.log錯(cuò)誤日志是FastCGI sent in stderr: "Primary script unknown",搜索這個(gè)就能找到解決方法
5. 遇到錯(cuò)誤時(shí),一定要看錯(cuò)誤日志,然后再去對(duì)癥搜索。
server {
listen 80;
server_name ;
root /usr/local/web;
location / {
index index.html index.htm index.php;
}
location ~ \.php {
fastcgi_pass 127.0.0.1:9000;#指定FastCGI服務(wù)器監(jiān)聽(tīng)端口與地址
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;#指定腳本的路徑
include fastcgi_params;#加載一些參數(shù),這個(gè)文件已經(jīng)存在了
}
}