工欲善其事,必先利其器。拥有一个好的工具不仅可以事半功倍,而且也令人神清气爽。做为一名PHP码农,相对于zend studio的臃肿,感觉phpstorm更加清爽,并且功能也很齐全,占用的系统资源也少很多,所以一直在用phpstorm。但是由于phpstorm本身是收费软件,而且价格不低,所以一直用破解版的。然后网上找到的授权服务器地址用一段时间就不能用了,所以今天在自己服务器上搭了一个phpstorm的授权服务器。有需要的朋友可以参考下面方法。
喝水不忘挖井人,在此首先感谢 Lanyu,无偿的为我们提供了授权服务器的软件。但是在 Lanyu 博客中找到的服务器授权软件下载地址都为404,所以在第三方网站上找到了相应的软件,可以在https://mega.nz/#!7B5UVY6b!Hae2ceTBPIrTowQN0sV9fQ5lGOKzGxas2ug02RZAdGU 下载。
将下载的软件解压,里面有很多文件,可以在windows、mac和linux中使用。其中扩展名为.exe的在windows中使用,后缀为drawin的在mac中使用,没有后缀的在linux中使用,但是要注意区分32/位和64位,385的为32位,amd64的为64位。在windows中,只需要运行扩展名为exe的文件即可以,在此,只介绍linux中安装的方法。
将下载的IntelliJIDEALicenseServer(0.0.0.0_1017).zip文件上传到服务器上并解压
unzip IntelliJIDEALicenseServer(0.0.0.0_1017).zip
由于我的服务器是centos 64位的,所以我使用的为 IntelliJIDEALicenseServer_linux_amd64,由于文件太长,所以将文件改短方便操作和记忆:
mv IntelliJIDEALicenseServer_linux_amd64 IdeaServer
为了让它可执行,需要添加可执行权限
chmod +x IdeaServer
由于我将文件放在目录 /usr/bin/IdeaServer 中,所以通过执行下面命令启动程序
/usr/bin/IdeaServer -p 1017 -prolongationPeriod 999999999999
可用参数为
-l 指定绑定监听到哪个IP(私人用) -u 用户名参数,当未设置-u参数,且计算机用户名为^[a-zA-Z0-9]+$时,使用计算机用户名作为idea用户名 -p 参数,用于指定监听的端口 -prolongationPeriod 指定过期时间参数
但是在实际使用过期中,发现 -u 参数指定用户名并不起使用,不知道是不是我使用错了。当看到如下信息,表示服务成功启动
然后,将自己的实际域名解析到自己的服务器上,并服务器上使用nginx做反正代码,监听本机IdeaServer服务的端口,反向代理配置如下:
server { listen 80; server_name idea.scloud.top; root /data/www/html/idea.scloud.top; include none.conf; location / { proxy_pass http://127.0.0.1:1017; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } access_log off; }
重启服务器器,此时就可以通过所配置的域名授权phpstorm了。
但是由于我们希望IdeaServer服务以后台进程运行,并且服务器开机自己启动,还需要对服务器做如下配置(如果不怕麻烦,可以省略下面步骤)。
为了使IdeaServer服务以后台守护进行运程,在此安装进程管理工具Supervisord
yum -y install supervisor
默认安装路径为/usr/bin/supervisord,配置文件为/etc/supervisor.conf。
手动启动Supervisord服务:
/usr/bin/supervisord -c /etc/supervisor.conf
手动关闭Supervisord服务:
/usr/bin/supervisorctl stop all
在服务器上装上一个新的软件时,在修改配置文件前,最好先将配置文件备份
cp /etc/supervisor.conf /etc/supervisor.conf.default
打开文件配置文件/etc/supervisor.conf,在其尾部为
[include] files = supervisord.d/*.ini
由此可判断单个程序的守护进程启动脚本放在/etc/supervisor.d/目录下面,所以我们在 /etc/supervisor.d/目录下面创建IdeaServer服务守护进程启动文件
vim /etc/supervisor.d/IdeaServer.ini
然后在新创建的文件里添加启动命令
[program:idea-server] command = /usr/bin/IdeaServer -p 1017 -u sunwq -prolongationPeriod 999999999 -l 127.0.0.1 autostart=true autorestart=true startsecs=3
然后将supervisord添加到开机启动中,supervisord不同版本系统开机启动方式详见https://github.com/Supervisor/initscripts。以下为我自己服务器 centos 7.0 设置开机启动方法。
修改 /lib/systemd/system/supervisord.service内容如下:
# supervisord service for systemd (CentOS 7.0+) # by ET-CS (https://github.com/ET-CS) [Unit] Description=Supervisor daemon [Service] Type=forking ExecStart=/usr/bin/supervisord ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown ExecReload=/usr/bin/supervisorctl $OPTIONS reload KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target
然后修改配置文件/etc/supervisord.conf,将 nodaemon改为true
nodaemon=true ;我的配置文件中为21行
这样就会将 supervisord 服务添加到 systemctl 的自启动服务中。以为到这里就结束了,当执行命令
systemctl is-enabled supervisord
发现结果为 disabled,表示 supervisord 并不能开机启动。然后通过执行命令
systemctl enable supervisord
此时再执行systemctl is-enabled supervisord 命令,结果为enabled,表示 supervisord 服务可以开机中自启。至此,phpstorm授权服务器搭建完成。
当把phpstorm成功授权后,考虑到 phpstorm 是 Jebrains 软件家族中的一个,所以就想此授权方法是否适用于 Jebrains 家族中其他的软件呢?通过亲测webstorm、pycharm,都可以成功授权,由于身边没有其他 Jebrains 家族中的软件,所以只测试了这3款软件,更多软件是否能通过此种方式授权,有待测试。