centos從頭學習配置web服務器環境


為了學習linux下配置web服務器環境,於是安裝了vmware,准備在虛擬機里面學習web服務器的搭建!

首先是在虛擬機里安裝centos,我選擇的是32位的centos6.6版本,因為新版本7據說更改了好多命令,況且是新版本,於是沒有采用!

至於選擇32位的是因為我回頭的vps的環境最大也就是2G(沒有毛爺爺啊...) 所以就選擇了32位的!

 

虛擬機安裝centos基本上沒啥說的,一直next就行了!(PS:vmware11 真心不錯...)

 

-----------------------------------------------------------------------------   關閉GUI  ----------------------------------------------------------------------------------

安裝成功之后,為了學習命令行,肯定是先關閉xwindow,也就是關閉GUI

操作就是編輯/etc/inittab文件 將id:5:initdefault: 改成 id:3:initdefault:

然后reboot就會進入命令行模式了!

 

-----------------------------------------------------------------------------   分辨率配置  ----------------------------------------------------------------------------------

進入命令行以后發現顯示的界面很小,稍微長一點的內容都會換行,於是更改命令行下的分辨率:

操作就是編輯/boot/grub/menu.lst文件,在kernel開頭的那一行添加vga參數:

 

如果不知道自己分辨率的值,可以在行為添加vga=ask,這樣在每次啟動的時候,都會列出所有支持的分辨率讓我們選擇:

比如我輸入379 就會進入1280*768的分辨率。

 

已經改更改了命令行模式以及分辨率,那么首先肯定要先打一下補丁了!

su
******
yum update

就是root下使用yum update命令更新系統補丁或者漏洞

 

-----------------------------------------------------------------------------   tty設置  ----------------------------------------------------------------------------------

更新完成后,我們首先關閉多余的tty,tty是啥呢,我看了半天網上的解釋,大致感覺就是終端差不多的東西!

centos默認是開啟6個tty的

不過對於vps來說,我們基本上都是使用putty這一類的來遠程連接的,於是我們開啟2個tty就可以了!

具體操作有如下兩步:

1.編輯/etc/init/start-ttys.conf

將其中開啟6個終端的配置改成2個

就是將[1-6]改成[1-2]

從上面的腳本看出這個配置文件執行了/etc/sysconfig/init文件,那么就是我們要操作的第2步了

2.編輯/etc/sysconfig/init文件

同樣的將ACTIVE_CONSOLES改成2個

reboot后使用ps命令查看當前終端就會只有tty1和tty2了:

ps aux | grep tty

 

-----------------------------------------------------------------------------   IPV6配置  ----------------------------------------------------------------------------------

然后就是為節省系統資源,關閉ipv6 以及ipv6的防火牆,對於VPS來說使用一個獨立的IPV4是最常見的了!

操作就是編輯/etc/modprobe.d/dist.conf文件,在文件的末尾添加如下兩行:

alias net-pf-10 off
alias ipv6 off

然后reboot 使用lsmod | grep ipv6 可以發現ipv6已經關閉了

然后就是關閉ipv6的防火牆,關閉就是開機不啟動了,那就是使用chkconfig命令了

chkconfig ip6tables off

這樣就關閉了ipv6以及ip6tables了!

 

 

-----------------------------------------------------------------------------   FTP配置  ----------------------------------------------------------------------------------

然后就是配置ftp了,以方便我們能夠上傳文檔或者代碼

首先就是檢查是否已經安裝了vsftpd

rpm -qa | grep vsftpd

如果沒有就安裝

yum install vsftpd

然后啟動vsftpd

service vsftpd start

然后可是使用chkconfig命令設置ftp開機啟動

(注:我並沒有設置,因為VPS基本上也就我一個人管理,沒有必要設置開機啟動,就算需要使用ftp,我一般也會通過putty鏈接后,開啟vsftpd ,然后使用結束后,關閉它)

安裝vsftpd后,下面我們就是配置vsftpd了:

首先肯定是要禁止ftp的匿名登錄:

操作就是編輯/etc/vsftpd/vsftpd.conf文件,設置anonymous_enable=NO,以及啟用chroot_list_enable 和 chroot_list_file選項

然后更改FTP下默認的21端口號  操作就是在vsftpd.conf添加listen_port ****  以及設置啟用ftp被動模式和設置被動模式端口范圍!

listen_port ****
pasv_enable=YES
pasv_min_port=10020
pasv_max_port=10040

然后就是修改/etc/services文件下的ftp的端口號

 

然后在/etc/vsftpd下建立chroot_list文件並編輯

並一行輸入一個ftp用戶

然后就是添加ftp用戶組:

groupadd webftp

然后創建剛才添加的ftp用戶(比如test用戶):

useradd -g webftp -M -d /var/www -s /sbin/nologin test

使用-g參數將它歸集到webftp用戶組下,-M參數不設置它的主目錄(沒有-M參數/home里會有個wwwer文件夾,這個文件夾沒多少實際用處,所以不用設置),-d參數設定它的初始登入目錄為/var/www,-s參數設定它不需要登陸系統/sbin/nologin,它被命名為test。

補一條命令,如果要修改用戶的主目錄可以使用usermod命令,語法如下:

usermod -d /var/www2 username

 

 

然后為這個用戶設置密碼:

passwd test

將目錄權限更改為該用戶:

chown -R test.webftp /var/www

 然后重啟vsftpd服務

service vsftpd restart

現在可以使用netstat -ntlp | grep vsftpd 查看vsftpd監聽的端口號是否改變了!

不過ftp還是不能鏈接的,因為我們還沒有在防火牆里面為更改的端口添加通過的權限:

操作就是編輯/etc/sysconfig/iptables文件,照葫蘆畫瓢添加指定的端口就行了!

然后重啟iptables,這樣就可以訪問ftp了,但是現在只能訪問,是不能列出目錄的,

因為selinux的限制,所以我們可以設置allow_ftpd_full_access開啟即可!

setsebool allow_ftpd_full_access on

而且此代碼重啟失效,所以對我來說是適用的!

 

-----------------------------------------------------------------------------   mysql配置  ----------------------------------------------------------------------------------

現在可以配置mysql了

由於centos默認自己已經裝了,於是就先卸載已經自帶的mysql包

rpm -qa | grep mysql
mysql-lib***
yum remove mysql-lib***

這樣系統自帶的mysql就會被刪除掉了 沒有用rpm -e的強制,不知道那樣會不會刪除依賴,yum remove 貌似是刪除了依賴關系的!

然后就是安裝mysql了,安裝沒有什么問題,問題就是你選擇什么版本了,關於版本選擇,網上有很多解釋了!我選擇的是5.5.42 (PS:貌似大家都在吐槽mysql被oracle收購后出的那個什么版本...)

安裝就沒有什么了,rpm -ivh 就OK了

安裝完成后,首先就是開啟mysql服務 以及設置mysql開機啟動(開機啟動自己衡量就行了!)

service mysql start 
chkconfig mysql on

然后就是設置mysql root用戶密碼以及整理用戶什么之類的,mysql內部的語法,大家都懂,就不多說了!

有一個需要注意的地方就是rpm安裝mysql不會在etc下生成my.cnf配置文件,我們需要手動把合適的配置文件復制到etc下

rpm安裝mysql 配置目錄在  /usr/share/mysql   然后根據服務器不同的內存配置選擇不同的配置文件復制到etc就行了

我這里選擇的是huge 

cp /usr/share/mysql/my_huge.cnf /etc/my.cnf

然后就是更改mysql的端口號和防火牆設置:

更改端口號,因為在selinux下,所以需要更改selinux設置,網上都說使用semanage,

這個鏈接是我寫的在selinux模式下更改mysql端口:

http://www.cnblogs.com/waitfate/p/4285859.html 

內容如下:

默認情況下 mysql更改端口后是不能通過selinux的

提示啟動錯誤,那么首先就要看mysql的錯誤日志

可是我不知道mysql錯誤日志的位置

首先,更改selinux的模式為passive 然后啟動mysql(passive模式下是能夠啟動mysql的)

setenforce 0

然后是用ps命令查看日志位置:

ps ax|grep mysql
或者
ps ax|grep "[m]ysql"

從輸出中找到--log-error

然后打開錯誤日志

提示:

[ERROR] Can't start server: Bind on TCP/IP port: Permission denied
150210 19:57:52 [ERROR] Do you already have another mysqld server running on port: 3308 ?

明顯是綁定到3308端口的時候提示錯誤了!

那么就要更改selinux對mysql開啟3308端口

網上搜索后說是需要使用semanage

但是centos里面並沒有找到semanage命令

那么查看哪個包提供了semanage

yum provides /usr/sbin/semanage

發現是policycoreutils-python包

於是安裝policycoreutils-python包

yum install policycoreutils-python

安裝完成后,為mysql綁定3308端口

semanage port -a -t mysqld_port_t -p tcp 3308

然后設置selinux為強制模式然后重啟mysql就可以了

setenfoce Enforcing
service mysql restart

 

更改端口這點就說到這! 至於防火牆,因為默認防火牆是開啟的,我們不添加更改的端口到防火牆,外部是不能夠通過修改后的端口連接到數據庫的!

 

-----------------------------------------------------------------------------   nginx配置  ----------------------------------------------------------------------------------

下面就開始配置nginx了,因為是服務端軟件,肯定要選擇穩定版了

首先去官網下載穩定版(Stable version)的rpm包

然后rpm -ivh 安裝 然后yum install nginx就可以了!(這里並沒有自己編譯安裝!需要自己編譯安裝的,網上一大把教程...)

然后檢查nginx是否成功:

service nginx start

使用外部瀏覽器訪問即可看到welcome了!

yum方式安裝后,nginx的目錄在/etc/nginx下,所以配置文件為/etc/nginx/nginx.conf,網站配置文件在/etc/nginx/conf.d下面

 

下面更改網站目錄:

nginx.conf會加載conf.d下面所有的conf文件

所以我們編輯default.conf文件更改網站目錄!

 

設置nginx開機啟動

chkconfig nginx on

檢查配置重啟nginx,然后重新訪問即可!

nginx -t
service nginx restart

因為我在配置ftp的時候已經配置了80端口能夠訪問,所以防火牆我這里就沒有說配置80端口的事!如果沒有開啟80端口,使用如下命令開啟即可!

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
service iptables save
service iptables restart

至此已經可以訪問網站的靜態頁面了!現在還不能解析PHP腳本,因為我們還沒有配置使用cgi模式解析PHP

因為我們還沒有安裝PHP,等下面安裝完PHP再接着寫配置nginx使用PHP

 

-----------------------------------------------------------------------------   php配置  ----------------------------------------------------------------------------------

首先就是下載php目前最穩定的版本啦!直達鏈接:http://php.net/downloads.php 目前最穩定的版本是5.6.6!

我下載的是tar.gz包

解壓:

tar -xzvf php-5.6.6.tar.gz

進入加壓后的文件夾,查看配置參數:

cd php-5.6.6
./configure --help

參數非常多,因為php功能實在太強大了。你熟悉php的話,就知道它有上百個模塊,我們常用大概有幾十個。通常離不開的模塊,是默認被配置進去的,不需要我們通過configure指定,我們在configure步驟主要做兩件事:

  • 定義一些路徑,如php安裝路徑,配置文件路徑
  • 選擇所需的非默認模塊

所以我們的配置項如下:

為了方便閱讀,折行了,這一部分配置我也是從網上找到的
直達鏈接:http://blog.path8.net/archives/6068.html
./configure
--prefix=/usr/local/php53
--with-config-file-path=/usr/local/etc
--with-config-file-scan-dir=/usr/local/etc/php.d
--mandir=/usr/local/man
--enable-fpm
--enable-calendar
--with-mcrypt
--enable-ftp
--with-zlib
--with-bz2
--with-curl
--with-gd
--enable-exif
--with-jpeg-dir
--with-png-dir
--with-freetype-dir
--enable-mbstring
--with-mysql
--with-mysqli
--with-pdo-mysql
--enable-zip
--enable-bcmath
--with-bz2

但是現在運行configure肯定不能成功,因為我們還缺少下面的依賴關系,安裝就行了

yum -y install libxml2-devel
yum -y install bzip2-devel
yum -y install libcurl-devel
yum -y install libjpeg-devel libpng-devel

還有mcrypt安裝,同php一樣configure make makeinstall就行了

然后就是php的configure了

這里需要注意的是不要用root去configure和make  用普通用戶來執行,執行make install的時候再切換到root

(我按照網上的配置configure的時候,提示freetype config錯誤,這個是因為沒有安裝freetype,如果不安裝這個,那么php生成驗證碼模塊

可能會出現問題,安裝freetype很簡單 yum install freetype-devel 就可以了!)

configure可能需要幾分鍾,make可能需要20分鍾,所以現在可以去干點別的了...

漫長的等待...

等make install完成,那么php就安裝完成了,下面就是配置php的fpm了!什么是fpm呢,就是FastCGI Process Manager FastCGI進程管理器。

其實就CGI了!

php安裝完畢后,fpm配置文件的位置就是我們配置的 /usr/local/php**/etc/php-fpm.conf

編輯這個文件更改下面三個參數:

(約第25行)   pid = /var/run/php-fpm.pid
(約第32行)   error_log = /var/log/php-fpm.log
(約第190行) pm = static

然后啟動php-fpm 位置:/usr/local/php**/sbin/php-fpm

執行應該沒有任何提示,如果有錯誤輸出,可以到我們設置的日志/var/log/php-fpm.log查看!

然后就是配置php-fpm為服務,並設置開機啟動!

將php壓縮包解壓后的sapi/fpm下的init.d.php-fpm 里面的php_fpm_PID的值改為我們設置的/var/run/php-fpm.pid

原來的值是${prefix}/var/run/php-fpm.pid(這一個是我自己發現的,因為前面修改了pid位置,所以現在這個文件也要修改,不然啟動的時候會一直等待...)

然后將這個文件復制到/etc/init.d/下面:

cp init.d.php-fpm /etc/init.d/php-fpm

然后將php-fpm配置加入chkconfig 並設置開機啟動

chkconfig --add php-fpm
chkconfig php-fpm on
reboot

到此就配置好了php和cgi了,那么現在配置nginx支持php腳本

打開默認網站的配置文件

將如下框框內的內容前的注釋去掉,並更改fastcgi_param參數腳本路徑為網站目錄路徑:

然后檢查配置,重啟nginx,根目錄下建立了phpinfo測試文件,然后訪問進行測試!

nginx -t
service nginx restart

訪問就能看到phpinfo函數的內容了,可以直觀的看一下php配置的具體內容了!

 

-----------------------------------------------------------------------------   完善環境、優化配置  ----------------------------------------------------------------------------------

我們從phpinfo里面可以看到,當前php並沒有加載php.ini配置文件:

所以我們需要把編譯后的php生產環境的配置文件復制到/usr/local/etc里面去

cp php.ini-production /usr/local/etc/php.ini

然后就可以修改php.ini文件,然后重啟php-fpm了!

比如設置默認的時區:

date.timezone=Asia/Shanghai

這樣重啟php-fpm后,所有使用的date函數的地方,默認時區就是我們中國的東八區了!

然后就是配置nginx開啟gzip壓縮

操作就是編輯nginx的配置文件nginx.conf 取消gzip前面的注釋:

gzip on

 

然后就是設置上傳目錄沒有php腳本執行權限

在網站配置文件里面的php配置代碼上方加入如下代碼:

location ~ ^/(uploads|images)/.*\.php {
        deny  all;
}

這樣上傳目錄下的php腳本就不會投遞到php-fpm執行了!

然后就是優化mysql,那么所有的配置基本上就完成了,上傳代碼吧!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM