【一】搭建swoft的开发环境

官方推荐的首选需要安装docker环境

但是官方的docker没有nginx而且我们公司的服务器,是没有使用docker的。同时部署子站点和主站点,而且还需手动配置。现在记录一下自己的手动安装过程

安装方式有两种:

1.docker安装方式

推荐mac和win10的用户使用

首先下载安装 docker http://get.daocloud.io/#install-docker-for-mac-windows (国内镜像)

然后去github下载swoft框架

git clone https://github.com/swoft-cloud/swoft

cd swoft

docker-compose up

只需几步,docker下的swoft就运行起来了。详细的docker使用方式,请参考docker官网

2. vagrant+virtualbox安装

已经封装好的box 百度网盘下载地址:

https://pan.baidu.com/s/1wFtIhai_TFPn6174cLh1hQ

用vagrant导入box即可。

3.在centos7虚拟机原始安装

安装过程如下:

首先安装一些系统需要的组件

yum install -y gcc gcc-c++ make zlib zlib-devel pcre pcre-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers libXpm-devel autoconf

wget http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/l/libmcrypt-2.5.8-13.el7.x86_64.rpm

wget http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/l/libmcrypt-devel-2.5.8-13.el7.x86_64.rpm

wget http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/m/mhash-0.9.9.9-10.el7.x86_64.rpm

wget http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/m/mcrypt-2.6.8-11.el7.x86_64.rpm

yum localinstall -y libmcrypt-2.5.8-13.el7.x86_64.rpm libmcrypt-devel-2.5.8-13.el7.x86_64.rpm mhash-0.9.9.9-10.el7.x86_64.rpm mcrypt-2.6.8-11.el7.x86_64.rpm

rm -rf libmcrypt-2.5.8-13.el7.x86_64.rpm libmcrypt-devel-2.5.8-13.el7.x86_64.rpm mhash-0.9.9.9-10.el7.x86_64.rpm mcrypt-2.6.8-11.el7.x86_64.rpm

安装nginx

 在nginx官方找到最新稳定版本的nginx: http://nginx.org/en/download.html

wget http://nginx.org/download/nginx-1.12.2.tar.gz

tar -zxvf nginx-1.12.2.tar.gz

rm -rf nginx-1.12.2.tar.gz

cd nginx-1.12.2/

./configure --prefix=/usr/local/nginxmake && make install

cd /usr/local/nginx/sbin

./nginx

vim /etc/rc.d/init.d/nginx

写入以下脚本参考:https://www.cnblogs.com/KenChung/p/8079313.html

#设置脚本权限

#设置脚本开机启动

#启动nginx

chmod 775 /etc/rc.d/init.d/nginx

chkconfig nginx on 

/etc/rc.d/init.d/nginx start

#把nginx加入系统变量

echo 'export PATH=$PATH:/usr/local/nginx/sbin'>>/etc/profile && source /etc/profile

安装php7

我们这里选择的是php7.1.15版本

wget http://cn2.php.net/distributions/php-7.1.15.tar.gz

tar zxvf php-7.1.15.tar.gz&&  rm -rf php-7.1.15.tar.gz

cd php-7.1.15/

./configure --prefix=/usr/local/php7 --enable-fpm --with-mcrypt --with-zlib --enable-mbstring --enable-pcntl --with-openssl --enable-soap --with-pear --with-png-dir --with-pcre-regex --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd  --with-gd --with-jpeg-dir=/usr/lib --enable-gd-native-ttf --with-gettext --with-curl --enable-sockets --enable-bcmath --enable-xml --with-bz2 --enable-zip --with-freetype-dir=/usr/include/freetype

make&& make install

cp php.ini-production /usr/local/php7/lib/php.ini

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

cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf

cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf

echo -e'\nexport PATH=/usr/local/php7/bin:/usr/local/php7/sbin:$PATH\n' >> /etc/profile && source /etc/profile

chmod +x /etc/init.d/php-fpm

chkconfig --add php-fpm

chkconfig php-fpm on

service php-fpm start

安装redis、hiredis 和 nghttp2

nghttp2和hiredis,基于c的http和redis通信

①:安装redis和hiredis

hiredis

wget https://github.com/redis/hiredis/archive/v0.13.3.tar.gz -O hiredis.tar.gz

mkdir -p hiredis&& tar -xf hiredis.tar.gz -C hiredis --strip-components=1

rm -rf hiredis.tar.gz&& cd hiredis&& make -j&& make install&& ldconfig

redis

wget http://download.redis.io/releases/redis-4.0.9.tar.gz

tar xzf redis-4.0.9.tar.gz&& rm -rf redis-4.0.9.tar.gz&& cd redis-4.0.9&& make MALLOC=libc

cd src&& make install

cd ../

sed -i's/daemonize no/daemonize yes/g' ./redis.conf

sed -i's/protected-mode yes/protected-mode no/g' ./redis.conf

sed -i's/bind 127.0.0.1/#bind 127.0.0.1/g' ./redis.conf

mkdir /etc/redis

cp ./redis.conf /etc/redis/6379.conf&& cp ./utils/redis_init_script /etc/init.d/redis

cd /etc/init.d

sed -i'1a #chkconfig:  2345 90 10' ./redis

sed -i'2a #description:  Redis is a persistent key-value database' ./redis

chkconfig redis on

service redis start

②:安装nghttp2

wget https://github.com/nghttp2/nghttp2/releases/download/v1.30.0/nghttp2-1.30.0.tar.bz2 && tar -jxvf nghttp2-1.30.0.tar.bz2 && cd nghttp2-1.30.0 && ./configure && make -j && make install


编译安装swoole 2.2.0版本

sed -i'$a export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib' ~/.bash_profile

source ~/.bash_profile

wget https://github.com/swoole/swoole-src/archive/v2.2.0.tar.gz -O swoole.tar.gz&& mkdir -p swoole&& tar -xf swoole.tar.gz -C swoole --strip-components=1 && rm -rf swoole.tar.gz

cd swoole/&& /usr/local/php7/bin/phpize

./configure --with-php-config=/usr/local/php7/bin/php-config --enable-async-redis --enable-mysqlnd --enable-coroutine --enable-openssl --enable-http2&& make -j&& make install

sed -i'$a extension=swoole.so' /usr/local/php7/lib/php.ini

service php-fpm restart

安装mysql数据库

#安装mysql 5.6

  wget http://dev.mysql.com/Downloads/MySQL-5.6/MySQL-server-5.6.21-1.rhel5.x86_64.rpm&& wget http://dev.mysql.com/Downloads/MySQL-5.6/MySQL-devel-5.6.21-1.rhel5.x86_64.rpm&& wget http://dev.mysql.com/Downloads/MySQL-5.6/MySQL-client-5.6.21-1.rhel5.x86_64.rpm

rpm -ivh MySQL-server-5.6.21-1.rhel5.x86_64.rpm&& rpm -ivh MySQL-client-5.6.21-1.rhel5.x86_64.rpm&& rpm -ivh MySQL-devel-5.6.21-1.rhel5.x86_64.rpm

cp /usr/share/mysql/my-default.cnf /etc/my.cnf

/usr/bin/mysql_install_db

查看初始密码

    more /root/.mysql_secret

用获取到的密码登录

    mysql -uroot -pj3R5qTNxrKsxnQTj    # 命令登录Mysql:(j3R5qTNxrKsxnQTj 即为笔者查到的初始密码)

修改密码

    set password = password('123456');

登录数据库修改数据库root访问权限

use mysql

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456'  WITH GRANT OPTION;

flush privileges;

开启外网防火墙

firewall-cmd --zone=public --add-port=3306/tcp --permanent

配置nginx

代理到本地的10000端口

server {

listen 80;

server_name dev.jianshu.com;

root /home/www/jianshu;

location / {

proxy_pass http://127.0.0.1:10000;

}

}

创建目录

/home/www/jianshu

配置swoft代码里swoole监听的端口


将swoft的开发代码上传到服务器目录

/home/www/jianshu

php bin/swoft start 

配置本地域名或者dns解析,用 dev.jianshu.com 即可访问。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容