Submitted by gouki on 2015, April 23, 5:21 PM
gogos 默认是 3000端口,如果你本身已经有了其他WEB服务,比如apache,当然不可能同时占用80端口,这时候就可以利用apapche的proxy功能。如果你是apt-get 安装 的apache,就方便了,debian/ubuntu 都支持a2ensiate,a2enmod这样的小脚本。你只要打开a2enmod proxy proxy_http就行了,然后新建一个site加入以下配置
XML/HTML代码
- <VirtualHost *:80>
- ServerAdmin test@test.com
- ServerName yoursitename
- ProxyRequests off
- ProxyPass / http://127.0.0.1:3000/
- ProxyPassReverse / http://127.0.0.1:3000
- <Proxy *>
- Order Deny,Allow
- Allow from all
- </Proxy>
- ErrorLog ${APACHE_LOG_DIR}/yoursitename.log
- LogLevel warn
- </VirtualHost>
是不是很简单,这时候你用supervisor启动后就可以通过WEB访问了.不过这时候有具小缺点,那就是如果你killall gogs进程的话,你会发现再也启动不了了.看启动的LOG会告诉你3000端口被占用,用netstat -an|grep 3000,发现有N个进程都是在CLOSE_WAIT的情况,这时候用: echo $(netstat -anp|grep 127.0.0.1:3000 |awk '{print $7}') 发现,全是apache2占着这些进程.
怀疑刚才在强杀gogs进程的时候,apache因为开着proxy导致刚刚向3000端口发起请求就挂起,导致异常关闭所以一直卡住(以前用nginx的做反代的时候也有类似问题,只要客户机挂了,nginx必须 重启),所以我重启了一下apache,立刻发现gogs启动成功.
至此,如果要 重启gogs最好是/etc/init.d/supervisor restart ,如果不正常就再重启一下apache...
OK,问题全部解决
Tags: gogs, apache
Linux | 评论:0
| 阅读:25327
Submitted by gouki on 2014, October 17, 11:49 AM
今天新版发布,立刻升级,结果就这MAMP玩意不能启动了。启动的时候直接报错:
XML/HTML代码
- dyld: Symbol not found: _iconv Referenced from: /usr/lib/libmecabra.dylib Expected in: /Applications/MAMP/Library/lib/libiconv.2.dylib in /usr/lib/libmecabra.dylib /Applications/MAMP/Library/bin/apachectl: line 80: 2799 Trace/BPT trap: 5 $HTTPD "$
开始没注意,是以为80端口没有足够的权限,再仔细一看,怎么是动态 链接库出问题了?难道是补丁没更新?
于是打开Xcode,果然说有必须要安装的组件等着我更新。更新完后再启动,还是这个问题。
不得已Google一下,果然在stackoverflow上有人有提出了类似的问题,并且被解决了:http://stackoverflow.com/questions/25139599/mamp-pro-3-05-on-mavericks-updated-to-yosemite-apache-does-not-start,解决的方法居然非常简单,只要将MAMP目录下的envvars改名成_envvars就可以了:
XML/HTML代码
- mv /Applications/MAMP/Library/bin/envvars /Applications/MAMP/Library/bin/_envvars
记得不要CP,cp没用。。估计会优先检查这个envvars,如果文件存在就用这里面的环境变量了。改名后就不管了
如果觉得有用,记得去上面的链接帮别人点个赞。哈
Tags: mamp, mavericks, yosemite, apache
苹果相关 | 评论:1
| 阅读:17113
Submitted by gouki on 2012, May 8, 9:19 AM
开发中遇到一些问题,值得记住,所以我记录了一下
1、在项目中为了取得泛域名的前缀网址,这个前缀是指定的a,b,c三种,如果前缀不在这三种之内,默认为a,在apache下面的时候,建了一个*.test.neatstudio.com的泛域名指到vhost中。然后用偷懒的方法list(explode(".",$_SERVER['SERVER_NAME']))就取到了a,b,c,因为在apapche中,$_SERVER['SERVER_NAME']就是实际的a.test.neatstudio.com。然而到了nginx下行不通了。在nginx下,$_SERVER['SERVER_NAME']居然还是test.neatstudio.com,最后打印$_SERVER变量,发现$_SERVER['SERVER_HOST']才是泛域名的a.test.neatstudio.com。在此做一个记录
2、chown处理大量小文件时,你就等着CPU标高100%吧。这个问题很痛苦,但没办法
3、我晶。我记得要写一个很重要的笔记 的。我TMD又忘了。被第一个问题打断了。我晶啊,算了。等想起来再说吧
Tags: nginx, apache
PHP | 评论:0
| 阅读:16160
Submitted by gouki on 2012, April 14, 8:37 PM
yii的urlmanager可以让项目在访问的时候隐藏index.php,也可以以更优雅的urlrewrite方式来显示,但这一切需要一些配置,在apache上的配置上就相对比较简单,直接参考wordpress的官方配置就完了,但其实很久以来,一直都没有人写过nginx下的配置。大家都是在根据wordpress配置来更改的,比如lnmp项目中,就是:
XML/HTML代码
- location / {
- if (-f $request_filename/index.html){
- rewrite (.*) $1/index.html break;
- }
- if (-f $request_filename/index.php){
- rewrite (.*) $1/index.php;
- }
- if (!-f $request_filename){
- rewrite (.*) /index.php;
- }
- }
不过,这两天在看官方guide的文档,原来这些问题,官方已经提供方案了:http://yii.neatcn.com/doc/guide/1.1/en/quickstart.apache-nginx-config#nginx
1. Apache
Yii is ready to work with a default Apache web server configuration. The .htaccess files in Yii framework and application folders restrict access to the restricted resources. To hide the bootstrap file (usually index.php) in your URLs you can add mod_rewrite instructons to the .htaccess file in your document root or to the virtual host configuration:
XML/HTML代码
- RewriteEngine on
-
- # if a directory or a file exists, use it directly
- RewriteCond %{REQUEST_FILENAME} !-f
- RewriteCond %{REQUEST_FILENAME} !-d
- # otherwise forward it to index.php
- RewriteRule . index.php
2. Nginx
You can use Yii with Nginx and PHP with FPM SAPI. Here is a sample host configuration. It defines the bootstrap file and makes yii catch all requests to unexisting files, which allows us to have nice-looking URLs.
XML/HTML代码
- server {
- set $host_path "/www/mysite";
- access_log /www/mysite/log/access.log main;
-
- server_name mysite;
- root $host_path/htdocs;
- set $yii_bootstrap "index.php";
-
- charset utf-8;
-
- location / {
- index index.html $yii_bootstrap;
- try_files $uri $uri/ $yii_bootstrap?$args;
- }
-
- location ~ ^/(protected|framework|themes/\w+/views) {
- deny all;
- }
-
- #avoid processing of calls to unexisting static files by yii
- location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
- try_files $uri =404;
- }
-
- # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
- #
- location ~ \.php {
- fastcgi_split_path_info ^(.+\.php)(.*)$;
-
- #let yii catch the calls to unexising PHP files
- set $fsn /$yii_bootstrap;
- if (-f $document_root$fastcgi_script_name){
- set $fsn $fastcgi_script_name;
- }
-
- fastcgi_pass 127.0.0.1:9000;
- include fastcgi_params;
- fastcgi_param SCRIPT_FILENAME $document_root$fsn;
-
- #PATH_INFO and PATH_TRANSLATED can be omitted, but RFC 3875 specifies them for CGI
- fastcgi_param PATH_INFO $fastcgi_path_info;
- fastcgi_param PATH_TRANSLATED $document_root$fsn;
- }
-
- location ~ /\.ht {
- deny all;
- }
- }
Using this configuration you can set cgi.fix_pathinfo=0 in php.ini to avoid many unnesessary system stat() calls.
Tags: yii, apache, nginx, wordpress, urlrewrite
PHP Framework | 评论:0
| 阅读:22562
Submitted by gouki on 2012, March 5, 9:44 PM
jpeg大家都知道,它有一个精度的概念,一般如果我们用GD库做缩略图时,默认精度就是100,这时候压缩的图片还是和原来一样清晰,但事实 上我们不需要这样的清晰,毕竟在网页中72的dpi就足够了。所以当我们把精度设置为72时,尺寸会明显下载。下降的很厉害哦。
于是,我在我们目前的项目中用上了自动根据 URL生成了缩略图,指定了某个域名下的图片生成。但最终发现所生成的图片都是超级大,很让我意外,于是将精度调整为72,但效果仍然这样,没有变化,这是为什么呢?
排查了很多原因,都没有发现代码上有任何问题,最终在检查apache的conf文件时发现,我将某个serveralias写错了。我在多个域名中间用","分隔了,事实上多个域名应该是用空格分开。
那可能您又要说了,如果这个域名不存在,那岂不是会报错?是的,事实上就是错了,但。。。。我在默认的网站配置里也有一个自动生成缩图的配置,那个配置中,精度是100.所以,死活排查不出问题。
当然看到这里就知道,我的问题还是解决了。否则我就不可能在这里记录笔记了。
看过我博客的人都知道,我。。。粗心犯的错误太多了。哎。
Tags: apache, serveralias, gd
Misc | 评论:0
| 阅读:15031