ping了一下coding pages和阿里雲服務器的速度,意外感覺coding的速度反而更快。不過為了折騰,還是把博客遷移到阿里雲,跌跌撞撞遇到很多坑,大多是由於對指令不熟悉以及部分教程省略了部分步驟,最后不斷谷歌終於成功了!
購買學生機
一開始糾結了好久的問題是:阿里雲學生機要買輕量應用服務器還是雲服務器ECS?最后看着教程買了半年的雲服務器ECS
&Centos,因為參考的教程也是用的這種配置。但是我后悔了,前者的帶寬峰值是后者的五倍啊啊啊啊!!!果然人一窮就想着要追求性價比,流下了窮人的淚水嗚嗚嗚
阿里雲配置:
找到雲主機實例(這個實例就是你購買的ECS服務器)
- 在雲服務器ECS列表中選擇實例。
- 然后選擇你在購買服務器時選擇的服務器區域。
- 就是你自己的服務器實例了。
添加安全組規則
如果要使用CentOS鏡像系統這個安全組規則是必須要添加的。
簡單明了,下面用四張圖來演示添加安全組規則。
進入實例管理
進入實例管理
進入安全組配置規則
進入安全組配置規則
打開添加安全組規則
打開添加安全組規則
添加安全組規則
好的,配置完成,很簡單對不對,不過這還只是熱身哦,接下來就要進入主題開始我們的搭建博客之旅。
服務器環境搭建
選擇實例的遠程連接
輸入遠程密碼
注意:這里的遠程密碼,只有在第一次連接的時候會提示,只有在第一次連接的時候會提示,只有在第一次連接的時候會提示,重要的事情說三遍。一定要牢記。
登錄服務器
輸入密碼后就會進到服務器頁面,是一個黑色的shell小窗口,之后根據提示登錄就可以。
shell窗口中的登錄操作就不截圖演示了,直接使用文本方式根據步驟來就可以了。
1.login后面輸入用戶名。
2.password后面輸入密碼。(注意:這里在輸入密碼的時候為了安全是不會在界面上顯示出來的,所以如果你在輸入密碼的時候沒有看到你輸入的結果是正常現象,直接輸入就可以)
安裝git和nodejs
yum install git
#安裝Nodejs
curl --silent --location https://rpm.nodesource.com/setup_5.x | bash -
adduser git
chmod 740 /etc/sudoers
vim /etc/sudoers
到這里之后會打開一個文本文件,然后找到以下內容
Allow root to run any commands anywhere
root ALL=(ALL) ALL
按一下 I 鍵 進入插入模式然后使用方向鍵在以上內容的下面添加一行
git ALL=(ALL) ALL
添加完成后按下ESC鍵退出插入模式,然后輸入
:wq
這個命令的意思是保存並退出vim
保存退出后改回權限
chmod 400 /etc/sudoers
隨后設置Git用戶的密碼,
sudo passwd git
然后輸入git用戶的密碼 輸入完成之后一路回車等待設置完成之后
切換至git用戶,創建 ~/.ssh 文件夾和 ~/.ssh/authorized_keys 文件,並賦予相應的權限
su git
mkdir ~/.ssh
vim ~/.ssh/authorized_keys
然后進入電腦中(你自己的電腦)C:\Users\Administrator\.ssh文件夾下看一下有沒有id_rsa.pub文件
如果沒有則通過Git Bash新建一個
創建.ssh命令為:ssh-keygen -t rsa -C "your_email@example.com"
創建好后在C:\Users\Administrator\.ssh文件夾下使用筆記本方式打開id_rsa.pub文件,打開后就能看到公鑰了。
然后將公鑰復制粘貼到authorized_keys 寫入方式和上面在sudoers插入方式一樣,完成之后執行下面命令
chmod 600 ~/.ssh/authorzied_keys
chmod 700 ~/.ssh
然后在客戶端(電腦上),通過Git Bash執行ssh -v root@ip地址(就是你阿里雲的外網地址) ,應該就能免密登陸了。
安裝Nginx和配置
安裝
yum install nginx
啟動 直接輸入nginx然后回車就可以啟動nginx
nginx
然后把服務器的公網地址輸入瀏覽器, 出現下面的圖片就對了,沒出來就有問題
配置Nginx
vim /etc/nginx/conf.d/default.conf
依照下圖進行修改,插入方式往下就不做介紹了,就那幾步,如果有不會的可以去百度一下。
listen:端口號。
server_name:你自己的域名,如果沒有域名可以不填寫,然后在訪問博客的時候使用你服務器的外網IP地址就可以。
location:地址內容。
root:指向的博客文件夾目錄。
index:指定博客Index文件。
配置完成以后保存退出開始執行接下來的內容
sudo mkdir -p /usr/share/nginx/html/blog
sudo chown -R git:git /usr/share/nginx/html/blog
nginx的配置到這里已經完成,接下來就要創建我們自己的私有git倉庫了哦
在服務器上初始化一個git倉庫
切換到git用戶,然后切換到git用戶目錄,接着初始化裸庫,代碼如下:
su git
cd ~
git init --bare blog.git
接着新建一個post-receive文件
vim ~/blog.git/hooks/post-receive
然后在該文件中輸入以下內容:
#!/bin/sh
git --work-tree=/usr/share/nginx/html/blog --git-dir=/home/git/blog.git checkout -f
這里的 #!/bin/sh 也是要加進去的,不要當成注釋從而遺漏掉了哦。
保存退出之后,再輸入以下代碼,賦予該文件可執行權限。
chmod +x ~/blog.git/hooks/post-receive
好了,到這里我們的服務器配置已經完成。我們先喘一口氣休息一下,回過頭檢查一下有沒有遺漏或者出現錯誤的地方,出現差錯到時候可能會導致配置不成功的,要仔細一點哦。
本地Hexo初始化
首先要安裝 hexo-cli,安裝hexo-cli 需要 root 權限,使用 sudo 運行
sudo npm install -g hexo-cli
然后初始化Hexo程序
cd E:\hexo
hexo init blog
等執行成功以后安裝兩個插件, hexo-deployer-git 和 hexo-server ,這倆插件的作用分別是使用Git自動部署,和本地簡單的服務器。
hexo-deployer-git幫助文檔
hexo-server幫助文檔
安裝hexo-deployer-git 和 hexo-server
cd blog
npm install hexo-deployer-git --save
npm install hero-server
初始化Nodejs
install nodejs
生成自己的第一篇文章 hello world !
hexo new "hello Hexo"
使用 hexo new <文章名稱> 來新建文章,該命令會成成一個 .md文件放置在hexo根目錄 source/_posts文件夾。
使用hexo g將 .md文件渲染成靜態文件,然后啟動hexo-server
hexo g
hexo server
現在便可以打開瀏覽器訪問 http://localhost:4000 來查看我們的博客了!
然后停掉
配置_config.yml,完成自動化部署
然后打開E:/hexo/_config.yml 找到 deploy
deploy:
type: git
repo: root@YOUR_SERVER_IP:/home/git/blog.git #此處的YOUR_SERVER_IP需改為你自己服務器的ip
branch: master #這里填寫分支
message: #提交的信息
保存后,嘗試將我們剛才寫的”hello hexo”部署到服務器
hexo clean
hexo g
hexo s
hexo generate --deploy
訪問服務器地址,就可以看到我們寫的文章”Hello hexo”,以后寫文章只需要:
hexo new "Blog article name"
···寫文章
hexo clean
hexo g
hexo s
hexo generate --deploy
到這里我們的博客就已經可以使用了。現在快去體驗一下自己的勞動成果寫博客部署上去吧。
配置域名
阿里雲域名解析處-新手引導-添加主機地址,就可以自動創建兩條記錄。
OVER
遇到的問題:
CentOs下nginx的配置文件
是放在/etc/nginx/nginx.conf,而不是nginx.default。
Nginx啟動失敗,原因是80端口被占用。
使用命令關閉占用80端口的程序
sudo fuser -k 80/tcp
或者是
遇到這種問題我先用中文搜索了一下答案,發現大家都在裝逼地說要殺nginx重復的進程。我試了下發現是扯淡,於是看了谷歌搜到的第一個英文頁面,老外說是nginx先監聽了ipv4的80端口之后又監聽了ipv6的80端口,於是就重復占用了。更加坑人的是你去看了端口占用它又把80端口釋放了,是不是很囧。
解決方案是編輯nginx的配置文件
hankcs@ubuntu:~$ sudo gedit /etc/nginx/sites-available/default
修改這一段:
listen 80;listen [::]:80 default_server;
為
listen 80;listen [::]:80 ipv6only=on default_server;
然后啟動nginx,完美解決!
ssh登錄失敗
大部分原因是由於.ssh目錄下的known_hosts中
47.98.147.134 ecdsa-sha2-nistp256
出錯,刪除這一段代碼即可。