前言
前些日子古劳斯提到了建站的想法,在越来越恶劣的创作环境下同人女需要自己的房子呜呜。目前国内论坛还是discuz为主,和古劳斯对比了一下国外的论坛系统,最终选定了flarum。详细的对比和保姆级教程请移步古劳斯的博文。这篇主要用作记录一些遇到坑的地方。
看了一下,似乎是先用composer装php包,再配置nginx把访问重新定位到对应的网站系统文件,最后在客户端进入可视化引导emm
...然后就卡住了。
坑录
1.composer炸内存
按照教程用composer指令装包,遇到了内存不足的问题。
解决:顺着错误提示官方提供了解除内存限制的命令。不想多琢磨,直接拿过来用了。
free -m sudo dd if=/dev/zero of=/var/swap.1 bs=1M count=1024 sudo mkswap /var/swap.1 sudo swapon /var/swap.1
2. nginx基本转发配置
修改配置文件ningix.conf来完成设置,基本常识还是需要理解一下,参考这篇文章
划重点,events、http块是必须的,实现监听和转发的server块定义在http块以下,location块具体描述转发规则,又定义在server块以下。
server块下值得注意的属性有监听端口、根目录、服务器名(域名),日志路径,默认重定位,和location块(除此之外可有可无的我全部注释掉了,未来再加)
到这一步其实基本的转发功能已经ok了,-sudo nginx -s stop
; sudo nginx
重启一下先,上一步如果犯了语法错误这里会提示。
网上有别人写的flarum安装教程里,location的作业长这样。
这个配置实际跑下来是有问题的,具体表现在:加上.php规则,用户端访问php文件会500,去掉.php规则,用户端访问php文件就只是源码不执行。
3. php-fpm配置
查了一下,是php-fpm没有配好。php-fpm和nginx的协作原理可以参考这篇文章。
排查得出的原因是php-fpm的监听没有打开。我选择了端口方式监听,在php-fpm配置文件中写入了listen = 127.0.0.1:9000
,并且将网上nginx配置作业中fastcgi_pass
这条属性也设置为127.0.0.1:9000
但是,文中提到的/usr/local/nginx/conf/vhost/vhost
.conf
我硬是没找到,直接写nginx.conf的location块里最终效果是一样的。另外,我这边服务器php-fpm的配置文件位置也不一样,具体是/etc/php/7.2/fpm/php-fpm.conf
另外这里还有一个坑。php-fpm的配置和基本结构可以参考这篇博文。但我的php-fpm.conf下边是没有[www]标签的,只有一个[global]。如果把
listen = 127.0.0.1:9000
加到[global]标签前或者其下,listen并不会生效。但如果加到文件尾部却可以。如果自己写一个[www]会直接报错,我在文件里发现了包含语句,很可能这个标签在包含的另一个文件当中,我把listen写在文件尾只是瞎猫撞上死耗子。
修改完配置文件之后需要重启一下fpm(/etc/init.d/php7.2-fpm reload
)和nginx,然后命令netstat -lnt
可以查看端口监听情况。
完成了这一部就可以成功进入flarum的安装引导了。最后完整作业如下:
- ; ; //. ; ///-/*. ; { 768; # multi_accept on; } { { listen 80; 1024 ; //// ; 81.68.181.29; //log//.log; //log//.log; index index. ; * \. $ { ~ 127.0.0.1:9000;#端口转发 #fastcgi_pass unix:/dev/shm/php-cgi.sock; index. ; ///. ; } / { $uri $uri/ /index. ?$query_string; } / { $uri $uri/ /. ?$query_string; } / { $uri $uri/ /. ?$query_string; } / { ; return 404; } * \. $ { ~ -1; } } }
注:这是最简单直接的/etc/nginx/nginx.conf写法,网上的部分作业中的写法是/etc/nginx/nginx.conf只有顶块,server放在/etc/nginx/sites-available/default中,而除了.php外的location块则在/var/www/flarum/.nginx.conf中,三个文件层层包含。这两种写法是等价的。
到这里网站已经可以访问了,只是还不能用https协议,如果对加密传输有需求的话还需要进入下一步。
4.ssl配置
本节是ssl配置,以及把普通访问重写到https的作业。
参考这篇文章,申请一个ssl证书并且上传到/etc/nginx/conf.d或者别的地方。
重写http块下的server块:
{ #把http访问重新指向https listen 80 ; //// ; -. ; //log//.log; //log//.log; /(.*)$ ://-.:443/$1 ; ^ } { #SSL 访 问 端 口 号 为 443 listen 443 ; //// ; index index. index. index.-. ; #填 写 绑 定 证 书 的 域 名 -. ; ; #证 书 文 件 ///./1-.. ; #私 钥 文 件 ///./2-.. ; 5 ; .1 .2; #请 按 照 以 下 套 件 配 置 , 配 置 加 密 套 件 , 写 法 遵 循 openssl 标 准 。 ----: :! :! :! :! ; ; / { $uri $uri/ /index. ?$query_string; } * \. $ { ~ 127.0.0.1:9000; index. ; ///. ; } }
和上一节一样,请根据自己配置文件的实际情况来修改,像我其实嵌套了三个文件,这两个server块并不在同一个文件中。至此flarum论坛的安装和nginx配置就完成了。
总结
经过这次踩坑,总共了解了php&composer相关基础操作,服务器端nginx反向代理的具体流程,这应该是一个很经典的php网站系统的后台结构,我离后端工程师又近了一步(不是)
详细的论坛搭建和配置信息请移步古劳斯的保姆级教程。我奶奶看完都会盖房子(拇指