Refused to apply style from ‘style.css’ because its MIME type (‘text/html’) is not a supported stylesheet MIME type, and strict MIME checking is enabled.

今天把 Laravel 專案放到新建的 server 跑,出現了這個錯誤:

Refused to apply style from ‘http://localhost:8080/assets/styles/style.css‘ because its MIME type (‘text/html’) is not a supported stylesheet MIME type, and strict MIME checking is enabled.

找了很久都沒有找到原因,同時伴隨著部分頁面會出現 404。

Stackoverflow 這篇講了很多,但實際上我遇到的倒沒有這麼複雜,而且也不是因為因為 lib 引起的問題,最後在這篇找到解答,原來我只是忘記設定 Apache 的 Allow Override

DocumentRoot /var/www/sitefolder/public
ServerName site.domain.com
<Directory /var/www/sitefolder/public>
    AllowOverride All # 加上這行就可以了
    Allow from all
    Options +Indexes
</Directory>

最後執行 sudo systemctl reload apache2 就正常了。

References

發表留言

[Ubuntu] 使用 Certbot 自動更新 Let’s Encrypt 憑證

SSL For Free  是一個可以申請免費 SSL 憑證的網站,只需要準備自己的網域名稱就可以申請為期三個月的免費 SSL 憑證,小小的缺點是憑證過期後需要重新申請憑證,並且更換伺服器的舊憑證。而 Certbot  是一個可以簡化申請流程,又可以在憑證過期之前自動更新憑證的超方便工具。

Read more “[Ubuntu] 使用 Certbot 自動更新 Let’s Encrypt 憑證”

發表留言

[Ubuntu] 安裝 Apache HTTP Server 2.4 + PHP 7.1 + PHP-FPM

操作環境:
OS: Ubuntu Server 16.04.3 LTS amd64
Apache Version: 2.4.27
PHP Version: 7.1.8

 

Step 1. 更新 APT Source,取得最新版套件資訊

# 安裝software-properties-common (已安裝者可跳過此步驟)
sudo apt-get install -y software-properties-common

# 加入 Apache PPA
sudo add-apt-repository -y ppa:ondrej/apache2

# 加入 PHP PPA
sudo add-apt-repository -y ppa:ondrej/php

# 更新套件清單
sudo apt-get update

Read more “[Ubuntu] 安裝 Apache HTTP Server 2.4 + PHP 7.1 + PHP-FPM”

發表留言

[Apache] Apache 2.2升級至2.4版conf修復

Apache Server 2.4 與 2.2 版有一些設定上的差異,若升級時設定檔沒有修正將無法啟動。Tsung Hao 大神的 這篇文章 有整理了一些,可直接參考。本文只記錄一些額外的東西。

這篇的狀況是做完升級後 Apache 服務沒有起來,啟動服務時出現這段訊息:

* Starting web server apache2
*
* The apache2 configtest failed.
Output of config test was:
AH00526: Syntax error on line 60 of /etc/apache2/sites-enabled/000-default.conf:
Either all Options must start with + or -, or no Option may.
Action 'configtest' failed.
The Apache error log may have more information.

意思就是說關於 Options 這行的設定後面接的每一個 option value 你要全部上 + 或是 -,又或是全部都不加,不然在 config test 時就無法通過。解法就如同字面意思,要嘛全加,要嘛都不加。

<Directory /var/www/>
    Options -Indexes +FollowSymLinks +MultiViews
    AllowOverride FileInfo
    Order allow, deny
    allow from all
<Directory>

如果原設定檔的 option value 有點多,也可以把 value 獨立寫一行,像這樣

<Directory /var/www/>
    Options FollowSymLinks MultiViews
    # 需要 +- 號的 value 獨立出來
    Options -Indexes
    AllowOverride FileInfo
    Order allow,deny
    allow from all
<Directory>

apachectl configtest 只會偵測到一個錯誤點就停下,不會一次全部列出,所以要一步一步找出所有還沒修改到的地方,直到出現 Syntax OK後,就可以啟動了。

apachectl configtest
Syntax OK
sudo service apache2 start
* Starting web server apache2 ... done.
1 則迴響

[Ubuntu] Apache 模組的啟用與停用

Ubuntu 與 FreeBSD 的 Apache Load Module 設定有點小小的不同,在 FreeBSD 上是直接在 httpd.conf 上把註解拿掉,重啟服務後 Module 就啟動了。不過在 Ubuntu 的設定檔都零零散散拆成很多檔案,Load Module 這部分的設定也是。

calos@ubuntu:/etc/apache2$ ls
apache2.conf  conf.d  envvars  httpd.conf  magic  mods-available  mods-enabled  ports.conf  sites-available  sites-enabled

 

mods-available 是所有模組存放目錄,但是服務載入的模組是存放在 mods-enabled

注意到 apache2.conf 的其中幾行:

# Include module configuration:
Include mods-enabled/*.load
Include mods-enabled/*.conf

 

服務啟動時,只載入 mods-enabled 裡面的模組,而部分模組在安裝時預設是不啟動的(意即該模組不會出現在 mods-enabled

若要載入指定模組,可使用 a2enmod 這個指令。例如要啟用 mod-rewrite 模組:

calos@ubuntu:~$ sudo a2enmod rewrite

 

輸入 ls /etc/apache2/mod-enabled,可以看到指定的 module 已經被放進 mods-enabled 裡了。

要停用模組可用 a2dismod

calos@ubuntu:~$ sudo a2dismod rewrite

 

這時候 mod-rewrite 就從 mods-enabled 消失了,模組異動完後記得重啟服務才會生效:

calos@ubuntu:~$ sudo service apache2 restart

 

※PS:a2enmod 實際上也只是把 mods-available 的模組用一個 Symbol Link 指過去 mods-enabled 而已,所以直接用 ln -s 指過去也不是不行 XD​。

發表留言