整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          0037 在本地創建一個Web服務器運行網站程序

          0037 在本地創建一個Web服務器運行網站程序

          節課,我們將個人簡介網站編寫完成了。

          這節課,要將網站發布到局域網可以訪問。

          不同操作系統選擇不同的Web服務程序

          前面課程里面有講過不同的計算機上有不同的操作系統。

          大多數人使用的Windows系統,前面的教程是樹莓派Raspbian系統,學哥常用的是Mac系統。

          那么在不同的操作系統上,就可能需要安裝不同的Web服務器程序,來對外提供Web服務。

          下面針對2種具體的代表性操作系統,詳細說明應該如何安裝配置Web服務程序。

          分別是:Windows7、Raspbian。

          Windows系統是使用人數最多的系統,Windows7是比較常用的。

          樹莓派電腦是前面課程中很多同學用來學習的電腦,Raspbian系統也可作為Linux的代表性。

          下節課將說明如何將網站部署到阿里云的Ubuntu系統服務器上,Ubuntu也是基于Linux的,很多操作步驟和Raspbian類似。

          如果有同學使用的是Mac系統,那么可以考慮安裝一個虛擬機程序VMware Fusion,然后在里面安裝一個Windows系統或者Ubuntu系統都可以。具體如何安裝虛擬機程序,不是學哥教程的重點,因此請大家去網上搜索關鍵字“Mac Vmware Fusion Windows”。

          Windows7系統安裝phpStudy

          學哥推薦phpstudy程序,可以很方便的安裝配置好Web服務程序。

          它包含了常見的Web服務程序包括Apache或者Nginx,和PHP,和數據庫MySQL,集成在一起了。

          下載地址:http://www.phpstudy.net/phpstudy/phpStudy20161103.zip

          將下載好的phpStudy20161103.zip文件移動到C盤根目錄下:

          然后,鼠標右鍵單擊,在彈出菜單里面選擇【全部提取(T)...】:

          然后,點擊【提取】按鈕,完成之后,看到目錄C:\phpStudy20161103下面出現了幾個文件:

          然后,鼠標雙擊文件phpStudy20161103.exe,啟動安裝程序:

          修改目標文件夾為C:\phpStudy,點擊OK按鈕,等待解壓完成,出現確認界面:

          點擊按鈕【是】,phpStudy程序將啟動,會彈出防火墻確認mysqld畫面:

          點擊按鈕【允許訪問】,然后在另外一個彈出防火墻確認Apache HTTP Server畫面:

          點擊按鈕【允許訪問】,完成之后,可以看到phpStudy程序已經啟動好了:

          看到phpStudy程序的運行狀態里面,Apache和MySQL后面是2個綠燈,則表示Web服務程序環境配置好了。

          如果看到有紅燈,則說明可能有問題,這時候就需要排查原因。

          一般來說,可能出錯的原因主要是電腦系統里面可能曾經已經安裝過其它Web服務程序,占用了80端口;

          或者是已經安裝了MySQL數據庫程序,占用了3306端口。

          這時候,解決辦法一般是先刪除其它相關軟件,然后關閉并重新啟動phpStudy程序進行嘗試。

          如果還有錯誤,則需要到C:\phpStudy20161103目錄下查看manual.chm文件,里面有關于常見錯誤的解決方案。

          今后,在學習PHP和MySQL的時候,還會用到這個Web服務程序phpStudy。

          將網站程序部署到phpStudy對應目錄

          來整理一下,前面的個人簡介網站程序總共有哪些:

          index.html

          index.css

          project1.html

          project2.html

          images8128.gif

          images\appkeys1.png

          images\appkeys2.png

          images\appkeys3.png

          images\back.png

          images\back1.jpg

          images\background1.jpg

          images\coke11.png

          images\coke12.png

          images\coke13.png

          images\coke14.png

          總共是3個html文件,1個css文件,1個images目錄,images目錄下有11個圖片文件。

          打開“文件資源管理器”程序,找到目錄“C:\phpStudy\WWW”,將4個文件和images目錄復制到這個WWW目錄下:

          然后,程序就部署好了,就可以打開瀏覽器訪問啦。

          打開Chrome瀏覽器,輸入地址http://localhost/index.html就可以看到個人簡介網站了:

          可以看到,這里的localhost就是一個網絡ip,相當于告訴Web服務程序,訪問的是本機。

          localhost只有當Web服務程序和瀏覽器客戶端是同一臺機器時才有效。

          如果換了另外一臺計算機,輸入http://localhost/index.html就看不到網站了,因為另外一臺計算機上面并沒有運行phpStudy這個Web服務程序,也沒有部署網站。

          那么,在局域網的另外一臺計算機上,應該如何通過瀏覽器訪問這個網站呢?

          局域網另外一臺計算機訪問網站

          前面課程里有講過,兩臺計算機之間要互相訪問的前提是,存在物理連接,也就是能夠有網絡連接。

          也就是2臺計算機通過網絡可以連接在一起。

          網絡連接最重要的是知道對方的地址,也就是網絡IP地址。

          通過另外一臺計算機來訪問Web服務程序,就必須知道提供Web服務程序的計算機的網絡地址。

          在Windows系統里面,可以通過在cmd命令行環境里面輸入命令ipconfig來查看當前計算機的網絡IP地址。

          在phpStudy程序所在的計算機上,點擊左下角的【開始】圖標,然后在“搜索程序和文件”這個輸入框中輸入【cmd】,然后按回車鍵,就可以打開cmd.exe程序,在里面輸入命令ipconfig回車,來查看網絡IP地址:

          可以看到,“IPv4 地址”對應就是當前計算機的網絡IP地址,學哥這個網絡環境是192.168.36.230。

          然后在另外一臺計算機上面,打開Chrome瀏覽器,輸入網址:http://192.168.36.230/index.html,就可以看到網站了:

          如果,訪問的地址不正確,或者兩個計算機并沒有網絡連通,可能就看不到網站了,這時候就需要檢查網絡。

          可以在另外一臺計算機上面通過在cmd命令行環境輸入ping 192.168.36.230來測試是否能夠網絡連通:

          如果看到回復的文字里面有,時間<x秒的信息,就說明是網絡連通的。

          如果看到請求超時的信息,就說明網絡是不通的。這時候就要去檢查網絡連接或者路由器設置等等。

          樹莓派電腦安裝Web服務程序

          打開樹莓派電腦的程序“LX終端”,按次序輸入以下命令:

          安裝和啟動nginx服務程序:

          $sudo apt-get update

          $sudo apt-get install -y nginx

          $sudo /etc/init.d/nginx start

          然后在樹莓派電腦上打開【Chromium網頁瀏覽器】,輸入網址:http://localhost,可以看到如下的效果:

          說明nginx這個Web服務程序安裝和啟動好了。

          將網站程序部署到nginx對應目錄

          如果是在樹莓派電腦上編寫的個人簡介網站程序,那么程序應該是在/home/pi這個目錄下。

          將前面說明的4個文件和images目錄復制到/var/www/html目錄下:

          然后在樹莓派電腦上打開【Chromium網頁瀏覽器】,輸入網址:http://localhost/index.html,可以看到如下的效果:

          如果不是在樹莓派電腦上編寫的個人簡介網站程序,但是又想將網站部署到樹莓派電腦上,那么就需要利用ftp軟件工具將程序代碼上傳到樹莓派電腦上,這個可以參考第1章的課程,如何上傳文件。

          如果是要在另外一臺計算機上面訪問樹莓派電腦作為主機的網站,則需要知道樹莓派電腦的IP地址。

          可以在樹莓派電腦的“LX終端”里面輸入命令ifconfig來查詢樹莓派電腦的IP地址:

          然后在另外一臺計算機上面訪問: http://192.168.5.109/index.html,類似訪問前面Windows電腦上部署的網站一樣的。

          測試網站

          網站程序部署好了之后,就可以在另外的計算機上通過瀏覽器來進行測試了。

          一般為了保證讓盡可能多人可以正常訪問我們部署的網站,需要在常用的一些瀏覽器程序上進行測試。

          例如:IE瀏覽器,Edge瀏覽器,Chrome瀏覽器,Safari瀏覽器,Firefox瀏覽器。

          在另外的計算機上安裝好這些瀏覽器,然后輸入網站地址,分別進行測試每一個頁面,確保顯示效果都是符合預期的。

          這里課程的主要目的還是講解編程,關于測試就不深入講解了,等大家如果從事IT行業之后再進行深入學習。

          課后練習

          準備好100元錢放在支付寶里面,用于購買阿里云網站服務器。

          往期教程

          因為教程是系列教程,前后關聯性非常強,請大家按照微信公眾號【零基礎學編程】的歷史消息發布時間先后次序進行閱讀。

          在前端開發領域某些特性下需要依賴HTTPS,例如:navigator.geolocation.getCurrentPosition / new Notification 等。

          由于大多數開發環境中都只是HTTP協議下,所以會導致調試比較困難, 這個時候就需要給本地配置HTTPS了。

          給本地配置SSL證書一般情況下都是自己 生成自簽名CA證書 , 這種方式最大的問題就是無法建立安全, 然而這樣并沒有什么卵用。

          為了解決這個問題, 這里使用了 mkcert。

          mkcert是一個簡單的零配置工具,可以使用您喜歡的任何名稱制作本地可信賴的SSL開發證書,是Google某位工程師用Go開發出來的。

          安裝mkcert

          Mac用戶

          brew install mkcert
          brew install nss
          

          Windows用戶

          前提先安裝 Chocolatey

          choco install mkcert
          

          安裝CA

          mkcert自動在系統根存儲中創建并安裝本地CA

          mkcert -install
          

          生成證書

          每個域名以空格進行分割,下面3個本地域名基本是能夠滿足大部分場景的,除非使用IP

          mkcert localhost 127.0.0.1 ::1
          

          會在當前目錄下生成2個文件,生成的證書有效期是10年,足夠用了,并且可以給本地所有端口使用,所以只生成一次即可。

          配置HTTPS

          有了證書之后就是配置的事情了,相當簡單:

          nginx

          server {
           listen 7777;
           server_name localhost;
           ssl on;
           root html;
           index index.html index.htm;
           # 把生成的證書路徑引入進來即可
           ssl_certificate ../localhost+2.pem;
           ssl_certificate_key ../localhost+2-key.pem;
           ssl_session_timeout 5m;
           ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
           ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
           ssl_prefer_server_ciphers on;
           location / {
           root /www;
           index index.html index.htm;
           }
          }
          

          node.js

          Node不使用系統根存儲,因此它不會自動接受mkcert證書。必須設置 NODE_EXTRA_CA_CERTS 環境變量:

          export NODE_EXTRA_CA_CERTS="$(mkcert -CAROOT)/rootCA.pem"
          
          const https=require('https');
          const fs=require('fs');
          const options={
           key: fs.readFileSync('../localhost+2.pem'),
           cert: fs.readFileSync('../localhost+2-key.pem')
          };
          https.createServer(options, (req, res)=> {
           res.writeHead(200);
           res.end('hello world\n');
          }).listen(8000);
          

          最后

          生成的證書只能用于本地測試,不要在線上使用。

          目前幾乎所有的網站都開啟了SSL,為了使自己在開發中方便調試,建議本地配置上,只是2分鐘的事情。

          一篇文章我給大家說明了如何從零開始搭建一個node的服務端框架,我們用到了Egg框架。Egg框架我不再過多介紹,如果有小伙伴想了解,可以回去看我以前寫的文章,會有相關的介紹。這次我將在上次搭建的框架上進行延伸,講一下如果用Egg框架連接數據庫,并且實現對數據的增刪查改。接下來我們直接進入主題。

          安裝數據庫插件

          我本次選用的數據庫是MySQL。所以我們安裝Egg官方的數據庫插件即可,首先我們安裝插件 egg-mysql我們在項目根目錄打開命令提示符,輸入命令行:npm i --save egg-mysql 。回車等待插件下載安裝完成。

          npm i --save egg-mysql

          配置插件

          命令行下載安裝插件完成后,我們下一步的工作就是在項目中開啟并配置egg-mysql插件。具體操作如下:

          首先我們要在項目中開啟數據庫。找到項目中的/config/plugin.js文件我們需要在里面添加幾行代碼,如下所示。

          //開啟數據庫插件
            mysql : {
              enable: true,
              package: 'egg-mysql',
            }

          然后我們還要在 config/config.default.js 中配置各個環境的數據庫連接信息。具體配置如下。

          //添加數據庫連接信息
            config.mysql={
              // 單數據庫信息配置
              client: {
                // host
                host: 'localhost',
                // 端口號
                port: '3306',
                // 用戶名
                user: 'root',
                // 密碼
                password: '123456',
                // 數據庫名
                database: 'testdb',
              },
              // 是否加載到 app 上,默認開啟
              app: true,
              // 是否加載到 agent 上,默認關閉
              agent: false,
            };

          到此步驟我們的數據庫插件已經安裝完成并且配置好了。那我們怎么實現數據的增刪查改呢?大家請繼續往下看。

          數據操作-新增用戶

          首先我們看一下怎么新增數據。我們在mysql的testdb實例中新建一個user空表。如下圖所示。

          我們的egg框架也遵循MVC的架構所以我們一般會在service層里面寫我們邏輯處理的代碼,而controller層則是獲取前端數據,回傳數據的控制層。所以我們操作數據庫的代碼是寫在service文件夾里面的。

          我們在app/service文件夾里面新建一個user.js文件。在里面寫個新增用戶的方法,該方法就是把數據存到數據庫中。具體代碼如下。

          const Service=require('egg').Service;
          
          class UserService extends Service {
          
            //新增用戶data是有controller層傳遞過來的數據記錄。
            async addUser(data) {
          
              const {ctx, app}=this;
              let result={};
              try {
                data.id=0;//定義id=0,因為數據庫已經設置id為主鍵,并且自增。所以只需要賦值0即可。
                // 在 user 表中,插入前端提交上來的數據記錄
                const info=await app.mysql.insert('user', data); 
            
                //插入成功后。
                if(info.affectedRows===1){
                  //給前端返回一個Json的對象
                  result={
                    state: 0, //自定義的狀態碼
                    msg: "添加成功", //返回的消息
                    data: info.insertId, //新增的記錄的id
                  }
                }
          
              } catch (err) {
                //插入數據失敗的返回結果
                result={
                  state: 1, 
                  msg: err,
                  data: null,
                }
              }
              
              return result
            }
          };
          module.exports=UserService;

          然后我們在app/controller文件夾里新建一個user.js文件。在這里我們需要獲取前端提交上來的數據,并且將數據處理的結果返回給前端。具體代碼如下。

          'use strict';
          
          const Controller=require('egg').Controller;
          /**
           * @Controller 用戶管理
           */
          class UserController extends Controller {
          
            /**
            * @summary 新增用戶
            * @router post /user/add
            * @request body userAddRequest 
            * @response 200 
            */
            async addUser() {
              const { ctx }=this;
          
              //通過ctx.request.body的方式,可以獲取到前端post方式提交上來的數據
              const data=ctx.request.body;
          
              //調用service層的addUser方法。并且返回相應的結果
              const userInfo=await ctx.service.user.addUser(data);
              
              //向前端接口響應數據。
              ctx.body=userInfo;
            }
          
          }
          
          module.exports=UserController;

          最后我們定義一個路由,讓前端請求訪問此路由。框架會監聽路由是否被訪問,如果被訪問了則會調用我們定義在controller層的新增用戶的方法。我們在app/router.js文件中添加如下代碼,即可完成路由的定義。

          //新增用戶路由
            router.post('/user/add', controller.user.addUser);

          完成這步驟后,我們一個新增用戶的功能就已經完成了。接下里我們就測試一下它的實際效果。我們運行命令:npm run dev。啟動項目,然后打開網頁http://127.0.0.1:7001,可以直接在swagger-ui.html頁面中進行測試。結果如下圖所示。

          經過測試,數據已經添加完成。所以數據庫連接也是正常的。

          本次分享暫時先告一段落。請各位小伙伴抬起你們發財的小手,點個贊唄。下次我將會進行和大家分享對數據查改刪的方法。關注我!!!更多精彩分享不迷路。


          主站蜘蛛池模板: 蜜桃视频一区二区| 国产在线观看91精品一区| 亚洲成av人片一区二区三区 | 一区二区网站在线观看| 国产在线精品一区二区三区直播 | 国产福利微拍精品一区二区 | 精品久久综合一区二区| 精品少妇一区二区三区在线 | 精品成人乱色一区二区| 国产一区二区三区福利| 亚洲综合av永久无码精品一区二区| 久久精品一区二区三区AV| 国产精品无码不卡一区二区三区| 亚洲一区无码中文字幕乱码| 一区二区日韩国产精品| 波多野结衣一区二区三区高清在线| 色国产精品一区在线观看| 中文字幕亚洲乱码熟女一区二区| 一区二区传媒有限公司| 日韩亚洲一区二区三区| 精品一区二区无码AV| 精品3d动漫视频一区在线观看| 成人国产精品一区二区网站公司| 69久久精品无码一区二区| 亚洲一区动漫卡通在线播放| 日本在线一区二区| 日韩av无码一区二区三区| 亚洲一区二区三区四区在线观看| 国产福利电影一区二区三区,日韩伦理电影在线福 | 国产精品视频无圣光一区| 精品一区二区三区AV天堂| 相泽南亚洲一区二区在线播放| 极品尤物一区二区三区| 人体内射精一区二区三区| 78成人精品电影在线播放日韩精品电影一区亚洲| 亚洲国产成人久久综合一区77 | 综合久久一区二区三区| 精品无码成人片一区二区98| 亚洲日韩精品国产一区二区三区| 最新欧美精品一区二区三区| 免费人妻精品一区二区三区|