Score:0

เซิร์ฟเวอร์ไม่แสดงเว็บไซต์หลังจากการกำหนดค่าเซิร์ฟเวอร์ mysql ล้มเหลว

ธง in

ฉันเริ่มได้รับข้อผิดพลาดนี้เมื่อฉันติดตั้ง mysql_server บนเซิร์ฟเวอร์ในฐานะรูท ฉันใช้ ufw ฉันไม่รู้ว่าฉันควรจะอนุญาตเซิร์ฟเวอร์ mysql ผ่าน ufw ของฉันหรือไม่ ถ้าฉันควรจะทำ ฉันก็ไม่รู้เหมือนกัน บนเซิร์ฟเวอร์ภายในของฉัน ฉันได้รับข้อผิดพลาดนี้:

ภายใน/โมดูล/cjs/loader.js:638
    โยนผิด;
    ^

ข้อผิดพลาด: ไม่พบโมดูล 'mysql'
    ที่ Function.Module._resolveFilename (ภายใน/โมดูล/cjs/loader.js:636:15)
    ที่ Function.Module._load (ภายใน/โมดูล/cjs/loader.js:562:25)
    ที่ Module.require (ภายใน/โมดูล/cjs/loader.js:692:17)
    ที่ต้องการ (ภายใน/โมดูล/cjs/helpers.js:25:18)
    ที่ Object.<anonymous> (/mnt/c/Users/user/Documents/webdevelopment/projects/FinalYearProject/Black-Anthem-Ltd-Website/app.js:4:13)
    ที่ Module._compile (ภายใน/โมดูล/cjs/loader.js:778:30)
    ที่ Object.Module._extensions..js (ภายใน/โมดูล/cjs/loader.js:789:10)
    ที่ Module.load (ภายใน/โมดูล/cjs/loader.js:653:32)
    ที่ tryModuleLoad (ภายใน/โมดูล/cjs/loader.js:593:12)
    ที่ Function.Module._load (ภายใน/โมดูล/cjs/loader.js:585:3)

โดยเฉพาะอย่างยิ่งมันบอกว่าไม่พบ mysql ในไดเร็กทอรีของฉัน ฉันพยายามเชื่อมต่อแบบฟอร์ม html กับฐานข้อมูล mysql ก่อนที่ฉันจะติดตั้ง mysql_server และเริ่มประสบปัญหานี้ นี่คือรหัสแบบฟอร์ม html ของฉัน: แบบฟอร์มสมาชิกหน้าแรก:

<div class="subsect">
        <div id="subtxt">
            <h1>Subscribe to our Newsletter!</h1>
        </div>
        <div id="subform">
            <form action="/" method="post">
                <div class="ol"><div class="nam" >Name</div><div id="rsik">*</div></div>
                <div class="sd ssd"><input type="text" name="fname" placeholder="First" id="fn">
                <input type="text" name="lname" placeholder="Last" id="ln" ></div>
                <div class="ol"><div class="nam" >E-mail</div><div id="rsik">*</div></div>
                <div class="sd"></span><input type="email" name="email" placeholder="[email protected]" id="email"></div></br>
                <button type="submit">Subscribe</button>
            </form>
        </div>
    </div>

แบบฟอร์มหน้าขอใบเสนอราคา:

<div id="formsection">
                <form action="/RAQ" method="post" id="raqform">
                    <h2>Request A Quote</h2>
                    <div class="ol"><div class="nam" >Name</div><div id="rsik">*</div></div>
                    <div class="sd ssd"><input type="text" name="sfname" placeholder="First" id="fn">
                    <input type="text" name="slname" placeholder="Last" id="ln" ></div>
                    <div class="ol"><div class="nam" >E-mail</div><div id="rsik">*</div></div>
                    <div class="sd"><input type="email" name="semail" placeholder="[email protected]" id="email"></div>
                    <div class="ol"><div class="nam" >Select A Service</div><div id="rsik">*</div></div>
                    <div class="sd">
                        <select name="services" id="ser" class="sd">
                            <option value="RDCCC">Roads, Drainage, Culverts and channels construction</option>
                            <option value="CON">Consultancy</option>
                            <option value="DIC">Dams and irrigation Construction</option>
                            <option value="WMPFC">Warehousing, Marine and port facilities construction</option>
                            <option value="CHEIUPW">Construction of concrete hard surfaces especially in unfriendly polluted water</option>
                            <option value="CBHF">Consultation on buildings and feasibility</option>
                            <option value="CIMS">Calibration, inspection and meter proving services</option>
                            <option value="DCOGPPF">Design and Construction of oil and gas production and processing facilities</option>
                            <option value="DCPS">Design and Construction of pipeline Systems</option>
                            <option value="DCRPP">Design and Construction of refineries and petrochemical plants</option>
                            <option value="ROGF">Rehabilitation of oil and gas facilities (Onshore and Offshore)</option>
                            <option value="DCMTF">Design, Construction and Maintenance of tank farms</option>
                            <option value="DCMUS">Design, Construction and Maintenance of flow stations and underground storage</option>
                            <option value="LIP">Local and international procurement</option>
                            <option value="SSFP">Support services for projects</option>
                            <option value="CMSL">Civil and mechanical equipment supply and leasing</option>
                            <option value="HSEFPSMS">Health and safety environment and fire protection systems materials supply</option>
                            <option value="EFPSMS">Environment and fire protection systems materials supply</option>
                            <option value="SSS">Structural steel supply</option>
                            <option value="POCTG">Pipeline and oil country tubular goods (OCTG) supply </option>
                            <option value="WHCPS">Wellheads and control supply</option>
                            <option value="VFS">Valves and fittings supply</option>
                            <option value="PCFSS">Pumps, Compressor and fluid systems supply</option>
                            <option value="SSMPS">Strategic sourcing and man power supplies</option>
                            <option value="LSM">Logistics and supply chain management</option>
                            <option value="PM">Project Management</option>
                            <option value="FM">Facilities Management</option>
                        </select>
                        <div class="ol"><div class="nam" >Message</div><div id="rsik">*</div></div>
                        <div class="sd"><textarea name="comment" id="" cols="30" rows="10">Type your message here</textarea></div>
                    </div>
                    <button type="submit">Request A Quote</button>
                </form>
            </div>

นี่คือไฟล์ app.js ของฉัน:

const ด่วน = ต้องการ ('ด่วน')
เส้นทาง const = ต้องการ ('เส้นทาง')
แอป const = ด่วน ()
var mysql = ต้องการ ('mysql');
var bodyParser = ต้องการ ('ตัวแยกวิเคราะห์')
พอร์ต const = 3000

var urlencodedParser = bodyParser.urlencoded({ ขยาย: เท็จ })

// ไฟล์คงที่
app.use(express.static(path.resolve(__dirname, 'สาธารณะ')))


//ตั้งค่ามุมมอง
app.set('ดูเครื่องยนต์', 'ejs')

app.set('มุมมอง', './มุมมอง')

app.get('/', (req, res) => {
  res.render ('หน้าแรก')
})

app.get('/About', (req, res) => {
  res.render('เกี่ยวกับ')
})

app.get('/Projects', (req, res) => {
  res.render('โครงการ')
})

app.get('/RAQ', (req, res) => {
  res.render('RAQ')
})

app.get('/', (req, res) => {
  res.render('บ้าน', {qs: req.query});
})

app.post('/', urlencodedParser, (req, res) => {
  res.render('บ้าน', {qs: req.query});
})

app.get('/raq', (req, res) => {
  res.render('raq', {qs: req.query});
})
app.post('/raq', urlencodedParser, (req, res) => {
  res.render('raq', {qs: req.query});
})
การเชื่อมต่อ var = mysql.createConnection({
  โฮสต์: 'https://www.blackanthemltd.site',
  ผู้ใช้ : 'อะบาโยมิ',
  รหัสผ่าน : '',
  ฐานข้อมูล: 'สมาชิก'
});
 
การเชื่อมต่อ การเชื่อมต่อ (ฟังก์ชัน (ข้อผิดพลาด) {
  ถ้า (ผิดพลาด) โยนผิดพลาด;
  console.log('เชื่อมต่อแล้ว..')
});

app.post('/', function(req,res){
  console.log(req.body);

  var sql ="แทรกลงในค่าผู้ใช้ ('"+req.body.fname+"','"+req.body.lname+"',"+req.body.email+")"
  Connection.query (SQL, ฟังก์ชัน (ข้อผิดพลาด, ผลลัพธ์) {
    ถ้า (ข้อผิดพลาด) โยนข้อผิดพลาด;
    console.log('วิธีแก้ปัญหาคือ:', ผลลัพธ์[0].solution);
  });

  res.render('หน้าแรก', { ชื่อเรื่อง: 'ข้อมูลที่บันทึกไว้',
  ข้อความ: 'บันทึกข้อมูลเรียบร้อยแล้ว'})

  การเชื่อมต่อสิ้นสุด ();
})

การเชื่อมต่อ var2 = mysql.createConnection ({
  โฮสต์: 'https://www.blackanthemltd.site',
  ผู้ใช้ : 'อะบาโยมิ',
  รหัสผ่าน : '',
  ฐานข้อมูล : 'Quotation_requests'
});
 
connection2.connect(ฟังก์ชั่น(ผิดพลาด){
  ถ้า (ผิดพลาด) โยนผิดพลาด;
  console.log('เชื่อมต่อแล้ว..')
});

app.post('/RAQ', function(req,res){
  console.log(req.body);

  var sql ="แทรกลงในค่าผู้ใช้ ('"+req.body.sfname+"', '"+req.body.slname+"', '"+req.body.semail+"', '"+req.body.services+ "', "+req.body.comment+")"
  Connection2.query (SQL, ฟังก์ชัน (ข้อผิดพลาด, ผลลัพธ์) {
    ถ้า (ข้อผิดพลาด) โยนข้อผิดพลาด;
    console.log('วิธีแก้ปัญหาคือ:', ผลลัพธ์[0].solution);
  });

  res.render('RAQ', { ชื่อเรื่อง: 'ข้อมูลที่บันทึกไว้',
  ข้อความ: 'บันทึกข้อมูลเรียบร้อยแล้ว'})

  การเชื่อมต่อ 2.end ();
})

app.listen(พอร์ต, () => {
      console.log(`ตัวอย่างแอปที่กำลังฟังที่ http://localhost:${port}`)
})


นี่คือไฟล์ package.json ของฉันบนเซิร์ฟเวอร์ระยะไกล:

{
  "ชื่อ": "balfyp",
  "เวอร์ชัน": "1.0.0",
  "รายละเอียด": "โครงการปีสุดท้าย",
  "หลัก": "app.js",
  "สคริปต์": {
    "ทดสอบ": "echo \"ข้อผิดพลาด: ไม่ได้ระบุการทดสอบ\" && ออก 1",
    "start": "nodemon app.js"
  },
  "ผู้เขียน": "อะบาโยมิ",
  "ใบอนุญาต": "MIT",
  "การพึ่งพา": {
    "คอร์": "^2.8.5",
    "ejs": "^3.1.6",
    "ด่วน": "^4.17.1"
  },
  "devDependencies": {
    "โหนดมอน": "^2.0.12"
  }
}

นี่คือไฟล์ package.json ของฉันบนเซิร์ฟเวอร์จริงของฉัน:

{
  "ชื่อ": "balfyp",
  "เวอร์ชัน": "1.0.0",
  "รายละเอียด": "โครงการปีสุดท้าย",
  "หลัก": "app.js",
  "สคริปต์": {
    "ทดสอบ": "echo \"ข้อผิดพลาด: ไม่ได้ระบุการทดสอบ\" && ออก 1",
    "start": "nodemon app.js"
  },
  "ผู้เขียน": "อะบาโยมิ",
  "ใบอนุญาต": "MIT",
  "การพึ่งพา": {
    "ตัวแยกวิเคราะห์": "^1.19.0",
    "คอร์": "^2.8.5",
    "ejs": "^3.1.6",
    "ด่วน": "^4.17.1",
    "mysql": "^2.18.1",
    "nodemailer": "^6.6.3",
    "nodemailer-mailgun-transport": "^2.1.3"
  },
  "devDependencies": {
    "โหนดมอน": "^2.0.12"
  }
}

ได้โปรด ฉันทำอะไรผิด ฉันได้ทำการเปลี่ยนแปลงบางอย่างกับ codebase ของฉันแล้ว หน้าเว็บของฉันหยุดแสดงข้อผิดพลาดและโหลดได้ดี ซึ่งแสดงว่า mysql เชื่อมต่อสำเร็จแล้ว แต่เมื่อคลิกปุ่มส่งในแบบฟอร์มของฉันหลังจากกรอกข้อมูลแล้ว ฉันได้รับข้อผิดพลาด:

ไม่สามารถโพสต์ /

นี่คือการเปลี่ยนแปลงที่ฉันทำกับ codebase โดยเฉพาะกับไฟล์ app.js ของฉัน:

const ด่วน = ต้องการ ('ด่วน')
    เส้นทาง const = ต้องการ ('เส้นทาง')
    แอป const = ด่วน ()
    var mysql = ต้องการ ('mysql');
    var bodyParser = ต้องการ ('ตัวแยกวิเคราะห์')
    พอร์ต const = 3000
    
    var urlencodedParser = bodyParser.urlencoded({ ขยาย: เท็จ })
    
    // ไฟล์คงที่
    app.use(express.static(path.resolve(__dirname, 'สาธารณะ')))
    
    
    //ตั้งค่ามุมมอง
    app.set('ดูเครื่องยนต์', 'ejs')
    
    app.set('มุมมอง', './มุมมอง')
    
    app.get('/', (req, res) => {
      res.render ('หน้าแรก')
    })
    
    app.get('/About', (req, res) => {
      res.render('เกี่ยวกับ')
    })
    
    app.get('/Projects', (req, res) => {
      res.render('โครงการ')
    })
    
    app.get('/RAQ', (req, res) => {
      res.render('RAQ')
    })
    
    app.get('/', (req, res) => {
      res.render('บ้าน', {qs: req.query});
    })
    
    app.post('/', urlencodedParser, (req, res) => {
      res.render('บ้าน', {qs: req.query});
    })
    การเชื่อมต่อ var = mysql.createConnection({
      โฮสต์: 'https://www.blackanthemltd.site',
      ผู้ใช้: 'รูท',
      รหัสผ่าน : 'Mynameisabayomi1.',
      ฐานข้อมูล : 'บาล'
    });
     
    การเชื่อมต่อ การเชื่อมต่อ (ฟังก์ชัน (ข้อผิดพลาด) {
      ถ้า (ผิดพลาด) โยนผิดพลาด;
      console.log('เชื่อมต่อแล้ว..')
    });
    app.post('/', function(req,res){
      console.log(req.body);
    
      var sql ="แทรกลงในค่าผู้ใช้ ('"+req.body.fn+"','"+req.body.ln+"',"+req.body.email+")"
      Connection.query (SQL, ฟังก์ชัน (ข้อผิดพลาด, ผลลัพธ์) {
        ถ้า (ข้อผิดพลาด) โยนข้อผิดพลาด;
        console.log('วิธีแก้ปัญหาคือ:', ผลลัพธ์[0].solution);
      });
    
      res.render('หน้าแรก', { ชื่อเรื่อง: 'ข้อมูลที่บันทึกไว้',
      ข้อความ: 'บันทึกข้อมูลเรียบร้อยแล้ว'})
    
      การเชื่อมต่อสิ้นสุด ();
    })
    app.listen(พอร์ต, () => {
          console.log(`ตัวอย่างแอปที่กำลังฟังที่ http://localhost:${port}`)
    })

ได้โปรดฉันจะหยุดรับข้อผิดพลาดนี้ได้อย่างไร

in flag
MySQL อยู่บนเซิร์ฟเวอร์เดียวกับโฮสต์เว็บหรือไม่ หรือ MySQL ทำงานบนเซิร์ฟเวอร์แยกต่างหาก
Abayomi Usman avatar
in flag
อยู่บนเซิร์ฟเวอร์เดียวกับโฮสต์เว็บ
Score:0
ธง in

หาก MySQL ทำงานบนเครื่องเดียวกันกับเว็บเซิร์ฟเวอร์ คุณไม่จำเป็นต้องแก้ไขอะไรกับ UFWคุณจะต้องเปลี่ยนการตั้งค่าการเชื่อมต่อของคุณแทน:

การเชื่อมต่อ var = mysql.createConnection({
    โฮสต์: '127.0.0.1',
    ผู้ใช้ : 'myWebApp',
    รหัสผ่าน : 'superSecretPassword!123.',
    ฐานข้อมูล : 'บาล'
});

หมายเหตุ:

  1. เดอะ เจ้าภาพ มูลค่าโดยทั่วไป 127.0.0.1 หรือ โลคัลโฮสต์ เมื่อฐานข้อมูลอยู่ในระบบเดียวกับเว็บเซิร์ฟเวอร์
  2. คุณไม่สามารถ (ได้อย่างง่ายดาย) ใช้ไฟล์ ราก บัญชี MySQL สำหรับเว็บแอปพลิเคชันอีกต่อไป ดังนั้นคุณจะต้องสร้างบัญชีใหม่ที่สามารถเข้าถึงฐานข้อมูลที่คุณใช้:
    1. เชื่อมต่อกับ MySQL บนเซิร์ฟเวอร์
      sudo mysql -u รูท
      
      บันทึก: นี่คือวิธีที่ ราก เข้าถึงบัญชี MySQL ได้แล้ว คุณต้องมี ซูโด สิทธิพิเศษบนเซิร์ฟเวอร์ นี่เป็นคุณลักษณะด้านความปลอดภัยและหนึ่งในหลายสาเหตุที่เว็บเซิร์ฟเวอร์ไม่สามารถใช้ ราก บัญชีอีกต่อไป
    2. สร้างบัญชีใหม่และให้สิทธิ์เข้าถึงเฉพาะฐานข้อมูลที่เว็บไซต์ต้องการเท่านั้น:
      สร้างผู้ใช้ 'baluser' @ 'localhost' ระบุด้วย mysql_native_password โดย 'superSecretPassword!123';
      ให้ทั้งหมดบน `bal`.* TO 'baluser'@'localhost';
      

สิ่งนี้ควรให้สิ่งที่คุณต้องการในการเริ่มต้น

Abayomi Usman avatar
in flag
โอเค ให้ฉันลองทำดู หวังว่ามันจะได้ผล
Abayomi Usman avatar
in flag
โอเค ให้ฉันลองทำดู หวังว่ามันจะได้ผล

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา