CentOS 7 學習(一) 配置LAMP和Nginx
CentOS是RedHat Linux企業版的代碼編譯版本,屬於比較通用的服務器Linux版本,聽說Ubuntu Server更通用,呵呵,不過我的以爲也許CentOS穩定一些,就把公司的服務器架設爲CentOS。
參考了http://www.jb51.net/article/26597.htm和http://www.111cn.net/sys/CentOS/63646.htm php
一、安裝
安裝的版本爲CentOS 7.0 X64版本,選擇最小安裝,不過增長了兼容程序和開發工具,由於這些是確定須要的。
安裝網絡工具:yum install net-tools,
系統默認是DHCP模式的,公司的DHCP服務器沒有每次針對同一臺機器分配同一個IP,因此須要手工設定IP,步驟以下
vim /etc/sysconfig/network-scripts/ifcfg-enp1s0
增長和修改以下內容
BOOTPROTO="static" #默認爲dhcp,改成static
IPADDR=192.168.1.12 #IP地址
NETMASK=255.255.255.0 #子網掩碼
GATEWAY=192.168.1.1 #網關
DNS1=8.8.8.8
DNS2=8.8.4.4
重啓電腦或者重啓網絡服務:systemctl restart network html
二、配置防火牆(參考了https://fedoraproject.org/wiki/FirewallD/zh-cn和http://www.tuicool.com/articles/vMr6Vj)
系統默認爲的防火牆爲firewalld防火牆,能夠禁用它啓用iptables防火牆,不過既然是默認的,就試試看吧
firewalld能夠以守護進程的方式運行,這樣能夠動態配置而不須要重啓防火牆,靜態配置就必須重啓防火牆
其配置工具備圖形界面的firewall-config和命令行的firewall-cmd
firewall的管理方式有點相似於Windows防火牆,有一個區域(zone)的概念,不一樣的區域對應不一樣的安全級別,能夠經過切換區域來修改總體防火牆級別。
基本命令以下
firewall-cmd --get-zones #得到全部的區域級別
firewall-cmd --list-all-zones #獲取全部的區域詳細信息,結果相似以下
public (default, active)
interfaces: enp0s3
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
這裏顯示的是默認的public區域,上面的命令輸出不少,我截取了其中一段,能夠看出這裏支持的服務,默認支持dhcpv6-client和ssh
firewall-cmd --get-default-zone #顯示默認區域
firewall-cmd --list-services #顯示當前區域支持的服務,即防火牆容許的服務
firewall-cmd --get-services #顯示支持的服務
#這裏須要增長一些服務和端口
firewall-cmd --add-service=http
firewall-cmd --add-service=mysql
firewall-cmd --add-port=9000/tcp
firewall-cmd --add-port=808/tcp
查看效果
[root@centos-s1 ~]# firewall-cmd --list-services
dhcpv6-client http mysql ssh
[root@centos-s1 ~]# firewall-cmd --list-ports
9000/tcp 808/tcp
後面須要安裝mysql,php-fpm,nginx,須要端口3306,9000,808
但這些只是暫時性的,重啓防火牆以後就會消失,命令爲firewall-cmd --reload,
也能夠用命令查看
firewall-cmd --permanent --list-services
firewall-cmd --permanent --list-ports
永久性的須要增長--permanent參數
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=mysql
firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --permanent --add-port=808/tcp
如今重啓服務也不會丟失參數
默認區域定義在/etc/firewalld/firewalld.conf中
配置文件保存在/etc/firewalld/zones/public.xml,這表明默認區域是public
三、安裝LAMP
1)Apache
sudo yum install httpd
systemctl start httpd.service
systemctl enable httpd.service #設置開機啓動
2)安裝Mariadb
yum install mariadb mariadb-server
systemctl start mariadb
systemctl enable mariadb
cp /usr/share/mysql/my-huge.cnf /etc/my.cnf
3)安裝php
#mysql驅動程序採用php-mysqlnd
yum install graphviz-php php php-bcmath php-cli php-common php-dba php-devel php-embedded php-enchant php-fpm php-gd php-intl php-ldap php-mbstring php-mysqlnd php-odbc php-pdo php-pear.noarch php-pgsql php-process php-pspell php-recode php-snmp php-soap php-xml php-xmlrpc rrdtool-php uuid-php php-pecl-memcache
下載內容有點多,46M
4)重啓apache,systemctl restart httpd.service
vim /var/www/html/info.php
<?php
phpinfo();
?>
在瀏覽器中輸入http://localhost/info.php,就能夠看到效果了
四、安裝phpmyadmin
1)修改mysql的root密碼,由於phpmyadmin不容許空密碼登陸
mysql -uroot #默認狀況下root密碼爲空
MariaDB [(none)]> use mysql;
Database changed
MariaDB [mysql]> select host,user,password from user;
+-----------+------+----------+
| host | user | password |
+-----------+------+----------+
| localhost | root | |
| centos-s1 | root | |
| 127.0.0.1 | root | |
| ::1 | root | |
| localhost | | |
| centos-s1 | | |
+-----------+------+----------+
6 rows in set (0.00 sec) mysql
MariaDB [mysql]> update user set password=PASSWORD('stone123') where user='root';
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4 Changed: 4 Warnings: 0 linux
MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
2)修改Apache,
vim /etc/httpd/conf/httpd.conf
修改成
DirectoryIndex index.html index.php #增長index.php
3)下載phpmyadmin
yum install wget unzip
wget http://nchc.dl.sourceforge.net/project/phpmyadmin/phpMyAdmin/4.2.7/phpMyAdmin-4.2.7-all-languages.zip
unzip phpMyAdmin-4.2.7-all-languages.zip
mv phpMyAdmin-4.2.7-all-languages phpMyAdmin
mkdir /work
cp /root/phpMyAdmin /work/
注意一點,須要將SELINUX關掉,須要重啓機器
vim /etc/selinux/config
SELINUX=disabled
修改Apache配置文件
vim /etc/httpd/conf/httpd.conf
Alias /phpmyadmin /work/phpMyAdmin nginx
<Directory "/work/phpMyAdmin">
Options Indexes
AllowOverride All
Require all granted
</Directory> sql
注意這裏的Apache版本爲2.4,和2.2有一些不一樣
http://localhost/phpmyadmin
五、安裝Nginx
wget http://nginx.org/download/nginx-1.7.3.tar.gz
tar xvf nginx-1.7.3.tar.gz
./configure
#可能會缺乏一些包,須要yum安裝,如zlib,yum install zlib-devel
#這個命令會提示Nginx軟件的安裝位置,默認安裝在/usr/local/nginx
啓動命令爲/usr/local/nginx/sbin/nginx
爲方便起見,創建符號連接
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
這樣就能夠直接使用nginx命令啓動了,不過nginx的默認啓動端口爲80,咱們已經安裝了Apache,須要修改端口
vim /usr/local/nginx/conf/nginx.conf
修改listen 80;爲 listen 808;
nginx #啓動
沒有返回信息,說明啓動正常
http://localhost:808 能夠看到歡迎頁面
配置php支持
修改nginx.conf,去掉註釋,以下
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
啓動php-cgi程序,php-fpm &
nginx默認住目錄爲/usr/local/nginx/html,增長info.php文件
<?php
phpinfo();
?>
訪問http://localhost:808/info.php
配置Nginx做爲Apache的代理,編輯nginx.conf,將下列註釋取消
location ~ \.php$ {
proxy_pass http://127.0.0.1;
}
這表明擴展名爲php的文件,會代理到本機的80端口
測試文件
vim /var/www/html/test.php
<?php
echo "Hello World!";
?>
瀏覽器裏測試http://localhost:808/test.php
證實代理成功
測試:http://localhost:808/phpmyadmin/index.php
發現能夠訪問,不過要注意要把fastcgi模式的設置註釋掉,不然會出現不正常的現象,不少圖片無法訪問
不過要注意,若是直接訪問http://localhost:808/phpmyadmin,會出現錯誤,由於沒有指定php擴展名,系統沒法代理。
至於更詳細的代理,明天再研究。apache