從0開始搭建自己的個人網站(一)


前言

每個真的程序員可能都想過要做一個自己的個人網站,很不幸我也是其中一個...

那么作為一個前端而言,頁面這一邊自然是沒有問題,但是怎么部署到服務器、服務器的配置這些可能比較頭疼,在2016年的時候,我其實做過一個個人的博客系統,雖然他的生命周期只有半年,但是當時服務器配置基本上是找運維的朋友搭的,所以還是沒有能轉化為自己的東西。借今年雙11雲服務器很便宜這個契機,我准備再搗鼓一個博客/個人網站,並且還要記錄下來,方便以后自己回顧(假如這個生命周期又只有半年,再過3年后又心血來潮就可以參考這個系列的文章了... 哈哈哈😂),同時也給有意向做個人網站的同學作為一個參考,或者說交流,因為我自己也是現學現用,肯定會有一些個人謬解,就還請多指正了。

說明

  1. 本文適合閱讀對象:linux純小白的前端
  2. 操作系統: CentOS 7.7 64位
  3. web服務器:nginx
  4. 版本控制:svn
  5. 前端使用vue-cli3
  6. 后端使用nest.js ,后面再把之前寫的JAVA springMVC的版本整理出來
  7. 數據庫:mysql

linux常用操作:

//查看文檔
vim xxx
i
esc
//保存退出
!wq
//強制(不保存)退出
!q

//查看80端被哪個服務占用的
netstat -apn|grep 80

//強制關閉某端口
kill  -9  15516

//相當於瀏覽器訪問某地址
curl http://

1. 安裝svn

就像寫文檔一定要注意備份一樣,做所有的事情之前首先將我們的代碼版本控制起來,這里暫時選擇svn,后續可能會切git

//使用yum安裝
yum install subversion

在/home下建立一個名為svn的倉庫(repository),以后所有代碼都放在這個下面,創建成功后在svn下面多了幾個文件夾。
[root@localhost /]# cd /home
[root@localhost home]# mkdir svn
[root@localhost home]# svnadmin create /home/svn
[root@localhost home]# ls svn
conf  db  format  hooks  locks  README.txt

特別關注一下conf文件夾,這個是存放配置文件的
[root@localhost home]# cd svn/conf
[root@localhost conf]# ls
authz  passwd  svnserve.conf

其中:
authz 是權限控制文件
passwd 是帳號密碼文件
svnserve.conf 是SVN服務配置文件

接下來我們依次修改這3個文件。

配置passwd

//創建了3個用戶,一個test1,一個test2
[root@localhost conf]# vi passwd 
[users]
helijun=xxx
test1=123456
test2=123456

配置authz

[root@localhost conf]# vi authz 
[/] //倉庫下所有文件
helijun=rw
test1=r
test2=r
*=

配置svnserve.conf

// 不可以有空格
[root@localhost conf]# vi svnserve.conf 
// 打開下面的5個注釋
anon-access = read #匿名用戶可讀
auth-access = write #授權用戶可寫
password-db = passwd #使用哪個文件作為賬號文件
authz-db = authz #使用哪個文件作為權限文件
realm = /home/svn # 認證空間名,版本庫所在目錄,改成自己svn所在目錄!!!

啟動與停止

// -d表示守護進程, -r 表示在后台執行 

[root@localhost conf]# svnserve -d -r /home/svn(啟動)
[root@localhost conf]#killall svnserve(停止)

客戶端連接

輸入地址svn://你的IP,默認端口3690,如果修改了端口,那么要記得加上端口

ps:如果連接不上,檢查雲服務器是否開啟了3690端口,要去阿里雲控制台檢查

svn配合nginx實現提交代碼自動更新 (真實在這里卡了比較長時間)

有時候我們希望提交代碼到svn后,網站訪問到內容就能自動拉取到最新的,可以使用svn的hook,原理就是檢測到有commit觸發一個可以理解為函數,函數邏輯就是將最近的代碼同步到指定目錄,而這個目錄又剛好是nginx映射的對應目錄。按照以下代碼敲一遍基本上就可以了,已經要注意幾個目錄路徑!


// 利用svn hooks

cd /home/svn/hooks/
cp post-commit.tmpl post-commit

vim post-commit

//修改為
#!/bin/sh
REPOS="$1"
REV="$2"
TXN_NAME="$3"

WEB=/usr/local/靜態頁面目錄(需修改) #nginx root目錄
export LANG=en_US.UTF-8
svn update $WEB --username helijun(對應rw權限的svn用戶) --password xxx

//給post-commit添加可執行權限
chmod a+x post-commit

//注意:在web目錄更新一次,之后每次提交后才會自動更新,否則不會自動更新
cd /usr/local/靜態頁面目錄
svn checkout svn://182.92.xxx.xxx/...

nginx安裝及使用

// 下載nginx壓縮包
wget -c https://nginx.org/download/nginx-1.10.1.tar.gz

// 配置nginx安裝所需的環境
yum install gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel

// 解壓
tar -zxvf nginx-1.10.1.tar.gz

cd nginx-1.10.1

// 默認配置,
./configure

// 編譯安裝nginx
make

// 安裝
make install

// 這時候返回上一級目錄,就會發現多了nginx目錄,接下來,啟動nginx
// 進入/usr/local/nginx/sbin目錄
./nginx

// 關閉nginx
./nginx -s quit  或者 ./nginx -s stop

// 重啟nginx
./nginx -s reload

// 查看nginx進程
ps aux|grep nginx

// 設置nginx開機啟動,需在rc.local增加啟動代碼
vim /etc/rc.local
然后在底部增加/usr/local/nginx/sbin/nginx

如果輸入服務器ip無法訪問

以上配置之后理論上是可以通過ip直接訪問到nginx那個動人的welcom to nginx頁面的,但是現實情況我在這里卡了好久,如也遇到這種情況請檢查:

  • 先在本地服務器用curl訪問以下ip,如果有頁面元素接着按下面檢查
  • 防火牆是否關閉
  • 阿里雲管理后台是否開啟了80端口,入口:,實例列表>更多>網絡和安全組>安全組配置> 配置規則>添加安全組規則。切記切記!!如下圖
    阿里雲開啟80端口

關於centos 7 中service iptables stop 指令使用失敗的結局方案

首先不管防火牆有沒有關 都使用systemctl stop firewalld 關閉防火牆

然后使用 yum install iptables-services 安裝或更新服務

再使用systemctl enable iptables 啟動iptables

最后 systemctl start iptables 打開iptables

大功告成

再試試service iptables start

nignx映射靜態頁面

 server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;
    
    # 根目錄訪問
    location / {
        root   /usr/local/靜態頁面目錄/;
        index  index.html index.htm;
    }
    
    # 禁止訪問到svn目錄
    location ~* /\.svn/ {
         deny all;
    }

到這里就可以基本實現了靜態的個人網站頁面訪問了,

mysql安裝

由於后台使用的是nest.js,(這個框架我也是現學現用,跟spring的mvc思想非常相似,另外typescript也是從入門到使用)為了測試nest連接數據庫,我這里要先安裝了mysql

// 下載安裝包
wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
// 安裝
sudo rpm -ivh mysql57-community-release-el7-8.noarch.rpm
sudo yum install mysql-server

// 設置密碼
// 當第一次啟動MySQL服務器時,為MySQL根用戶生成一個臨時密碼。 您可以通過運行以下命令找到密碼
sudo grep 'temporary password' /var/log/mysqld.log

// 如果這個文件為空:
1.刪除原來安裝過的mysql殘留的數據(這一步非常重要,問題就出在這)
rm -rf /var/lib/mysql
2.重啟mysqld服務
systemctl restart mysqld
3.再去找臨時密碼
grep ‘temporary password’ /var/log/mysqld.log

localhost:后邊的就是臨時密碼,先復制下來

// 配置mysql安裝項:
sudo mysql_secure_installation

// 輸入剛才的臨時密碼
// 接下來mysql會提示你輸入新的密碼,和一下其他設置,一般情況下我們都會輸入y(密碼必須至少包含8個字符並且至少包含一個大寫字母,一個小寫字母,一個數字和一個特殊字符。)

如果出現1130錯誤:1130 - Host XXX is not allowed to connect to this MySQL server。

1. mysql -u root -p
2. use mysq;
3. select host from user where user='root';
//可以看到當前主機配置信息為localhost.

4.執行update user set host = '%' where user ='root';
// 將Host設置為通配符%,Host設置了“%”后便可以允許遠程訪問。

5. flush privileges;
//配置立即生效

6. 使用navicat 成功連接至mysql

修改密碼:

ALTER USER USER() IDENTIFIED BY 'mysql的密碼';

先寫到這里 2019-11-27 00:21

后續的一個簡要目錄

  • 使用https
  • nest基本使用 >> nest實現一個增刪改查
  • 按照node環境,部署nest項目
  • mysql表結構設計
  • vue cli3生成項目,及基本的構架設計,工程化思想
  • ...
  • docker部署


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM