项目需要在一台ubuntu 18.04的设备上安装goahead,并且设置开机启动。查阅了网友资料,实操记录如下。
安装 gohead 5.2.0
cd ~/Downloads/ # 进入工作目录
tar -xvf goahead-5.2.0.tar.gz # 解压文件包
cd ./goahead-5.2.0 # 进入到goahead源码目录
make # 就这么简单?
sudo make install # 真这么简单!
到Embedthis官网下载安装goahead-5.2.0.tar.gz源码包,存放在~/Downloads/文件夹下,执行
即可完成goahead-5.2.0的编译和安装。Embedthis对goahead-5.2.0的编译做了不小的改进,只需要执行上述指令就全部OK了,比起以往的4.1.x版本的安装,还需要手工拷贝route.txt,self.crt, self.key等文件,5.2.0真的是做到了傻瓜式安装(必须赞一个先)。
运行
which goahead
发现一个软链接存放于 /usr/local/bin/goahead,链接指向 /usr/local/lib/goahead//bin/goahead
运行
sudo goahead -v --home /etc/goahead /var/www/goahead
可以正常运行起来,也没有了以往版本拿不到本机IP地址的缺陷(再次赞一个!)。
为 goahead 建立 systemctl 的 service
ubuntu 18.04不使用 init.d,也不使用rc.local建立开机自动执行的程序,而是使用了由 systemctl 控制的 service 作为开机自动启动的一种“服务”。查阅网友资料和其它参考资料,记录如下。
cd /etc/systemd/system # 进入到工作目录
sudo vi goahead.service # 编辑 service 文件,内容附后
sudo chmod +x+x+x goahead.service # 使这个 service 文件可执行
sudo systemctl daemon-reload # 使新加入的 service 在 service 列表中生效
sudo systemctl start goahead.service # 启动这个 service
# 或者执行
# sudo service goahead start
# 也可以启动这个 service
exit 0;
顺序运行上述指令集可将 goahead 纳入到 ubuntu 18.04 的 service 中
然后运行
ps -A | grep goahead 验证一下 goahead 是否已经启动,可以看到 goahead 已经在进程列表中了,使用任何一种浏览器(我的机器是Firefox),在 URI 地址中输入 127.0.0.1,然后回车,可以看到 goahead 的初始网页,如下图。
搞定!
为 goahead 写的 goahead.service 文件
cat /etc/systemd/system/goahead.service,内容如下
[Unit]
Description=Embedthis GoAhead Web Server
[Service]
ExecStart=/usr/local/bin/goahead -v --home /etc/goahead /var/www/m
ExecReload=/usr/local/bin/goahead -v --home /etc/goahead /var/www/m
KillMode=process
Restart=on-failure
RestartPreventExitStatus=255
Type=simple
[Install]
WantedBy=multi-user.target
Alias=goahead.service
说明:
- 一个 systemctl 的 service 文件包括[Unit]、[Service] 和 [Install] 三个部分的内容,其中 [Service] 部分是这个程序作为一种”服务“的约束,详情参考网友大侠的资料,链接在最后面。
- 我的这个实例中使用的 goahead 的带 -v 的调试模式,生产环境中当然不必使用调试了啦
- goahead 是独立的一个进程,所以省去了一些 -pre 和 -post 的依赖。