一时兴起,把电信的“企智通”拆了,换个40G硬盘。
在其它电脑上把centos5先装进硬盘,再装到企智通,开机,直接SSH上,哈哈!
接下来我就要安装Nginx 0.8.30 + PHP 5.3.1+MySQL 5.5.0。
开始部署,我只按步骤列命令了:
1.安装编译库,GD库
#yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel
krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers libmcrypt libmcrypt-devel pcre-devel
2.在/home建立mpn目录,进入/home/mpn目录,下载程序源代码
#mkdir /home/mpn
#cd /home/mpn
#wget http://nginx.org/download/nginx-0.8.30.tar.gz
#wget http://cn2.php.net/get/php-5.3.1.tar.gz/from/cn.php.net/mirror
#wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.0-m2.tar.gz/from/http://opensource.become.com/mysql/
#wget http://download.suhosin.org/suhosin-patch-5.3.1-0.9.8.patch.gz
#wget http://launchpad.net/php-fpm/master/0.6/+download/php-fpm-0.6~5.3.1.tar.gz
#wget http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz
3.编译MySqL 5.5.0
#cd /home/mpn
#tar -xzvf mysql-5.5.0-m2.tar.gz
#cd mysql-5.5.0-m2
#./configure --prefix=/usr/local/mysql --localstatedir=/var/lib/mysql --with-comment=Source --with-server-suffix=-enterprise-gpl --with-mysqld-user=mysql --without-debug --with-big-tables --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=gbk,latin1
--with-pthread --enable-static --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --enable-assembler --without-ndb-debug --enable-local-infile --with-readline
//我就在这步出了错:/bin/rm: cannot remove `libtoolT': No such file or directory
解决方法:
# aclocal
# autoconf
# automake
# libtoolize --force
输入以上命令后,再执行以下:
#make && make install
4.在安装完MySQL之后,添加mysql用户
#useradd mysql #添加 mysql 用户
#cd /usr/local/mysql
#bin/mysql_install_db --user=mysql
#chown -R root:mysql . #设置权限,注意后面有一个 "."
#chown -R mysql /var/lib/mysql #设置 mysql 目录权限
#chgrp -R mysql . #注意后面有一个 "."
#cp share/mysql/my-medium.cnf /etc/my.cnf
#cp share/mysql/mysql.server /etc/rc.d/init.d/mysqld #开机自动启动 mysql。
#chmod 755 /etc/rc.d/init.d/mysqld
#chkconfig --add mysqld
#echo "/usr/local/mysql/lib" >> /etc/ld.so.conf && ldconfig
#/etc/rc.d/init.d/mysqld start #启动 MySQL
#bin/mysqladmin -u root password "123456" #设置Mysql的root密码
#service mysqld stop #关闭 MySQL
5.编译PHP 5.3.1
#cd /home/mpn
#tar -xvzf php-5.3.1.tar.gz
#gunzip suhosin-patch-5.3.1-0.9.8.patch.gz
#cd php-5.3.1
#patch -p 1 -i ../suhosin-patch-5.3.1-0.9.8.patch
#./buildconf --force #将其编译到静态内核中
在使用FastCGI方式运行php的时候,如果我们改变了php.ini的设置,就得重新启动php的fastcgi守护程序。如果你的系统负载 比较大的话,这个重启过程或许会让你的系统中断服务一段时间。php-fpm就是为了解决这个问题而诞生的,它可以在php的 fastcgi进程不中断的 情况下重新加载你改动过的php.ini。而且php-fpm可以不用再依赖其它的fastcgi 启动器,比如lighttpd的spawn-fcgi。
首先编译PHP-FPM需要安装的libevent。
#/cd /home/mpn
#tar -zxvf "libevent-1.4.13-stable.tar.gz"
#cd "libevent-1.4.13-stable"
#./configure && make
#make install
#export PHP_VER=5.3.1
#cd /usr/local/src
#tar -zxvf "php-fpm-0.6~$PHP_VER.tar.gz"
#"php-fpm-0.6-$PHP_VER/generate-fpm-patch"
#cd "php-$PHP_VER"
#patch -p1 < ../fpm.patch
#./buildconf --force编译、安装PHP
#cd /home/mpn/php-5.3.1
#mkdir fpm-build && cd fpm-build
#../configure --prefix=/usr/local/webserver/php --with-pear=/usr/share/php --with-zlib-dir --with-bz2 --with-libxml-dir=/usr --enable-gd-native-ttf --enable-gd-jis-conv --with-freetype-dir --with-jpeg-dir --with-png-dir --with-ttf=shared,/usr --enable-mbstring
--with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-config-file-path=/etc --with-iconv --disable-ipv6 --enable-static --enable-zend-multibyte --enable-inline-optimization --enable-zend-multibyte --enable-sockets --enable-soap
--with-openssl --with-gettext --enable-sysvsem --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --with-mcrypt --with-curl --with-curlwrappers --enable-mbregex --enable-bcmath --enable-shmop --enable-suhosin --with-fpm --with-libevent=shared,/usr/local/lib
&& make && make install
cp php.ini-production /etc/php.ini
echo "/usr/local/webserver/php/lib" >> /etc/ld.so.conf && ldconfig
6.创建www用户和组,以及供虚拟主机使用的目录:
#/usr/sbin/groupadd www -g 48
#/usr/sbin/useradd -u 48 -g www www
#mkdir -p /website/htdocs/blog
#chmod +w /website/htdocs/blog
#chown -R www:www /website/htdocs/blog
#mkdir -p /website/htdocs/www
#chmod +w /website/htdocs/www
#chown -R www:www /website/htdocs/www
7.创建php-fpm配置文件:
#mkdir /usr/local/webserver/php/logs
#cp /usr/local/src/php-fpm-0.6-5.3.1/conf/php-fpm.conf.in /usr/local/webserver/php/etc/php-fpm.conf
#nano /usr/local/webserver/php/etc/php-fpm.conf
按下面内容修改php-fpm.conf文件:
<?xml version="1.0" ?>
<configuration>
All relative paths in this config are relative to php's install prefix
<section name="global_options">
Pid file
<value name="pid_file">/usr/local/webserver/php/logs/php-fpm.pid</value>
Error log file
<value name="error_log">/usr/local/webserver/php/logs/php-fpm.log</value>
Log level
<value name="log_level">notice</value>
When this amount of php processes exited with SIGSEGV or SIGBUS ...
<value name="emergency_restart_threshold">10</value>
... in a less than this interval of time, a graceful restart will be initiated.
Useful to work around accidental curruptions in accelerator's shared memory.
<value name="emergency_restart_interval">1m</value>
Time limit on waiting child's reaction on signals from master
<value name="process_control_timeout">5s</value>
Set to 'no' to debug fpm
<value name="daemonize">yes</value>
</section>
<workers>
<section name="pool">
Name of pool. Used in logs and stats.
<value name="name">default</value>
Address to accept fastcgi requests on.
Valid syntax is 'ip.ad.re.ss:port' or just 'port' or '/path/to/unix/socket'
<value name="listen_address">127.0.0.1:9000</value>
<value name="listen_options">
Set listen(2) backlog
<value name="backlog">-1</value>
Set permissions for unix socket, if one used.
In Linux read/write permissions must be set in order to allow connections from web server.
Many BSD-derrived systems allow connections regardless of permissions.
<value name="owner"></value>
<value name="group"></value>
<value name="mode">0666</value>
</value>
Additional php.ini defines, specific to this pool of workers.
These settings overwrite the values previously defined in the php.ini.
<value name="php_defines">
<!-- <value name="sendmail_path">/usr/sbin/sendmail -t -i</value> -->
<value name="display_errors">1</value>
<!-- <value name="error_log">/var/log/php-error.log</value> -->
<!-- <value name="log_errors">true</value> -->
</value>
Unix user of processes
<value name="user">www</value>
Unix group of processes
<value name="group">www</value>
Process manager settings
<value name="pm">
Sets style of controling worker process count.
Valid values are 'static' and 'apache-like'
<value name="style">static</value>
Sets the limit on the number of simultaneous requests that will be served.
Equivalent to Apache MaxClients directive.
Equivalent to PHP_FCGI_CHILDREN environment in original php.fcgi
Used with any pm_style.
<value name="max_children">128</value>
Settings group for 'apache-like' pm style
<value name="apache_like">
Sets the number of server processes created on startup.
Used only when 'apache-like' pm_style is selected
<value name="StartServers">20</value>
Sets the desired minimum number of idle server processes.
Used only when 'apache-like' pm_style is selected
<value name="MinSpareServers">5</value>
Sets the desired maximum number of idle server processes.
Used only when 'apache-like' pm_style is selected
<value name="MaxSpareServers">35</value>
</value>
</value>
The timeout (in seconds) for serving a single request after which the worker process will be terminated
Should be used when 'max_execution_time' ini option does not stop script execution for some reason
'0s' means 'off'
<value name="request_terminate_timeout">0s</value>
The timeout (in seconds) for serving of single request after which a php backtrace will be dumped to slow.log file
'0s' means 'off'
<value name="request_slowlog_timeout">0s</value>
The log file for slow requests
<value name="slowlog">logs/slow.log</value>
Set open file desc rlimit
<value name="rlimit_files">51200</value>
Set max core size rlimit
<value name="rlimit_core">0</value>
Chroot to this directory at the start, absolute path
<value name="chroot"></value>
Chdir to this directory at the start, absolute path
<value name="chdir"></value>
Redirect workers' stdout and stderr into main error log.
If not set, they will be redirected to /dev/null, according to FastCGI specs
<value name="catch_workers_output">yes</value>
How much requests each process should execute before respawn.
Useful to work around memory leaks in 3rd party libraries.
For endless request processing please specify 0
Equivalent to PHP_FCGI_MAX_REQUESTS
<value name="max_requests">10240</value>
Comma separated list of ipv4 addresses of FastCGI clients that allowed to connect.
Equivalent to FCGI_WEB_SERVER_ADDRS environment in original php.fcgi (5.2.2+)
Makes sense only with AF_INET listening socket.
<value name="allowed_clients">127.0.0.1</value>
Pass environment variables like LD_LIBRARY_PATH
All $VARIABLEs are taken from current environment
<value name="environment">
<value name="HOSTNAME">$HOSTNAME</value>
<value name="PATH">/usr/local/bin:/usr/bin:/bin</value>
<value name="TMP">/tmp</value>
<value name="TMPDIR">/tmp</value>
<value name="TEMP">/tmp</value>
<value name="OSTYPE">$OSTYPE</value>
<value name="MACHTYPE">$MACHTYPE</value>
<value name="MALLOC_CHECK_">2</value>
</value>
</section>
</workers>
</configuration>8.编译安装 nginx
#cd /home/mpn
#tar zxvf nginx-0.8.30.tar.gz
#cd nginx-0.8.30
#./configure --user=www --group=www --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module
#make
#make install
创建Nginx日志目录
#mkdir -p /website/logs
#chmod +w /website/logs
#chown -R www:www /website/logs
创建Nginx配置文件
修改/usr/local/webserver/nginx/conf/目录中的nginx.conf文件
#nano /usr/local/webserver/nginx/conf/nginx.conf
改为如下内容:
user www www;
worker_processes 8;
error_log /website/logs/nginx_error.log crit;
pid /usr/local/webserver/nginx/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 65535;
events
{
use epoll;
worker_connections 65535;
}
http
{
include mime.types;
default_type application/octet-stream;
#charset gb2312;
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 60;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
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;
#limit_zone crawler $binary_remote_addr 10m;
server
{
listen 80;
server_name 192.168.10.34;
index index.html index.htm index.php;
root /website/htdocs/www;
#limit_conn crawler 20;
location ~ .*\.(php|php5)?$
{
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 1h;
}
}
}
在/usr/local/webserver/nginx/conf/目录中创建fcgi.conf文件,
#nano /usr/local/webserver/nginx/conf/fcgi.conf
输入以下内容:
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
Ctrl+X 按Y退出!
9.开机自动启动Nginx + PHP
#nano /etc/rc.d/rc.local
在最后面加入
/usr/local/webserver/php/sbin/php-fpm start &
/usr/local/webserver/nginx/sbin/nginx &
OK,现在就完成了
from:http://www.myhack58.com/Article/sort099/sort0102/2011/29477.htm