1. 程式人生 > >Linux/CentOS各種服務框架的搭建完整流程

Linux/CentOS各種服務框架的搭建完整流程

pre let service ng- per pri 通過 rec date

在2012年的時候,由於要照應新人對Linux以及相關服務的了解和學習,我特地把當時我們創業項目的全部服務搭建過程寫成了一篇文檔,能夠讓他們學習而且有所參照。

以下就以這篇文檔為底稿,進行一些改動和敏感信息的刪除,分享給大家,希望對大家故意。
說明,下面的Rafael是我的英文名。應用是當前已經改變方向的功夫信,英文直寫拼音gongfuxin。本文除了Linux帳號、部分安全的基本配置,還有php/php-fpm/mysql/redis/nginx的安裝和配置。
轉載請註明出處。
更新記錄:
顧笑群 2012年10月26日 通過虛擬機安裝機器,開始描寫敘述安裝步驟
顧笑群 2012年12月04日 通過虛擬機安裝機器,而且安裝內部測試的全套服務,完好整個安裝步驟
顧笑群 2014年8月7日 處於網絡分享目的。有所刪除和修正

第一部分 幹凈server的安裝
========================
1. 下載CentOS 6.3(當前最新已經是6.5了) 64bit的CD1(不是liveDVD或者liveCD),然後依照向導設置,以下是設置的一些註意點:
1) 由光盤啟動,安裝Centos 6.3
2) 選擇默認的英語安裝
3) 磁盤選擇整個硬盤
4) 時間選擇上海,不要選擇UTC
5) 設置rootpassword的時候,要備份這個password
6) 選擇basic server的方式安裝
7) 自己定義選擇包,在語言中選擇中文包

2. 網絡和系統配置
1) 內部測試機,能夠使用靜態IP,也能夠是動態IP。公網機器一定要使用靜態IP,使用setup命令進行設置,也能夠直接更改相應的配置文件:
/etc/sysconfig/network-scripts/ifcfg-eth0,特別是要把ONBOOT的值改為yes,一般改好後最好重新啟動,就能使用網絡了
2) 然後運行yum update,對系統進行全面的更新,完畢之後最好又一次啟動一次
3) 假設內核升級了,不要刪除全部的老內核,至少保留近期一次的老內核,以防新內核有問題
4) 關閉SELinux,通過改動/etc/selinux/config來實現。以後能夠通過防火墻來保護server

3. 賬戶的設置和維護
1) 創建管理用戶,如useradd rafael
2) 對新創建的用戶進行password設置,如passwd rafael,一般要備份這個password
4) 把rafael增加到wheel用戶組中,在/etc/group中進行配置
5) 把wheel用戶組設置為sudo的信任用戶組,在/etc/sudoers中進行改動,註意這個文件要先改為可寫,改動完後再該回去
6) 禁止root用戶遠程ssh登錄,到/etc/ssh/sshd_config中進行配置,設置PermitRootLogin no,然後又一次啟動sshd
7) 以後盡量通過ssh遠程登錄這個機器了

第二部分 安裝nginx, mysql, php, redis等
========================
1. 設置epel更新源(官方源太老了)
1) 主要參照http://www.if-not-true-then-false.com/2011/install-nginx-php-fpm-on-fedora-centos-red-hat-rhel/,會有一些小的變動,以以下為準。首先完畢以下兩步:
a. sudo rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm (最好到http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/看看epel的最新版本號,應該不止6-8了)
b. sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm(最好到http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/看看最新版本號)?
2) 然後找到nginx源,到http://nginx.org/en/download.html找到CentOS6一行,然後能夠下載相應的rpm,也能夠直接通過例如以下命令:sudo rpm -Uvh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

2. 安裝須要的軟件
1) 安裝php和nginx,如:sudo yum --enablerepo=remi install nginx php php-fpm php-common
2) 安裝php的組件,如:sudo yum --enablerepo=remi install php-pecl-apc php-cli php-pear php-pdo php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml php-devel
3) php-redis請依據https://github.com/nicolasff/phpredis上的說明用Git下載並編譯和安裝(安裝gcc和Git先:sudo yum --enablerepo=remi install gcc git),然後須要手動的在/etc/php.d/中添加redis.conf以及相關內容
4) 安裝mysql和redis,如:sudo yum --enablerepo=remi install mysql mysql-devel mysql-server redis
5) 然後分別配置php-fpm/nginx/mysql/redis在2/3/4/5級別自己主動啟動,能夠通過chkconfig來設置

第三部分:配置mysql, redis, nignx, php等
========================
1. 配置mysql
1) 啟動mysql:sudo service mysqld start,會提示你第一次啟動的一些初始化註意事項
2) 設置root的本地password,備份password;能夠看情況是否設置root的遠程帳號
3) 登入mysql,用命令行創建其它用戶和password,必須設置gongfuxin帳號以及password,備份password,此帳號用於站點登錄
4) 建立基於utf8的數據庫gongfuxin,然後導入gfx_recreate_all.sql,還有城市,省份和大學的相應表,把gongfuxin數據庫的全部權限賦予gongfuxin帳號:grant all privileges on gongfuxin.* to [email protected]

/* */;
5) 能夠在遠程登錄mysql進行設置,這樣更方便,可是之前要配置遠程帳號,而且要打開防火墻的3306(tcp)port,之前的帳號創建,數據庫創建都能夠使用這樣的方式,可是安全欠妥
6) 對於mysql的配置文件,能夠在/usr/share/mysql/中找到,然後依據詳細內存大小選擇,覆蓋到/etc/my.cnf中就能夠了,然後又一次啟動:sudo service mysqld restart

2. 配置redis
1) 配置文件在/etc/redis.conf,臨時不須要配置
2) 啟動redis:sudo service redis start

3. 配置php
1) 編輯/etc/php.ini,改動例如以下(這裏的配置是針對上線server的。不是針對開發環境的):
?implicit_flush = On
?expose_php = Off
?error_log = /var/log/php-fpm/php_error.log
2) 改動/var/lib/php/session的權限,使之屬於nginx用戶組,而非apache用戶組(此時root應該為用戶,不須要改變)
3) 改動/var/log/php-fpm的權限,使之屬於nginx用戶,而非apache用戶(此時root應該為用戶組,不須要改變)
4) 改動/etc/php-fpm.d/www.conf,使user和group都是nginx
5) 啟動php-fpm:sudo service php-fpm start

4. 配置nginx
1) /etc/nginx/nginx.conf依據實際情況配置,對於內部測試環境不須要配置,註意,一般須要改動系統進程最大線程數以及句柄數,用ulimit -a能夠查看;進程的線程堆棧大小在程序中自己主動改動
2) /etc/nginx/conf.d/default.conf,須要配置成我們的公布文件夾,假設有多個公布文件夾就須要多個類似的配置文件,而且配置成PHP解析,例如以下:
*********file start*********
listen 8050;
server_name localhost;

charset utf-8;
access_log /var/log/nginx/access.log main;
root /usr/share/nginx/gongfuxin;

location / {
index index.php;
}

location ~ \.php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
client_max_body_size 8m;
}

# deny access to .htaccess files, if Apache‘s document root
# concurs with nginx‘s one
location ~ /\.ht {
deny all;
}
}
*********file end*********
3) 請依據配置分別改動php-cgi的監聽port(以下會說道);然後打開80(tcp,正規server,必須是80port)或者8050(tcp,內部測試,也能夠使用其它未被使用的port)的防火墻設置
4) 須要建立/usr/share/nginx/gongfuxin目錄
5) 啟動nginx:sudo service nginx start
?

Linux/CentOS各種服務框架的搭建完整流程