騰訊雲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/
- 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 建立祕鑰
- 在客戶端建立rsa公鑰與私鑰,然後儲存公鑰與私鑰到同一個目錄下面,並且要求公鑰和私鑰的名字是相同的,以供securecrt登入
- 然後把建立完成的公鑰拷貝到伺服器端的想要登入的使用者的家目錄下面的.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
- 首先用
fdisk /dev/sda
進行磁碟的新增,並通過t選項設定新增的partion為PV格式,即8epvcreate /dev/sda9
將剛剛製作出來的PVpartion新增入PV去,用pvdisplay進行檢視vgextend /dev/sda9
把PV新增到VG裡面lvresize -L +4G /dev/server/myhome
把製作出來的VG新增到LV磁碟陣列裡面去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
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
出現上面資訊說明測試成功
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
按enter,Set 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.confls /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地址訪問,看是否有以下圖片資訊
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、在PHP的mysql_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檔案之後在伺服器端登入檢視資料庫表,看到表中資料的確增加了,說明php與mysql成功建立聯絡
<?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,終於登入成功。
最後更改登入方式為下面,更安全一點
$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
進行啟動