從 0 開始學(xué)習(xí)搭建自己的網(wǎng)站(詳細(xì)版)
想搭建一個(gè)自己的網(wǎng)站需要準(zhǔn)備什么,需要什么技能嗎?
一臺(tái)服務(wù)器 (阿里云,谷歌云。。。),本人使用的是谷歌云,新用戶可以免費(fèi)使用一年(這里有心人可以去研究一下其實(shí)可以一直使用下去,很贊)。
2. 最好準(zhǔn)備一個(gè)域名,比如本人的域名是 www.zempty.sg, 域名綁定你的服務(wù)器,如果你囊中羞澀,推薦使用?freenom?一個(gè)?免費(fèi)的?域名網(wǎng)站,關(guān)鍵還沒有各種審核,幾分鐘以后就可以用了。
3. 準(zhǔn)備好 ssl 證書,給自己的網(wǎng)站加密,可以進(jìn)行 https 安全訪問,推薦一個(gè)開源的好用的免費(fèi)的?ssl 證書工具 github 地址,下文會(huì)具體使用到它?certbot/certbot。
4. 最好具備一點(diǎn)操作 linux server 的知識(shí),不會(huì)也不要緊,只要你能通過 ssh 遠(yuǎn)程連接到 server, 本文也是可以幫到你的。
以上四點(diǎn)不在本文講述范圍之內(nèi),有心人可以自行去解決怎么去使用谷歌云?怎么去購買域名等,如果你有以上的煩惱可以?微信公眾號(hào)(zempty 筆記)后臺(tái)留言,看到信息后盡量解決你的問題?如果你愿意折騰你完全可以有一個(gè)?免費(fèi)的server + 免費(fèi)的域名 + 免費(fèi)的 ssl 證書?搭建一個(gè)個(gè)人網(wǎng)站,當(dāng)然你要會(huì)科學(xué)上網(wǎng)。
本文使用?docker + mysql + wordpress + nginx + https?來搭建一個(gè)自己的網(wǎng)站,下面就在 centos 7 版本的服務(wù)器上面逐一來配置安裝上面的各個(gè)服務(wù)軟件,順便也學(xué)習(xí)了這幾種主流軟件的安裝和使用。
1. 安裝 docker
Linux 系統(tǒng)上使用 docker 大大降低了我們使用各種軟件的門檻,推薦有興趣的同學(xué)一定要去學(xué)習(xí)一下 docker, 推薦本人學(xué)習(xí)總結(jié)的一篇 docker 的文章?docker 的學(xué)習(xí)總結(jié),關(guān)于如何安裝 docker ,我就不在這里贅述了,詳細(xì)安裝步驟參考我提供的官方連接?Get Docker Engine - Community for CentOS,復(fù)制命令一步步執(zhí)行即可:
docker 安裝命令如下復(fù)制安裝即可:
sudo yum install -y yum-utils device-mapper-persistent-data ?lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd
經(jīng)過上述三個(gè)步驟,恭喜你,你的docker 安裝成功了,下面運(yùn)行 docker , 命令如下,啟動(dòng) docker :
systemctl start docker
查看 docker 是否已經(jīng)被啟動(dòng),
systemctl status docker
如果你這里顯示的是激活(active)狀態(tài) ,恭喜你的 docker 安裝成功了 ?。?!
2. 安裝 mysql
在安裝 mysql 之前先在 server 上建立一個(gè)文件夾用來存放修改配置文件,方便我們快速配置 mysql :
mkdir -p ?~/software/mysql/conf ?~/software/mysql/logs ?~software/mysql/data
下面做如下的操作來安裝 mysql :
遠(yuǎn)程拉取 mysql 的數(shù)據(jù)庫
docker pull mysql
首先運(yùn)行一個(gè)實(shí)例:
docker run -it -d ?-- name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
復(fù)制該實(shí)例的配置文件到 server 當(dāng)中:
docker cp mysql:/etc/mysql/conf.d ~software/mysql/conf
刪除舊的實(shí)例:
docker rm -f mysql
重新創(chuàng)建一個(gè) mysql 容器:
docker run -it -d
--name mysql
-p 3306:3306
-v ~/software/mysql/conf:/etc/mysql/conf.d
-v ~/software/mysql/logs:/logs
-v ~/software/mysql/data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=123456
mysql
查看容器是否創(chuàng)建成功:
docker ps
如果有列出 mysql ,證明你的 mysql 安裝成功了 ?。?!
以上的操作步驟就是成功安裝了一個(gè) mysql 數(shù)據(jù)庫很簡單有木有 ? 下面有一個(gè)問題就是這個(gè)數(shù)據(jù)庫是不支持遠(yuǎn)程連接的,下面配置遠(yuǎn)程連接:
運(yùn)行一下命令登陸數(shù)據(jù)庫:
docker exec -it mysql ?mysql ?-uroot -p
輸入密碼進(jìn)入數(shù)據(jù)庫即可。
配置遠(yuǎn)程連接的操作如下:
設(shè)置遠(yuǎn)程連接,切換到 mysql 數(shù)據(jù)庫:
use mysql;
修改數(shù)據(jù)庫 user 表進(jìn)行遠(yuǎn)程連接:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
刷新修改:
flush privileges;
進(jìn)行到這里你可以愉快的使用數(shù)據(jù)庫了,恭喜你?。?!
3. 安裝 wordpress
wordpress 是什么就不做介紹了,請(qǐng)使用你的搜索引擎先去了解一下,推薦兩個(gè)學(xué)習(xí) wordpress 的學(xué)習(xí)資源:
如何使用 wordpress 做一個(gè)精美的網(wǎng)站
教你簡單的使用 wordpress
下面我們來安裝 wordpress :
遠(yuǎn)程倉庫拉取 wordpress:
docker pull wordpress
先運(yùn)行一個(gè) wordpress 實(shí)例:
docker run -it -d --name wordpress --link mysql:mysql -p 9001:80 wordpress
復(fù)制現(xiàn)有的 wordpress ?文件到當(dāng)前 server :
docker cp wordpress:/var/www/html ?~/software/wordpress
刪除剛安裝的容器:
docker rm -f wordpress
重新安裝 wordpress 容器:
docker run -it -d --name wordpress -p 9001:80 -v ?~software/wordpress/:/var/www/html --link mysql:mysql wordpress
到這里我們的網(wǎng)站就出來了,下面打開瀏覽器輸入:
http://你自己server的ip:9001
恭喜你, 你的網(wǎng)站出來了 ?。?!
根據(jù)上面的步驟操作一個(gè)網(wǎng)站也就出來了,但是使用 wordpress 上傳圖片和視頻的時(shí)候是限制大小的,如何配置大小呢?
修改 ~/software/wordpress 文件夾下面的 .htaccess 文件,打開增加如下兩行:
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
#增加如下兩行配置上傳文件的大小
php_value post_max_size 24M
php_value upload_max_filesize 8M
重啟 wordpress :
docker restart wordpress
請(qǐng)去優(yōu)化自己的網(wǎng)站吧,美不美,帥不帥,有你決定?。?!
4. 安裝 nginx
經(jīng)過上面的安裝,一個(gè)網(wǎng)站已經(jīng)出來了,但是有美中不足之處,如何綁定域名到網(wǎng)站上面呢?下面我們使用 nginx 來解決這個(gè)問題。
安裝 nginx:
遠(yuǎn)程倉庫拉取 nginx:
docker pull nginx
先運(yùn)行一個(gè) nginx 的容器:
docker run -it -d --name nginx ?nginx
復(fù)制配置文件:
docker cp nginx:/etc/nginx/ ~/software/
刪除 nginx 的容器:
docker rm -f nginx
重新建立一個(gè) nginx 的容器:
docker run -it -d
--name nginx
-v ~/software/nginx/:/etc/nginx/
-v ~/software/nginx/logs:/var/log/nginx/
-v ~/software/nginx/www/:/usr/share/nginx/html/ -p 80:80
nginx
查看 nginx 是否正常運(yùn)行:
docker ps
看一下運(yùn)行的服務(wù)當(dāng)中是否有 nginx , 有,恭喜你 ,nginx 安裝成功了?。。?/code>
下面來進(jìn)行 nginx 配置通過域名來訪問我們的網(wǎng)站,打開 ~/software/nginx/conf.d/default.conf, 需要使用到 vim ,不會(huì)使用vim 的推薦閱讀本人的 vim 文章,很詳細(xì):
精通 vim 此文就夠了
vim ?~/software/nginx/conf.d/default.conf
修改配置文件如下:
server_name 配置新申請(qǐng)的域名,如下我的域名是 www.zempty.sg 和?zempty.sg,
proxy_pass 配置自己 wordpress 的訪問路徑:?http://zempty.sg:9001
server {
? ? ? ?listen ? ? ? 80 default_server;
? ? ? ?listen ? ? ? [::]:80 default_server;
? ? ? ?server_name ?zempty.sg www.zempty.sg
? ? ? ?# Load configuration files for the default server block.
? ? ? ?include /etc/nginx/default.d/*.conf;
? ? ? ?location / {
? ? ? ?proxy_pass http://zempty.sg:9001/;
? ? ? ?proxy_set_header ? ? ? ?X-Real-IP ? ? ? $remote_addr;
? ? ? ?proxy_set_header ? ? ? ?X-Forwarded-For $proxy_add_x_forwarded_for;
? ? ? ?}
? ? ? ?error_page 404 /404.html;
? ? ? ? ? ?location = /40x.html {
? ? ? ?}
? ? ? ?error_page 500 502 503 504 /50x.html;
? ? ? ? ? ?location = /50x.html {
? ? ? ?}
? ?} ? ?
做完以上操作 , 恭喜你 ,你可以通過域名訪問你的網(wǎng)站了,瀏覽器輸入域名試一下吧 。
5. 配置 https
現(xiàn)在的瀏覽器如果沒有通過 https 訪問就會(huì)提示不安全,既然網(wǎng)站都搭建好了,為什么不去做安全處理呢?下面我通過使用免費(fèi)的 ssl 證書來解決這個(gè)問題,現(xiàn)在去購買證書著實(shí)有點(diǎn)貴呀,個(gè)人網(wǎng)站用個(gè)免費(fèi)的加密挺好,下面進(jìn)行 https 加密配置詳解,步驟很簡單,跟著一步步來很快解決問題?
重新配置一下 nginx
同上面的第四點(diǎn)nginx 的操作步驟相同,區(qū)別是多打開一個(gè) 443 端口,在這里很重要,我因?yàn)檫@個(gè)端口沒有打開曾折騰了很久,很羨慕你看到了這篇文章。
docker run -it -d
--name nginx
-v ~/software/nginx/:/etc/nginx/
-v ~/software/nginx/logs:/var/log/nginx/
-v ~/software/nginx/www/:/usr/share/nginx/html/
-p 80:80
-p 443:443
nginx
生成 ssl 證書
免費(fèi)的 ssl 證書應(yīng)該怎么生成呢?
提供一個(gè) github 的地址:[certbot/certbot] ,這個(gè)倉庫可以幫我們生成 ssl 證書,太良心,start 一下吧!
請(qǐng)?jiān)?server 上先安裝git:
yum install git
拉取遠(yuǎn)程倉庫到本地:
git clone git@github.com:certbot/certbot.git
切換到倉庫根目錄下面,這里我把倉庫放在 ~/software 下面:
cd ~/software/certbot
關(guān)鍵一步生成 ssl 證書:
先關(guān)閉 nginx :
docker stop nginx
生成證書:
./certbot-auto certonly -m kickcodeman@qq.com -d zempty.cf -d www.zempty.cf
解釋一下上面命令的幾個(gè)參數(shù): -m 后面是自己的郵箱, -d 后面的自己的域名,一般有兩個(gè),按照屏幕提示一步步操作下去最終在 /etc//etc/letsencrypt/live/個(gè)人域名目錄/ 下面會(huì)有 fullchain.pem 和 privkey.pem 兩個(gè)文件.
請(qǐng)把這兩個(gè)文件移動(dòng)到 ~/software/nginx/ 下面:
cp ?/etc/letsencrypt/live/個(gè)人域名目錄/fullchain.pem ?~/software/nginx
cp ?/etc/letsencrypt/live/個(gè)人域名目錄/privkey.pem ?~/software/nginx
配置 ~/software/nginx/conf.d/defalut.conf 文件:
切換到配置文件目錄:
cd ?~/software/nginx/conf.d
打開配置文件作如下配置:
vim default.conf
配置文件修改如下:
server {
? ? ? ?listen ? ? ? 80 default_server;
? ? ? ?server_name zempty.cf www.zempty.cf;
? ? ? ?return ? ? ? ? 301 https://$server_name$request_uri;
? }
?server {
? ? ? ?listen ? ? ? 443 ssl;
? ? ? ?server_name ?zempty.cf www.zempty.cf;
? ? ? ?ssl_certificate fullchain.pem;
? ? ? ?ssl_certificate_key privkey.pem;
? ? ? ?ssl_session_cache ? ?shared:SSL:1m;
? ? ? ?ssl_session_timeout ?5m;
? ? ? ?ssl_ciphers ?HIGH:!aNULL:!MD5;
? ? ? ?ssl_prefer_server_ciphers ?on;
? ? ? ?autoindex on;
? ? ? location / {
? ? ? ? ? ? ? ?proxy_pass http://zempty.cf:9001;
? ? ? ? ? ? ? ?proxy_set_header ? ? ? ?X-Real-IP ? ? ? $remote_addr;
? ? ? ? ? ? ? ?proxy_set_header ? ? ? ?X-Forwarded-For $proxy_add_x_forwarded_for;
? ? ? ?}
? ?}
啟動(dòng) nginx :
docker restart nginx
請(qǐng)打開你的瀏覽器輸入你的域名 www.zempty.cf ,可以看到 https 訪問網(wǎng)站成功,
恭喜你,到這里你的網(wǎng)站已經(jīng)做出來了?。?!
總結(jié):
通過以上操作你可以快速搭建好自己的網(wǎng)站,你的網(wǎng)站用途是什么,就需要你下功夫去布局整理一下了。在此,恭喜你擁有了自己的網(wǎng)站 。