问题描述:
有一个多语言环境的WEB服务器配制
当前端用nginx做在80端口处理静态及动态程序的代理转发
PHP解释服务在800端口
ASP解释服务在81端口
新安装的Discuz!X1.5后,网站会自动识别出PHP所在服务端口800,并在所有链接上自动添加,导至程序无法正常访问
请问该如何解决

在一台服务器中部署了多个站点,站点A使用了80端口,站点B使用了81端口,并使用了反向代理,将
/bbs 给81端口处理,结果Discuz站点的链接都变成了
http://www.xxx.com:81/bbs/xxx 这样带端口的地址。

简明过程

相关阅读: Ubuntu
11.04搭建LAMP[图文] 
http://www.linuxidc.com/Linux/2011-07/38424.htm

Discuz的安装,Discuz安装

========================写在前面的话=========================

1.LAMP环境搭建请查看这篇日志:

2.这只是一篇简单的Discuz安装教程,深入内容以后会讲到。

3.Discu-3.2下载路径:

 

 

=========================现在开干==============================

 

思路:
建立网站存放目录>解压并拷贝网站项目包>给网站目录赋权>建立数据库和用户>配置httpd的vhosts虚拟主机>
访问网站根据引导完成安装

 

1.建立网站存放目录

1 mkdir /data/discus

2.解压并拷贝网站项目包

    ①解压  

1 unzip –d /usr/local/src/Discuz3.2 Discuz_X3.2_SC_UTF8.zip

    ②拷贝

1 cp –r /usr/local/src/Discuz3.2/upload/* /data/discus/

# -r选项是递归的意思

3.给网站目录赋权

1 chown –R daemon:daemon /data/discus/config /data/discuz/data /data/discuz/uc_client /data/discus/uc_server

# -R
选项是递归的意思,因为discuz用的是httpd的用户,而http的用户是daemon,所以这里给daemon赋权。

4.建立discuz数据库并设置用户和密码

     ①建立discuz数据库

1 create database discus;

     #命令中的discus是数据库的名称,这个根据自己需求可以自定义。

     ②创建用户

1 create user discus identified by 'discuz123';

   
 #命令中discuz是用户名,discuz123是密码,这个可以根据自己的需求自定义。

     ③授权用户对数据库的权限

1 grant privileges on discus.* to 'discuz'@'localhost' identified by 'discuz123';

 

5.配置apache-httpd添加discuz虚拟机

       ①加载httpd-vhosts.conf文件

1 vim /usr/local/apache/conf/httpd.conf

         #编辑httpd.conf文件,找到#Include
conf/extra/httpd-vhosts.conf行,将改行前面的#去掉。

        ②修改httpd-hosts.conf文件

1 vim /usr/local/apache/extra/httpd-vhosts.conf

     
  #编辑httpd-vhosts.conf文件,先将里面的虚拟机配置删掉,然后将如下内容复制进去。

 

========================复制下面内容(如果有问题请不要复制#注释内容)============================

<VirtualHost *:80>                                         #虚拟主机

ServerAdmin [email protected]-host.example.com               #管理邮箱地址

DocumentRoot "/data/discuz"                                #网站根目录

ServerName discuz.expeak.com                               #网站主域名

ServerAlias bbs.expeak.com                                 #网站其他域名

#ErrorLog "logs/dummy-host.example.com-error_log"          #错误日志,这里没有开启

#CustomLog "logs/dummy-host.example.com-access_log" common #访问日志,这里没有开启

<Directory "/data/discuz">                                 #设置目录权限

Options Indexes FollowSymlinks Includes ExecCGI            #容器参数选项

AllowOverride ALL                                          #.htaccess文件选项

Require all granted                                        #允许所有请求

</Directory>

</VirtualHost>

 

 

=======================复制上面内容============================

 

7.通过设置的主域名访问Discuz,根据引导初始化论坛

    ①如果域名没有申请,请加入hosts文件。

    ②如果目录提示无法写入,请给目录赋予权限。

    ③数据库信息就填写之前设置的。

    ④第一次访问后台会提示让你删除install/index.php文件。

 

 

 

========================
写在前面的话 =========================
1.LAMP环境搭建请查看这篇日志:…

解决办法:
找到打开后面的文件:source\function\function_core.php
加//注释掉此行 //$port = empty($_SERVER[‘SERVER_PORT’]) ||
$_SERVER[‘SERVER_PORT’] == ’80’ ? ” :
‘:’.$_SERVER[‘SERVER_PORT’];

这里讲述的是 Discuz X3 的处理方法

  1. 参考
    http://www.linuxidc.com/Linux/2014-09/107373.htm
    但是,实际上可以不用这么复杂。而且由于nginx配置php比较费劲,最后用apache解决了。

一.下载Discuz安装包:

谢谢大家的帮助!总的来说是Discuz!X1.5版本的漏洞,在服务器兼容性上考滤不周,希望管方能修正!

编辑 /source/class/discuz/discuz_application.php
文件,找到200行的位置。这里的 $_G['siteurl'] 就是
http://www.xxx.com:81/bbs/,
因此我们将这个端口号去掉就能解决上述问题。可以使用文本替换的方式,或者使用正则表达式。添加如下代码

[root@discuz ~]# rpm -ivh

[root@discuz ~]# wget

[root@discuz ~]# rpm –import RPM-GPG-KEY-EPEL-6
[root@discuz ~]# wget

[root@discuz ~]# tar zxvf libiconv-1.14.tar.gz
[root@discuz ~]# cd libiconv-1.14
[root@discuz libiconv-1.14]# ./configure –prefix=/usr/local
[root@discuz libiconv-1.14]# make
[root@discuz libiconv-1.14]# make install
[root@discuz ~]# setenforce 0
[root@discuz ~]# yum install nginx php mysql-server php-pecl-memcache
memcached
[root@discuz ~]# chkconfig –level 345 memcached on
[root@discuz ~]# chkconfig –level 345 mysqld on
[root@discuz ~]# vi /etc/sysconfig/memcached
PORT=”11211″
USER=”memcached”
MAXCONN=”1024″
CACHESIZE=”256″
OPTIONS=””

~$wget

$_G['siteurl'] = str_replace(':81', '', $_G['siteurl']);

[root@discuz ~]# service memcached start
[root@discuz ~]# service mysqld start
[root@discuz ~]# mysqladmin -u root password ‘your_password’
[root@discuz ~]# vi /etc/sysconfig/iptables
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT

二.
在/var/www目录下新建bbs目录,将前面解压出的upload目录下所有文件复制到
bbs目录中

图片 1discuz_application.php

[root@discuz ~]# reboot

$cd /var/www/

  • Discuz X1.5编辑 /source/function/function_core.php 文件,注释此行

[root@discuz ~]# wget

[root@discuz ~]# yum install unzip
[root@discuz ~]# mkdir discuz
[root@discuz ~]# unzip Discuz_X2.5_SC_UTF8.zip -d discuz
[root@discuz ~]# yum erase nginx
[root@discuz ~]# chkconfig –level 345 httpd on
[root@discuz ~]# service httpd start
[root@discuz ~]# cp -r /opt/discuz /var/www/html/

$sudo mkdir bbs

start in Firefox
./config        不可写
./data            不可写
./uc_client        不可写
./uc_server        不可写
mysql_connect()    不支持    请检查 mysql 模块是否正确加载

$cd

$port = empty($_SERVER['SERVER_PORT']) || $_SERVER['SERVER_PORT'] == '80' ? '' : ':'.$_SERVER['SERVER_PORT'];

[root@discuz ~]# chown -R apache:apache /var/www/html/discuz/data
[root@discuz ~]# chown -R apache:apache /var/www/html/discuz/config
[root@discuz ~]# chown -R apache:apache
/var/www/html/discuz/uc_client
[root@discuz ~]# chown -R apache:apache
/var/www/html/discuz/uc_server
[root@discuz ~]# yum install php-mysql
[root@discuz ~]# service httpd restart

$cd discuz/

  • Discuz X2.5编辑 /source/class/discuz/discuz_application.php
    文件,注释此行

 

$sudo cp -a upload/* /var/www/bbs/

实际过程:

三.给var中的www文件夹777属性

$_G['siteport'] = empty($_SERVER['SERVER_PORT']) || $_SERVER['SERVER_PORT'] == '80' ? '' : ':'.$_SERVER['SERVER_PORT'];
  1. EPEL

$sudo chmod -R 777 /var/www

如果修改后未生效,更新缓存即可解决

[root@discuz ~]# rpm -ivh

Retrieving

warning: /var/tmp/rpm-tmp.a3BNwE: Header V3 RSA/SHA256 Signature, key ID
0608b895: NOKEY
Preparing…               
###########################################
[100%]
  1:epel-release         
###########################################
[100%]
[root@discuz ~]# rpm -qa |grep epel
epel-release-6-8.noarch
[root@discuz ~]#
[root@discuz ~]# wget

–2012-12-24 10:36:28– 

正在解析主机 dl.fedoraproject.org… 209.132.181.26, 209.132.181.27,
209.132.181.23, …
正在连接 dl.fedoraproject.org|209.132.181.26|:80… 已连接。
已发出 HTTP 请求,正在等待回应… 200 OK
长度:1649 (1.6K) [text/plain]
正在保存至: “RPM-GPG-KEY-EPEL-6”

四. 打开浏览器,输入:

100%[======================================>] 1,649      –.-K/s 
in 0s     

 

2012-12-24 10:36:29 (141 MB/s) – 已保存 “RPM-GPG-KEY-EPEL-6”
[1649/1649])

注意:如果无法打开页面,【 Linux公社 www.Linuxidc.com 】
请重新启动下apache。

[root@discuz ~]# rpm –import RPM-GPG-KEY-EPEL-6
[root@discuz ~]#
[root@discuz ~]# ll /etc/yum.repos.d/
总用量 24
-rw-r–r–. 1 root root 1926 6月  26 17:30
CentOS-Base.repo
-rw-r–r–. 1 root root  637 6月  26 17:30 CentOS-Debuginfo.repo
-rw-r–r–. 1 root root  626 6月  26 17:30 CentOS-Media.repo
-rw-r–r–. 1 root root 2593 6月  26 17:30 CentOS-Vault.repo
-rw-r–r–. 1 root root  957 11月  5 11:52 epel.repo
-rw-r–r–. 1 root root 1056 11月  5 11:52 epel-testing.repo
[root@discuz ~]#

$ sudo /etc/init.d/apache2 restart

3.必须的软件包
Nginx        nginx
PHP        php
PHP-FPM        PHP-FPM is now included in PHP core as of PHP 5.3.3.
Mysql        mysql-server
Zend        php-ZendFramework-full    or   
“Zend Optimizer”
Memcache    php-pecl-memcache
Memcached    memcached
Libiconv        wget

libevent    Package libevent-1.4.13-4.el6.x86_64 already installed and
latest version

其中”服务器IP地址”来自于下面的两种情况:

4.下载安装Libiconv
[root@discuz ~]# wget

[root@discuz ~]# tar zxvf libiconv-1.14.tar.gz
[root@discuz ~]# cd libiconv-1.14
[root@discuz libiconv-1.14]# ./configure –prefix=/usr/local
[root@discuz libiconv-1.14]# make
[root@discuz libiconv-1.14]# make install

1.
如果有空间提供商的话,Username一栏和password一栏,都要分别填写空间提供商给的对应项。

5.关闭 SELINUX
[root@discuz ~]# setenforce 0

2.如果是在自己的电脑上测试一下的话,在Username里填写:root;在password栏里填写你装MySQL时设置的密码,在填写“管理员”信息栏中提到的管理员密码两项中,应该填写你进入电脑时的密码.

6.安装服务端软件包
[root@discuz ~]# yum install nginx php mysql-server php-pecl-memcache
memcached

此例中”服务器IP地址”为:

……

 Package              Arch      Version                    Repository 

把它复制到地址栏,回车便可以得到Discuz的安装向导:

Size

Installing:
 memcached            x86_64    1.4.4-3.el6                base       
68 k
 mysql-server          x86_64    5.1.66-2.el6_3              updates 
  8.6 M
 nginx                x86_64    1.0.15-3.el6                epel       
379 k
 php                  x86_64    5.3.3-14.el6_3              updates   
1.1 M
 php-pecl-memcache    x86_64    3.0.5-4.el6                base       
60 k
Installing for dependencies:
 GeoIP                x86_64    1.4.8-1.el6                epel       
620 k
 apr-util-ldap        x86_64    1.3.9-3.el6_0.1            base       
15 k
 fontconfig            x86_64    2.8.0-3.el6                base       
186 k
 freetype              x86_64    2.3.11-6.el6_2.9            base     
  359 k
 gd                    x86_64    2.0.35-10.el6              base       
142 k
 httpd                x86_64    2.2.15-15.el6.centos.1      base       
813 k
 httpd-tools          x86_64    2.2.15-15.el6.centos.1      base       
70 k
 libX11                x86_64    1.3-2.el6                  base       
582 k
 libX11-common        noarch    1.3-2.el6                  base       
188 k
 libXau                x86_64    1.0.5-1.el6                base       
22 k
 libXpm                x86_64    3.5.8-2.el6                base       
59 k
 libjpeg              x86_64    6b-46.el6                  base       
134 k
 libpng                x86_64    2:1.2.49-1.el6_2            base     
  182 k
 libxcb                x86_64    1.5-1.el6                  base       
100 k
 libxslt              x86_64    1.1.26-2.el6_3.1            updates   
452 k
 mailcap              noarch    2.1.31-2.el6                base       
27 k
 mysql                x86_64    5.1.66-2.el6_3              updates   
885 k
 mysql-libs            x86_64    5.1.66-2.el6_3              updates 
  1.2 M
 perl-DBD-MySQL        x86_64    4.013-3.el6                base       
134 k
 perl-DBI              x86_64    1.609-4.el6                base       
705 k
 php-cli              x86_64    5.3.3-14.el6_3              updates   
2.2 M
 php-common            x86_64    5.3.3-14.el6_3              updates 
  523 k
 php-pear              noarch    1:1.9.4-4.el6              base       
393 k

图片 2

Transaction Summary

Install      28 Package(s)

Total download size: 20 M
Installed size: 62 M
Is this ok [y/N]:

7.查看php版本
[root@discuz ~]# php -v
PHP 5.3.3 (cli) (built: Jul  3 2012 16:53:21)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
[root@discuz ~]#

【ZendOptimizer? 只有Zend Optimizer (Runtime for PHP 5.2 and
earlier),是不是php5.3不用Zend Optimizer了??】

8.配置服务
[root@discuz ~]# chkconfig –level 345 memcached on
[root@discuz ~]# chkconfig –level 345 nginx on
[root@discuz ~]# chkconfig –level 345 mysqld on
[root@discuz ~]# vi /etc/sysconfig/memcached
PORT=”11211″
USER=”memcached”
MAXCONN=”1024″
CACHESIZE=”256″
OPTIONS=””

[root@discuz ~]# service memcached start
Starting memcached:

[root@discuz ~]# service nginx start
Starting nginx:                                            [  OK  ]

[root@discuz ~]# service mysqld start
Initializing MySQL database:  WARNING: The host ‘discuz.flysky.intra’
could not be looked up with resolveip.
This probably means that your libc libraries are not 100 % compatible
with this binary MySQL version. The MySQL daemon, mysqld, should work
normally with the exception that host name resolving will not work.
This means that you should use IP addresses instead of hostnames
when specifying MySQL privileges !
Installing MySQL system tables…
OK
Filling help tables…
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

/usr/bin/mysqladmin -u root password ‘new-password’
/usr/bin/mysqladmin -u root -h discuz.flysky.intra password
‘new-password’

Alternatively you can run:
/usr/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd /usr/mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/bin/mysqlbug script!

                                                          [  OK  ]
Starting mysqld:                                          [  OK  ]

[root@discuz ~]# mysqladmin -u root password ‘your_password’

[root@discuz ~]# vi /etc/sysconfig/iptables
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT

[root@discuz ~]# reboot

9.Discuz! X2.5下载配置

[root@discuz ~]# wget

[root@discuz ~]# yum install unzip
[root@discuz ~]# mkdir discuz
[root@discuz ~]# unzip Discuz_X2.5_SC_UTF8.zip -d discuz
[root@discuz ~]# ll discuz
总用量 12
drwxr-xr-x.  2 root root 4096 10月 31 15:43 readme
drwxr-xr-x. 12 root root 4096 10月 31 15:43 upload
drwxr-xr-x.  4 root root 4096 10月 31 15:43 utility

[root@discuz ~]# cp -r discuz/upload /opt/discuz

[root@discuz ~]# cp /etc/nginx/conf.d/default.conf .

[root@discuz ~]# vi /etc/nginx/conf.d/default.conf
    location / {
        #root  /usr/share/nginx/html;
        #index  index.html index.htm;
        root  /opt/discuz;
        index  index.html index.htm;
    }

    # pass the PHP scripts to FastCGI server listening on
127.0.0.1:9000
    #
    location ~ \.php$ {
        root          html;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME 
/scripts$fastcgi_script_name;
        include        fastcgi_params;
    }

[root@discuz ~]# service nginx restart

10.Cannot enable php for nginx,try apache2 !!!!

[root@discuz ~]# yum erase nginx
[root@discuz ~]# chkconfig –level 345 httpd on
[root@discuz ~]# service httpd start
[root@discuz ~]# cp -r /opt/discuz /var/www/html/

start
./config        不可写
./data            不可写
./uc_client        不可写
./uc_server        不可写
mysql_connect()    不支持    请检查 mysql 模块是否正确加载

[root@discuz ~]# chown -R apache:apache /var/www/html/discuz/data
[root@discuz ~]# chown -R apache:apache /var/www/html/discuz/config
[root@discuz ~]# chown -R apache:apache
/var/www/html/discuz/uc_client
[root@discuz ~]# chown -R apache:apache
/var/www/html/discuz/uc_server
[root@discuz ~]# yum install php-mysql
[root@discuz ~]# service httpd restart

图片 3

CentOS 6.4 下的LNMP 生产环境搭建及安装脚本
http://www.linuxidc.com/Linux/2013-11/92428.htm

生产环境实用之LNMP架构的编译安装+SSL加密实现
http://www.linuxidc.com/Linux/2013-05/85099.htm

LNMP 全功能编译安装 for CentOS 6.3笔记
http://www.linuxidc.com/Linux/2013-05/83788.htm

CentOS 6.3 安装LNMP (PHP 5.4,MyySQL5.6)
http://www.linuxidc.com/Linux/2013-04/82069.htm

在部署LNMP的时候遇到Nginx启动失败的2个问题
http://www.linuxidc.com/Linux/2013-03/81120.htm

Ubuntu安装Nginx php5-fpm
MySQL(LNMP环境搭建)
http://www.linuxidc.com/Linux/2012-10/72458.htm

更多CentOS相关信息见CentOS 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=14

本文永久更新链接地址:http://www.linuxidc.com/Linux/2014-09/107374.htm

图片 4

这是Discuz!X2的安装向导。

图片 5

这是点击同意之后开始安装,会出现一些信息,包括当前的服务器类型。

图片 6

这一步是填写创建的后台的一些信息,包括管理员用户名和密码等信息.

然后进行相应填写安装即可.

图片 7

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图