[golang] Heroku 平台操作練習

從PHP轉戰golang,超級不習慣的,因為之前也沒有MVC的概念,學習之路更是艱辛
於是我出了個題目給自己:

Heroku + Golang + Git command deploy

我,三種全部都不會!!

沒關係,這就是學習的好機會,來吧!

*環境:Mac OS X El Capitan 10.11.6

Step 1. 安裝Go

先把golang環境架起來吧!
到官網下載golang,我習慣自己處理套件,不裝包好的pkg

sudo tar -C /usr/local -xzf go1.7.3.darwin-amd64.tar.gz

那個版本之類的要記得自己調整啊,我打這篇的時候版本是1.7.3
接著是設定環境變數

nano ~/.bash_profile

加入這幾行

#Go Lang
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/Desktop/Trees/Go
export GOBIN=$GOPATH/bin
export PATH=$GOPATH:$GOBIN:$PATH

我解說一下,第一個export把go本身執行檔、編譯之類的弄進環境變數,第二個是GOPATH,是整個Workspace的位置,go跟某些語言一樣有自動套件相依檢查機制,所以整個Workspace就是你的套件庫。第三跟第四個是export我們利用go get從repository抓下來的工具。

然後你就可以挑一個你喜歡的editor來玩囉,我是開始學習使用Visual Studio Code來玩golang拉,那GUI的特性帶來的許多方便,雖然我還是覺得他比Sublime Text 3肥了些。

Step 2. 安裝Heroku

這段就直接安裝Heroku包好的pkg了

https://devcenter.heroku.com/articles/heroku-command-line

然後,別跟我說你沒裝git…

Step 3. 測試Heroku

首先介紹幾個heroku常用指令:

heroku login : 登入heroku
heroku ps : 目前使用中的Process,也會顯示剩餘的dyno hour(heroku的計價單位)
heroku create : 創造空的app,create後面可以帶參數,會成為app的name
heroku logs : 查看log檔

假設我們已經申請好Heroku帳號,下一步就直接登入了:

heroku login

untitled

登入之後,我們可以先從遠端拉個Hello World來玩玩看Heroku的部署,輸入以下指令:

go get github.com/heroku/go-getting-started

你會發現,有一包資料夾叫做go-getting-started,出現在你設定的GOPATH裡的src資料夾,沒錯,你已經學會利用go get抓git上面的repository了!
我們切換到該reposiory中,準備部署至heroku上看看

cd $GOPATH/src/github.com/heroku/go-getting-started
heroku create
git push heroku master

這邊講解一下,我們切換到repository之後在做heroku create的動作,目的是因為heroku他會自動針對此repository,將遠端分支”heroku”設定為heroku即將產生的app git位置,在鍵入heroku create之後,他會給你兩個網址:

獨立網址,例如:https://fierce-beyond-60579.herokuapp.com/
Git Repository,例如:https://git.heroku.com/fierce-beyond-60579.git

獨立網址就是此app的唯一位置,他的git就是你之後deploy的對象。

是的就是這麼簡單,你已經部署了hello world上去heroku囉!…什麼?你說你失敗了?
我猜你一定沒有把SSH KEY給heroku!

ssh-keygen -t rsa
heroku keys:add

是的,跟github一樣,要把ssh加到網站上面才能開始一切操作喔!

Heroku也提供本地測試,只需要輸入:

heroku local web

他自己就會監聽5000 port了!
如果是自製的Project,遇到heroku local不能跑的時候,記得檢查有沒有產生Procfile檔案(請參考heroku文件,他很簡單的就只是告訴heroku你的app在process裡叫做什麼名字),或是檢查你的自製Project有沒有執行過 go install -v

Step 4. 部署自己的App

相信你已經準備好自己的Hello World專案準備弄上這個免費雲端,但是!部署前要先知道遊戲規則,要在Heroku上面部署自己的app的話,你需要裝官方認得的相依性套件管理工具,我們會以godep來做範例。

Godep相當的方便,跟go get差不多,但是它是把所有跟你的專案有關的套件都抓到你的app資料夾裡,可以獨立運作也方便管理,同時也會自動產生一個相依列表”Godeps.json”,Heroku就是以這個檔案來當作識別,抓取你app的相關資料。

安裝指令:

go get github.com/tools/godep

使用方式:

godep save ./

好的,到這裡為止,應該準備的差不多了,不過我這邊要特別註解一下關於git的部分,因為小弟平常用git都是GUI操作,只知道幾個關鍵名詞但是對command line操作git完全沒概念,所以就來記錄一下!

我們先介紹幾個常用的指令:

git init : 初始化你的project,主要是產生 .git 資料夾
git remote add <remote> <url> : 新增遠端git位置
git remote remove <remote> : 移除遠端git位置
git remote -v : 查看遠端詳細位置
git add -A . : 一次新增所有檔案,準備commit
git commit -m <title> -m <message> : commit 加上訊息 git status : 顯示目前repo狀態
git push : PUSH到指定的遠端與分支

我們假設你已經寫好你的Hello World了…什麼?你還沒寫?好吧,我的借你抄一下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package main

import (
    "fmt"
    "net/http"
    "os"
)

func main() {
    http.HandleFunc("/", hello)
    fmt.Println("listening...")
    err := http.ListenAndServe(":"+os.Getenv("PORT"), nil)
    if err != nil {
        panic(err)
    }
}

func hello(res http.ResponseWriter, req *http.Request) {
    fmt.Fprintln(res, "hello, world")
}

稍微說一下,一般我們在處理Listen Port時會直接寫上例如:5000這樣,但是在Heroku線上,他只開80 Port給你,並且寫好了環境變數,使用方式就如我的範例那樣,os.Getenv(“PORT”)就可以拿到80這個數字,不包含冒號喔!

跑完godep、跑完git init,準備好Procfile檔案(反正就是在專案根目錄生一個叫做Procfile的檔案,裡面寫著 web: go-getting-started 即可,詳情請看https://devcenter.heroku.com/articles/getting-started-with-go#define-a-procfile),就可以準備部署了,我們可以先檢查一下自己的git remote 分支 heroku 目前被指向誰,輸入 git remote -v:

untitled

請注意看我的heroku目前被指向 https://git.heroku.com/young-ridge-89894.git ,這代表我如果在這個專案進行部署,會被部署到heroku上的young-ridge-89894這支app,如果你確定這是你的目標,那接下來就好處理了,但是如果不是,記得鍵入以下指令:

git remote remove heroku 

並加入遠端目標,例如:

git remote add heroku https://git.heroku.com/polar-sierra-53616.git

如果你是想要部署在新的app上面,只要在remove之後直接heroku create即可唷!
如果你的遠端目前已經被某個別的project部署過,只要在部署時加上 -f 就可以強制部署了!

部屬就跟git command操作一樣,先add、再commit、再push到遠端
範例指令:

git add -A .
git commit -m "Test"
git push heroku master

untitled

登登登登~完成了!

後記

我覺得應該可以開一篇關於go framework的東西XD
在範例專案 github.com/heroku/go-getting-started 中,他是使用了gin-gonic這個framework來開發的網頁,包含了html template的使用方法在裡面,感覺很好玩!

還有在利用Visual Studio Code的時候,發現了Git History這個套件(https://github.com/DonJayamanne/gitHistoryVSCode),他可以直接在Visual Studio Code中看到Git Log的Graph唷!使用方式就是 CMD + shift + P ,選擇 git view history (log) 。

阿對了,如果你是從Sublime Text轉來使用的人,可以打開一個功能,絕對會讓你有回到家的感覺,於選單的「使用者設定」中,插入以下:

"editor.renderIndentGuides": true

瞧瞧他打開了什麼?是垂直整理線!

——參考文獻——
[1] Getting Started on Heroku with Go – https://devcenter.heroku.com/articles/getting-started-with-go
[2] Go Dependencies via Godep – https://devcenter.heroku.com/articles/go-dependencies-via-godep
[3] Heroku Local – https://devcenter.heroku.com/articles/heroku-local
[4] Godep – https://github.com/tools/godep
[5] Managing Your SSH Keys – https://devcenter.heroku.com/articles/keys
[6] Deploying a Golang Project to Heroku – http://www.zhubert.com/blog/2014/03/08/deploying-golang-to-heroku/
[7] Manage Dependencies With GODEP – https://www.goinggo.net/2013/10/manage-dependencies-with-godep.html
[8] Git 教學(1) : Git 的基本使用 – http://gogojimmy.net/2012/01/17/how-to-use-git-1-git-basic/
[9] Getting Started with Go on Heroku – https://mmcgrana.github.io/2012/09/getting-started-with-go-on-heroku.html
[10] [NodeJS] 將程式部署到 Heroku 上 – NodeJS on Heroku – http://cire.pixnet.net/blog/post/37369672-%5Bnodejs%5D-%E5%B0%87%E7%A8%8B%E5%BC%8F%E9%83%A8%E7%BD%B2%E5%88%B0-heroku-%E4%B8%8A—nodejs-on–heroku
[11] Gin Gonic – https://gin-gonic.github.io/gin/
[12] How to attach my repo to heroku app – http://stackoverflow.com/questions/6877915/how-to-attach-my-repo-to-heroku-app
[13] Overwriting an existing Heroku app – http://stackoverflow.com/questions/14437903/overwriting-an-existing-heroku-app
[14] 在Heroku部署Rails專案結合AWS S3存放上傳圖片 – http://springok-blog.logdown.com/posts/2015/10/29/heroku-deploy-a-rails-project-with-aws-s3-storage-upload-pictures

Google Cloud的MySQL炸掉了 之 參數調整方法

搜尋了一下,還蠻多人有一樣的困擾的,MySQL突然就被衝到炸掉。
首先第一步,調閱MySQL log來看一下,發現記憶體調用失敗,於是把內部log打開:

[mysqld_safe]
log_error=/var/log/mysql/mysql_error.log

[mysqld]
log_error=/var/log/mysql/mysql_error.log

發現總是跑出

InnoDB: The InnoDB memory heap is disabled

如果沒開,他會直接吃主機記憶體,處理一下 /etc/mysql/my.cnf,加入這句:

innodb_use_sys_malloc =  0

重開後就出現訊息

InnoDB: Initializing buffer pool, size = 128.0M

是的,預設buffer pool為128MB,稍微爬文了一下發現是夠用的,以中型網站來說。
這個參數並不是越大越好,要看機器本身夠不夠用。

—-參考文獻—-
[1] Ubuntu 安裝和設定 MySQL – http://www.arthurtoday.com/2009/11/ubuntu-910-mysql.html
[2] mytop – MySQL 效能監測工具 – http://www.arthurtoday.com/2013/04/ubuntu-install-mytop.html
[3] Amazon EC2 免費實例: MySQL 崩潰之資料庫 log 查看及設定調教 – http://40era.com/4245/
[4] 15.14 InnoDB Startup Options and System Variables – http://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html
[5] How and When To Enable MySQL Logs – http://www.pontikis.net/blog/how-and-when-to-enable-mysql-logs
[6] How to Fix ERROR InnoDB: The InnoDB memory heap is disabled – https://www.debian-tutorials.com/how-to-fix-error-innodb-the-innodb-memory-heap-is-disabled

指定單一資料夾權限給WebFaction的新SSH使用者

因為客戶Host在WebFaction上,而我們的WebFaction也有其他客戶共用,所以不能讓他的FTP有太多權限,如果只在WebFaction的Panel上增加SSH使用者,他的權限可以大到能瀏覽整個Project List及裡面的檔案,為了隱私權我們只好透過SSH調整一下在主機上的使用者權限

我們假設新使用者名稱為 new_user_001

1. 透過Terminal連線到WebFaction,使用最高權限帳號

2. 先開放整個HOME給新使用者

setfacl -m u:new_user_001:--x $HOME

3. 移除webapps底下所有檔案的權限

setfacl -m u:new_user_001:--- $HOME/webapps/* 

**注意:這邊的語法僅適用目前Host已存在的專案,若日後有新增專案,這個指令要再做一次!
**或者也可以針對新專案更改權限設定:

setfacl -m u:new_user_001:--- $HOME/webapps/新專案名稱

4. 給予指定資料夾 讀取/寫入/執行 的權限

setfacl -R -m u:new_user_001:rwx $HOME/webapps/專案名稱

5. 給予指定資料夾在未來有新增檔案時的 讀取/寫入/執行 的權限

setfacl -R -m d:u:new_user_001:rwx $HOME/webapps/專案名稱

6. 為現在登入的最高權限者,給予指定資料夾 group owner 權限

chmod g+s $HOME/webapps/專案名稱

7. 為現在登入的最高權限者,給予指定資料夾所有權限

setfacl -R -m d:u:目前登入的最高權限使用者:rwx $HOME/webapps/專案名稱

———參考文獻———-
[1] General Topics (Granting Access to Specific Users) – https://docs.webfaction.com/software/general.html#granting-access-to-specific-users

[2] 第十三章、Linux 帳號管理與 ACL 權限設定 (13.3.1 什麼是 ACL 與如何支援啟動 ACL) – http://linux.vbird.org/linux_basic/0410accountmanager.php#acl_talk

透過 FileZilla 存取 Google Cloud Platform 主機

想從 FileZilla 存取 Google Cloud Platform 上的 instance,只需要 Generate SSH Key 即可!

進 Terminal,使用者帳號即可,此時不需切換本地端 root

Step 1. 安裝Google Cloud SDK

安裝

curl https://sdk.cloud.google.com | bash

全部預設位置即可

重開 Terminal

exec -l $SHELL

初始化Google Cloud SDK

gcloud init

輸入預設project ID(不是數字那個)
接下來他會要求你clone default project,不需要,除非你想在本地端config

Step 2. Generate SSH Key

注意這邊需要切換 Google Cloud Platform 上 instance 的 root!

$ gcloud compute ssh [email protected]

這樣產生的key才能full access directory

Step 3. 在 FileZilla 新增 SSH Key

Edit->Settings or FileZilla->Settings,找 SFTP 頁面
選 Add keyfile
然後,因為預設產生的key位置在.ssh,是隱藏檔,要手動導向隱藏頁面
command-shift-G,輸入~/.ssh
選擇非public key
然後自己新增站台,帳號輸入root,免密碼,大功告成!

——————————參考文獻——————————
[1] Transferring files to your hosting server on Compute Engine – https://cloud.google.com/compute/docs/tutorials/transfer-files

Ubuntu 14.04 安裝Apache, MySQL, PHP (LAMP) + WordPress 權限設定

Step 1 : Apache

安裝前請先sudo apt-get update
其他就不多說了,直接裝吧

sudo apt-get update
sudo apt-get install apache2

Step 2 : MySQL

安裝指令

sudo apt-get install mysql-server php5-mysql

設定安全性

sudo mysql_install_db
sudo mysql_secure_installation

Step 3 : PHP

安裝指令

sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt

修改一下路徑設定檔

sudo nano /etc/apache2/mods-enabled/dir.conf

裡面原本長這樣

<IfModule mod_dir.c>
    DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

現在要把index.php往前移

<IfModule mod_dir.c>
    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

重啟Apache

sudo service apache2 restart

權限要先設定

設定apache2成爲自己設定之資料夾的group owner,同時也是owner

sudo chown -R www-data:www-data /home/my_user_name/my_path

把自己加進www-data的group裡面

sudo usermod -a -G www-data my_user_name

把www-data列爲最高group priority

sudo usermod -g www-data my_user_name

(以下是附贈的,斟酌使用)
把user踢出group,注意要先把group priority設成別的

sudo deluser

顯示目前group

groups my_user_name

更改資料夾權限

sudo chmod -R 775 /home/my_user_name/my_path

Step 4 : phpMyAdmin

自行下載並安裝phpMyAdmin比較好控制,現在載好的版本感覺是不用調整參數,預設cookie

參照以下網址(跟本沒動過阿XD)
paste.plurk.com/show/2081776

要自己重新設定的話,網址如下
/phpmyadmin/setup/index.php

Step 5 : 目錄更改

接下來要做的事情是,把根目錄改成自己的指定路徑:

sudo nano /etc/apache2/sites-available/000-default.conf

DocumentRoot /var/www/html

改成

DocumentRoot /home/my_user_name/my_path

注意不可以使用 ~/ 作爲home directory的簡寫

sudo service apache2 restart

修改 apache2.conf

sudo nano /etc/apache2/apache2.conf

新增

<Directory /path/to/another/directory>
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
    Allow from all
</Directory>

重啓apache

sudo service apache2 restart

—參考文獻
[1] How To Install Linux, Apache, MySQL, PHP (LAMP) stack on Ubuntu 14.04 – https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-14-04
[2] Where to place my local website starting with the 2.4.7 version of apache2? – http://askubuntu.com/questions/448944/where-to-place-my-local-website-starting-with-the-2-4-7-version-of-apache2
[3] Apache can’t access folders in my home directory – http://askubuntu.com/questions/325498/apache-cant-access-folders-in-my-home-directory
[4] How to give apache2 permission to write and read files? – http://askubuntu.com/questions/246437/how-to-give-apache2-permission-to-write-and-read-files
[5] How To Install and Secure phpMyAdmin on Ubuntu 12.04 – https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-on-ubuntu-12-04
[6] Howto: Linux Add User To Group – http://www.cyberciti.biz/faq/howto-linux-add-user-to-group/
[7] Permissions issue: how can Apache access files in my Home directory? – http://askubuntu.com/questions/26848/permissions-issue-how-can-apache-access-files-in-my-home-directory
[8] Enable Userdir – http://www.server-world.info/en/note?os=Ubuntu_14.04&p=httpd&f=5
[9] phpMyAdmin sample configuration – http://paste.plurk.com/show/2081776/

OS X 10.10 Yosemite 安裝Apache,PHP,MySQL,phpMyAdmin

對於一個通勤上班的人來說,11吋的MacBook Air真的是首選,為了工作需求,我必須在OS X上裝好網頁伺服器的功能,但是第一次安裝就把整個Apache給炸了,因為我更新了Yosemite但是參考的網頁是Mavericks…嘖嘖 這次是第二次在Yosemite架設,終於成功了,也比那些XAMPP、MAMP等好用太多,因為別人幫你裝好的東西,權限都不知道設去哪了

Step 1 : Apache

其實很簡單的一句話就可以打開Apache了,快點打開終端機(以下稱之Terminal) 開啟

sudo apachectl start

停止

sudo apachectl stop

重啟

sudo apachectl restart

如果有正確開啟Apache,在瀏覽器輸入 http://localhost 就會出現“It works!”的字樣喔! 一般來說,Apache會指定系統預設的資料夾來作為網站的根目錄:

/Library/WebServer/Documents/

我們可以直接在這個資料夾放我們想要放的網頁,甚至加個替身在桌面以利存取 但是!你會常常被系統問密碼,因為這個資料夾算是在System Level底下的 總不能為了這樣子把密碼取消吧! 所以我們可以改用User Level底下的根目錄 只要簡單的在家目錄底下(就是個人帳號資料夾)新增“Sites”資料夾即可,他就是預設被隱藏的個人根目錄資料夾,建立資料夾後他會自動有一個自己的圖案 Sites 接著要寫一些設定檔,讓系統知道你的指定網頁伺服器路徑,首先在底下這個路徑新增 username.conf 檔案(請自行將username換成自己的,不帶引號)

/etc/apache2/users/

因為會遇到許多權限問題,建議在Terminal底下使用 nano 來進行編輯,直接切換至上述目錄後,輸入

sudo nano username.conf

加入下面這段文字,記得一樣將 username 換成自己的

<Directory "/Users/username/Sites/">
AllowOverride All
Options Indexes MultiViews FollowSymLinks
Require all granted
</Directory>

username.conf 的檔案權限應該長得像

-rw-r--r--   1 root  wheel  298 Jun 28 16:47 username.conf

如果不是,就需要調整檔案權限

sudo chmod 644 username.conf

接著我們要開啟一些Apache的功能

sudo nano /etc/apache2/httpd.conf

確定下述的模組都有開啟(沒有備註解掉)

LoadModule authz_core_module libexec/apache2/mod_authz_core.so
LoadModule authz_host_module libexec/apache2/mod_authz_host.so
LoadModule userdir_module libexec/apache2/mod_userdir.so

還有這個檔案也要開啟,不能被註解(因為使用user level路徑)

Include /private/etc/apache2/extra/httpd-userdir.conf

打開上述被引入的 httpd-userdir.conf 檔案

sudo nano /etc/apache2/extra/httpd-userdir.conf

去掉註解:

Include /private/etc/apache2/users/*.conf

重啟Apache

sudo apachectl restart

此時伺服器位置應該變成 http://localhost/~username/

/*************************************************************
** 使用Document Root當作伺服器目錄的人,記得要 Override .htaccess 喔!
** Terminal 鍵入
** sudo nano /etc/apache2/httpd.conf
** 按ctrl + w 鍵搜尋 AllowOverride 這個單字,參數改成 All
** AllowOverride All
**
** 並去掉以下註解 
** LoadModule rewrite_module libexec/apache2/mod_rewrite.so
*************************************************************/

Step 2 : PHP

PHP 5.5.14 已經預設安裝在OS X Yosemite,只需要做一些設定就可以打開

sudo nano /etc/apache2/httpd.conf

去掉註解

LoadModule php5_module libexec/apache2/libphp5.so

重啟Apache

sudo apachectl restart

Step 3 : MySQL

OS X Yosemite 沒有內建MySQL,要自己去官網抓來裝囉 先選 Mac OS X 10.9 (x86, 64-bit), DMG Archive ,目前還沒有10.10版本,安裝過程中有可能會遇到Installation Failed,但還是可以正常運作,安裝完畢後可以在設定裡找到MySQL來執行,也可以透過Terminal執行

sudo /usr/local/mysql/support-files/mysql.server start

習慣Terminal執行的人,可以自行新增環境變數

cd ; nano .bash_profile

找空白處貼上

export PATH="/usr/local/mysql/bin:$PATH"

重新載入shell

source ~/.bash_profile

然後要設定MySQL的帳號密碼(密碼要用單引號包著喔)

/usr/local/mysql/bin/mysqladmin -u root password 'yourpasswordhere'

然後要做一點調校,避免常常跳出來的 “2002 MySQL Socket error”

sudo mkdir /var/mysql
sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock

接著是自動執行MySQL,在OS X設定裡出現的開機自動啟動選項是不能用的,要自己寫進plist

sudo nano /Library/LaunchDaemons/com.mysql.mysql.plist

新增下段文字

<!--?xml version="1.0" encoding="UTF-8"?-->
<plist version="1.0">
  <dict>
    <key>KeepAlive</key>
    <true />
    <key>Label</key>
    <string>com.mysql.mysqld</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/local/mysql/bin/mysqld_safe</string>
      <string>--user=mysql</string>
    </array>        
  </dict>
</plist>

儲存後執行下面指令

sudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysql.plist
sudo chmod 644 /Library/LaunchDaemons/com.mysql.mysql.plist
sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist

Step 4 : phpMyAdmin

下載phpMyAdmin最新版本,解壓縮至伺服器跟目錄(自己命名,這邊以phpmyadmin為例),然後新增一個config資料夾

mkdir ~/Sites/phpmyadmin/config

給他權限

chmod o+w ~/Sites/phpmyadmin/config

然後就開始設定,打開網址

/伺服器位址/phpmyadmin/setup/

點選”New Server”標籤,接著點選”認證”標籤,輸入稍早設定的MySQL帳號密碼後,點Save,接著去看config資料夾,把新增的config.inc.php移到phpMyAdmin的跟目錄,就可以刪掉config資料夾了

Extra : 權限設定

如果在執行網頁程式時有遇到權限問題(例如Wordpress),可以透過下列調整使Apache有R/W的能力,但是請確定這是localhost測試用,或是自用伺服器測試站,因為一旦設定後,你的Apache執行權限就是使用者本人了,完全root權限。 首先在Terminal查詢自己的uid及gid

id

可能會長這樣

uid=502(admin) gid=20(staff)

我們需要admin及staff這兩個單字,分別代表user及group 把它們(User及Group)新增在/etc/apache2/httpd.conf底下

sudo nano /etc/apache2/httpd.conf

找到

User _www
Group _www

看是要註解掉舊的還是直接改掉,把 _www 各自改成剛剛查到的單字,例如

User admin
Group staff

存檔後記得重啟Apache,請注意,這樣做是有安全性風險的,務必確認這台機器僅限本機測試使用。

Extra : Apache 開關App

此步驟可以建立一個切換Apache開關的App在桌面,打開 工具/工序指令編寫程式 之後貼上下方程式碼,在儲存成應用程式

do shell script "/usr/sbin/apachectl stop 2>&1" with administrator privileges
if result = "" then
display dialog "Apache Stopped" with icon 2 buttons ¬
{"OK"} giving up after 1


else
do shell script "/usr/sbin/apachectl start" with administrator privileges
display dialog "Apache Started" with icon 2 buttons ¬
{"OK"} giving up after 1
end if

—–參考文獻—–
[1] Get Apache, MySQL, PHP and phpMyAdmin working on OSX 10.10 Yosemite – http://coolestguidesontheplanet.com/get-apache-mysql-php-phpmyadmin-working-osx-10-10-yosemite/
[2] Installing phpMyAdmin on Mac OSX 10.9 Mavericks & 10.8, 10.7, 10.6 – http://coolestguidesontheplanet.com/installing-phpmyadmin-on-mac-osx-10-7-lion/

Ubuntu 14.04.1 架站 Nginx, PHP, MySQL

不知道是哪根筋不對,一直想要在老舊機器安裝Windows Server 2008,然後卡在PHP裝不起來(什麼少了msvcr110.dll…我都裝了VCR 2012 U4了…)好吧我承認是銘傳雲端太方便,捨不得離開R2 Datacenter!哈哈,但是在單核Celeron實在太痛苦,只好改裝最熟悉的陌生人Ubuntu。

之前總是使用Apache來做Server,也是比較常用的Server,會知道Nginx是有一次系網站主機掛掉,出現的Default 404看到Nginx這英文單字才去Google的,原來是輕量級伺服器,但是對於小弟我這初學者實在是感覺不出來Server Loading的重要性…好吧,總是要學學新東西的,先裝起來再說,這次參考的網頁,除了安裝之外,還多了基本的安全性設定喔。

繼續閱讀 “Ubuntu 14.04.1 架站 Nginx, PHP, MySQL”