Skip to content

Centos下安装Nginx 0.8.30 + PHP 5.3.1+MySQL 5.5.0

首先在安装完CentOS后,先”yum -y update”,升级下CentOS。然后运行以下命令,以便安装所需要的程序以及开发库。

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

进入/usr/local/src目录,下载程序源代码。

cd /usr/local/src
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

1、编译MySqL 5.5.0

cd /usr/local/src
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
make && make install

在安装完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

2.编译PHP 5.3.1

Suhosin是朝鲜语“守护神”的音译,是一个专门的安全小组开发的专门针对php进行安全加固的补丁程 序,已经进入freebsd gentoo的ports系统。效果很好的。

安装方法如下:

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

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 /usr/local/src/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

创建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

创建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
vi /usr/local/webserver/php/etc/php-fpm.conf

按下面内容修改php-fpm.conf文件

?Download 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>

3. 编译安装 nginx

Nginx (“engine x”) 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。

cd /usr/local/src
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文件:

rm -f /usr/local/webserver/nginx/conf/nginx.conf
vi /usr/local/webserver/nginx/conf/nginx.conf

输入以下内容:

?Download 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文件,输入以下内容:

?Download 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;

5.配置开机自动启动Nginx + PHP

编辑 /etc/rc.local文件,在末尾增加以下内容:

ulimit -SHn 65535
/usr/local/webserver/php/bin/php-fpm start
/usr/local/webserver/nginx/sbin/nginx

6 测试

此时,已安装好nginx,php和mysql,可安装phpmyadmin测试是否已安装成功。

phpMyAdmin(简称PMA)是一个用PHP编写的,可以通过互联网在线控制和操作MySQL。他是众多MySQL管理员和网站管理员的首选数据库维护工具,通过phpMyAdmin可以完全对MySQL数据库进行操作。

cd /usr/local/src
wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/3.2.4/phpMyAdmin-3.2.4-all-languages.tar.gz?use_mirror=nchc
tar xzvf phpMyAdmin-3.2.4-all-languages.tar.gz
mv phpMyAdmin-3.2.4-all-language /website/htdocs/www/phpmyadmin
cd /website/htdocs/www/phpmyadmin
#设置phpmyadmin
mkdir config
chmod o+rw config
cp config.sample.inc.php config/config.inc.php
chmod o+w config/config.inc.php

在浏览器中输入phpmyadmin配置路径,例:http://192.168.10.34/phpmyadmin/setup/

新建服务器,按需选择属性后,保存。

mv config/config.inc.php .
chmod 744 config.inc.php
rm -rf config

再次打开浏览器,进入phpmyadmin网址(http://192.168.10.34/phpmyadmin/),输入MySQL的用户名和密码后,就可以使用phpmyadmin.

进入phpmyadmin后,如果网页上提示“链接表的额外特性尚未激活”,请参考《phpmyadmin中显示“链接表的额外特性尚未激活”的解决办法

至此,已在Centos上安装了Nginx、php和mysql。

标签:, , , ,

相关日志

{ 5 } Comments

  1. eamlinux | 一月 15, 2010 at 7:11 下午 | Permalink

    /usr/local/webserver/php/sbin/php-fpm start
    这东西哪来的?PHP下面都没有这个目录

    Reply

    icemanpro Reply:

    是 /usr/local/webserver/php/bin/php-fpm start

    Reply

  2. eamlinux | 一月 15, 2010 at 11:05 下午 | Permalink

    PHP那步过不去:
    错误:
    Notice: Following unknown configure options were used:

    –with-ttf=shared,/usr
    –enable-fastcgi
    –enable-fpm
    –enable-force-cgi-redirect
    –enable-suhosin

    Check ‘../configure –help’ for available options

    Reply

    icemanpro Reply:

    -enable-fpm -enable-suhosin是要对php打php-fpm 和 suhosin补丁后才有的。要按步骤来才行

    Reply

  3. phpman | 一月 19, 2010 at 4:13 下午 | Permalink

    你是不是少写了步骤?我编译php后在prefix/bin下没有找到php-fpm
    我在编译php之前已经将fpm补丁打上了

    Reply

  4. phpman | 一月 19, 2010 at 5:14 下午 | Permalink

    把PHP版本换到5.2.11装好了,谢谢了

    Reply

  5. kobe | 三月 15, 2010 at 5:37 下午 | Permalink

    照着做了,PHP打了2个补丁,但是编译后没有
    php-fpm 文件
    是不是有问题啊?

    Reply

Post a Comment

Your email is never published nor shared. Required fields are marked *