之前服务器已经搭建好环境,可以顺利运行vapor了,但是总不能在服务器上做开发,所以要在本地开发好项目后部署到服务器上运行。
手头常用的开发机是MacBook pro,所以在MacBook上开发后台程序。Mac上已经安装了Xcode,所以swift就不用再安装了,现在只需在Mac上安装vapor就可以了,这一步直接查看vapor官网的文档,按着文档来就好了,比较简单,在终端输入几条命令就搞定了。其实不用Mac也可以用pc安装Linux来开发,安装环境参考上一篇服务器环境的安装,只是开发工具有点麻烦,这个还没试过,不知道咋样。
这里我碰到一个问题,在Mac上建立工程,然后可以在Mac上顺利编译运行,但是把项目放到服务器上就编译不了,总是提示错误,后来就在服务器上建立工程后下载到本地后再开发,大家可以多试试,不知道是什么原因。
这里还要注意一点是,在Xcode上开发,项目在本地是可以编译和运行含oc代码的工程的,但是在服务器上是不能编译oc的代码的,所以在实际项目中只能用swift开发。
把开发好的项目上传到服务器,然后在服务器上编译和运行,用浏览器就可以访问了。接下来在服务器上安装Apache,通过Apache的端口转发来访问vapor项目。
- 安装Apache
在服务器上运行安装Apache的命令:
sudo apt-get update
sudo apt-get install apache2
安装完成后,在浏览器中输入服务器IP地址,就可以看到Apache欢迎页面了。
- 配置Apache
进入/etc/apache2/sites-enabled/
用vim打开000-default.conf配置文件,并编辑成以下内容。
# example.com Configuration
<VirtualHost *:80>
DocumentRoot /home/vapor/Hello/Public/ #项目中的Public文件夹路径
ServerName hello.com
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
ProxyTimeout 3
</VirtualHost>
然后重启Apache:
sudo service apache2 restart
但是重启失败报错:Job for apache2.service failed because the control process exited with error code. See "systemctl status apache2.service" and "journalctl -xe" for details.
输入
systemctl status apache2.service
查看日志,发现是Invalid command ‘ProxyPreserveHost’ ……
输入以下命令:
sudo a2enmod proxy_http
sudo a2enmod proxy
sudo service apache2 restart
服务器成功启动!
接着在浏览器中输入服务器IP地址,但是如果还是访问失败,提示没权限,可以设置项目文件夹及子目录的权限:
sudo chmod -R 777 /项目路径
接着后台启动vapor:(vapor run &) 括号也要输入的,这是Linux后台启动的方法之一,接着用浏览器输入服务器IP地址,不需要输入端口号,就可以访问网站了。