瀏覽標籤:

Ubuntu

[Linux] 在 Ubuntu 上安裝 Jenkins CI Server 來 Bulid NetCore 2.0

近期都在研究 NetCore 但如果要上 Linux 的話就變成每次都要下指令重建專案 ,剛好有看到 Jenkins 支援 NetCore 且可以省去我在 SSH 上自己下指令的動作,於是乎就跑去研究了一下這塊,這邊留個筆記方便日後查閱。

Jenkins 安裝

  1. 下載套件清單 (否則搜尋不到)
    wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
    sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
    sudo apt-get update
  2. 安裝 Jenkins
    sudo apt-get install jenkins
  3. 接著輸入 http://localhost:8080 並在 /var/lib/jenkins/secrets/initialAdminPassword 找到的你管理員密碼
  4. 這邊可以選擇要安裝社群建議的套件還是自訂套件,因為我是第一次安裝所以先選擇左邊

  5. 安裝完後會要求你設定管理員帳號密碼,設定完後就安裝完畢囉 !!

  6. 接著從左邊選單點選 管理 Jenkins -> 設定全域安全性
  7. 確認 Allow anonymous read access 是沒有打勾的,否則大家都可以亂搞囉
       

[.NET Core] 將 NET Core 部署至 Ubuntu Server 16.04

最近裝了個Linux Server想來玩玩看NET Core並佈署到上面,結果發現好多眉眉角角,網路上的文件似乎有點舊讓我一直撞牆撞不停,經過了幾個小時的煎熬最後終於成功了,這裡筆記一下方便下次使用…

首先按照 官網 提供的步驟進行安裝如下:

  1. 加入apt-get來源
    sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ xenial main" > /etc/apt/sources.list.d/dotnetdev.list'
    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 417A0893
    sudo apt-get update
  2. 開始安裝
    sudo apt-get install dotnet-dev-1.0.4
  3. 建立一個空資料夾
    mkdir HelloWebApp
    cd HelloWebApp
  4. 初始化MVC專案
    dotnet new mvc

    Templates清單:

    Templates                 Short Name      Language      Tags
    ----------------------------------------------------------------------
    Console Application       console         [C#], F#      Common/Console
    Class library             classlib        [C#], F#      Common/Library
    Unit Test Project         mstest          [C#], F#      Test/MSTest
    xUnit Test Project        xunit           [C#], F#      Test/xUnit
    ASP.NET Core Empty        web             [C#]          Web/Empty
    ASP.NET Core Web App      mvc             [C#], F#      Web/MVC
    ASP.NET Core Web API      webapi          [C#]          Web/WebAPI
    Solution File             sln                           Solution
  5. 檢查套件是否遺失並安裝
    dotnet restore
  6. 安裝Apache反向代理(Reverse-Proxy)
    sudo a2enmod proxy
    sudo a2enmod proxy_http
    sudo a2enmod proxy_ajp
    sudo a2enmod rewrite
    sudo a2enmod deflate
    sudo a2enmod headers
    sudo a2enmod proxy_balancer
    sudo a2enmod proxy_connect
    sudo a2enmod proxy_html
  7. 設定000-default.conf
    <VirtualHost *:80>
    	ProxyPreserveHost On
    	ProxyPass / http://127.0.0.1:5000/
    	ProxyPassReverse / http://127.0.0.1:5000/
    </VirtualHost>
  8. 重新啟動Apach並啟動.NET Core專案
    sudo service apache2 restart
    dotnet run
  9. 完成 !!
    2017-03-14-00_24_31-home-page-hellowebapp

 

 

  • 2017/05/24 開啟啟動&背景執行
    新增:/etc/systemd/system/kestrel-hellomvc.service

    [Unit]
    Description = https://blog.exfast.me/
    
    [Service]
    WorkingDirectory = /home/user/HelloWebApp/
    ExecStart = /usr/bin/dotnet run /home/user/HelloWebApp/HelloWebApp.dll
    Restart = always
    # Restart service after 10 seconds if dotnet service crashes
    RestartSec = 10
    SyslogIdentifier = dotnet-example
    User = user
    Environment = ASPNETCORE_ENVIRONMENT = Production 
    
    [Install]
    WantedBy = multi-user.target

    指令:

    sudo systemctl stop kestrel-hellomvc
    sudo systemctl disable kestrel-hellomvc
    sudo systemctl enable kestrel-hellomvc
    sudo systemctl start kestrel-hellomvc
    sudo systemctl status kestrel-hellomvc

     

來源:

  1. https://www.microsoft.com/net/core#linuxubuntu
  2. How To Use Apache HTTP Server As Reverse-Proxy Using mod_proxy Extension
  3. Asp.Net Core 发布和部署( MacOS + Linux + Nginx )
  4. Publish to a Linux Production Environment
  5. Using Apache web server as a reverse proxy
       

CentOS 7.X Lamp環境安裝 (Linux+Apache+MariaDB+PHP)

看到網路上的人都推說,Linux Server使用CentOS架設比較適合,從預設開啟防火牆就知道了,我就來試試看CentOS與目前本站使用的Ubuntu Server差在哪。

安裝CentOS與更新套件清單

  1. CentOS官方網站下載最新版CentOS-7-x86_64-DVD-1511.iso,安裝過程就省略了,本人是使用最小安裝,所以只有指令介面,反正要當Server使用,如果安裝GUI的話反而浪費資源對吧?
  2. Ubuntu與CentOS安裝套件的方式有點不太一樣,Ubuntu是使用apt-get這個指令來安裝,但CentOS是使用yum來安裝套件,這點需要注意一下。首先先更新一下列表吧,使用管理員權限的帳號輸入
    sudo yum update -y

    -y 是忽略詢問是否同意直接更新

安裝Apache網頁伺服器

  1. 安裝前記得先使用上面的指令更新套件清單唷,不然可能會有奇怪的問題。
  2. 輸入指令
    sudo yum install httpd -y
  3. 安裝完畢後接著就要啟用服務拉,輸入指令
    service httpd start

安裝MariaDB(MySQL)資料庫伺服器

  1. 在CentOS 7.X中MySQL是被替換成MariaDB的,所以就借此也來體驗看看MariaDB的資料庫囉。
    輸入指令

    sudo yum install mariadb mariadb-server -y

    這樣就安裝成功囉!
    01

  2. 來啟動服務吧
     service mariadb start

    01

設定MariaDB伺服器

  1. 安裝完畢後,就來設定一些資料庫的基本設定吧!
    輸入指令

    /usr/bin/mysql_secure_installation

    這裡因為是第一次安裝,所以直接按Enter繼續即可。
    01

  2. 是否要設定root的密碼,輸入y開始設定
    01
  3. 重複輸入兩次相同的密碼
    01
  4. 是否要刪除匿名帳號,輸入y同意刪除,不然日後會有很多安全性問題
    01
  5. 是否要開放root管理員透過外網登入,這邊請輸入y限制管理員只能從本地連線較為安全
    01
  6. 是否刪除test資料庫輸入y
    01
  7. 是否重新載入權限表輸入y
    01
  8. 設定完成!
    01

安裝PHP+phpMyAdmin管理資料庫

  1. 安裝php與連接資料庫套件
    sudo yum install php php-mysql -y

    01

  2. 安裝yum第三方EPEL套件庫
    sudo yum install epel-release -y

    清除快取

    sudo yum clean all -y

    更新套件庫

    sudo yum update -y
  3. 安裝phpMyAdmin
     sudo yum install phpmyadmin -y

    01

  4. 重新啟動網頁伺服器
     service httpd restart

設定防火牆

  1. 永久允許網頁伺服器通過防火牆
    sudo firewall-cmd --add-service=http --permanent
  2. 若需要https服務則輸入
    sudo firewall-cmd --add-service=https --permanent

    查詢防火牆規則

    firewall-cmd --list-all --permanent

    --permanent為永久規則

  3. 重新啟動防火牆
     service firewalld restart

設定phpMyAdmin

  1. 預設除了本地是不允許訪問phpMyAdmin,但因為我們現在要設定所以需要修改一下預設值,使用WinSCP連線到主機上面打開
    /etc/httpd/conf.d/phpMyAdmin.conf
  2. 找到
    <RequireAny>
       Require ip 127.0.0.1
       Require ip ::1
    </RequireAny>

    Require ip ::1下方新增自己的IP

    <RequireAny>
       Require ip 127.0.0.1
       Require ip ::1
       Require ip 你的IP
    </RequireAny>
  3. 重啟網頁伺服器
    service httpd restart
  4. 這樣就可以正常登入囉!
    01

 

開機自動啟動服務

每次開機都要手動啟用服務,這樣實在太麻煩了,輸入以下指令可以在每次開機後自動啟用服務

chkconfig httpd on
chkconfig mariadb on

 

參考:

  1. [Centos7] 新的防火牆firewalld
  2. Installing LAMP (Linux, Apache, MariaDB, PHP/PhpMyAdmin) in RHEL/CentOS 7.0
       

MySQL 修改 timeout 時間以改善效能

環境:Ubuntu Server 15.10 x64

剛剛在後台發現一堆連線數以sleep狀態卡在那,
感覺就怪怪的,如果沒有使用的話為什麼不會timeout呢?
查了一下才發現,

SHOW variables;

0
原來mysql預設的數字是八小時…
這也太久了吧,不會造成連線數都卡死嗎??
於是乎開始修改找資料嘗試修改,
不知道為何,我的lamp套件與別人的安裝路徑都不一樣,
最後我是在

/etc/mysql/mysql.conf.d

裡面加上下面這幾行,儲存重開mysql服務後解決

# 防止連線數卡死
wait_timeout = 180
interactive_timeout = 180

 

參考1:http://note.tc.edu.tw/421.html

參考2:http://dba.stackexchange.com/questions/1558/how-long-is-too-long-for-mysql-connections-to-sleep

       

Apache 使用 Let’s Encrypt 的 SSL 免費憑證

SSL憑證服務,用於建立瀏覽器和網站伺服器之間的安全通道,提供伺服器身分鑑別及資料傳輸加密。 透過SSL機制建立一個安全通道,保護網路使用者所傳輸的個人資料(如信用卡號、帳號、密碼等)在傳輸過程中不被駭客截取或竄改,保護網站用戶個人資料,強化網路使用者對於網路交易信心。

  1. 下載官方自動安裝憑證程式
    sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
  2. 進入剛剛下載的資料夾
    cd letsencrypt
  3. 將網域輸入(如有多網址則輸入多次,批量會出錯)
    ./letsencrypt-auto --apache -d example.com
  4. 程式會幫你自動加載SSL資料進conf,所以無需做任何設定

 

若無則手動加入:

<IfModule mod_ssl.c>
    <VirtualHost www.example.com:443>	
	#管理者郵箱 
	ServerAdmin [email protected]
	#網站名稱 
	ServerName abc
	#網站別名
	ServerAlias www.example.com
	#網站的根目錄
	DocumentRoot /var/www/example.com/public_html/
	#網站的錯誤日誌檔存放的位置與檔名
	ErrorLog /var/www/example.com/logs/error.log
	#網站日誌檔存放的位置與檔名
	CustomLog /var/www/example.com/logs/access.log combined
	SSLEngine on
	# Let's encrypt
        SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
        SSLCACertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    </VirtualHost>
</IfModule>