Vapor 部署 webApp

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/
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容