❶ 怎麼把VUE項目部署到伺服器上面
1.使用xshell登錄到阿里雲伺服器。安裝nginx(本文安裝到/etc下)
[plain]view plain
cd/etc
apt-getupdate
apt-getinstallnginx
2.首先先配置nginx,然後再根據配置文件做下一步操作
打開/etc/nginx/nginx.conf文件
[plain]view plain
vim/etc/nginx/nginx.conf
在nginx.conf中配置如下:
[plain]view plain
userwww-data;
worker_processesauto;
pid/run/nginx.pid;
events{
worker_connections768;
#multi_accepton;
}
http{
##
#BasicSettings
##
tcp_nodelayon;
keepalive_timeout65;
types_hash_max_size2048;
#server_tokensoff;
#server_names_hash_bucket_size64;
#server_name_in_redirectoff;
include/etc/nginx/mime.types;
default_typeapplication/octet-stream;
##
#SSLSettings
##
ssl_protocolsTLSv1TLSv1.1TLSv1.2;#DroppingSSLv3,ref:POODLE
ssl_prefer_server_cipherson;
##
#LoggingSettings
##
access_log/var/log/nginx/access.log;
error_log/var/log/nginx/error.log;
##
#GzipSettings
##
gzipon;
gzip_disable"msie6";
#gzip_varyon;
#gzip_proxiedany;
#gzip_comp_level6;
#gzip_buffers168k;
#gzip_http_version1.1;
##
#VirtualHostConfigs
##
gzipon;
gzip_disable"msie6";
#gzip_varyon;
#gzip_proxiedany;
#gzip_comp_level6;
#gzip_buffers168k;
#gzip_http_version1.1;
#gzip_typestext/plaintext/cssapplication/jsonapplication/javascripttext/xmlapplication/xmlapplication/xml+rsstext/javascript;
##
#VirtualHostConfigs
##
include/etc/nginx/conf.d/*.conf;
include/etc/nginx/sites-enabled/*;
#以下為我們添加的內容
server{
listen80;
server_nameyour-ipaddress;
root/home/my-project/;
indexindex.html;
location/datas{
rewrite^.+datas/?(.*)$/$1break;
includeuwsgi_params;
proxy_passhttp://ip:port;
}
}
}
接下來就根據配置文件進行下一步工作。配置文件中的server_name後面是阿里雲伺服器的ip地址
3.配置文件中的listen是nginx監聽的埠號,所以需要在阿里雲伺服器上為80埠添加安全組規則
在本地的瀏覽器登錄阿里雲伺服器->進入控制台->點擊安全組->點擊配置規則->點擊添加安全組規則,之後配置如下(註:入方向和出方向都要配置)
4.配置文件中的root和index那兩行表示我們把項目文件夾放在/home/my-project下
例如有兩個項目文件夾分別為test1,test2,裡面都有index.html。則目錄結構如下
/home
|--my-project
|--test1
|--index.html
|--test2
|--index.html
則在瀏覽器輸入http://ip/test1/index.html
伺服器便會在/home/my-project中找到test1下的index.html執行;
如果在瀏覽器中輸入http://ip/test2/index.html
伺服器便會在/home/my-project中找到test2下的index.html執行;
這樣便可以在伺服器下放多個項目文件夾。
5.所以我們也需要在本地項目的config/index.js里的build下進行修改,如果要把項目放到test1下,則
[javascript]view plain
assetsPublicPath:'/test1/',
如果用到了vue-router,則修改/router/index.js
[javascript]view plain
exportdefaultnewRouter({
base:'/test1/',//添加這行
linkActiveClass:'active',
routes
});
6.nginx配置文件中的location則是針對跨域處理,表示把對/datas的請求轉發給http://ip:port,本文中這個http://ip:port下就是需要的數據,例如http://ip:port/seller,在本地項目文件中ajax請求數據的地方如下
[javascript]view plain
consturl='/datas/seller';
this.$http.get(url).then((response)=>{
.....
});
7.修改後在本地命令行下運行:cnpm run build 生成dist文件。把dist文件里的index.html和static文件上傳到伺服器的/home/my-project/test1下,目錄結構如下
/home
|--my-project
|--test1
|--index.html
|--static
8.啟動nginx
[plain]view plain
servicenginxstart
9.至此項目部署成功,在瀏覽器下輸入: http://ip/test1/index.html 即可
❷ 前端vue與後端Thinkphp在伺服器的部署
vue在服務端部署時,我們都知道通過npm run build 指令打包好的dist文件,通過http指定是可以直接瀏覽的,Thinkphp通過域名指向index.php文件才可以瀏覽。要使前端正常調用後端數據,有兩種方法:1、前端跨域調用後端數據,2、前端打包文件部署在後端的伺服器文件夾下(同域)。
web伺服器: apache
一、跨域
在伺服器配置站點:
在路徑/home/www/ 下創建test項目文件夾,用來放項目文件。
找到httpd-vhosts.conf文件配置站點
前端站點:
ServerName test.test.com
DocumentRoot "/home/www/test/dist"
DirectoryIndex index.html
後端站點:
ServerName test.testphp.com
DocumentRoot "/home/www/test/php"
DirectoryIndex index.php
將前端打包好的dist文件放在/home/www/test/ 文件夾下,運行http://test.test.com可瀏覽,當路徑改變時,刷新會出現404錯誤。此時dist文件下創建一個.htaccess文件,當路徑不存在時,路徑指向http://test.test.com/index.html能解決此問題。
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
在/home/www/test文件夾下創建項目根目錄php文件夾,將thinkphp文件放在php下。TP5的入口文件在public文件下,在這將public下的入口文件index.php挪到php文件夾下(個人習慣將入口文件放在項目根目錄), 後端綁定Index模塊。
前端調用後端介面,存在跨域,跨域解決方法有好幾種,在這我將在後端php做配置,解決跨域問題,在公用控制器設置跨域配置:
class Common extends Controller
{
public $param;
// 設置跨域訪問
public function _initialize()
{
parent::_initialize();
isset($_SERVER['HTTP_ORIGIN']) ? header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']) : '';
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, authKey, sessionId");
$param = Request::instance()->param();
$this->param = $param;
}
}
前端調用登錄介面: this.axios.post('http://test.testphp.com/index.php/base/login', {user: '', password: ''})。
(可在webpack.base.conf.js文件下可定義介面:http://test.testphp.com/index.php/)
二、同域
後端配置同上,公共配置器中的header配置注釋。將前端的dist文件下的所有文件(包含.htaccess),放在php文件夾下。將後端index控制器的index方法的路徑重定向php下的index.html文件:
namespace app\index\controller;
use think\Controller;
class Index extends Controller
{
public function index() {
$this->redirect('/index.html');
}
}
前端調用登錄介面: this.axios.post('/index.php/base/login', {user: '', password: ''})
轉自:https://blog.csdn.net/qq_35465132/article/details/78986675
❸ 《vue》設置代理伺服器devServer 的 proxy
在開發環境,vue-cli 會幫我們創建一個開發伺服器( http://localhost:8080 ),因此,我們請求後端伺服器的時候,可能會出現跨域問題,因為跨域的三要素:域名、埠、協議其一不同。
完整的請求地址:
我的這個地址,裡面本身就攜帶有 api 欄位的
利用 vue-cli 中的 devServer 配置
記住,如果你的地址沒有類似我那個地址那樣,有個 api 作為標識的,你可以手動在地址上加上一些標識,然後利用 pathRewrite 再抹掉即可。
一般不會這么做,這樣做意義也不大。因為這么做的話,不單單ajax請求都用的遠程,連js、css、圖片等其他資源都是遠程返回的。。。
用了這個方法,在開發階段,就不用設置 axios 中的 baseUrl 了,或者這樣設置:
然後開發階段,你的一些ajax的請求的 url 就會匹配到 /api 開頭,設置 proxy了
千萬不要這么設置:
看似匹配到了,實際上沒有生效。。。(我也不知道為什麼,知道的同學說一下)
實際上,這里是看不到的。。
因為,F12 這里的這個請求,實際上是發給了 本地的臨時伺服器,再由本地的伺服器發送給遠程伺服器。
可以這么理解:本地伺服器將F12的這個請求攔截了,然後自己偷偷改掉 url,再請求的遠程伺服器。
正因為本地伺服器脫離瀏覽器的束縛,解決了跨域問題!
❹ vue項目如何部署到伺服器
第一步配置 vue.config.js
第二步修改路由,改為 hash模式
第三步文件打包,執行以下,目錄中會出現一個dist文件夾,將文件拖到伺服器的 root 文件夾中
第四步可以通過域名進行訪問 http://www.linlin.run/my-project/index.html#/home
❺ vuejs怎麼在伺服器部署
用vue-cli搭建的做法
1、npm run build
2、把dist里的文件打包上傳至伺服器 例 /data/www/,我一般把index.html放在static里
所以我的文件路徑為:
/data/www/static
|-----index.html
|-----js
|-----css
|-----images
....
3、配置nginx監聽80埠, location /static alias 到 /data/www/static,重啟nginx
location /static {
alias /data/www/static/;
}
4、瀏覽器訪問http://ip/static/index.html即可