作者:matrix
发布时间:2017-09-28
分类:零零星星
问题
vagrant中的ubuntu环境安装了Lnmp一键安装包,TP5项目死活都无法访问,一直报错500,502。各种修改nginx.conf,最终还是需要查看nginx的error日志排查问题。
PHP message: PHP Warning: require(/vagrant/bj-admin/thinkphp/start.php): failed to open stream: Operation not permitted in /vagrant/bj-admin/public/index.php on line 35
PHP message: PHP Fatal error: require(): Failed opening required '/vagrant/bj-admin/public/../thinkphp/start.php' (include_path='.:/usr/local/php/lib/php') in /vagrant/bj-admin/public/index.php on line 35" while reading response header from upstream, client: 10.10.10.1, server: admin.esc.com, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/tmp/php-cgi.sock:", host: "admin.esc.com"
2017/09/28 13:19:09 [error] 1445#0: *1 FastCGI sent in stderr: "PHP message: PHP Warning: require(): open_basedir restriction in effect. File(/vagrant/bj-admin/thinkphp/start.php) is not within the allowed path(s): (/vagrant/bj-admin/public/:/tmp/:/proc/) in /vagrant/bj-admin/public/index.php on line 35
就是如上的各种无法require
,PHP中逐行exit. 用tail -f
查看*error.log文件变化 太逗。
网上找好久解决办法,突然间发现关键字open_basedir
,.user.ini
貌似这鬼东西有限制啊。早该想到Operation not permitted
就是无权限和LNMP一键包的.user.ini
有关就没这么多鸟事了。 因为TP5项目需要把的/public
搞成web的root
路径,LNMP默认使用.user.ini
配置信息来防止跨站点目录访问 导致open_basedir
的设置值限制了php的访问权限,也就not permitted。但是线上环境为什么没这个问题,这就不知道了。
解决方案
取消open_basedir限制
可以手动删除或者注释ini,最好使用lnmp一键包的工具脚本
> cd ~/lnmp1.4/tools #进入lnmp一键包的tool目录
> ./remove_open_basedir_restriction.sh #执行脚本,按照选项操作
> ./remove_disable_function.sh #正巧这个我需要
P.S.
到现在用了差不多一个月的vagrant来模拟ubuntu生产环境,效果很棒。这个问题是上次遗留下来的,搞得我想打人了。一直等到今天接手TP5的项目继续搞 弄了一上午才好。 peace~
参考:
https://m.aliyun.com/yunqi/articles/34240
https://lnmp.org/faq/lnmp-vhost-add-howto.html
http://www.vpser.net/security/lnmp-cross-site-corss-dir-security.html
作者:matrix
发布时间:2017-08-30
分类:零零星星
win10上面安装的phpStudy这些天有时候打不开网页 502,请求一直loading,就算是代码问题我也扶不住,安装个Redis,mongodb都超级麻烦,并且好多都模拟Linux做的东西,最终写出来的代码都要发布到linux的生产环境,倒不如就搞个服务器的克隆环境,有虚拟机+vagrant 简直是巴适。它可以实现文件的共享 从而方便宿主机到虚拟机的文件同步,也就是win上编写代码,虚拟机测试运行,中间无需自行拷贝代码文件到虚拟环境。
PHP一键开发环境到目前用过phpnow phpstudy xampp,前两者仅限win平台,xampp可以跨win和mac平台。网上很多都推荐用vagrant搭建开发环境,可以完全模拟服务器环境,多平台支持 今天试试水。
安装VirtualBox虚拟机
官网:https://www.virtualbox.org/wiki/Downloads
安装vagrant
官网:https://www.vagrantup.com/downloads.html
挂载vagrant的box镜像文件
win下cmd命令进入你需要共享到虚拟环境的文件夹根目录 如:~/dev
阅读剩余部分 »
作者:matrix
发布时间:2017-04-17
分类:零零星星
http2.0早就开始实行了,忽然间才看到其实很多网站都有使用了http2.0协议,aliyun.com都有了,其他巨头是在打瞌睡吗?
图中显示的Request完全和http1.1的请求完全不同 这,就是高科技!
要求
若想使用http2.0,浏览器和服务器端也都有要求。浏览器用最新版Chrome或其他,服务器端网站配置就麻烦多了。
服务器端OpenSSL库的版本要支持ALPN(1.0.2+ 目前最新为1.1.0e),之前是用SPDY,NPN,后来google只支持ALPN,也就是说未来就是HTTP/2 + ALPN
为什么我们应该尽快支持 ALPN?
需要给网站域名配置证书
nginx版本需要1.9.5+(目前最新版本1.12.0)
若你的服务器openssl或nginx本来就达不到要求,建议都重新安装升级才对。之前只是把openssl升级到最新版本,且Lnmp1.3中的nginx是1.10的版本完全符合要求(其中也有必须的httpv2和ssl模块)就没有给nginx做升级操作,以为可以用http2.0 结果给vhost的conf文件添加了listen 443 ssl http2;
重启nginx N次都没有任何反应,最后还是更新nginx才解决。就是因为之前安装nginx的时候openssl没有达到版本要求,就算升级了服务器openssl也没有卵用。
> openssl version #查看openssl 版本
> nginx -V #查看nginx版本以及模块
服务器配置
环境 ubuntu 14 64bit
LNMP 1.3 NGINX 1.10
升级openSSL库
>openssl version -a #查看openssl 信息 用于升级
>cd #进入默认目录
>wget https://www.openssl.org/source/openssl-1.1.0e.tar.gz
>tar -zxvf ./openssl-1.1.0e.tar.gz
>cd openssl-1.1.0e/
>./config --prefix=/usr/lib/ssl --openssldir=/usr/lib/ssl
#注意--prefix=/usr/lib/ssl为之前openSSL的安装目录,--openssldir表示安装目录 默认值就为/usr/lib/ssl
>make && make install
>mv /usr/bin/openssl /usr/bin/openssl-old
>mv /usr/include/openssl /usr/include/openssl-old
>ln -s /usr/lib/ssl/bin/openssl /usr/bin/openssl
>ln -s /usr/lib/ssl/include/openssl /usr/include/openssl
>echo "/usr/lib/ssl/lib">>/etc/ld.so.conf
>ldconfig
#现在看看版本号就是最新的了
参考:https://www.douban.com/note/563948878/
若升级openssl导致ss服务无法使用参考:
更新OpenSSL库至最新版本导致sss服务无法启动
配置证书
不详细说明,之前有方法安装Let’s Encrypt证书
安装&升级nginx
最新版本1.12.0
本来是使用lnmp安装目录中自带的upgrade.sh
进行自动升级操作,后来发现有问题,升级时出现openssl library not found
,不过就算是自动升级也不敢保证LNMP编译nginx的时候是否使用的最新版本openssl库,还是手动升级操作。
>wget -O nginx-ct.zip -c https://github.com/grahamedgecombe/nginx-ct/archive/v1.3.2.zip
>unzip nginx-ct.zip
>cd lnmp nginx-1.12.0
>./configure --add-module=../ngx_brotli --add-module=../nginx-ct-1.3.2 --with-openssl=../openssl-1.1.0e --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --with-http_stub_status_module
#这里http_v2_module,http_ssl_module,with-openssl才是必须要配置的,其他module看个人实际安装情况
>cd /usr/local/nginx/sbin
>cp nginx nginx.old #备份旧版nginx
>cd ~/nginx-1.12.0
>make upgrade #升级操作
修改vhost中域名配置文件
文件位置:/usr/local/nginx/conf/vhost
修改对应域名的配置文件,在server段中添加listen 443 ssl http2;
就可以了
参考 hhtjim.com:
server
{
listen 80;
listen 443 ssl http2;
#listen [::]:80;
ssl on;
ssl_certificate /etc/letsencrypt/live/hhtjim.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/hhtjim.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; #加密算法(CloudFlare 推荐的加密套件组)
ssl_prefer_server_ciphers on; #优化 SSL 加密套件
ssl_session_timeout 10m; #客户端会话缓存时间
ssl_session_cache builtin:1000 shared:SSL:10m; #SSL 会话缓存类型和大小
ssl_buffer_size 1400;
add_header X-UA-Compatible "IE=edge,chrome=1"; #IE 用最新内核渲染页面
server_name hhtjim.com www.hhtjim.com;
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/hhtjim.com;
include other.conf;
#error_page 404 /404.html;
include enable-php.conf;
include wordpress.conf;
if ($http_host !~ "^www.hhtjim.com$"){
rewrite ^(.*) https://www.hhtjim.com$1 permanent;
}
if ($scheme = "http"){
rewrite ^(.*)$ https://$host$1 permanent;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /\.
{
deny all;
}
access_log /home/wwwlogs/hhtjim.com.log;
}
重启nginx
>lnmp nginx restart
之后再访问就可以看到使用http2.0协议了
FAQ
若安装失败,请参照 Nginx 配置之完整篇
参考:
https://imququ.com/post/my-nginx-conf.html
http://www.cnblogs.com/shiv/p/5271711.html
http://www.jb51.net/article/47755.htm
作者:matrix
发布时间:2017-02-11
分类:零零星星
重启系统发现mysql启动失败。
环境为 ubuntu Lnmp
Starting MySQL
. * The server quit without updating PID file (/var/run/mysqld/mysqld.pid).
/var/run/mysqld/
目录中没有pid文件
找到网上说的文件权限、磁盘已满,这些都不符合情况。
解决
删除文件my.cnf
> rm /etc/mysql/my.cnf
启动mysql
lnmp mysql start
最后启动成功就ok
peace
参考:
http://blog.ich8.com/post/5635
https://bbs.vpser.net/viewthread.php?tid=13217
作者:matrix
发布时间:2017-01-02
分类:零零星星
修改对应域名的nginx配置文件
vi /usr/local/nginx/conf/vhost/域名
重新配置nginx的配置文件
server
{
。。。。。。
<strong>include typecho.conf;
include enable-php-pathinfo.conf;</strong>
。。。。。。
}
参考:https://bbs.vpser.net/thread-13341-1-1.html
作者:matrix
发布时间:2016-12-30
分类:零零星星
安装环境
按照ubuntu正常安装的时候却报错:
Lnmp Unable to get linux distribution name, or do NOT support the current di
原因是因为 /etc/issue 中记录的是linux发行版本:elementary OS Loki
Lnmp脚本无法识别出为ubuntu的系统内核
修改main.sh文件
文件路径:/lnmp1.3/include/main.sh
搜索关键字Get_Dist_Name()查找该方法替换为一下内容:
Get_Dist_Name()
{
if grep -Eqi "CentOS" /etc/issue || grep -Eq "CentOS" /etc/*-release; then
DISTRO='CentOS'
PM='yum'
elif grep -Eqi "Red Hat Enterprise Linux Server" /etc/issue || grep -Eq "Red Hat Enterprise Linux Server" /etc/*-release; then
DISTRO='RHEL'
PM='yum'
elif grep -Eqi "Aliyun" /etc/issue || grep -Eq "Aliyun" /etc/*-release; then
DISTRO='Aliyun'
PM='yum'
elif grep -Eqi "Fedora" /etc/issue || grep -Eq "Fedora" /etc/*-release; then
DISTRO='Fedora'
PM='yum'
elif grep -Eqi "Debian" /etc/issue || grep -Eq "Debian" /etc/*-release; then
DISTRO='Debian'
PM='apt'
elif grep -Eqi "Ubuntu" /etc/issue || grep -Eq "Ubuntu" /etc/*-release; then
DISTRO='Ubuntu'
PM='apt'
elif grep -Eqi "Raspbian" /etc/issue || grep -Eq "Raspbian" /etc/*-release; then
DISTRO='Raspbian'
PM='apt'
elif grep -Eqi "Deepin" /etc/issue || grep -Eq "Deepin" /etc/*-release; then
DISTRO='Deepin'
PM='apt'
else
DISTRO='Ubuntu'
PM='apt'
fi
Get_OS_Bit
}
或者下载main.sh覆盖:http://pan.baidu.com/s/1hsyVSw8
然后再执行install.sh脚本安装就可以了
作者:matrix
发布时间:2013-08-04
分类:兼容并蓄
之前的云平台装过Lnmp一键安装包,用Lnmp搭建的服务器环境没有虚拟主机控制面板操作起来有些麻烦。
而WdManager就把这些我需要的东东综合在了一起,当然比lnmp更吃vps的配置,这才有的折腾。
安装前需要卸载lnmp。
1.停用以前安装过的相关服务:
service httpd stop
service mysqld stop
2.源码包编译方式安装:
wget http://dl.wdlinux.cn:5180/lanmp.tar.gz
tar zxvf lanmp.tar.gz
sh lanmp.sh
3.选择选项后就开始安装了
4.安装完成 差不多用了半个小时。
安装完后,用浏览器打开:http://ip ,会显示默认页面信息,探针,phpinfo信息
管理后台是http://ip:8080,默认用户密码:admin wdlinux.cn
由于电信云平台封了8080和80端口只有修改了才能进后台
2.X版本修改默认后台端口:
用WinSCP登录编辑文件 /www/wdlinux/wdapache/conf/httpd.conf
搜索 8080 找到
Listen 8080
<VirtualHost *:8080>
将8080修改成自己的端口8888并保存
注意:<VirtualHost *:8080>这里的8080也需要修改 否则也不能进后台 会有提示页面
PuTTY输入命令添加防火墙规则:
iptables -I INPUT -p tcp --dport 8888 -j ACCEPT
保存设置命令:
service iptables save
再应用防火墙规则
service wdapache restart
若没用shutdown -r now 重启服务器
参考:http://www.wdlinux.cn/bbs/thread-928-1-1.html
之后就~
对了,还需要添加web服务端口:7979 再添加防火墙规则
再添加一个网站应用
然后打开7979端就有了曾经的页面~
扔个没用的探针:http://101.227.251.68:7979/iProber2.php
9-19
ps:出于某些方面考虑还可以修改wdcp默认的用户名Admin:
打开http:/IP:端口/phpmyadmin
默认情况下是8080端,也就是wdcp管理面板使用的端口。
默认用户名:RООт
输入密码后登陆phpmyadmin
找到wdcp的数据库,查看 wd_member表,ok 任意修改用户名admin
作者:matrix
发布时间:2013-08-03
分类:兼容并蓄
AMH官网:http://amysql.com
用Lnmp自带的功能管理ftp、mysql都有些麻烦。需要ssh命令,so安装个管理面板来玩玩
AMH4.0 安装 执行命令:
wget http://amysql.com/file/AMH/4.0/amh.sh; chmod 775 amh.sh; ./amh.sh 2>&1 | tee amh.log;
出现3个选项
1为安装amh,2为卸载amh,3为退出
选择安装之后会提示输入管理和数据库密码。3分钟看似就安装完成
我X 安装失败!
还以为重启AMH有用:/etc/init.d/amh-start
连lnmp都关掉了。都说内存小才会安装失败的,我这RP啊~ 这主要还是TMD电信服务器 xen 欸。
重启LNMP:/root/lnmp restart
还不行就试着防火墙再重启LNMP:service iptables stop
WinSCP进入/ROOT 没看见AMH目录 又跟没发生过一样。
小结:AMH安装AMH失败!
- 1
- 2