1. 程式人生 > >騰訊雲CentOS7 LAMP(linux的apache MariaDB php)yum方式部署

騰訊雲CentOS7 LAMP(linux的apache MariaDB php)yum方式部署

伺服器初始化配置過程:

1、建立新的使用者

    useradd bym //新增一個使用者
    passwd bym  //為使用者建立密碼
    Changing password for user bym.
    New password: 
    Retype new password: 
    passwd: all authentication tokens updated successfully.

2、配置使用者的ssh祕鑰

  • mkdir /home/bym/.ssh //在要建立ssh祕鑰的使用者家目錄下建立.ssh目錄
  • cp authorized_keys /home/bym/.ssh/
    //這個祕鑰是在伺服器管理平臺建立並且繫結到root使用者的,把此公鑰檔案拷貝到bym家目錄下的.ssh檔案中
  • vim authorized_keys //刪除原有的rsa,在伺服器管理平臺建立並下載祕鑰公鑰到客戶機,複製公鑰內容到此檔案中
  • 在客戶機的securecrt中建立ssh登入點,並且選擇publickey登入,選擇下載到的公鑰檔案(.pub檔案)。

SecureCRT的幾種登入方法

2.1 使用密碼通過ssh登陸

2.1.1 在ssh的配置檔案中找到

#PasswordAuthentication no
改為
PasswordAuthentication yes


此時允許ssh使用密碼進行登入,但是不夠安全,可以在pam模組中加入登陸限制

2.1.2 加入登陸限制

/etc/pam.d/sshd中加入
auth required pam_listfile.so item=user sense=allow file=/etc/ssh/sshd-users
其中最後的那個路徑代表你的使用者限制名單所在的檔案,如果沒有的話需要自己修改目錄或者是建立與上述路徑相符的目錄以及檔案
sense=allow代表檔案裡面寫的是允許登陸的使用者名稱單,如果改為deny那就是拒絕登陸的使用者名稱單,建議還是使用allow選項

2.1.3 然後在/etc/ssh/sshd-users裡面加入想要從外界登入進來的使用者,不必重啟ssh即可使用

2.2 通過rsa公鑰的方式登入

2.2.1 建立祕鑰

  1. 在客戶端建立rsa公鑰與私鑰,然後儲存公鑰與私鑰到同一個目錄下面,並且要求公鑰和私鑰的名字是相同的,以供securecrt登入
  2. 然後把建立完成的公鑰拷貝到伺服器端的想要登入的使用者的家目錄下面的.ssh資料夾下,並且把該公鑰名字改為authorized_keys以後再對同一使用者新增ssh公鑰的時候直接在authorized_keys檔案末尾鍵入公鑰內容即可

2.2.2 登入

在客戶端機器上面使用securecrt進行登入,選擇建立的ssh連線登入方式為Publickey,把其他的都去掉,然後單擊Publickey選擇Properties之後選定建立的公鑰路徑,之後就可以進行登入了,為避免登入失敗,要將伺服器端的ssh服務重啟一遍,在7.0系統裡面使用systemctl restart sshd.service進行重啟

另外:密碼限制登入使用者與公私鑰登入使用者不衝突

3、將資料盤掛載到根檔案系統上面

我製作了一個磁碟陣列,可以隨時往/data裡面新增容量

製作過程:

LV > VG > PV

  1. 首先用fdisk /dev/sda進行磁碟的新增,並通過t選項設定新增的partionPV格式,即8e
  2. pvcreate /dev/sda9將剛剛製作出來的PVpartion新增入PV去,用pvdisplay進行檢視
  3. vgextend /dev/sda9PV新增到VG裡面
  4. lvresize -L +4G /dev/server/myhome把製作出來的VG新增到LV磁碟陣列裡面去
  5. resize2fs /dev/server/myhome將容量確實的增加(若已經掛載

若開始沒有lv與vg,需要建立lv與vg

vgcreate vg_name /dev/sda
lvcreate -L 4G -n lv_name vg_name

/etc/fstab裡面新增/dev/web-var/lvweb-var /data ext4 defaults 0 0

4、安裝php,資料庫mariadb,apache

寫在前面,使用yum安裝千萬不要更改mysql/mariadb的預設mysql.sock檔案的位置,改了後面會費很大勁的,我是改完才知道的,下面依然是改過路徑的安裝方法,希望讀者遇到改socket路徑的直接跳過

4.1安裝前的準備

  • 使用yum search mariadb > mariadb搜尋yum庫的mariadb相關包,並且把結果存到mariadb裡面,在結果中大概先檢視一下自己需要的東西

mariadb-server 伺服器包
mariadb              mysql分支,完全相容mysql
mariadb-libs      MariaDB/MySQL客戶端必須的共享庫檔案

  • 使用yum search httpd > httpd-rpm搜尋yum庫的httpd相關包,並且把結果存到httpd-rpm裡面,在結果中大概先檢視一下自己需要的東西

httpd               httpd主程式
httpd-manual httpd幫助檔案,可不安裝


  • yum info installed | grep Name列出所有已經安裝的軟體
    使用yum search php > php-extern搜尋yum庫的php相關包,並且把結果存到php-extern裡面,在結果中大概先檢視一下自己需要的東西
php          php主程式包
php-common   php通用程式包
php-devel    新增php擴充套件的時候需要的檔案
php-fpm      PHP FastCGI程序管理器(必須安裝的),在5.3.3之後就整合到php裡面了
php-gd       使php支援gd庫的一個擴充套件模組
php-mcrypt   提供mcrypt庫支援的標準php模組
php-mysql    使php支援mysql(MariaDB)
php-pdo      php連線資料庫方法
php-odbc     使php支援ODBC資料庫
php-snmp     查詢SNMP-managed裝置支援模組
libjpeg*     jpeg支援
php-ldap   
php-pear
php-xml      使php支援xml
php-xmlrpc   使php支援xml-rpc機制
php-mbstring 
php-soap     使php支援soap機制
curl 
curl-devel

4.2 安裝apache

4.2.1 安裝httpd

  • yum install httpd
============================================================================================================
Package                   Arch                 Version                              Repository        Size

============================================================================================================

Installing:
 httpd                     x86_64               2.4.6-40.el7.centos                  os               2.7 M
Installing for dependencies:
 apr                       x86_64               1.4.8-3.el7                          os               103 k
 apr-util                  x86_64               1.5.2-6.el7                          os                92 k
 httpd-tools               x86_64               2.4.6-40.el7.centos                  os                82 k
 mailcap                   noarch               2.1.41-2.el7                         os                31 k
 

可以看到httpd需要有四個依賴檔案,yum會自動先安裝依賴檔案,輸入y進行安裝
Is this ok [y/d/N]: y

###4.2.2 啟動並且測試apache
systemctl start httpd.service  //啟動apache,也可以使用apachectl start進行啟動
netstat -anp | grep httpd      //在網路介面檢視是否有httpd,可以看到使用80埠
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      29478/httpd         
unix  3      [ ]         STREAM     CONNECTED     481766   29478/httpd

apache測試
出現上面資訊說明測試成功

4.3 安裝MariaDB

4.3.1 安裝主程式

  • yum install mariadb mariadb-server
============================================================================================================
 Package                            Arch              Version                           Repository     Size


===========================================================================================================

Installing:
 mariadb                            x86_64            1:5.5.44-2.el7.centos             os            8.9 M
 mariadb-server                     x86_64            1:5.5.44-2.el7.centos             os             11 M
Installing for dependencies:
 perl-Compress-Raw-Bzip2            x86_64            2.061-3.el7                       os             32 k
 perl-Compress-Raw-Zlib             x86_64            1:2.061-4.el7                     os             57 k
 perl-DBD-MySQL                     x86_64            4.023-5.el7                       os            140 k
 perl-DBI                           x86_64            1.627-4.el7                       os            802 k
 perl-Data-Dumper                   x86_64            2.145-3.el7                       os             47 k
 perl-IO-Compress                   noarch            2.061-2.el7                       os            260 k
 perl-Net-Daemon                    noarch            0.48-5.el7                        os             51 k
 perl-PlRPC                         noarch            0.2020-14.el7                     os             36 k
Updating for dependencies:
 mariadb-libs                       x86_64            1:5.5.44-2.el7.centos             os            754 k
Transaction Summary

============================================================================================================

Is this ok [y/d/N]: y

4.3.2 配置mysql

cat /etc/passwd 可以看到有mysql使用者
cat /etc/group 可以看到有mysql使用者組
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin

由於我不想資料庫檔案存放在系統盤,所以想更改一下mysql資料庫檔案的存放位置

groupadd -r mysql -g 27 建立使用者組,名字為mysql,組號為27
useradd -m -r -g mysql -d /data/mysql -s /sbin/nologin -c "MariaDB server" -u 27 mysql 建立使用者
mysql:x:27:27:MariaDB server:/data/mysql:/sbin/nologin
修改mysql家目錄許可權:chown -R mysql:mysql mysql/

  • 更新my.cnf檔案
    複製並且覆蓋my.cnf檔案
    cp /usr/share/mysql/my-huge.cnf /etc/my.cnf

  • 進入編輯my.cnf檔案

[client]標籤改為

#socket         = /var/lib/mysql/mysql.sock
socket          = /data/mysql/mysql.sock

[mysqld]標籤改為

#socket         = /var/lib/mysql/mysql.sock
socket          = /data/mysql/mysql.sock
datadir         = /data/mysql/datadir
  • /data/mysql下建立datadir目錄


    mkdir datadir
    chown -R mysql:mysql datadir/

  • 為mysql建立密碼

    在執行此步之前一定要先執行

    systemctl start mariadb.service    //這裡會建立mysql.sock到上述指定的檔案目錄下
    netstat -anp | grep 3306       //檢視是否啟動mysqld,啟動的話會出現下面資訊
    tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      5348/mysqld
    find -name mysql.sock          //出現 /data/mysql/mysql.sock
    

    出現上述資訊說明已經成功啟動,然後往下執行

  • mysql_secure_installation


    出現ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)錯誤,明明已經修改了路徑,怎麼還是/var/lib/mysql/mysql.sock,檢視mysql_secure_installation指令碼檔案,
    :/Enter current password for root查詢得到get_root_password()裡面有一個make_config函式,進入
    echo “password=$esc_pass” >> $config下增加
    echo “socket=/data/mysql/mysql.sock” >> $config

  • 繼續執行mysql_secure_installation

    enterSet root password? [Y/n] :輸入y
    輸入密碼,確認密碼
    Remove anonymous users? [Y/n] :輸入y,移除匿名使用者,保證資料庫安全性
    Disallow root login remotely? [Y/n] :輸入n,允許root使用者遠端登入,否則作為遠端伺服器是沒有辦法從localhost域在網頁中登入的,這樣就不利於使用phpMyadmin管理資料庫了
    往下一路輸入y,最後出現
    Thanks for using MariaDB!,配置成功
    重啟資料庫 systemctl restart mariadb.service

4.3.3 測試登入MariaDB

mysql -u root -p 輸入密碼登陸之後出現下面資訊,說明登入成功

Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.44-MariaDB-log MariaDB Server
Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
MariaDB [(none)]>

鍵入show databases;然後enter出現類似下面的表,說明成功操作資料庫

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+

鍵入use mysql; show tables;然後enter出現類似下面的表,說明成功操作資料庫

+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| servers                   |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+

較為重要的是user這張表,裡面記錄了可登入的使用者以及密碼等等。

資料庫安裝完成

4.4 安裝php以及其擴充套件元件

4.4.1 安裝php主程式

  • yum install php
============================================================================================================
Installing:
 php                        x86_64                 5.4.16-36.el7_1                 os                 1.4 M
Installing for dependencies:
 libzip                     x86_64                 0.10.1-8.el7                    os                  48 k
 php-cli                    x86_64                 5.4.16-36.el7_1                 os                 2.7 M
 php-common                 x86_64                 5.4.16-36.el7_1                 os                 563 k

Transaction Summary

============================================================================================================

Is this ok [y/d/N]: y

  • rpm -qc php檢視php的配置檔案得到
    /etc/httpd/conf.d/php.conf
    /etc/httpd/conf.modules.d/10-php.conf

  • ls /etc/httpd/conf.d/可以看到有 php.conf配置檔案,此檔案會決定可以讓apache.php檔案進行解析
    檢視配置檔案可以看到有

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>
  • ls /etc/httpd/conf.modules.d/會看到有10-php.conf,此檔案可以讓apache載入php模組對.php內部的php語句進行解析
<IfModule prefork.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>

模組在/etc/httpd/modules/libphp5.so 下面,ls即可看到

4.4.2 測試php主程式是否安裝成功

echo "<?php phpinfo(); ?>" >> index.php`
systemctl restart httpd.service     //重啟**apache**服務

在瀏覽器中輸入IP地址訪問,看是否有以下圖片資訊
php測試

4.4.3 安裝php擴充套件


yum install php-common php-devel php-fpm php-gd php-mcrypt php-mysql php-pdo php-odbc php-snmp libjpeg* php-ldap php-pear php-xml php-xmlrpc php-mbstring php-soap curl curl-devel gd

5、配置php,資料庫mariadb,apache

5.1 配置apache

ServerName www.example.com:80
將此行的註釋去掉,改為自己的域名,如果沒有域名就是用IP地址

<IfModule dir_module>
    DirectoryIndex index.html //在這裡新增index.php
</IfModule>

AddDefaultCharset UTF-8改為
AddDefaultCharset GB-2312

我這裡替換所有的var到我自己的網頁存放目錄
:g/var/s//data/g

5.2、配置php

vim /etc/php.ini
:/default_charset   //在vim編輯器裡查詢

;default_charset = “UTF-8”下面新增
default_charset = “gb2312”

:/extension

; extension=msql.so,在下面新增

extension=mysql.so
extension=mysqli.so

/* 經由測試其實不用新增,在php安裝的時候已經寫死了 */

6、聯合測試

6.1 測試php對mysql的支援

  • 進入資料庫管理
CREATE USER 'bym'@'%' IDENTIFIED BY '123456';   //為mysql建立一個新的使用者
create database bym;    //建立一個新的資料庫
use bym                 //切換資料庫
CREATE TABLE testable (name VARCHAR(20), sex CHAR(1), birth DATE, birthaddr VARCHAR(20));   //建立一個表
insert into testable values('mark', '1', '1995-11-13', 'new york');     //插入一條資料
select * from testable  //查看錶資料
grant all privileges on bym.* to 'bym'@'%' identified by '123456';          //為使用者分配許可權

重啟apache服務,systemctl restart httpd.service
index.php測試檔案裡面加入

<?php
$link = mysql_connect("localhost", "bym", "b1y9m5");

if (!$link) {
    echo "Error: Unable to connect to MySQL.";
    echo "Debugging error: " . mysql_error();
}
?>

出現Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

  • /etc/php.ini檔案裡面
;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;
#下面兩行是新加入的
[mysql]
mysql.default_socket = "/data/mysql/mysql.sock"
發現還是不行,原來在php中把此檔案路徑寫死了,必須去/var/lib/mysql下面去找,解決辦法有兩個
1、在PHPmysql_connect中加入:/data/mysql/mysql.sock,如下面的php語句塊所示,指定檔案位置.
2、還有是在/var/lib/mysql下面建立一個連線檔案到/data/mysql/mysql.sock如下面所示
ln -s /data/mysql/mysql.sock /var/lib/mysql/mysql.sock
ls -l /var/lib/mysql/mysql.sock
lrwxrwxrwx 1 root root 22 Apr 4 14:16 /var/lib/mysql/mysql.sock -> /data/mysql/mysql.sock

修改/data/mysql/mysql.sock路徑所有檔案的許可權,全部修改為可讀可執行,再次執行上面的測試,成功連線

  • 資料庫讀寫測試,執行下面的.php檔案之後在伺服器端登入檢視資料庫表,看到表中資料的確增加了,說明phpmysql成功建立聯絡
<?php
$link = mysql_connect("localhost:/data/mysql/mysql.sock", "root", "r1o,o8t");

if (!$link) {
    echo "Error: Unable to connect to MySQL.";
    echo "Debugging error: " . mysql_error();
}

//echo "Success: A proper connection to MySQL was made! The my_db database is great.";
//echo "Host information: " . mysql_get_host_info($link);

if(!mysql_query("use bym", $link)) {
        echo "select error : " . mysql_error();
}

if(!($res = mysql_query("insert into testable values('mark', '0', '1997-2-23', 'china')", $link))) {
        echo "query error : " . mysql_error();
}
echo "" . $res;

mysql_close($link);
?>  

7、安裝phpMyAdmin

  • yum install phpMyAdmin //此軟體是一個數據庫管理軟體,可用於資料庫的影象化管理

  • cp -a /usr/share/phpMyAdmin/ /data/www/html/
    後面是我的網頁存放目錄
    瀏覽器中輸入http://你的ip地址/phpMyAdmin/可以訪問到phpmyadmin的頁面

  • vim /etc/httpd/conf.d/phpMyAdmin.conf //註釋掉下面這段話,不然的話在瀏覽器裡面輸入的時候會訪問/usr/share目錄

#Alias /phpMyAdmin /usr/share/phpMyAdmin
#Alias /phpmyadmin /usr/share/phpMyAdmin
  • vim /etc/phpMyAdmin/config.inc.php
$cfg['Servers'][$i]['socket']        = '/data/mysql/mysql.sock';          // Path to the socket - leave blank for default socket
$cfg['Servers'][$i]['auth_type']     = 'cookie';改為
$cfg['Servers'][$i]['auth_type']     = 'http';  
//瀏覽器輸入登入,不斷地失敗
$cfg['Servers'][$i]['auth_type']     = 'http';改為
$cfg['Servers'][$i]['auth_type']     = 'config';  
//瀏覽器登入,不斷地失敗
  • 再次vim /etc/phpMyAdmin/config.inc.php
    $cfg[‘Servers’][$i][‘connect_type’] = ‘tcp’; // How to connect to MySQL server (‘tcp’ or ‘socket’)
    我好像看到什麼不得了的東西:‘tcp’,這什麼東西,tcp還需要指定mysql.sock路徑嗎,看後面的註釋,(‘tcp’ or ‘socket’),此處改為socket,再次執行,不行重啟apache,終於登入成功。
    phpMyAdmin測試

  • 最後更改登入方式為下面,更安全一點

$cfg['Servers'][$i]['auth_type']     = 'http';    // Authentication method (config, http or cookie based)?
$cfg['Servers'][$i]['user']          = 'user';          // MySQL user
$cfg['Servers'][$i]['password']      = '123456';          // MySQL password (only needed when the 'auth_type' set to 'config'

8、安裝vsftp

vsftpd用來進行檔案傳輸,可以在客戶機上面進行網站檔案編寫,完成之後進行上傳(必須的軟體)
直接yum install vsftpd即可。安裝完成後要用systemctl start vsftpd.service進行啟動