作者:matrix
发布时间:2019-03-14
分类:零零星星
使用vagrant做开发可以将环境全部运行于虚拟机中,避免本机安装各种环境模块造成问题也是为了完全和宿主机分离。
测试:macOS + pycharm + Django项目
配置vagrant的初始化文件
pycharm设置中搜索Vagrant
配置Vagrant的基本运行程序
Vagrant executable
为Vagrant程序路径
Instance folder
表示Vagrant box配置的初始化目录。我这里也就直接将就以前init的目录。默认位置为当前项目路径
设置好就可以启动虚拟机环境:tools->Vagrant->up
打开虚拟机ssh:tools->Start SSH Session
配置python解释器
点击右上角绿色▶️箭头或者Control
+R
按键运行,提示失败是由于使用vagrant项目代码是在本机修改编写在虚拟机中运行,默认的项目启动会调用本机的python环境来运行,项目中的所有module亦同 所以修改下运行的python环境。
pycharm设置中搜索Project Interpreter
进行配置修改
点击右侧设置图标add
新加一个vagrant
环境的Interpreter
添加完成后重新选择新加的虚拟机中的python解释器
之后列表中的可用包名就都是虚拟机中已经安装了的。重新run
也就会成功执行。
配置run
如果运行Django项目还需要给简单编辑一下运行选项Edit Configurations...
打开之后选择新添加的Pyhton Interpreter
,设置Parameters
为Django项目的运行参数runserver
为runserver 0.0.0.0:8080
然后▶️运行项目就OK了。
ssh://vagrant@127.0.0.1:2222/usr/bin/python3.6 -u /pythonWork/okex/okex/manage.py runserver 0.0.0.0:8080
Performing system checks...
...
March 14, 2019 - 07:56:04
Django version 2.1.7, using settings 'okex.settings'
Starting development server at http://0.0.0.0:8080/
Quit the server with CONTROL-C.
解决Unresolved reference错误
编辑器很多提示导包的Unresolved reference 'XXX' more....
错误 在于py文件目录定位错误导致的 需要手动修改下
重新选择import
倒包的包名py文件的目录即可
设置项目的Project Structure
,先选中
报错 提示的python文件的目录,再点击上面的Sources
,之后右侧的Source Folders
就会出现刚刚选中的目录,保存应用即可。
若没有马上生效需要清空缓存且重启File->Invalidate Caches / Restart...
,之后编辑器也就不会提示导包的错误提示Unresolved reference
参考:
https://blog.csdn.net/u013088062/article/details/50346181
https://blog.csdn.net/u013088062/article/details/50346719
https://blog.csdn.net/wqwqwqwq403/article/details/78861255
https://www.cnblogs.com/xiaohuamao/p/6903030.html
PEACE~
作者:matrix
发布时间:2017-10-15
分类:零零星星
测试环境:
服务端:vagrant下ubuntu16的lnmp.org一键安装包
IDE:phpStorm for mac
xdebug扩展进行断点调试
虚拟机安装配置xdebug扩展
连接vagrant ssh
cd ~
wget https://xdebug.org/files/xdebug-2.5.5.tgz
tar -zxvf xdebug-2.5.5.tgz
cd xdebug-2.5.5
/usr/local/php/bin/phpize #用phpize生成configure配置文件
./configure && make && make install
记录下Installing shared extensions
的信息用于配置php.ini
2018-11-06 修改更新
尾部添加:
[xDebug]
zend_extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/xdebug.so
xdebug.idekey = "PHPSTORM" #需要和ide根据保持抑制
xdebug.default_enable = 1
xdebug.remote_connect_back = 1
xdebug.remote_port = 9001 #需要和ide根据保持抑制
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_handler="dbgp"
xdebug.remote_log = /tmp/xdebug.log #日志记录 方便找错
chrome浏览器插件
安装官方推荐扩展 Xdebug helper
https://chrome.google.com/webstore/detail/eadndfjplgieldjbigjakmdgkmoaaaoc
配置插件xdebug helper
确保IDE KEY
和ini配置保持一致
配置phpStorm
确保Languages & Frameworks =》 PHP =》 Debug 配置端口和xdebug.remote_port一样。
DBGP配置一致
php -> servers 配置
根据自己开发环境修改配置:
Name是Server名称,可以随便填写;
Host是项目的访问地址;
Port为你Web服务器的端口;
还需要配置项目路径的映射(path mapping),将项目的根目录以及public目录映射到Vagrant服务器中的绝对路径。这个需要确保一致
如果maping路径配置有问题 可能会出现 错误:
下午2:53 Debug session was finished without being paused
It may be caused by path mappings misconfiguration or not synchronized local and remote projects.
To figure out the problem check path mappings configuration for 'admin.sp' server at PHP|Servers or enable Break at first line in PHP scripts option (from Run menu).
这样会导致设置的断点无效,每次调试都会进入index.php入口
开始调试
开启xdebug监听 :Run
-> Start Listening for PHP Debug Connections
或者点击顶部导航栏的☎️电话图标
浏览器插件打开调试
浏览器页面请求的网址即可看到调试信息
网页和api调试配置方式本质都是在 cookie 中自动添加XDEBUG_SESSION=phpStorm
调试快捷键
F7 通过当前行,进入下一行,如果该行是方法,则进入方法体
F8 通过当前行,进入下一行,如果该行是方法,也直接进入下一行,不进入方法体
F9 通过整个流程,全部顺序执行
参考:
https://blog.csdn.net/RobotYang123/article/details/80370030
https://www.fanhaobai.com/2017/09/xdebug-in-docker.html
https://segmentfault.com/a/1190000007789295
http://mrcelite.blog.51cto.com/2977858/1903157
作者: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
阅读剩余部分 »