顯示具有 Apache 標籤的文章。 顯示所有文章
顯示具有 Apache 標籤的文章。 顯示所有文章

2021年8月9日 星期一

[Vue.js] 如何建立 Vue3 + webpack5 專案範例

以下說明如何使用 webpack5 打包 Vue3 專案,若尚未安裝 webpack5,可以參考「webpack5 安裝及基礎教學」。


一、安裝

需要安裝的套件如下,特別需要注意的是,在 Vue3 裡支援副檔名 .vue 的 single-file components 的套件,從 vue-template-compiler 變成 @vue/compiler-sfc

  • vue
  • @vue/compiler-sfc
  • vue-loader
  • webpack
  • webpack-cli


請先新增專案,並在目錄內新增 package.json,並 npm 執行安裝。

{
  "name": "vue3-webpack5-template",
  "version": "1.0.0",
  "description": "vue3-webpack5-template",
  "private": true,
  "scripts": {
    "build": "webpack"
  },
  "author": "chenuin",
  "license": "ISC",
  "devDependencies": {
    "@vue/compiler-sfc": "^3.1.5",
    "vue-loader": "^16.1.2",
    "webpack": "^5.49.0",
    "webpack-cli": "^4.7.2"
  },
  "dependencies": {
    "vue": "^3.1.5"
  }
}

執行指令安裝:

npm install



二、設定打包的設定檔

首先針對 Vue 專案所設定的,Loader 可分為testloader,前者是定義哪些檔案需要處理,像這裡就是副檔名為 .vue 的檔案;後者則是使用哪一個套件處理 :

module: {
    rules: [
        {
            test: /\.vue$/,
            loader: 'vue-loader'
        },
    ],
},
plugins: [
    new VueLoaderPlugin(),
],

當專案內import vue 可以使用別名(alias): 

resolve: {
    alias: {
        vue: 'vue/dist/vue.esm-bundler.js',
    },
},

因此完整的 webpack.config.js 如下:

const path = require('path');
const { VueLoaderPlugin } = require('vue-loader');

module.exports = {
    entry: './src/index.js',
    output: {
        filename: 'main.js',
        path: path.resolve(__dirname, 'dist'),
    },
    module: {
        rules: [
            {
                test: /\.vue$/,
                loader: 'vue-loader'
            },
        ],
    },
    resolve: {
        alias: {
            vue: 'vue/dist/vue.esm-bundler.js',
        },
    },
    plugins: [
        new VueLoaderPlugin(),
    ],
};



三、新增Entry, Ouput等內容

在目錄內 src/ 新增兩個檔案:

Vue3 主要元件 App.vue

<template>
  <div class="app">
    <p
      v-text="msg" />
  </div>
</template>

<script>
export default {
    name: 'App',
    setup() {
      return {
        msg: 'Hello World!',
      };
    },
};
</script>

新增 Entry File: index.js
設定別名的用途可以看第一行 import App from './App.vue';

import { createApp } from 'vue';
import App from './App.vue';

createApp(App)
    .mount('#app');


目錄 dist/ 則是新增 index.html,要注意的是先前 index.js 是綁定到 #app,所以 <div id="app"></div> 就是 vue render的地方。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Getting Started</title>
    </head>
    <body>
        <div id="app"></div>
        <script src="./main.js"></script>
    </body>
</html>

此時的專案架構應該會像是:

├── package.json
├── dist
│   └── index.html
└── src
    ├── App.vue
    └── index.js

專案已經上傳 Github [vue3-webpack5-template],可以下載使用。



四、執行

執行下面的指令開始打包

npm run build


完成後目錄 dist/ 下多了一個檔案 main.js,此時可以開啟 index.html ,看到 Hello World! 就代表打包成功囉!



2021年8月5日 星期四

安裝 Caddy 發生 ca-certificates 錯誤解決方式



按照「Ubuntu 安裝 web server Caddy 2」遇到的安裝問題:

echo "deb [trusted=yes] https://apt.fury.io/caddy/ /" \ | sudo tee -a /etc/apt/sources.list.d/caddy-fury.list
sudo apt update

執行第二行 update 後會跳出錯誤訊息:

"Certificate verification failed: The certificate is NOT trusted. The certificate issuer is unknown. Could not handshake: Error in the certificate verification. [IP: XX.XXX.XX.XXX XXX] Reading package lists... Done W: https://apt.fury.io/caddy/InRelease: No system certificates available. Try installing ca-certificates.



代表需要先安裝 ca-certificates

sudo apt install ca-certificates

安裝後重新再一次指令 sudo apt update ,就不會出現錯誤了。



參考資料:
https://caddy.community/t/solved-failed-to-install-caddy-with-official-auto-installation-command/9877

2020年11月25日 星期三

Ubuntu 安裝 web server Caddy 2


安裝

按照指令安裝 Caddy 2

echo "deb [trusted=yes] https://apt.fury.io/caddy/ /" \ | sudo tee -a /etc/apt/sources.list.d/caddy-fury.list
sudo apt update
sudo apt install caddy

安裝完成後,執行 caddy 應該會跑出相關的指令提示

caddy



常用指令

執行 caddy

caddy run

等同於 caddy run,在背景程式運作

caddy start

將 Caddyfile 轉成 json config

caddy adapt
caddy adapt --config [PATH_TO_FILE]

重新載入 caddy,可使新的設定生效

caddy reload

關閉 caddy

caddy stop


2019年4月23日 星期二

[Symfony] 如何將專案部屬到Heroku(apache/nginx)


之前寫過一篇『[django] 將Django專案部署到Heroku』,可以參考安裝heroku[官網說明]的方式,『[Symfony] ubuntu18安裝symfony 4.2教學』則可以了解composer和symfony的安裝方式,這篇就不再重複說明。

步驟一、新增Symfony專案
首先新增一個專案 symfony_heroku ,也可以根據需求指定專案版本,目前版本是3.4。
composer create-project symfony/framework-standard-edition symfony_heroku/

# 指定Symfony版本 3.0
composer create-project symfony/framework-standard-edition:^3.0 symfony_heroku/


步驟二、新增Procfile
進到專案目錄裡symfony_heroku/,以apache為例,新增檔案Procfile做為執行網站的依據。
cd symfony_heroku
echo 'web: $(composer config bin-dir)/heroku-php-apache2 web/' > Procfile

相當於:
vim Procfile
檔案Procfile內容:
web: $(composer config bin-dir)/heroku-php-apache2 web/
參數$(composer config bin-dir)是考慮到版本差異,可以動態的指到正確的路徑。


步驟三、部屬專案
使用git將所有檔案加入追蹤並commit。
git init
git add .
git commit -m "initial commit"

輸入指令 heroku login 登入後,建立一個Heroku專案,新增相關設定。
heroku create
heroku config:set SYMFONY_ENV=prod
上傳Heroku
git push heroku master


可以打開瀏覽器就可以看到symfony預設的網頁。
https://[APP_NAME].herokuapp.com

查詢Heroku專案名稱(顯示網址)
heroku open
關閉網頁伺服器
heroku ps:scale web=0
開啟網頁伺服器
heroku ps:scale web=1



[nginx]
假設你希望使用nginx作為網頁伺服器,請將Procfile改成:
web: $(composer config bin-dir)/heroku-php-nginx web/
預設/,沒有任何頁面,請看/app.php確定有沒有建立成功。
https://[APP_NAME].herokuapp.com/app.php


參考資料:
https://devcenter.heroku.com/articles/getting-started-with-symfony
https://devcenter.heroku.com/articles/getting-started-with-php

相關文章:

2019年1月10日 星期四

[Django] Ubuntu+Apache2+mod_wsgi 部屬Django專案


在開發階段習慣用內建的runserver來啟動Django專案,但官方不建議在正式環境使用,以下介紹如何用ubuntu上安裝apache2和相關的套件來啟動專案,這樣最大的好處就是伺服器開啟時,可以由apache2自動將專案啟動。

Step1. 建立Django專案
※如果已經有現有專案,可以跳過這個步驟。
a. 建立一個獨立的虛擬環境(相關文章:[Python] Virtualenv基本操作)
$ sudo apt install python3-pip
$ sudo pip3 install virtualenv
$ mkdir web_project
$ cd web_project
$ virtualenv env --no-site-packages
b. 安裝Django、新增專案
$ source env/bin/activate
$ pip3 install django
$ django-admin.py startproject myproject .
c. 請在settings.py加上伺服器本身的IP,在開發階段可以用*代替。STATIC_ROOT這行本來在檔案裏面沒有,要手動自己加上去。
# myproject/settings.py
ALLOWED_HOSTS = ["*"]
...
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
d. 加入static的檔案
$ python3 manage.py collectstatic
成功之後資料夾內會多一個static的目錄。
※關於STATIC_ROOT的說明,可以參考『[Django] 如何設定static files(css, javascript, images)』。


Step2. 安裝Apache、mod_wsgi
python2和python3兩者擇一,請注意Django升級到2.0後就不再支援python2了,建議使用python3喔!
# python3
$ sudo apt update
$ sudo apt install apache2 libapache2-mod-wsgi-py3

# python2
$ sudo apt update
$ sudo apt install apache2 libapache2-mod-wsgi
如果希望重開伺服器時,apache2可以自動啟動,請執行下面指令。
$ sudo systemctl enable apache2
完成安裝後,可以在 http://localhost/ 看到apache預設的首頁。


Step3. 設定apache
請先參考一下目前的目錄架構

新建一個Apache的config檔,加入這一段:
# /etc/apache2/sites-available/django.conf
<VirtualHost *:80>
    DocumentRoot /var/www/web_project

    Alias /static /var/www/web_project/static
    <Directory /var/www/web_project/static>
        Require all granted
    </Directory>

    <Directory /var/www/web_project/myproject>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    WSGIDaemonProcess myproject python-path=/var/www/web_project python-home=/var/www/web_project/env
    WSGIProcessGroup myproject
    WSGIScriptAlias / /var/www/web_project/myproject/wsgi.py

</VirtualHost>

預設只會讀取default內的設定,請記得啟用自訂的django.conf,並停用default的設定。
$ sudo a2ensite django.conf
$ sudo a2dissite 000-default.conf
$ sudo service apache2 reload
打開 http://localhost/ 就可以看到網站了。


參考資料:
https://www.digitalocean.com/community/tutorials/how-to-serve-django-applications-with-apache-and-mod_wsgi-on-ubuntu-14-04

2019年1月4日 星期五

[Vue.js] vue-router設定history mode移除網址的#


Vue預設的router模式是hash mode,所以我們能設定成history mode,來去除URL中的#(hashtag),但是除了http://localhost/ 首頁能夠正常顯示,直接打開其他網址會出現404 page no found的錯誤訊息。

const router = new VueRouter({
  mode: 'history',
  routes: [...]
})

也就是說其實在vue專案裡面實際存在的只有index.html這個頁面,我們必須透過apache設定,將其他網址導到index.html,就能用所有的URL正常的顯示網頁。


Ubuntu設定方式

方法一、mod_rewrite模組
1. 請先確定已經啟用mod_rewrite 模組
$ sudo a2enmod rewrite

2. 編輯apache的config
# /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
    ...
    <Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

3. 在專案目錄下新增檔案.htaccess
# /var/www/html/.htaccess
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.html [L]
</IfModule>

目錄架構如下
/var/www/html
├── .htaccess
├── index.html
└── static

4. 重啟apache2
$ sudo systemctl restart apache2


方法二、FallbackResource
與方法一相同,只是.htaccess內容改用fallbackresource,目的一樣是改寫URL導向index.html。
# /var/www/html/.htaccess
FallbackResource /index.html
存檔後再重啟apache2就大功告成囉!


參考資料:
https://router.vuejs.org/guide/essentials/history-mode.html#example-server-configurations