首页 > 代码库 > 采用企业级LNMP环境实现Wordpress中文站点
采用企业级LNMP环境实现Wordpress中文站点
操作系统:CentOS release 6.8 (Final)
Web服务器软件:Nginx-1.6.3.tar.gz
数据库系统:MySQL 5.5.52
PHP版本:php 5.3.3
站点程序:wordpress-4.7.4-zh_CN.tar.gz
任务:分别采用单台服务器和双台服务器实现LNMP架构。
附件:提供所有配置源码下载。
检查安装Nginx所需要的lib库
[root@Cacti~]#rpm -qa pcre pcre-devel
[root@Cacti~]# yum install pcre pcre-devel –y
[root@Cacti~]# yum install openssl openssl-devel –y
开始安装Nginx
[root@Cactitools]# wget http://nginx.org/download/nginx-1.6.3.tar.gz
[root@Cactitools]# ls -l nginx-1.6.3.tar.gz
[root@Cactitools]# useradd nginx -s /sbin/nologin –M
[root@Cactitools]# tar xf nginx-1.6.3.tar.gz
[root@Cactitools]# cd nginx-1.6.3
[root@Cactinginx-1.6.3]#./configure\
--user=nginx\
--group=nignx\
--prefix=/application/nginx\
--with-http_stub_status_module\
--with-http_ssl_module
[root@Cactinginx-1.6.3]#make
[root@Cactinginx-1.6.3]#make install
启动并检查安装结果:
启动前检查配置文件语法:
[root@Cactinginx-1.6.3]# /application/nginx/sbin/nginx -t
nginx: theconfiguration file /application/nginx/conf/nginx.conf syntax is ok
nginx:[emerg] getgrnam("nignx") failed
nginx:configuration file /application/nginx/conf/nginx.conf test failed
[root@Cactilogs]# cat error.log
2017/07/1216:15:07 [emerg] 17992#0: getgrnam("nignx") failed
[root@Cacticonf]# vi nginx.conf
#user nobody; #去掉最前面的#号即解决启动错误的问题
nginx: option"-s" requires parameter
[root@Cacticonf]# /application/nginx/sbin/nginx –t #检查语法
nginx: theconfiguration file /application/nginx/conf/nginx.conf syntax is ok
nginx:configuration file /application/nginx/conf/nginx.conf test is successful
[root@Cacticonf]# /application/nginx/sbin/nginx #启动Nginx服务
nginx:[emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) #存在端口冲突
#原因是Apache与Nginx默认都是80端口
[root@Cacticonf]# lsof -i:80 #Nginx服务对应的端口存在冲突
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 1451 root 4u IPv6 10731 0t0 TCP *:http (LISTEN)
httpd 1496 apache 4u IPv6 10731 0t0 TCP *:http (LISTEN)
httpd 1497 apache 4u IPv6 10731 0t0 TCP *:http (LISTEN)
httpd 1498 apache 4u IPv6 10731 0t0 TCP *:http (LISTEN)
httpd 1499 apache 4u IPv6 10731 0t0 TCP *:http (LISTEN)
httpd 1500 apache 4u IPv6 10731 0t0 TCP *:http (LISTEN)
httpd 1501 apache 4u IPv6 10731 0t0 TCP *:http (LISTEN)
httpd 1502 apache 4u IPv6 10731 0t0 TCP *:http (LISTEN)
httpd 1503 apache 4u IPv6 10731 0t0 TCP *:http (LISTEN)
#修改nginx默认端口,改为8080端口
server {
listen 8080;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
[root@Cacticonf]# pkill nginx #杀掉进程,以便重启Nginx服务
[root@Cacticonf]# /application/nginx/sbin/nginx
[root@Cacticonf]# lsof -i:8080 #Nginx服务对应的端口成功启动
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 17530 root 6u IPv4 3271777 0t0 TCP *:webcache (LISTEN)
nginx 17531nobody 6u IPv4 3271777 0t0 TCP *:webcache (LISTEN)
[root@Cacticonf]# netstat -lnt|grep 80
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN
tcp 0 0 :::36780 :::* LISTEN
tcp 0 0 :::80 :::* LISTEN
[root@Cacticonf]# ps -ef|grep nginx
root 3000 15790 0 16:22 pts/0 00:00:00 /application/nginx/sbin/nginx
root 6336 15790 0 16:36 pts/0 00:00:00 grep nginx
root 17530 1 0 16:28 ? 00:00:00 nginx: master process/application/nginx/sbin/nginx
nobody 17531 17530 0 16:28 ? 00:00:00 nginx:worker process
root 31232 15790 0 16:20 pts/0 00:00:00 /application/nginx/sbin/nginx
检查Nginx启动实际效果:
[root@Cacticonf]# wget 127.0.0.1:8080 #查看本地的index.html文件
[root@Cacticonf]# curl 127.0.0.1:8080 #直接在屏幕上输出效果
<!DOCTYPEhtml>
<html>
<head>
<title>Welcometo nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial,sans-serif;
}
</style>
</head>
<body>
<h1>Welcometo nginx!</h1>
<p>Ifyou see this page, the nginx web server is successfully installed and
working.Further configuration is required.</p>
<p>Foronline documentation and support please refer to
<ahref="http://nginx.org/">nginx.org</a>.<br/>
Commercialsupport is available at
<ahref="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thankyou for using nginx.</em></p>
</body>
</html>
[root@Cacticonf]# ../sbin/nginx -V
nginxversion: nginx/1.6.3
built by gcc4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
检查安装php所需要的lib 库
#yum instal zlib-devel libxml2-devel libjped-devel libjpeg-turbo-devel libiconv-devel -y
# yum instal lfreetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libxslt-devel –y
# yum install libmcrypt-devel
# yum install mhash
# yum install mcrypt -y
[root@Cactitools]# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
[root@Cactitools]# tar zxf libiconv-1.14.tar.gz
[root@Cactilibiconv-1.14]# ./configure --prefix=/usr/local/libiconv
[root@Cactilibiconv-1.14]# make && make install
开始安装php
[root@Cacti~]# mkdir /home/tools –p
[root@Cactitools]# wget http://mirrors.sohu.com/php/php-5.3.27.tar.gz
[root@Cacti tools]# tar zxf php-5.3.27.tar.gz
[root@Cactitools]# cd php-5.3.27
[root@Cactiphp-5.3.27]# ./configure \
--prefix=/application/php5.3.27 \
--with-mysql=/application/mysql \
--with-iconv-dir=/usr/local/libiconv \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--disable-rpath \
--enable-fpm \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--with-curlwrappers \
--enable-mbregex \
--with-mcrypt \
--with-gd \
--enable-gd-native-ttf \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--enable-short-tags \
--enable-zend-multibyte \
--enable-static \
--with-xsl \
--enable-safe-mode \
--enable-ftp
……
checking forCygwin environment... no
checking formingw32 environment... no
checking foregrep... grep -E
checking fora sed that does not truncate output... /bin/sed
checking hostsystem type... config.sub: missing argument
Try`config.sub --help‘ for more information.
checkingtarget system type... config.sub: missing argument
Try`config.sub --help‘ for more information.
checking forgcc... no
checking forcc... no
configure:error: no acceptable cc found in $PATH
解决上述问题:
# yum install -y gcc-c++
[root@Cactiphp-5.3.27]#./configure \ #重新编译
--prefix=/application/php5.3.27 \
--with-mysql=/application/mysql \
--with-iconv-dir=/usr/local/libiconv \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--disable-rpath \
--enable-fpm \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--with-curlwrappers \
--enable-mbregex \
--with-mcryp t\
--with-gd \
--enable-gd-native-ttf \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--enable-short-tags \
--enable-zend-multibyte \
--enable-static \
--with-xsl \
--enable-safe-mode \
--enable-ftp
#重新配置后的问题:
configure:error: Cannot find MySQL header files under /application/mysql.
Note that theMySQL client library is not bundled anymore!
#不管怎么变更该数据库的路径,还是编译通还过
解决办法就是:
#mkdir /usr/lib/msyql –p
#cp /usr/lib64/mysql/* /usr/lib/mysql/
然后进行./configure即可,如果服务器没有/usr/lib/mysql/ 目录,则在/usr/lib/目录下创建mysql目录即可
+--------------------------------------------------------------------+
|License: |
| Thissoftware is subject to the PHP License, available in this |
|distribution in the file LICENSE. Bycontinuing this installation |
| process,you are bound by the terms of this license agreement. |
| If you donot agree with the terms of this license, you must abort |
| theinstallation process at this point. |
+--------------------------------------------------------------------+
Thank you forusing PHP.
[root@Cactiphp-5.3.27]#make #编译
[root@Cactiphp-5.3.27]#make install #安装
/home/tools/php-5.3.27/build/shtoolinstall -c ext/phar/phar.phar /application/php5.3.27/bin
ln -s -f/application/php5.3.27/bin/phar.phar /application/php5.3.27/bin/phar
InstallingPDO headers: /application/php5.3.27/include/php/ext/pdo/
[root@Cactiphp-5.3.27]# ln -s/application/php5.3.27/ /application/php #设置软链接
[root@Cactiphp-5.3.27]# ls -l /application/php
lrwxrwxrwx 1root root 23 Jul 12 17:14 /application/php -> /application/php5.3.27/
[root@Cactiphp-5.3.27]# cp php.ini-production /application/php/lib/php.ini #拷贝php的配置文件到PHP默认目录
在linux上编译安装PHP时,为什么php/etc/目录下没有找到php-fpm.conf.default这个文件?
解答:原因在拷贝配置文件执行时,有部分代码没有执行。
注意:当执行一大块代码结束后并没有报错,但没有执行的配置语句会重新显示出来。
[root@Cactiphp-5.3.27]# cd /application/php/etc/ #配置文件php-fpm.confs
[root@Cactietc]# ll
total 28
-rw-r--r-- 1root root 1232 Jul 12 17:41 pear.conf
-rw-r--r-- 1root root 21683 Jul 12 17:41 php-fpm.conf.default
[root@Cactietc]# cp php-fpm.conf.default php-fpm.conf
启动PHP服务php-fpm:
[root@Cactietc]# /application/php/sbin/php-fpm
检查php服务php-fpm的进程及启动端口的情况:
[root@Cactietc]# ps -ef|grep php-fpm
root 23321 1 0 17:43 ? 00:00:00 php-fpm: master process(/application/php5.3.27/etc/php-fpm.conf)
nginx 23322 23321 0 17:43 ? 00:00:00 php-fpm:pool www
nginx 23323 23321 0 17:43 ? 00:00:00 php-fpm:pool www
root 23325 15790 0 17:43 pts/0 00:00:00 grep php-fpm
[root@Cactietc]# lsof -i :9000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
php-fpm23321 root 7u IPv4 3871264 0t0 TCP localhost:cslistener (LISTEN)
php-fpm 23322nginx 0u IPv4 3871264 0t0 TCP localhost:cslistener (LISTEN)
php-fpm 23323nginx 0u IPv4 3871264 0t0 TCP localhost:cslistener (LISTEN)
配置Nginx支持PHP程序请求访问
#vi nginx.conf #修改配置文件
location~.*\.(php|php5)?$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
#检查并启动Nginx
[root@Cacticonf]# ../sbin/nginx -t
nginx: theconfiguration file /application/nginx/conf/nginx.conf syntax is ok
nginx:configuration file /application/nginx/conf/nginx.conf test is successful
[root@Cacticonf]# ../sbin/nginx -s reload
测试LNMP环境生效的情况:
[root@Cactihtml]# echo "<?php phpinfo(); ?>" >test_info.php
[root@Cactihtml]# cat test_info.php
<?phpphpinfo(); ?>
PHP连接MySQL的情况进行测试:
[root@Cactihtml]# vi test_mysql.php
<?php
$link_id=mysql_connect(‘localhost‘,‘root‘,‘*****‘)or mysql_error();
if($link_id){
echo "mysql successful byskyboy!";
}else{
echo mysql_error();
}
?>
下面部署一个wordpress程序服务:
1.先创建一个专用的数据库WordPress
[root@Cactihtml]# mysql -uroot –p
mysql>create database wordpress;
Query OK, 1row affected (0.00 sec)
mysql>show databases like ‘wordpress‘;
+----------------------+
| Database(wordpress) |
+----------------------+
|wordpress |
+----------------------+
1 row in set(0.00 sec)
Nginx及PHP环境配置准备:
location / {
root html;
index index.php index.html index.htm;
}
location ~.*\.(php|php5)?$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
[root@Cactihtml]# wget https://tw.wordpress.org/wordpress-4.8-zh_TW.tar.gz
[root@Cactihtml]# tar xf wordpress-4.8-zh_TW.tar.gz
[root@Cactihtml]# mkdir blog
[root@Cactihtml]# mv wordpress blog/
[root@Cactihtml]# chown -R nginx.nginx blog
测试情况:浏览器显示Filenot found.
解答:原因是解析不到程序,建设直接放到html目录下,避免发生找不到程序的问题。
[root@Cactiwordpress]# cp wp-config-sample.php wp-config.php
[root@Cactiwordpress]# vi wp-config.php #配置数据库名、用户名和密码即可
配置成功。
以上是通过一台服务器架构LNMP;
下面通过两台服务器架设LNMP,也很简单:
.8服务器: 做Nginx服务器,将wordpress放到nginx的html目录下,配置wp-config.php文件。
/** WordPress数据库的名称 */
define(‘DB_NAME‘, ‘wordpress‘);
/** MySQL数据库用户名 */
define(‘DB_USER‘, ‘***‘);
/** MySQL数据库密码 */
define(‘DB_PASSWORD‘, ‘*****‘);
/** MySQL主机 */
define(‘DB_HOST‘, ‘.9服务器IP‘);
.9服务器:做Mysql服务器,创建wordpress数据库。
测试运行结果:http://117.40.239.8:8080/wordpress
本文出自 “sky9890” 博客,请务必保留此出处http://sky9896.blog.51cto.com/2330653/1946894
采用企业级LNMP环境实现Wordpress中文站点