Vapor 部署webApp
這里是使用Ubuntu進(jìn)行部署的。
這里和Vapor沒有太大關(guān)系、主要是Linux的使用。
Nginx
這里只是基礎(chǔ)配置
安裝Nginx
sudo apt-get update
sudo apt-get install nginx
測試是否安裝成功
http://server_domain_name_or_IP
Nginx基礎(chǔ)命令
sudo service nginx stop
sudo service nginx start
sudo service nginx restart
Configure Proxy 配置代理、Swift不是腳本語言這里不能直接讀取文件。所以這里需要配置代理來進(jìn)行通信。
The configuration files for enabled sites can be found in
/etc/nginx/sites-enabled/.這個配置文件在
/etc/nginx/sites-enabled/Create a new file or copy the example template from
/etc/nginx/sites-available/to get started.復(fù)制這個例子文件來開始這個服務(wù)。
創(chuàng)建一個 Hello 文件。
這個很重要,不然無法代理。這個和官方文檔有點差別。
server {
server_name hello.com;
listen 80;
root /home/vapor/Hello/Public/;
location @proxy {
proxy_pass http://127.0.0.1:8080;
proxy_pass_header Server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Server;
proxy_connect_timeout 3s;
proxy_read_timeout 10s;
}
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
# try_files $uri $uri/ =404;
try_files $uri @proxy;//這里是頁面重定向、讓80端口可以重定向到我們的服務(wù)器。
#try_files $uri $uri/ /index.php?$query_string; #添加url重定向,>這在laravel文檔中有寫
}
}
支持HTTPS
server {
server_name hello.com;
listen 80;
listen 443 ssl http2;
index index.php index.html index.htm default.php default.htm default.html;
root /home/vapor/Hello/Public/;
#HTTP_TO_HTTPS_START
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
#HTTP_TO_HTTPS_END
# SSL_START
ssl_certificate /etc/letsencrypt/live/hello.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/hello.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security max-age=15768000;
# SSL-END
# HTTP-PROXY
# Serve all public/static files via nginx and then fallback to Vapor for the rest
try_files $uri @proxy;
location @proxy {
proxy_pass http://127.0.0.1:8080;
proxy_pass_header Server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Server;
proxy_connect_timeout 3s;
proxy_read_timeout 10s;
}
# HTTP-PROXY
}
這些配置之后我們使用命令 vapor build ,vapor run serve 現(xiàn)在就可以訪問我們的網(wǎng)站了。
Supervisor
上面我們使用命令可以運行網(wǎng)站、但是我們關(guān)閉終端之后就無法訪問了。
這里我們使用Linux命令 nohup vapor run serve &
任意鍵退出 ,輸入exit退出終端
nohup 后臺掛起 &自動運行。
上面那些可以進(jìn)行運行,但是服務(wù)器要求很穩(wěn)定。如果這個進(jìn)程被干掉了服務(wù)器就掛了。這樣非常不好、所以這里需要守護(hù)進(jìn)行。這里使用Supervisor進(jìn)行管理、當(dāng)我們的vapor進(jìn)程被干掉之后可以重新啟動。
安裝
sudo apt-get update
sudo apt-get install supervisor
配置
- 創(chuàng)建文件
/etc/supervisor/conf.d/hello.conf
[program:hello]
command=/home/vapor/hello/.build/release/Run serve --env=production
directory=/home/vapor/hello/
user=www-data
stdout_logfile=/var/log/supervisor/%(program_name)-stdout.log
stderr_logfile=/var/log/supervisor/%(program_name)-stderr.log
基礎(chǔ)命令
supervisorctl reread
supervisorctl add hello
supervisorctl start hello
這里需要注意的是Linux文件的管理權(quán)限的問題。
如果我們沒有給用戶分配權(quán)限、程序就不能讀取文件、在我們使用命令的時候表現(xiàn)出來就是。
supervisor: child process was not spawned
我們的config文件里我們配置的用戶是 user=www-data用戶所以我們分配讀權(quán)限。
sudo chown -R :www-data /home/vapor/myvapor
當(dāng)然這里你直接配置你當(dāng)前的用戶也是可以的。
還有可能錯誤是
Hello :ERROR(spawn error)
這里我們需要先停止supervisor
sudo supervisorctl stop all
sudo supervisorctl reread
sudo supervisorctl reload
sudo superviorctl restart all
如果還不行、這里看有沒有程序占用配置的vapor端口。比如8080端口終止掉這個程序再運行。
Linux基礎(chǔ)命令
$ sudo adduser git //創(chuàng)建用戶
$ su git //切換用戶
$ cd //進(jìn)入用戶主目錄
$ mkdir .ssh && chmod 700 .ssh //創(chuàng)建文件夾、配置權(quán)限
$ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys // 創(chuàng)建文件夾、配置權(quán)限
$ ls -a //查看文件
$ userdel -r git //刪除用戶帳號及相關(guān)檔案
groups 查看當(dāng)前登錄用戶的組內(nèi)成員
groups www 查看www用戶所在的組,以及組內(nèi)成員
groupdel www 刪除用戶組
sudo usermod -a -G sudo www //添加www用戶到sudo用戶組
su - www //切換到www用戶
第一次可能有提示
To run a command as administrator (user "root"), use "sudo ". See "man sudo_root" for details.
這個在我們運行sudo命令之后就會消失。
壓縮文件 zip -r Test.zip Test
復(fù)制文件 scp root@127.0.0.0:/home/vapor Test/