摘要:這兩天翻了翻之前的技術文檔,發現有一篇值得拿出來和大家分享如何給一臺全新的阿里云服務器,搭建環境來部署項目,項目等。
這兩天翻了翻之前的技術文檔,發現有一篇值得拿出來和大家分享:如何給一臺全新的阿里云服務器,搭建環境 —— 來部署 PHP 項目,Node.js 項目等。
讓我們開始吧:
1. 利用 Docker 制作 Centos 服務器
2. 安裝 Nginx
3. 安裝 PHP 7
4. 安裝 composer
5. 安裝Node.js
6. 安裝 git 和 svn
因為我自己沒有阿里云服務器,所以沒法在真實的服務器上搭建環境;但我們可以利用 Docker 來模擬。
首先需要一個 systemd 整合的 Centos 鏡像。
Dockerfile 內容如下所示:
FROM daocloud.io/centos:7 MAINTAINER "yemeishu"ENV container docker RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); rm -f /lib/systemd/system/multi-user.target.wants/*; rm -f /etc/systemd/system/*.wants/*; rm -f /lib/systemd/system/local-fs.target.wants/*; rm -f /lib/systemd/system/sockets.target.wants/*udev*; rm -f /lib/systemd/system/sockets.target.wants/*initctl*; rm -f /lib/systemd/system/basic.target.wants/*; rm -f /lib/systemd/system/anaconda.target.wants/*; VOLUME [ "/sys/fs/cgroup" ] CMD ["/usr/sbin/init"]
然后就可以啟動容器了,但這里要避免「運行Docker 使用systemctl報錯」的問題,解決方案是:掛載 /sys/fs/cgroup 目錄到容器的 /sys/fs/cgroup 目錄并配置只讀權限,但是docker run 命令只能使用-d參數,不能使用-it參數,使用-it參數仍然會卡死。
docker run -d -v /sys/fs/cgroup:/sys/fs/cgroup:ro local/centos7-systemd
參考: https://github.com/docker-library/docs/tree/master/centos
運行容器:
當我們運行 vim 想打開編輯某個文件時,發現 vim 并沒有安裝,這時候我們可以直接在容器中安裝,但為了模擬的更徹底,我們再修改修改 Dockerfile 文件,讓鏡像帶上 vim:
FROM daocloud.io/centos:7 MAINTAINER "yemeishu"ENV container docker RUN yum -y install vim-enhanced RUN yum -y install vim* RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); rm -f /lib/systemd/system/multi-user.target.wants/*; rm -f /etc/systemd/system/*.wants/*; rm -f /lib/systemd/system/local-fs.target.wants/*; rm -f /lib/systemd/system/sockets.target.wants/*udev*; rm -f /lib/systemd/system/sockets.target.wants/*initctl*; rm -f /lib/systemd/system/basic.target.wants/*; rm -f /lib/systemd/system/anaconda.target.wants/*; VOLUME [ "/sys/fs/cgroup" ] CMD ["/usr/sbin/init"]
制作鏡像,生成容器,運行容器,驗證 vim 是否安裝成功,直接看圖:
安裝工具有了 「centos 服務器」了,我們開始配置 PHP (Laravel / Lumen) 環境了。
安裝 Nginx安裝 Nginx 之前,我們需要修改 yum 源鏡像,我們使用阿里云的,
首先安裝 wget:
yum install wget -y
# CentOS 5 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo # CentOS 6 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo # CentOS 7 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all yum -y install epel-release yum install nginx -y systemctl start nginx systemctl enable nginx // 開機自啟動安裝 PHP 7
添加源:
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
安裝:
yum install php70w -y
安裝常規需要使用的 php 插件:
yum install php70w-json php70w-xml php70w-mbstring php70w-mysqlnd php70w-fpm -y安裝 composer
Composer 是 PHP 的一個依賴管理工具。它允許你申明項目所依賴的代碼庫,它會在你的項目中為你安裝他們。
Composer 不是一個包管理器。是的,它涉及 "packages" 和 "libraries",但它在每個項目的基礎上進行管理,在你項目的某個目錄中(例如 vendor)進行安裝。默認情況下它不會在全局安裝任何東西。因此,這僅僅是一個依賴管理。這種想法并不新鮮,Composer 受到了 node"s npm 和 ruby"s bundler 的強烈啟發。而當時 PHP 下并沒有類似的工具。
Composer 將這樣為你解決問題:
a) 你有一個項目依賴于若干個庫。
b) 其中一些庫依賴于其他庫。
c) 你聲明你所依賴的東西。
d) Composer 會找出哪個版本的包需要安裝,并安裝它們(將它們下載到你的項目中)。
參考:http://docs.phpcomposer.com/00-intro.html
1.使用 php 命令安裝
# 下載安裝腳本 - composer-setup.php - 到當前目錄。 php -r "copy("https://install.phpcomposer.com/installer", "composer-setup.php");" # 執行安裝過程。 php composer-setup.php # 刪除安裝腳本。 php -r "unlink("composer-setup.php");" # 打開命令行窗口并執行如下命令將前面下載的 composer.phar 文件移動到 /usr/local/bin/ 目錄下面 mv composer.phar /usr/local/bin/composer
更多查看:https://getcomposer.org/download/
2.使用 Packagist / Composer 中國全量鏡像加速
修改 composer 的全局配置文件(推薦方式)
composer config -g repo.packagist composer https://packagist.phpcomposer.com
更多查看:https://pkg.phpcomposer.com/
3.并行 composer install,讓下載如有神助
composer global require hirak/prestissimo
4.實時更新
安裝 Node.js提示:不要忘了經常執行 composer selfupdate 以保持 Composer 一直是最新版本哦!
yum -y install nodejs npm --enablerepo=epel
安裝國內鏡像:
npm install -g cnpm --registry=https://registry.npm.taobao.org
安裝 n 來管理和選擇nodejs版本 // 保持和現有服務器版本一致
cnpm install -g n
安裝最新的stable版:
n stable
或者安裝指定版本:如 n 0.8.20
安裝 git 和 svnyum -y install git yum -y install subversion測試
現在基礎的工具和環境已經有了,那我們開始試試效果,安裝一個 Lumen 項目試試:
配置 nginx。在/etc/nginx/conf.d/ 路徑下創建 blog.conf
server { listen 80; server_name blog.xxx.com; #index index.php index.html; location / { root /www/html/blog/public; try_files $uri $uri/ /index.php?$query_string; index index.php index.html index.htm; } location ~ .php$ { #try_files $uri = 404; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /www/html/blog/public$fastcgi_script_name; include fastcgi_params; fastcgi_pass 127.0.0.1:9000; } }
啟動php-fpm,然后利用 curl 命令訪問試試:
可以正常打印出:Lumen (5.5.0) (Laravel Components 5.5.*),表示我們的 nginx 和 php-fpm 啟動并配置成功了。
總結溫故而知新,本文繼續通過簡單的學習 docker 模擬 Centos 服務器來配置環境。
如果你有阿里云服務器或者騰訊云服務器,并且是 Centos 7 系統的,正常通過以上的步驟,安裝必要的工具,部署常規的 PHP 或者 Node.js 項目應該問題不大了。接下來就可以部署常規的運營工具和防護工具了。
下面羅列一些問題和知識點:
1. centos7 docker容器報 docker Failed to get D-Bus connection 錯誤
報這個錯的原因是 dbus-daemon 沒能啟動。systemctl 并不是不能使用。將 CMD 或者 entrypoint 設置為 /usr/sbin/init 即可。docker 容器會自動將 dbus 等服務啟動起來。如下:
docker run --privileged -ti --name test docker.io/centos:7 /usr/sbin/init
2. 報Error: xz compression not available 的解決方法
yum remove epel-release # Sometimes that is not enough, you need to remove the cache as well by: rm -rf /var/cache/yum/x86_64/6/epel # Then you can install the epel-release again yum -y install epel-release # yum clean all is doing great for cleaning the cache
3. FastCgi 與 php-fpm之間是個什么樣的關系?
可以詳細參考這篇帖子:https://segmentfault.com/q/1010000000256516
「完」
coding01 期待您關注
感謝您能看到這了
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27048.html
摘要:這兩天翻了翻之前的技術文檔,發現有一篇值得拿出來和大家分享如何給一臺全新的阿里云服務器,搭建環境來部署項目,項目等。 showImg(https://segmentfault.com/img/remote/1460000011106825); 這兩天翻了翻之前的技術文檔,發現有一篇值得拿出來和大家分享:如何給一臺全新的阿里云服務器,搭建環境 —— 來部署 PHP 項目,Node.js ...
摘要:簡介操作系統網頁服務器數據庫管理系統腳本語言注以下開始進行的是分步安裝,如果你想一步安裝請跳過,拉到頁面底部,當然你得首先安裝好自己的系統安裝服務器如果你自己裝過虛擬機或者有更好的安裝技巧可跳過,這只是博主自己安裝的方法此安裝方式操作的是下 LAMP簡介 L:Linux操作系統A:Apache網頁服務器M:Mysql數據庫管理系統P:Php腳本語言 注:以下開始進行的是分步安裝,如果...
閱讀 3319·2021-11-08 13:12
閱讀 2756·2021-10-15 09:41
閱讀 1450·2021-10-08 10:05
閱讀 3299·2021-10-08 10:04
閱讀 2102·2021-09-29 09:34
閱讀 2471·2019-08-30 15:55
閱讀 2979·2019-08-30 15:45
閱讀 2576·2019-08-29 14:17