您好,登錄后才能下訂單哦!
社交網站搭建詳解
社交網站搭建是為了管理PHP程序員開發的代碼,要求待見SVN服務器進行版本控制。社交網站第一個版本部署在LNMP平臺之上,前端為Nginx服務器,通過fastcgi協議訪問后端PHP服務器,為了保證數據安全,mysql數據庫搭建主從復制。
社交網站項目包含用戶相冊功能,允許用戶上傳照片,上傳照片需要使用共享存儲來存放。共享存儲可用的開源方案有很多,如NFS,MFS,FastDFS等。本文簡化存儲方案,使用NFS代替MFS的功能,現網根據公司要求進行相關搭建。
本案例拓撲:
案例環境:
主機 | 操作系統 | IP地址 | 主要軟件 |
Nginx | CentOS 7 | 192.168.88.128 | nginx-1.14.0.tar.gz |
PHP | CentOS 7 | 192.168.88.129 | php-5.6.38.tar.gz |
MYSQL Master | CentOS 7 | 192.168.88.130 | mysql-5.6.41.tar.gz |
MYSQL Slave | CentOS 7 | 192.168.88.131 | mysql-5.6.41.tar.gz |
SVN | CentOS 7 | 192.168.88.132 | yum安裝 |
NFS | Redhat 6 | 192.168.88.133 | yum安裝 |
本文所有軟件使用wget和yum安裝。
一、搭建Nginx
1、安裝環境包
yum install gcc gcc-c++ pcre pcre-devel zlib-devel -y
2、創建Nginx用戶
useradd -M -s /sbin/nologin nginx
3、下載nginx
cd /opt/ #下載到opt目錄下
wget http://nginx.org/download/nginx-1.14.0.tar.gz #下載nginx
4、解壓編譯安裝
tar zxf nginx-1.14.0.tar.gz #解壓
cd nginx-1.14.0/
./configure \
--prefix=/usr/local/nginx \ #指定安裝路徑
--user=nginx \ #指定用戶
--group=nginx \ #指定組
--with-http_stub_status_module #開啟統計模塊
make && make install #安裝
5、優化
ln -s /usr/local/nginx/sbin/* /usr/local/sbin/ #軟鏈接優化
vim /etc/init.d/nginx #添加啟動腳本
#!/bin/bash
#chkconfig: - 99 20
#this is nginx init
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$PROG
;;
stop)
kill -s QUIT $(cat $PIDF)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
*)
echo "please use: {start|stop|restart|reload}"
exit 1
esac
exit 0
#kill -s QUIT $(cat $PIDF)表示根據PID終止Nginx進程
#kill -s HUP $(cat $PIDF)表示根據進程號重載配置
6、修改配置文件中的fastcgi訪問接口,才能訪問PHP頁面。
vim /usr/local/nginx/conf/nginx.conf #修改配置文件
location ~ \.php$ {
root /var/www/html/webphp;
fastcgi_pass 192.168.88.131:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
二、搭建MYSQL主從服務器
1、安裝環境包
yum install gcc gcc-c++ make cmake ncurses-devel bison libaio-devel autoconf -y
2、下載mysql5.6
cd /opt/ #下載到opt目錄下
wget https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.41.tar.gz #wget命令下載
3、創建mysql用戶
useradd -s /sbin/nologin mysql
4、編譯安裝
cd mysql-5.6.41/
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DSYSCONFDIR=/etc \
-DMYSQL_DATADIR=/home/mysql/ \
-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_SSL=system \
-DMYSQL_TCP_PORT=3306 \
-DENABLE_DOWNLOADS=1 \
-DWITH_SSL=bundled
make && make install #安裝
5、優化
cp support-files/my-default.cnf /etc/my.cnf # 復制配置文件
cp support-files/mysql.server /etc/init.d/mysqld # 復制啟動腳本
vim /etc/init.d/mysqld #修改啟動腳本
basedir=/usr/local/mysql
datadir=/home/mysql
chmod +x /etc/init.d/mysqld #添加執行權限
chkconfig --add mysqld #添加至啟動項
chkconfig --level 35 mysqld on #35 模式啟動
echo "PATH=$PATH:/usr/local/mysql/bin/" >> /etc/profile #添加環境變量
source /etc/profile #刷新環境變量
chown -R mysql.mysql /usr/local/mysql #改mysql安裝目錄的屬主屬組
6、初始化數據庫
/usr/local/mysql/scripts/mysql_install_db \
--user=mysql \
--ldata=/var/lib/mysql \
--basedir=/usr/local/mysql \
--datadir=/home/mysql
ln -s /var/lib/mysql/mysql.sock /home/mysql/mysql.sock #建立sock文件軟鏈接
7、啟動兩臺mysql服務器
service mysql start
8、修改主從服務器配置文件
主服務器)
vim /etc/my.cnf
[mysqld] #mysqld模塊下添加
server-id = 11
log-bin=/usr/local/mysql/data/master-bin #指定日志文件位置
log-slave-updates=true #從服務器可以讀取主服務器內容
service mysqld restart #重啟mysql
從服務器)
vim /etc/my.cnf
[mysqld] #mysqld模塊下添加
server-id = 22
log-bin=/usr/local/mysql/data/slave-bin
relay-log=realy-log-bin
relay-log-index=slave-relay-bin.index
service mysqld restart #重啟mysql
9、建立mysql主從關系
主服務器)
mysql> grant replication slave on *.* to 'myslave'@'192.168.88.%' identified by '123123'; #提權
mysql> show master status; #查看主服務器master狀態
+-------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000001 | 411 | | | |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
從服務器)
mysql> change master to master_host='192.168.88.129',master_user='myslave',master_password=='123123',
master_log_file='master-bin.000001',master_log_pos=411;
mysql> start slave; #開始slave
Query OK, 0 rows affected (0.04 sec)
mysql> show slave status\G; #查看主從狀態,查看下面兩行為yes主從同步成功。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
三、搭建PHP服務器
1、安裝環境包
yum -y install gd libxml2-devel libjpeg-devel libpng-devel zlib-devel fontconfig-devel openssl-devel bzip2-devel gcc gcc-c++ -y
2、下載php
wget http://101.96.10.64/cn2.php.net/distributions/php-5.6.38.tar.gz #wget命令下載
3、編譯安裝
./configure --prefix=/usr/local/php-fpm \
--enable-fpm --with-zlib \
--with-pdo-mysql \
--enable-mbstring \
--with-gd --with-png-dir=/usr/lib64 \
--with-jpeg-dir=/usr/lib64 \
--with-freetype-dir=/usr/lib64
make && make install #安裝
4、優化
cp php.ini-development /usr/local/php-fpm/php.ini #復制配置文件
ln -s /usr/local/php-fpm/bin/* /usr/local/bin/ #php命令文件軟鏈接
ln -s /usr/local/php-fpm/sbin/* /usr/local/sbin/ #php命令文件軟鏈接
5、為php安裝加速器
tar zxf ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz -C /opt/
cd ZendGuardLoader-php-5.3-linux-glibc23-i386/php-5.3.x
cp ZendGuardLoader.so /usr/local/php-fpm/lib/php #拷貝加速器模塊到php目錄下
6、php識別加速器
vim /usr/local/php-fpm/php.ini #修改配置文件,添加如下三行
[Zend Guard Loader]
zend_extension=/usr/local/php-fpm/lib/php/ZendGuardLoader.so
zend_loader.enable=1
7、開啟Nginx的php支持
cd /usr/local/php-fpm/etc
cp php-fpm.conf.default php-fpm.conf #復制配置文件模板
vi php-fpm.conf #修改如下內容
pid = run/php-fpm.pid
user = php
group = php
pm.max_children=50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
listen = 0.0.0.0:9000 #監聽所有端口
8、創建php用戶,啟動服務
useradd -M -s /sbin/nologin php #創建php用戶
/usr/local/sbin/php-fpm #啟動服務
[root@localhost etc]# netstat -ntap | grep php #查看9000端口
tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN 15183/php-fpm: mast
9、建立php站點
mkdir -p /var/www/html/webphp
cd /var/www/html/webphp
echo "THIS IS PHP-NGINX TEST" >index.php #創建站點首頁
10、測試,訪問http://192.168.88.128/index.php
四、搭建SVN服務器
1、安裝SVN
yum install subversion -y #安裝SVN
[root@localhost ~]# svnserve --version #查看版本信息
svnserve,版本 1.7.14 (r1542130)
編譯于 Apr 11 2018,02:40:28
版權所有 (C) 2013 Apache 軟件基金會。
此軟件包含了許多人的貢獻,請查看文件 NOTICE 以獲得更多信息。
Subversion 是開放源代碼軟件,請參閱 http://subversion.apache.org/ 站點。
2、創建SVN倉庫
mkdir -p /opt/svn/ #先創建svn目錄
svnadmin create /opt/svn #svnadmin命令將該目錄作為倉庫
[root@localhost ~]# ls /opt/svn/ #查看svn倉庫
conf db format hooks locks README.txt
3、SVN配置文件設置
vim /opt/svn/conf/svnserve.conf #修改配置文件
anon-access = none
auth-access = write
password-db = /opt/svn/conf/passwd
authz-db = /opt/svn/conf/authz
4、配置passwd和authz文件
vim /opt/svn/conf/passwd
[users]
# harry = harryssecret
# sally = sallyssecret
phpuser = 123123 #添加用戶和密碼
vim /opt/svn/conf/authz #末行添加如下內容
[/]
phpuser = r #在/opt/svn目錄下有讀取權限
[/webphp]
phpuser = rw #對webphp有讀寫權限,用于上傳下載
5、開啟SVN服務
[root@localhost svn]# svnserve -d -r /opt/svn #關閉svn使用kill命令殺死進程
[root@localhost svn]# netstat -ntap | grep svn #查看端口
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 39725svnserve
6、創建webphp目錄,初始化webphp目錄
cd /opt/svn #在/opt/svn下創建
mkdir webphp #創建webphp目錄
[root@localhost svn]# cd webphp/
[root@localhost webphp]# touch test.txt #webphp下寫入內容
[root@localhost webphp]# ls #查看文件
test.txt
[root@localhost svn]# svn import webphp file:///opt/svn/repo/webphp -m "初始化" #初始化webphp目錄
正在增加 webphp/test.txt
提交后的版本為 1。
7、測試SVN
yum install subversion -y #先安裝svn
切換到nginx服務器,在/usr/local/nginx/html下
svn cp svn://192.168.88.132/webphp
SVN測試成功
五、 搭建NFS服務器
1、開啟rpcbind和nfs服務
service rpcbind start
service nfs start
2、修改配置文件
vim /etc/exports
/opt/php * (rw,sync) #所有主機可掛載/opt/php目錄且擁有讀寫權限
3、創建目錄,發布共享
mkdir /opt/php
exportfs -rv #發布共享
4、客戶機查看
[root@localhost html]# showmount -e 192.168.88.133
Export list for 192.168.88.133:
/opt/php *
5、掛載
mount.nfs 192.168.88.133:/opt/php /var/www/html/webphp/ #掛載nfs到本地使用
若使用MFS分布式存儲方式掛載請閱:https://blog.51cto.com/13760226/2286907
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。