格式化移動硬盤
- 首先使用
fdisk -l查看當前磁盤情況,此處/dev/sdb是外接的移動硬盤 - 使用命令
fdisk /dev/sdb開始執(zhí)行分區(qū) - 開機自動掛載,
nano /etc/fstab添加一行/dev/sdb1 /home/freeman/homecloud/ ext4 defaults 0 0
修改主機名
修改以下兩個文件中的的新的主機名,保存并重啟。
sudo nano /etc/hostname
sudo nano /etc/hosts
添加命令別名
添加一行新的別名定義到文件~/.bashrc,比如:alias l='ls -l',保存并重新登錄。
安裝sshd服務
-
sudo apt-get install openssh-server, - 打開root賬戶ssh設置
sudo nano /etc/ssh/ssd_config設置PermitRootLogin yes
安裝編譯環(huán)境
sudo apt-get install build_essential gcc g++
安裝docker環(huán)境
- 安裝指南
- 添加你的用戶到docker用戶組,避免使用sudo,
sudo usermod -aG docker $user - 因為國內訪問hub.docker.com速度非常慢,可以添加國內的鏡像站點,目前有阿里云和daocloud提供,打開配置文件
/etc/default/docker,修改設置如下:DOCKER_OPTS="--registry-mirror=https://xvfa2uzp.mirror.aliyuncs.com", 完成后重啟服務sudo service docker restart,使用查找命令驗證修改后的速度docker search ubuntu - 如何開機自動啟動某個容器?將命令
docker start containername添加到/etc/rc.local/文件中。
安裝python環(huán)境
- 設置pypi國內鏡像,創(chuàng)建或編輯文件
~/.pip/pip.conf
[global]
index-url=http://mirrors.aliyun.com/pypi/simple/
安裝nodejs環(huán)境
官方指南
將npm registry設置為淘寶npm源,全局安裝n模塊來管理和更新node和npm。
安裝dotnet環(huán)境
安裝 gitlab-ce服務
- docker 方式運行gitlab-ce服務,參見官方說明文檔
安裝letsencrypt服務
git clone https://github.com/kshcherban/acme-nginx
cd acme-nginx
python setup.py install
sudo acme-nginx -d domain.com -d www.domain.com
定時任務,每個月1日更新證書,因為更新證書需要root權限,所以需要使用root賬戶下的crontab
sudo crontab -e
0 0 1 * * acme-nginx -d domain.com -d www.domain.com
安裝nginx
- 直接安裝
sudo apt-get install nginx
安裝MySQL 5.7
- docker方式安裝
docker run -d \
--name mysql \
-p 3306:3306 \
-v /home/freeman/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=password \
mysql:5.7.14 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci \
打開root用戶遠程訪問能力
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password'; flush privileges;修改配置文件
/etc/mysql/mysql.conf.d/mysqld.cnf注釋掉行bind-address = 127.0.0.1
使用speedtest-cli測試網(wǎng)速
speedtest-cli是一個用Python編寫的輕量級Linux命令行工具,在Python2.4至3.4版本下均可運行。它基于Speedtest.net的基礎架構來測量網(wǎng)絡的上/下行速率。安裝speedtest-cli很簡單,只需要下載其Python腳本文件。
wget https://raw.github.com/sivel/speedtest-cli/master/speedtest_cli.py;
chmod a+rx speedtest_cli.py;
sudo mv speedtest_cli.py /usr/local/bin/speedtest-cli;
sudo chown root:root /usr/local/bin/speedtest-cli;
然后就可以在命令行運行測試:speedtest-cli,下圖是一個樣例測試結果,上行速度就代表你的ECS配置帶寬。

安裝配置HAProxy
訪問 Debian/Ubuntu HAProxy packages 選擇你需要安裝的版本進行安裝。以下以ubutntu 14.04 安裝HAProxy 1.6為例,安裝完成后執(zhí)行 haproxy -v 命令查看版本。
sudo apt-get install software-properties-commonsudo add-apt-repository ppa:vbernat/haproxy-1.6sudo apt-get updatesudo apt-get install haproxy啟動和停止
sudo service haproxy start啟動服務sudo service haproxy stop停止服務sudo service haproxy restart重啟服務配置WEB管理
打開配置文件
etc/haproxy/haproxy.cfg,添加如下配置,打開WEB管理功能。
# 統(tǒng)計頁面配置
listen admin_stats
bind *:1080
stats enable
stats uri /admin?stats
stats auth username:password
stats hide-version
stats admin if TRUE
stats refresh 30s
- 訪問:http://127.0.0.1:1080/admin?stats打開如下WEB管理界面
- Paste_Image.png
使用公鑰登錄Bitbucket.org
首先使用命令ssh-keygen(一路默認)在客戶機生成秘鑰,生成的公鑰(id_rsa.pub)和私鑰(id_rsa)保存在家目錄下的.ssh目錄下,在bitbucket.org管理界面上新建SSH Key,并打開公鑰文件,將內容復制到該新建的SSH Key上并保存??蛻舳送ㄟ^ git clone git@bitbucket.org:freemanke/repo.git 等命令即可操作,不再需要輸入用戶名和密碼。
運行ASP.NET Core應用時無法輸出日志
在Ubuntu上運行ASP.NET Core應用時,需要先切換到應用所在根目錄,否則因為系統(tǒng)默認使用終端當前目錄作為工作目錄,而無法找到配置和引用文件而發(fā)生錯誤。如下圖root目錄為終端當前目錄而不是應用所在目錄。


使用supervisor后臺運行.NET Core應用
- 使用命令
sudo apt-get install supervisor安裝supervisor - 在supervisor配置目錄下創(chuàng)建應用對應的配置文件
sudo touch /etc/supervisor/conf.d/yuehuapi.conf, 編輯配置文件如下
[program:yuehuapi]
command=dotnet Fhit.Yuehu.Api.dll #要執(zhí)行的命令directory=/home/freeman/fhit.yuehu.api/publish/ #命令執(zhí)行的目錄environment=ASPNETCORE__ENVIRONMENT=Production #環(huán)境變量
user=www-data #進程執(zhí)行的用戶身份
stopsignal=INT
autostart=true #是否自動啟動
autorestart=true #是否自動重啟
startsecs=1 #自動重啟間隔
stderr_logfile=/var/log/yuehuapi.err.log #標準錯誤日志stdout_logfile=/var/log/yuehuapi.out.log #標準輸出日志
- 開啟supervisor WEB管理界面,
sudo nano /etc/supervisor/supervisord.conf編輯supervisor服務配置文件,添加[inet_http_server]配置端如下:

- 執(zhí)行命令
sudo service suupervisor restart重啟服務 - 通過瀏覽地址:http://localhost:7002/ 查看當前應用狀態(tài)
Supervisor Web UI.png
配置Nginx負載均衡
Ningx負載均衡官方算法包括
輪詢 - 每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器down掉,能自動剔除。輪詢模式會帶來Session無法保持的問題,可以通過將Session保存到Redis緩存服務器上來解決Session的保持問題。
基于權重的輪詢 - 指定輪詢幾率,weight和訪問比率成正比,用于后端服務器性能不均的情況,如果后端服務器down掉,能自動剔除。
ip_hash - 每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session不能跨服務器的問題。如果后端服務器down掉,要手工down掉。
服務器參數(shù)
down - 表示單前的server暫時不參與負載
weight - 權重,默認為1。 weight越大,負載的權重就越大。
max_fails - 允許請求失敗的次數(shù)默認為1。當超過最大次數(shù)時,返回proxy_next_upstream 模塊定義的錯誤
fail_timeout - max_fails次失敗后,暫停的時間
backup - 備用服務器,其它所有的非backup機器down或者忙的時候,請求backup機器。所以這臺機器壓力會最輕。
輪詢配置實例
upstream yuehuapi {
server 192.168.0.11:3723 max_fails=3 fail_timeout=30s;
server 192.168.0.12:3723 max_fails=3 fail_timeout=30s;
server 192.168.0.13:3723 max_fails=3 fail_timeout=30s;
}
server
{
listen 80;
server_name domain.com;
location / {
proxy_pass http://yuehuapi;
}
- 基于權重的輪詢配置實例
upstream yuehuapi {
server 192.168.0.11:3723 weight=10;
server 192.168.0.12:3723 weight=20 down;
server 192.168.0.13:3723 weight=30;
server 192.168.0.14:3723 weight=50 backup;
server 192.168.0.15:3723 weight=40 max_fails=3 fail_timeout=30s;
}
server
{
listen 80;
server_name domain.com;
location / {
proxy_pass http://yuehuapi;
}
- ip_hash配置實例
upstream yuehuapi {
ip_hash;
server 192.168.0.11:3723;
server 192.168.0.12:3723;
}
server
{
listen 80;
server_name domain.com;
location / {
proxy_pass http://yuehuapi;
}

