阶段巨献 - centos+php-fpm+mariaDB+svn+nodejs,配置linux的php和nodejs网站运行环境。
来源:互联网 发布:棋牌透视功能软件 编辑:程序博客网 时间:2024/06/06 09:03
前言
对于一个小项目和小公司而言,用php作为开发语言是很理智和聪明的选择,但是只要开发团队超过一个人,并且项目需要长时间持续开发下去,那么,一个相对稳定的运行环境及协同工作环境是必须的。
最近刚好转型做这些,下面的配置是一个真实项目的配置,相信会对大家有参考意义的。好了,那么我们开始。
centos7的安装
这个安装就不提了,在网上查一下u盘 centos7 安装什么的就好了,当然,服务器有cd的话也可以用cd安装。
小提示,安装完centos7以后你可以选择安装一个桌面—虽然以后大多数不直接操作centos但是看着也爽,然后必须推荐使用ssh远程登陆centos进行操作—-因为你可以随时copy各种指令到命令行里面执行—当你在windows上面看着一大堆url地址安装时候,你就会明白使用ssh是多么明智的
EPEL和REMI的安装及nginx配置
第三方源的配置安装
rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpmrpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
添加nginx的源及安装:
vi /etc/yum.repos.d/nginx.repo
打开以后复制下面内容:
(添加下面内容,手打可以,直接黏贴也可以。)
[nginx]name=nginx repobaseurl=http://nginx.org/packages/centos/$releasever/$basearch/gpgcheck=0enabled=1
然后请保持退出—不会的话请查一查在linux下面如何使用vi,如何保存和退出。
安装nginx:
yum install nginx -y
安装完以后,请启动nginx和设置开机启动:
systemctl start nginxsystemctl enable nginx
好了,这时候安装好了,我们—还不能看到效果,因为centos7有firewall和selinux两大安全措施,会将端口给屏蔽掉的。
首先开启80端口,永远开启:
firewall-cmd --zone=public --add-port=80/tcp --permanentfirewall-cmd --reload
然后,请关闭selinux:
好了,现在来试试能不能访问nginx:
http://192.168.1.100:80/
该地址取决于你自己对服务器的ip的定制
nginx配置成功。
安装MariaDB 5.5
yum --enablerepo=remi,remi-php56 install mariadb-server mariadb -y
备注
如果出现下载失败问题,用如下解决方法:
1
下载包
wget http://mirrors.163.com/centos/7.1.1503/os/x86_64/Packages/mariadb-server-5.5.41-2.el7_0.x86_64.rpm
提示中的包
2
yum --enablerepo=remi,remi-php56 install mariadb -y
先安装可以用。
3
yum install perl-DBD-MySQL
安装依赖包
4
rpm -Uvh mariadb-server-5.5.41-2.el7_0.x86_64.rpm
安装无法下载的包。
备注完毕
启动和设置开机启动
systemctl start mariadbsystemctl enable mariadb
设置数据库的安全
/usr/bin/mysql_secure_installation
执行上面脚本,根据提示我们需要设置一遍数据库的安全,删除匿名用户等。
额外补充:
补充远程机器可以访问该数据库的设置方式:
1 设定3306端口开放—数据库默认端口为3306,除非你改了,否则应该开发端口
firewall-cmd --zone=public --add-port=3306/tcp --permanentfirewall-cmd --reload
2 在mariaDB里面设定开发远程链接:
登陆到mariaDB,使用ssh或者直接在centos上面操作:
输入命令: mysql -u root -p
然后需要输入密码:
设定所有ip都可以访问:–假如想设定某个ip访问那么请查文档:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
其中123456为密码,请替换你的密码。
验证数据库是否正常安装,是否可以远程访问:
我用的是navicat,大家随意就好,请支持正版。
成功访问,数据库配置完毕。
安装PHP-fpm 5.6
yum --enablerepo=remi,remi-php56 install php-fpm php-common php-mysql php-opcache php-pear php-gd php-devel php-mbstring php-mcrypt php-cli php-pdophp-redis php-pecl-memcache php-bcmath php-xml -y
如果少包查找:
http://pkgs.org/download/libmcrypt.so.4()(64bit)
启动和开机启动
systemctl start php-fpmsystemctl enable php-fpm
Redis memcache扩展
yum install redis memcached -y
安装Imagick及扩展
蛮简单的,一次性上全部代码:
#imagick需要PHP >= 5.1.3 and ImageMagick >= 6.2.4yum install -y php-pear gccyum install -y ImageMagick ImageMagick-develpecl install imagick#开放selinux权限chcon -t texrel_shlib_t /usr/lib64/php/modules/imagick.so#PHP配置,加载imagick模块echo "extension=imagick.so"> /etc/php.d/imagick.ini
安装分词扩展scws
1. 取得 scws-1.2.2 的代码
wget http://www.xunsearch.com/scws/down/scws-1.2.2.tar.bz2
- 解开压缩包
tar xvjf scws-1.2.2.tar.bz2cd scws-1.2.2./configure --prefix=/usr/local/scwsmake &&make install
可能遇到的问题:
找不到c编译器
[root@localhost scws-1.2.2]# ./configure --prefix=/usr/local/scwschecking for a BSD-compatible install... /usr/bin/install -cchecking whether build environment is sane... yeschecking for a thread-safe mkdir -p... /usr/bin/mkdir -pchecking for gawk... gawkchecking whether make sets $(MAKE)... yeschecking for gcc... nochecking for cc... nochecking for cl.exe... noconfigure: error: in `/root/scws-1.2.2':configure: error: no acceptable C compiler found in $PATHSee `config.log' for more details
解决方案:
yum install gcc#安装gcc。
bzip2 没有
tar (child): lbzip2: Cannot exec: No such file or directorytar (child): Error is not recoverable: exiting nowtar: Child returned status 2tar: Error is not recoverable: exiting now
解决方案:
#安装bzip2yum install bzip2 -y
检查有没有安装成功:
Ls /usr/local/scws
看看有没有东西。。后面的路径其实是prefix指定的路径。
配置scws成为php的扩展
1) 进入源码目录的 phpext/ 目录
cd ~/scws-1.2.2
–即 scws-1.2.2下面 还有一个phpext目录。
2) 执行 phpize (在PHP安装目录的bin/目录下)
phpize
3) 执行
./configure --with-scws=/usr/local/scws
若 php 安装在特殊目录 $php_prefix
, 则请在 configure 后加上 --with-php-config=$php_prefix/bin/php-config
4) 执行 make 然后用 root 身份执行 make install
php.ini中增加
vi /etc/php.d/scws.iniextension = scws.so[scws]scws.default.charset = utf-8scws.default.fpath = /usr/local/scws/etc
更新字典
cd /usr/local/scws/etcwget http://www.xunsearch.com/scws/down/scws-dict-chs-utf8.tar.bz2tar xvjf scws-dict-chs-utf8.tar.bz2
网络工具安装
yum install net-tools
SELinux配置
查看SELinux状态:1、/usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态SELinux status: enabled2、getenforce ##也可以用这个命令检查关闭SELinux:1、临时关闭(不用重启机器):setenforce 0 ##设置SELinux 成为permissive模式 ##setenforce 1 设置SELinux 成为enforcing模式2、修改配置文件需要重启机器:修改/etc/selinux/config 文件将SELINUX=enforcing改为SELINUX=disabled重启机器即可
nginx配置及文件上传限制设定
到这里我们已经安装完毕nginx, mariadb, 以及php-fpm,我们需要对Nginx进行配置
A - 配置/etc/nginx/nginx.conf
文件
输入命令: vi /etc/nginx/nginx.conf
user nginx;worker_processes 1;
worker_processes表示当前VPS/服务器的CPU核心数,我们可以通过 grep ^processor /proc/cpuinfo | wc -l
检测和修改。
B - 检查启动sendfile, tcp_nopush, gzip,以及添加INDEX.PHP文件
sendfile on;tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65;gzip on;
#index index.php index.html index.htm;---请注意,index不应该在nginx.conf下面配置的,应该在子项目子服务的server的location下面配置,这里就不要设定index了。
修改PHP上传文件大小限制的方法
--先打开php的配置文件:vi /etc/php.inimax_execution_time = 0post_max_size = 150Mupload_max_filesize = 100Mmemory_limit = 1024
nginx修改上传文件大小限制
client_max_body_size 1000m;--在nginx后面加上面的设定。注意,需要在http的括号里面设定的,否则会出错。
nginx及php-fpm的配置及运行正式的php网站
上面的过程中我们只是单独配置了数据库,服务器和php而已,那么,centos下面的nginx怎么样才能运行php文件呢?
下面我们以site1作为例子来说明,首先,新建一个nginx的配置文件,作为站点site1的配置文件:
###############################################################################################################server {listen 8001;server_name 120.25.213.167 www.site1.com *.site1.com;root "/var/www/sites/site1";#这里是网站根目录,写上自己的目录吧。# access_log /var/log/nginx/access/site1/nginx_access.log;error_log /var/log/nginx/error/site1/nginx_error.log;index index.php;location / {} error_page 404 /;location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param CONFIG_TYPE product;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;#规定脚本的路径及名字include fastcgi_params;} location ~* \.(?:ico|css|js|gif|jpeg|png)$ {expires 30d;access_log off;log_not_found off;add_header Pragma public;add_header Cache-Control "public";} location /console {fastcgi_pass 127.0.0.1:9000;include fastcgi_params;} set $flag 0;if ($uri !~ ^/console/){set $flag "${flag}1";} if (!-e $request_filename){set $flag "${flag}2";} if ($flag = "012"){rewrite ^/(.*)$ /index.php last;}}
上面的配置文件说明了几个要点,就是这个站点监听的端口是8001,网站目录是/var/www/sites/site1
错误日志文件在:/var/log/nginx/error/site1/nginx_error.log
fastcgi调用的地址和端口是:fastcgi_pass 127.0.0.1:9000
好了,那么我们要做一些准备工作:
1 开放9000端口及8001端口;
2 新建错误日志目录及文件;
3 新建网站根目录及放置一个测试用的php文件。
下面是步骤:
#1 --开放端口firewall-cmd --zone=public --add-port=8001/tcp --permanentfirewall-cmd --zone=public --add-port=9000/tcp --permanentfirewall-cmd --reload#2 --建立必要的目录mkdir -p /var/log/nginx/error/site1#3 --添加日志文件vi /var/log/nginx/error/site1/nginx_error.log####解释:vi /var/log/nginx/error/site1/nginx_error.log####请按esc,然后填:wq保存并退出--这是vi命令的基本用法。#4 新建网站根目录mkdir -p /var/www/sites/site1##添加php文件并保存--内容看下面的例子。vi /var/www/sites/site1/index.php
php文件内容–例子
<!DOCTYPE html><html><body><h1>我的第一张 PHP 页面</h1><?phpecho "Hello World!";?></body></html>
好了,访问一下:
php及nginx成功配置。
SVN安装及基本配置
centos(我这里使用的是CentOS7)下yum命令即可方便的完成安装
$ sudo yum install subversion
测试安装是否成功:
$ svnserve --version
开放端口,注意,subversion的默认端口为3690,如果没有打开会报错:
firewall-cmd --zone=public --add-port=3690/tcp --permanentfirewall-cmd --reload
服务启动及相关:
$ sudo systemctl enable svnserve.service #注意:根目录必须是/var/svn 这样才能设置成功!!#设置开机启动后就可以按下面的方式开启或停止服务了$ sudo systemctl start svnserve.service$ sudo systemctl stop svnserve.service$ sudo systemctl status svnserve.service#查看svn服务的状态。
请运行启动svn服务及开机启动命令。下面我们将尝试新建一个代码仓库,然后用客户端访问。
注意:svn仓库的地址默认规则是:
svn://你的机器ip地址/仓库名称
svn基本应用–创建一个代码仓库
创建svn数据目录(subversion默认是把/var/svn作为数据根目录的,开机启动默认也是从这里):
$ sudo mkdir -p /var/svn
假设我们现在创建的代码仓库名称是test_normal那么我们需要这样创建:
##创建目录sudo mkdir -p /var/svn/test_normal##创建仓库sudo svnadmin create /var/svn/test_normal
备注,删除版本库如此即可:
rm -rf /var/svn/test_normal
编辑权限等等。
1 每个版本库创建之后都会生成svnserve.conf主要配置文件。编辑它:
sudo vim /var/svn/test_normal/conf/svnserve.conf
编辑示例—引用网上的:
[general]anon-access = none; #控制非鉴权用户访问版本库的权限auth-access = write;#控制鉴权用户访问版本库的权限password-db = passwd;#指定用户名口令文件名authz-db = authz;#指定权限配置文件名realm = wangwa;#指定版本库的认证域,即在登录时提示的认证域名称
实际编辑:
不要吐槽颜色什么了,这是vim自带样式。
编辑svn用户配置文件
sudo vim /var/svn/test_normal/conf/passwd
网上引用例子:
[users]admin = admin #用户,密码fuhd = fuhd #用户,密码test = test #用户,密码
实际编辑:
编辑svn权限控制配置文件
sudo vim /var/svn/test_normal/conf/authz
网上引用例子:
[groups]admin = admin #admin为用户组,等号之后的admin为用户test = fuhd,test[wangwa:/] #表示根目录(/var/svn/wangwa),wangwa: 对应前面配置的realm = wangwa@admin = rw #表示admin组对根目录有读写权限,r为读,w为写[wangwa:/test] #表示test目录(/var/svn/wangwa/test)@test = rw #表示test组对test目录有读写权限
实际示例:
重启svn服务:
sudo systemctl restart svnserve
然后在客户端链接该目录–我用的是tortoiseSVN–大家随意就好。
好了,成功导出项目。svn仓库搭建成功。
高阶应用-搭建svn的开发环境-php+nginx
我们的目标是搭建开发还,包含了项目管理,还有上传和更新文件以后会在服务器上面显示出来的开发环境。好了,下面就是这一个步骤。
我们以一个新的项目,叫test_high来举例。
分几个步骤完成这个过程。
1 创建代码仓库
2 设定钩子–post-commit达到自动同步到网站目录的效果
3 设定nginx的子网站配置文件,开放相关端口
4 测试是否成功
第一步,先设定基本的仓库,然后重启svn服务,其后有示意图
sudo mkdir -p /var/svn/test_highsudo svnadmin create /var/svn/test_highsudo vim /var/svn/test_high/conf/svnserve.confsudo vim /var/svn/test_high/conf/passwdsudo vim /var/svn/test_high/conf/authzsudo systemctl restart svnserve
下面就是规定我们网站的目录,每次更新svn之后,我们需要同步更新的网站目录,这里假设网站目录为
/usr/local/webroot/test_high
mkdir -p /usr/local/webroot/test_hightsvn checkout svn://localhost/test_hight /usr/local/webroot/test_hight --username testuser --password abc --non-interactive
上面的命令意思为:
创建对应目录,checkout到网站存放目录。
取出成功。
接下来我们要修改hook脚本的post commit,
首先先将post-coomit.tmpl复制一份成为post-commit,
svn每次更新完以后将会执行post-commit脚本
然后给脚本执行权限,接下来将脚本内容添加进去–就是下面的脚本例子了。
然后保存,再重启svn服务,然后测试是否成功。
cd /var/svn/test_hight/hookscp post-commit.tmpl post-commitchmod +x post-commitvi post-commit
#!/bin/sh# 库的路径REPOS="$1"# 新提交的版本号REV="$2"WEB=/usr/local/webroot/test_hightSVN=/usr/bin/svnLOG=/usr/local/webroot/auto_svn.logexport LC_ALL=zh_CN.UTF-8changed=$(svnlook changed -r $REV $REPOS)log=$(svnlook log -r $REV $REPOS)echo "now the changed is:$changed">>$LOGn=$'\n'$SVN update $WEB --username testuser --password abc --non-interactive #更新到我们的目标网站目录。
好了,我们重启一下svn服务,然后在客户端checkout项目,然后添加一个文件上去看看。
步骤如下–直接用图片了:
checkout项目,输入账号,新建文件,输入内容,submit文件内容。。。
脚本内容如下–已经出现过的:
<!DOCTYPE html><html><body><h1>我的第一张 PHP 页面</h1><?phpecho "Hello World!";?></body></html>
好了,我们更新以后再看看网站目录是不是有test.php文件?
ls /usr/local/webroot/test_hight
svn项目及自动更新配置部分完毕。
下面我们配置 nginx的网站。
下面我们以test_hight作为例子来说明,首先,新建一个nginx的配置文件,作为站点test_hight的配置文件:
vi /etc/nginx/conf.d/test_hight.conf
内容如下:
###############################################################################################################server { listen 8003; server_name 120.25.213.167 www.test_hight.com *.test_hight.com; root "/usr/local/webroot/test_hight/"; #这里是网站根目录,写上自己的目录吧。 error_log /var/log/nginx/error/test_hight/nginx_error.log; index index.php; location / { } error_page 404 /; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param CONFIG_TYPE product; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #规定脚本的路径及名字 include fastcgi_params; } location ~* \.(?:ico|css|js|gif|jpeg|png)$ { expires 30d; access_log off; log_not_found off; add_header Pragma public; add_header Cache-Control "public"; } location /console { fastcgi_pass 127.0.0.1:9000; include fastcgi_params; } set $flag 0; if ($uri !~ ^/console/){ set $flag "${flag}1"; } if (!-e $request_filename){ set $flag "${flag}2"; } if ($flag = "012"){ rewrite ^/(.*)$ /index.php last; }}
上面的配置文件说明了几个要点,就是这个站点监听的端口是8003,网站目录是/usr/local/webroot/test_hight
错误日志文件在:/var/log/nginx/error/test_hight/nginx_error.log
fastcgi调用的地址和端口是:fastcgi_pass 127.0.0.1:9000
好了,那么我们要做一些准备工作:
1 开放9000端口及8003端口;—到这里9000端口你应该已经开放了。
2 新建错误日志目录及文件;
3 新建网站根目录及放置一个测试用的php文件。
下面是步骤:
--1 --开放端口firewall-cmd --zone=public --add-port=8003/tcp --permanentfirewall-cmd --reload--2 --建立必要的目录mkdir -p /var/log/nginx/error/test_hight--3 --添加日志文件vi /var/log/nginx/error/test_hight/nginx_error.log--解释:vi /var/log/nginx/error/test_hight/nginx_error.log--请按esc,然后填:wq保存并退出--这是vi命令的基本用法。
重启nginx:
sudo systemctl restart nginx
乱码问题无足轻重,稍后解决,现在我们来添加一个新的文件,譬如,test2.php,然后看看服务器能不能立刻访问。
步骤如下:
nodejs运行环境配置
为什么要配置nodejs?因为该项目前后端分离,前端是一台独立服务。实际上对于小型项目而言,还是都放一起比较划算
安装nodejs源代码
yum -y install gcc make gcc-c++ openssl-devel wget
然后,获取源代码文件。
wget https://nodejs.org/dist/v6.9.1/node-v6.9.1.tar.gztar -zvxf node-v6.9.1.tar.gzcd node-v6.9.1.tar.gz./configure
安装:
make && make install
经过千辛万苦—主要是网速慢,终于安装成功了。
配置cnpm–针对国内环境推荐安装。
npm install -g cnpm --registry=https://registry.npm.taobao.org
有express的就安装一下:
npm install -g express-generatornpm install -g express
所以,整个开发环境已经初步搭建完毕。
- 阶段巨献 - centos+php-fpm+mariaDB+svn+nodejs,配置linux的php和nodejs网站运行环境。
- php和NodeJs共存的开发环境
- Linux上的node站点之centos配置nodejs运行环境笔记
- CentOS nodejs环境配置
- Centos配置nodejs环境
- Linux(Centos)配置PHP运行环境
- CentOS中,使用PHP-FPM+Nginx运行PHP网站
- centos 配置php-fpm和nginx的通信
- CentOS 7.0 安装配置php环境 Apache+PHP+mariadb
- linux配置nodejs环境
- CentOS 7.0 配置nginx+php+mariadb开发环境
- centos 配置nginx php-fpm mysql 环境步骤
- CentOS 6.4 Nginx + PHP-FPM + MySQL 环境配置
- Linux环境下NodeJS的安装配置
- nginx+php-fpm在Linux下的安装和配置
- CentOS7配置nginx php php-fpm mariadb phpmyadmin(yum安装)
- Linux系统(Centos)下安装nodejs并配置环境
- CentOS使用YUM安装php运行环境,包含php,php-fpm,nginx,mysql
- android 内置APK
- jQuery LigerUI 使用教程
- android控件属性padding
- Android源码结构
- Java学习笔记-单例模式等
- 阶段巨献 - centos+php-fpm+mariaDB+svn+nodejs,配置linux的php和nodejs网站运行环境。
- 最大概率法分词及性能测试
- python.h 没有那个文件或目录
- java.lang.IllegalStateException: Current state = FLUSHED, new state = CODING_END问题查找
- PHP Pear 安装及使用
- 得到光标在屏幕上的位置
- 冒泡排序
- 【深度学习】Alexnet论文的解读
- 欢迎使用CSDN-markdown编辑器