tengine+php5+dz论坛部署

RT~业务上需要跑一个html页面,一个下载业务,和一个dz论坛,并且上反代,且在请求到任何其他奇怪的地址的时候均跳转回首页
这里假设域名是www.abc.com、dl.abc.com、bbs.abc.com
环境上 大致的情况就是:
用户访问公网IP到达机器A
机器A里面开一个虚拟机B
访问A后 通过反代 再请求作为源站的B即可
用到的工具有:tengine、php5(7不行,dz X3.2不支持7)、mysql、DZ UTF-8 简中 X3.2版
简单介绍下,tengine属于nginx的淘宝魔改版本~在nginx上增加了很多新的功能,简单的配置的话参数是一致的
一、安装所需的程序
这里系统仍然是debian(这次是8.5 x64)由于我使用的apt源自带tengine 所以不需要编译安装,直接apt-get即可

apt-get install tengine php5 php5-fpm php5-common php5-gd php5-mysql php5-cli php5-json php5-readline mysql-server-5.5

这些都不解释、也没啥要配置的,mysql那里会让你设置root的密码,设一个就OK
dz的话 请各位自行去官网复制链接 然后wget后unzip即可,这里不做过多说明
这次没用到phpmyadmin,因为安全事故频发,有点不是太放心,况且也没啥需求,导入数据库什么的敲命令也OK的
完事后 mysql 进去 设置个单独的账户给dz用
二、配置dz要用的到的mysql

mysql -u root -p

#登陆mysql

create database bbs;

#创建名为bbs的数据库

grant all privileges on bbs.* to [email protected] identified by '123456';

#创建名为bbs的用户,密码为123456,并赋予其对bbs数据库的全部权限
这部分直接从我的第一篇博文里面复制过来的了。。。反正都一样
3、解决第1、2个需求
两者实际是同一个功能,所以合二为一来讲,后者只是没有index而已
首先 创建一个放网页的目录。。。不解释,我们丢到/var/www下面吧,2个目录,一个是HTML的,目录叫www,另一个提供下载的目录叫dl

mkdir /var/www/www /var/www/dl

然后可以先把你需要提供的内容丢到对应目录里,这里我们就touch一个index.htm在www和dl的下面,方便后续测试

touch index.htm
echo hello >> index.htm

分别cp到各自的文件夹,懒得打命令了
之后,编辑tengine的配置文件,由于是nginx的魔改,所以配置文件仍然叫nginx.conf,路径在/etc/nginx

vim /etc/nginx/nginx.conf

这里面大部分东西都不需要你改,基本上只是添加新的东西而已
我们找到开头写着http { 的那一行
然后找到这个大括号的“}”部分(全新的配置文件一般都是在最下面)
之后按下i进入编辑模式,在“}”的上面敲回车空出几行来 粘贴如下内容(以下内容由叼炸天的朋友erevus提供~点击名字可进入他的个人站点,这是一位经验丰富的安全工程师~)

server {
listen 80;
server_name www.abc.com abc.com;
root /var/www/www/;
index index.htm;
}

(空格粘贴过来的时候乱掉了。。。不过不影响,我也没强迫症,你们自己有强迫症的话自己看着办吧2333333)
这一行由于也带上了对php的支持,我懒得删了。。。反正不影响。。。大致注意以下几点:
1、listen 后面跟着端口号 表示监听哪个端口
2、server_name 后面跟着域名 如果是多域名的话(包括www和@)用空格隔开
3、root 后面跟着放着网页的物理路径 不解释
4、index 后面跟着你的index页面的文件名,记得带后缀
5、需要多域名指向多文件夹的话 跟着这个的后面,再复制粘贴一次,然后按照上面1~4的说明,来改成你对应业务的所需即可
然后:wq 保存退出

service tengine restart

理论上不会有任何报错信息,然后直接请求的话 就会发现可以请求到你需要的内容了~
四、上dz
先编辑一下php-fpm,直接安装的里面 缺东西。。。略蛋疼

vim /etc/php5/fpm/php-fpm.conf

直接拉到最下 输入这几行:

listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
listen.backlog = -1

如果这三个都有了就忽略吧。。。我这里不知道为啥进去后发现这三个参数都没有
第一个是监听的端口
第二个是保证只有127.0.0.1可以访问,如果你这是后端机器 则可能需要修改一下
第三个。。。想不起来了!自行谷歌吧。。。
配置完后
还是和刚才一样,搞个放论坛的目录,这里我们就叫bbs

mkdir /var/www/bbs

然后 把dz丢进去~
这里注意,dz由于权限要求,所以需要你给一下可读可写可删除可改等权限

chmod -R 777 /var/www/bbs/

(这里要注意,我这只是一个为了调通而偷懒的说明,全部777的话有可能会因为有漏洞进而被黑,然后被挂webshell,请各位站长务必注意)
之后编辑一下nginx.conf

vim /etc/nginx/nginx.conf

这里稍加不同,比上面的多了点东西

server {
listen 80;
server_name bbs.abc.com;
root /var/www/bbs/;
index index.htm index.html index.php;
location ~ .*\.php(\/.*)*$ {
include /etc/nginx/fastcgi_params;
fastcgi_index index.php;
set $path_info "";
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
}
}

主要是多了一个fastcgi_pass 这里指向你php刚才设置的listen即可,注意端口和IP都别输错了
完事后:wq保存退出

service tengine restart

重启后 dz的要求是http://你的域名/install 这样访问即可开始论坛初始化
一路下一步 按照说明走 就问题不大了~
五、访问奇怪的地址时跳转回主站(www)
这个挺简单的。。。直接

vim /etc/nginx/nginx.conf

然后复制粘贴如下 还是到http 里面

server {
listen 80 default;
rewrite ^(.*) http://www.abc.com permanent;
}

:wq保存退出,重启服务端即可
然后你可以测试一下 比如浏览器上直接输入IP访问 会发现可以跳转到这里了
六、反向代理
迟来的更新……这一步居然是最简单的。。。
还是添加解析到nginx.conf即可

server {
listen 80;
server_name bbs.bilicraft.com;
access_log /var/log/nginx/bbs.access.log main;
error_log /var/log/nginx/bbs.error.log error;
location / {
proxy_pass http://172.16.1.2:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}

其中 proxy_pass写目标机器的IP和端口,保存退出
然后重启一下tengine,顺带一提 nginx也是可以反代的,但是要去掉access_log结尾的main和error_log结尾的error,nginx不认这俩的,不去掉重启会报错
这样就全部完成啦~

发表评论

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