歡迎您光臨本站 註冊首頁

搭建Linux Nginx PHP(fastcgi) Mysql

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

1、編譯php擴展模塊

freetype- 2.1.10/
./configure && make && make install

libevent-1.4.11-stable/
./configure && make && make install

libpng-1.2.37
./configure --with-binconfigs=/usr/bin/pkg-config --with-pkgconfigdir=/usr && make && make install

libmcrypt-2.5.8
./configure --enable-static && make && make install
ldconfig
cd libltdl/ ####<----
這個注意必須編譯,否這php編譯報錯
./configure --enable-ltdl-install
ldconfig

mhash-0.9.9

./configure && make && make install


jpeg-6b
./configure --enable-shared --enable-static
mkdir -p /usr/local/man/man1/
make && make install

libxml2-2.7.3
./configure --with-history --enable-ipv6=no
make && make install

shell> vim /etc/ld.so.conf
/usr/local/lib

shell> ldconfig


mcrypt-2.6.7
./configure && make && make install

libiconv-1.12./configure --prefix=/usr/local && make && make install
ldconfig
gd-2.0.35
./configure --with-libiconv-prefix=/usr/local --with-png=/usr/local --with-freetype=/usr/local --with-fontconfig=/lib --with-jpeg=/usr/local
make && make install
ldconfig

確保以下幾個包安裝

shell>

yum install crul-devel ncurses-devel net-snmp-devel -y

shell> vim ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/mysql/libexec

# service mysql5 start


# tar xvf pcre-8.01.tar.gz -C /usr/src
# cd /usr/src/pcre-8.01
# ./configure && make && make install

安裝MySQL-devel-community-5.1.39-0.rhel5.i386.rpm
不安裝的話,編譯php 會提示找不到mysql 文件頭的 ,如果出現
Preparing... ########################################### [100%]
file /usr/bin/mysql_config from install of MySQL-devel-community-5.1.39-0.rhel5.i386 conflicts with file from package mysql-5.0.77-4.el5_4.1.i386
file /usr/share/man/man1/mysql_config.1.gz from install of MySQL-devel-community-5.1.39-0.rhel5.i386 conflicts with file from package mysql-5.0.77-4.el5_4.1.i386
-------------------------------------------
說明跟

5.077那個包衝突,要現刪掉,或者安裝加上 --froce參數,強制安裝.
rpm -ivh MySQL-devel-community-5.1.39-0.rhel5.i386.rpm --force


開始編譯php

# tar xvf php-5.2.13.tar.gz -C /usr/src
# gzip -cd php-5.2.13-fpm-0.5.13.diff.gz | patch -d /usr/src/php-5.2.13/ -p1
# cd /usr/src/php-5.2.13/

./configure --sysconfdir=/usr/local/php --with-mcrypt --with-mhash --with-mysql --with-mysqli --with-mysql-sock=/usr/local/mysql/sock/mysql.sock --enable-sockets --enable-zip --enable-mbstring --with-openssl --with-config-file-path=/usr/local/lib/ --with-gd --enable-gd-native-ttf --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-pcntl --with-ldap --with-ldap-sasl --with-xmlrpc --enable-soap --enable-fpm --enable-force-cgi-redirect --enable-fastcgi


make ZEND_EXTRA_LIBS='-liconv'
make install


繼續php

第三方模塊

加速模塊
tar xvf eaccelerator-0.9.6.tar.bz2 -C /usr/src
cd /usr/src/eaccelerator-0.9.6/
/usr/local/bin/phpize
./configure --with-php-config=/usr/local/bin/php-config --enable-eaccelerator=shared
make && make install

安裝完畢,注意一下輸出
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20060613/

緩存模塊
tar xvf memcache-2.2.5.tgz -C /usr/src
cd /usr/src/memcache-2.2.5/
/usr/local/bin/phpize
./configure --with-php-config=/usr/local/bin/php-config
make && make install

Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20060613/


tar xvf ImageMagick.tar.gz -C /usr/src
cd /usr/src/ImageMagick-6.5.1-2/
./configure && make && make install

tar xvf imagick-2.3.0.tgz -C /usr/src
cd /usr/src/imagick-2.3.0/
/usr/local/bin/phpize
./configure --with-php-config=/usr/local/bin/php-config
make && make install

Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20060613/



tar xvf PDO_MYSQL-1.0.2.tgz -C /usr/src


cd /usr/src/PDO_MYSQL-1.0.2/
/usr/local/bin/phpize
./configure --with-php-config=/usr/local/bin/php-config --with-pdo-mysql=/usr/local/mysql
make && make install

Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20060613/

# vim /etc/ld.so.conf
/usr/local/lib/php/extensions/no-debug-non-zts-20060613/
# ldconfig


配置php的配置文件
# cp /usr/src/php-5.2.13/php.ini-dist /usr/local/lib/php.ini
# vim /usr/local/lib/php.ini
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613/"
extension = "imagick.so"
extension = "memcache.so"
extension = "pdo_mysql.so"

output_buffering = On
max_execution_time = 30 <---
根據應用程序實際調整
memory_limit = 128M <---
根據應用程序實際調整


# shift g
來到配置文件的底部添加:
[eaccelerator]
zend_extension="/usr/local/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
《--根據編譯獲得路徑修改
eaccelerator.shm_size="64"
eaccelerator.cache_dir="/wwwroot/eaccelerator_cache" #
緩存路徑
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"


eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="3600"
eaccelerator.shm_prune_period="3600"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"



# mkdir -p /wwwroot/eaccelerator_cache
# chmod 777 /wwwroot/eaccelerator_cache


=========================================

安裝nginx

# tar xvf nginx-0.8.46.tar.gz -C /usr/src
# ./configure --user=daemon --group=daemon --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install

參數 --with-http_stub_status_module 是為了啟用 nginxNginxStatus 功能,用來監控 Nginx 的當前狀態.

注意以下輸出:

nginx path prefix: "/usr/local/nginx"
nginx binary file: "/usr/local/nginx/sbin/nginx"
nginx configuration prefix: "/usr/local/nginx/conf"
nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
nginx pid file: "/usr/local/nginx/logs/nginx.pid"
nginx error log file: "/usr/local/nginx/logs/error.log"
nginx http access log file: "/usr/local/nginx/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"


配置php-fpm配置文件
# vim /usr/local/etc/php-fpm.conf
.....
<!-- <value name="listen_address">127.0.0.1:9000</value> -->


<value name="listen_address">/var/run/fastcgi/fastcgi.socket</value>

.....

<value name="sendmail_path">/usr/sbin/sendmail -t -i</value>
<value name="display_errors">0</value>
....

Unix user of processes
<value name="user">daemon</value>



Unix group of processes
<value name="group">daemon</value>

<value name="max_children">64</value>
<value name="rlimit_files">65535</value>
<value name="rlimit_core">65535</value>
<value name="max_requests">2048</value>


# mkdir -p /var/run/fastcgi/
# chown daemon:daemon !$
# chmod 777 !$



修改nginx配置文件
# vim /usr/local/nginx/conf/nginx.conf

user daemon;
worker_processes 4;

error_log logs/error.log

info;

pid logs/nginx.pid;

worker_rlimit_nofile 65535;

events {
use epoll;
worker_connections 65535;
}


http {
include mime.types;
default_type application/octet-stream;



server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 8m;

sendfile on;
tcp_nopush on;



keepalive_timeout 65;

gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;

tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;

server {

listen 10.1.1.21:80;
server_name 10.1.1.21;
root /wwwroot;
index index.htm index.html index.php;
error_page 404 =200 /404.html; ####
location ~ .*.php$ { <----
這個加上就可以支持PHP文件,可以放到server外.

fastcgi_pass unix:/var/run/fastcgi/fastcgi.socket;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on; ###
include fastcgi_params;
}
#注意,如果php-fpm配置文件配置是埠9000,上面需改成:fastcgi_pass 127.0.0.1:9000;
location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
{

expires 7d;
}
location ~ .*.(js|css)$
{
expires 1d;
}


}

}


啟動php fastcgi進程

# /usr/local/sbin/php-fpm start
Starting php_fpm done

啟動nginx
/usr/local/nginx/sbin/nginx

修改了配置文件
kill -HUP #nginx-pid
《----重新載入.

停止nginx
/usr/local/nginx/sbin/nginx -s stop



重載配置文件之前先測試一下正確性
/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf


基於IP的虛擬主機

綁定多個IP

server
{
listen 10.1.1.21:80;
server_name 10.1.1.21;
root /wwwroot/;

}

server
{
listen 10.1.1.22:80;
server_name 10.1.1.22;
root /wwwroot/bbs;
}

基於埠的虛擬主機

server
{
listen

10.1.1.21:80;
server_name 10.1.1.21;
root /wwwroot/;

}

server
{
listen 10.1.1.21:8080; # http://10.1.1.21:8080/
server_name 10.1.1.21;
root /wwwroot/bbs;
}

基於域名的虛擬主機

server
{
listen 80;
server_name www.dogdogcom.com;
root /wwwroot/;

}

server
{
listen

80;
server_name bbs.dogdogcom.com;
root /wwwroot/bbs;
}


訪問控制
server
{
listen 80;
server_name bbs.dogdogcom.com;
root /wwwroot/bbs;
location / {
deny 10.1.1.18;
allow all;
}
}


要求:
1
、如果想同時對多個網站生效,訪問控制應該怎麼寫?
放到全局位置
http {
deny 10.1.1.21;
server { }
server { }
}

2
、如果只想對網站的某個目錄進行訪問控制,怎麼寫?
http {
server {
location /uc {
deny 10.1.1.20;
}
}
}

訪問日誌記錄,日誌輪換
server {
log_format

main '$remote_addr - $remote_user [$time_local] '
: '"$request" $status $bytes_sent '
: '"$http_referer" "$http_user_agent" "$gzip_ratio"';

access_log logs/www.dogdogcom.com.access.log main;
}


# vim /etc/logrotate.conf
/usr/local/nginx/logs/www.dogdogcom.com.access.log
{
daily
size 1M
create 0644 root root
rotate 3
sharedscripts
postrotate
/bin/kill -HUP `cat /usr/local/nginx/logs/nginx.pid 2> /dev/null` 2> /dev/null || true
endscript
}

訪問驗證的實現

location = / {

auth_basic "Nginx_Panel";
auth_basic_user_file "www.password";
deny 10.1.1.18;
allow all;
}


# htpasswd -c ./www.password tom

本文出自 「小才」 博客,謝絕轉載!


[火星人 ] 搭建Linux Nginx PHP(fastcgi) Mysql已經有563次圍觀

http://coctec.com/docs/linux/show-post-47971.html