Nginx算是一个轻量级的高并发web服务器,虽然不及Apache安全,但它的性能远远优于Apache,尤其是在需要高并发的大型服务器上效果更显著。由俄罗斯人于2004年着手开发,有Linux版与Windows版,基于C语言,完全开放源码。相比臃肿的Apache,Nginx就显得很小巧了,源代码700K都不到,像新浪博客、迅雷等很多有名的网站就是基于Nginx的。Nginx既然有这么多优点,自然要一睹为快了,于是我便捣鼓着在Ubuntu 10.10 上搭建一个Wordpress尝尝鲜。搭建Wordpress运行环境离不开PHP和Mysql,所以需要安装Nginx、PHP5、spawn-fcgi、MySQL以及一些依赖的库。下面简单介绍一下我的搭建过程。
1、安装Nginx
Nginx我是从官网下的1.0.0的源代码(nginx-1.0.0.tar.gz),解压后“sudo ./config”检查是否满足编译要求,通常情况下都会提示有两个依赖的库需要安装,第一次提示缺少pcre包,下载pcre-8.02.tar.gz,解压后config、make、sudo make install,pcre安装好了。接着回到nginx执行config,第二次提示缺少OpenSSL包,执行“sudo apt-get install libcherokee-mod-libssl libssl-ocaml libssl-ocaml-dev libssl-dev libssl0.9.8”将自动安装好OpenSSL,如果提示”下列软件包有未满足的依赖关系:libssl-dev : 依赖: libssl0.9.8 (= 0.9.8o-1ubuntu4) 但是 0.9.8o-1ubuntu4.4 正要被安装”,我当时就遇到这个头疼的问题,尝试了很多办法也没搞定,最后发现是源未更新,进入“系统->系统管理->更新管理器->设置”,在弹出的“软件源”对话框中选“更新”标签页,选中“Ubuntu 更新”下面的四个复选框,关闭后在终端先执行“sudo apt-get update”,然后重新执行“sudo apt-get install libcherokee-mod-libssl libssl-ocaml libssl-ocaml-dev libssl-dev libssl0.9.8”即可。再次回到nginx目录执行config应该就能成功了,如果还提示缺少什么库,依次apt-get装上就是。最后执行make、sudo make install 两条命名就将Nginx装好了,执行“sudo /etc/init.d/nginx restart”重启nginx,通过浏览器访问 http://127.0.0.1 会出现“Welcome to nginx!”界面,恭喜您,成功了。当然,您也可以选择更简单更傻瓜的安装方式,即执行“sudo apt-get install nginx”,再执行“sudo /etc/init.d/nginx restart”,如果提示无法bind,那是因为其他程序占用了80端口,用“sudo netstat -ntlp”找到占用80端口的程序,“sudo pkill 程序名”杀之。
默认的web服务器目录为/var/www/nginx-default,到时候可以存放wordpress的php源码,浏览器访问本机地址便可以访问到该目录下的网页文件。
2、安装PHP5
网上找了PHP依赖的一些库,对这个没有深入的研究,也不关心其具体的实现,为了不缺包,干脆一口气都装了。
sudo apt-get install php5 php5-tidy php5-cgi php5-mysql php5-curl php5-imap php5-gd php5-idn php-pear php5-imagick php5-mcrypt php5-memcache php5-mhash php5-ming php5-pspell php5-recode php5-snmpphp5-xmlrpc php5-sqlite php5-xsl
3、安装spawn-fcgi
为了减少一些程序上的漏洞,Nginx并不支持cgi方式运行,但是我们可以使用FastCGI方式来执行PHP程序。
sudo apt-get install spawn-fcgi
安装好spawn-fcgi后,为了让Nginx和spawn-fcgi能够配合运行,修改/etc/nginx/fastcgi_params,加入下面这一行:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
为了正常使用SCRIPT_FILENAME变量,需要在/etc/php5/cgi/php.ini中找到cgi.fix_pathinfo=1,去掉前面的注释。打开/etc/nginx/sites-available/default,大致修改成如下内容:
# You may add here your # server { # ... # } # statements for each of your virtual hosts server { listen 80; ## listen for ipv4 listen [::]:80 default ipv6only=on; ## listen for ipv6 server_name localhost; root /var/www/nginx-default; access_log /var/log/nginx/localhost.access.log; location / { root /var/www/nginx-default; index index.php index.html index.html index.htm; } location /doc { root /usr/share; autoindex on; allow 127.0.0.1; deny all; } location /images { root /usr/share; autoindex on; } #error_page 404 /404.html; error_page 404 /404.html; location = /404.html { root /var/www/nginx-default; } # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/www/nginx-default; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { #proxy_pass http://127.0.0.1; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { #deny all; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; #fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name; include fastcgi_params; } } # another virtual host using mix of IP-, name-, and port-based configuration # #server { #listen 8000; #listen somename:8080; #server_name somename alias another.alias; #location / { #root html; #index index.html index.htm; #} #} # HTTPS server # #server { #listen 443; #server_name localhost; #ssl on; #ssl_certificate cert.pem; #ssl_certificate_key cert.key; #ssl_session_timeout 5m; #ssl_protocols SSLv3 TLSv1; #ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP; #ssl_prefer_server_ciphers on; #location / { #root html; #index index.html index.htm; #} #}
启动spawn-fcgi:
sudo /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid
参数含义如下
* -f 指定调用FastCGI的进程的执行程序位置,根据系统上所装的PHP的情况具体设置
* -a 绑定到地址addr
* -p 绑定到端口port
* -s 绑定到unix socket的路径path
* -C 指定产生的FastCGI的进程数,默认为5(仅用于PHP)
* -P 指定产生的进程的PID文件路径
* -u和-g FastCGI使用什么身份(-u 用户 -g 用户组)运行,Ubuntu下可以使用www-data,其他的根据情况配置,如nobody、apache等
如果出现端口不能绑定的情况,可以找进程杀掉或者换端口。
为了让系统启动的时候同时启动PHP的FastCGI进程,推荐将上一段代码添加到/etc/rc.local文件底部。
重新载入nginx:
sudo /etc/init.d/nginx reload
4、安装MySQL
sudo apt-get install mysql-server mysql-client
安装过程中会提示输入Root用户密码,按提示输入即可。
启动MySQL:
sudo /etc/init.d/mysql start
进入MySQL:
mysql –u root –p
按提示输入root密码就进入MySQL了。
为Wordpress创建一个独立的数据库:
mysql>CREATE DATABASE 您想创建的数据库名;
mysql>GRANT ALL PRIVILEGES ON 您想创建的数据库名.* TO 您想使用或创建的用户名@localhost IDENTIFIED BY “密码”;
如果您想进行远程访问或控制,那么你要做两件事:
① mysql>GRANT ALL PRIVILEGES ON 数据库名.* TO 用户名@”%” IDENTIFIED BY “密码”;
②在/etc/mysql/my.cnf文件中找到bind-address=127.0.0.1,在前面加上#号将其注释。
5、安装Wordpress
将Wordpress源码包解压到/var/www/nginx-default目录下,通过浏览器访问 http://127.0.0.1 会出现熟悉的Wordpress安装页面,根据提示输入上一步创建的数据库名、密码等信息,Wordpress便安装成功了。
除非注明,文章均为CppLive 编程在线原创,转载请注明出处,谢谢。
来支持了!!
多谢支持!~ 😀