摘要:使用技術(shù)可以幫助企業(yè)快速水平擴(kuò)展服務(wù),從而到達(dá)彈性部署業(yè)務(wù)的能力。例如我們要安裝然后使用查看我們的擴(kuò)展是否安裝成功。啟動(dòng)和,檢查是否正常運(yùn)行。單容器運(yùn)行若勾選,則表示安裝此應(yīng)用時(shí),每個(gè)服務(wù)只運(yùn)行一個(gè)容器。
使用Docker技術(shù)可以幫助企業(yè)快速水平擴(kuò)展服務(wù),從而到達(dá)彈性部署業(yè)務(wù)的能力。在云服務(wù)概念興起之后,Docker的使用場景和范圍進(jìn)一步發(fā)展,如今在微服務(wù)架構(gòu)越來越流行的情況下,微服務(wù)+Docker的完美組合,更加方便微服務(wù)架構(gòu)運(yùn)維部署落地。
如何快速入門docker,開發(fā)屬于自己的容器應(yīng)用?我們今天不整虛的,來點(diǎn)實(shí)打?qū)嵉母韶洠豪肬RLOS快速開發(fā)docker應(yīng)用,并可隨意將應(yīng)用導(dǎo)出給他人使用。
對URLOS不了解的朋友,這里大概介紹一下,URLOS是一個(gè)容器云管理面板,基于Docker容器技術(shù)打包和運(yùn)行應(yīng)用,可自動(dòng)識別機(jī)器和云應(yīng)用的故障并將云應(yīng)用轉(zhuǎn)移至可用的機(jī)器上,單機(jī)故障并不影響業(yè)務(wù)開展,配合云存儲(chǔ)便可輕松搭建7x24小時(shí)持續(xù)運(yùn)行的應(yīng)用環(huán)境。
URLOS官網(wǎng):https://www.urlos.com/
URLOS安裝方法:https://www.urlos.com/center-...
URLOS開發(fā)交流QQ群:695164700,147882180
URLOS微信公眾號:
安裝URLOS:
curl -SO https://www.urlos.com/install && chmod 544 install && ./install
安裝完成后,地址欄輸入 http://ip:9968 即可訪問。
劃重點(diǎn):利用URLOS開發(fā)docker應(yīng)用的最基本的流程:
這里我們以制作一個(gè)LNP(linux+nginx+php)網(wǎng)站環(huán)境為例,快速制作一個(gè)可以導(dǎo)出給他人使用的docker應(yīng)用。
在開始制作之前,我們先到docker官網(wǎng)注冊一個(gè)賬號,這樣我們才能將制作好的鏡像上傳到docker倉庫,打開https://hub.docker.com/
有了hub賬號,那么我們開始制作吧!
使用SSH工具連接主機(jī),輸入以下命令拉取一個(gè)php:7.3.3-fpm-stretch鏡像,啟動(dòng)容器并進(jìn)入這個(gè)容器內(nèi)部:
docker run -it php:7.3.3-fpm-stretch bash
看到類似上圖中類似的字符串時(shí),表示已經(jīng)成功進(jìn)入容器內(nèi)部,這個(gè)便是當(dāng)前容器的ID
先更新一下鏡像源,國內(nèi)用阿里的會(huì)快一些
set -ex && sed -i "[email protected]@mirrors.aliyun.com@" /etc/apt/sources.list set -ex && sed -i "[email protected]@mirrors.aliyun.com@" /etc/apt/sources.list apt-get update
更新完成之后,再來安裝nginx,默認(rèn)安裝目錄為/etc/nginx
apt-get install -y nginx
官方鏡像默認(rèn)是沒有ps -ef 命令,因此需要手動(dòng)安裝
apt-get install -y procps
安裝PHP擴(kuò)展。安裝php自帶的一些擴(kuò)展時(shí),可以使用docker-php-ext-configure和docker-php-ext-install。
例如我們要安裝pdo_mysql:
docker-php-ext-configure pdo_mysql docker-php-ext-install pdo_mysql
然后使用 php -m查看我們的擴(kuò)展是否安裝成功。使用這種方式安裝,系統(tǒng)會(huì)自動(dòng)生成一個(gè)配置文件,提供給
php加載,使用命令查看:
ls -l /usr/local/etc/php/conf.d/
gd擴(kuò)展安裝
apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpegdir=/usr/include/ docker-php-ext-install gd
如果需要安裝memcached、redis擴(kuò)展,則需要下載擴(kuò)展到容器,然后手動(dòng)編譯安裝。地址:
https://pecl.php.net/package/...
https://pecl.php.net/package/...
memcached擴(kuò)展安裝:
curl -O https://pecl.php.net/get/memcached-3.1.3.tgz tar xf memcached-3.1.3.tgz && cd memcached-3.1.3 phpize ./configure
編譯過程中若出現(xiàn)以下錯(cuò)誤提示:
則執(zhí)行安裝命令,然后重新編譯安裝memcached擴(kuò)展:
apt-get install -y libmemcached-dev ./configure make && make install
添加extension=memcached.so語句到php.ini文件。安裝完成后通過命令查看擴(kuò)展存放的位置
ls /usr/local/lib/php/extensions/no-debug-non-zts-20170718/
php安裝目錄:/usr/local/php
php.ini的配置文件目錄:/usr/local/etc/php/。在這個(gè)目錄下有兩個(gè)文件:php.ini-development和php.iniproduction。
因此,我們需要將php.ini-production文件重命名為php.ini。以后手動(dòng)編譯安裝php擴(kuò)展后需要添加extension=xx.so到php.ini。
啟動(dòng)Nginx和php,檢查是否正常運(yùn)行。
nginx && php-fpm -D第三步:打包鏡像
在打包成鏡像之前,我們先將nginx、php-fpm關(guān)閉,刪除一些不需要的應(yīng)用以及清理一些安裝的緩存文件,從而減小最終打包成鏡像的大小。
apt-get purge vim make apt-get autoremove apt-get autoclean rm -f /usr/local/etc/php/conf.d/* #統(tǒng)一將php擴(kuò)展寫入到php.ini文件
然后,輸入exit退出容器,通過以下命令將更新過的容器重新打包成一個(gè)新鏡像:
docker commit -m="php-nginx-website" -a="yourname" 96b3f038590b yourhubid/php-nginx:v0.1.0
參數(shù)說明:
-m:提交的描述信息
-a:指定鏡像作者
96b3f038590b:容器ID
yourhubid/php-nginx:v0.1.0:指定要?jiǎng)?chuàng)建的目標(biāo)鏡像名
可以使用docker images命令來查看我們的新鏡像
第四步:上傳鏡像使用docker login命令登錄 hub.docker.com,按提示輸入賬號和密碼即可
使用docker push命令將打包好的新鏡像上傳至鏡像倉庫:
docker push yourhubid/php-nginx:v0.1.0第五步:登錄URLOS制作應(yīng)用
注意:需要修改將/data/urlos/master-config/config.jsonc文件的envType的值設(shè)置為dev(開發(fā)環(huán)境):
vim /data/urlos/master-config/config.jsonc添加鏡像
瀏覽器地址欄輸入http://主機(jī)ip:9968,登錄URLOS,在左側(cè)菜單欄選擇鏡像管理,然后點(diǎn)擊右上角的添加按鈕。
輸入鏡像名稱
鏡像地址
開發(fā)者信息
在左側(cè)菜單中選擇應(yīng)用管理。然后點(diǎn)擊右上角的添加應(yīng)用按鈕:
應(yīng)用的基本信息如上圖所示。
鏡像:選擇上一步驟添加的鏡像。
URLOS最低版本號:如設(shè)置此選項(xiàng)則表示安裝URLO的版本高于或者等于當(dāng)前設(shè)置的值,才允許用戶安裝
使用。
容器端口:容器啟動(dòng)時(shí)對外通信的端口,即參數(shù)-p。網(wǎng)站的80、443等端口默認(rèn)是對外開發(fā)的,在這里可
以不用設(shè)置。如必須特定端口時(shí),設(shè)置的格式{"22":true}。
標(biāo)簽:應(yīng)用標(biāo)簽多用于搜索場景。
選項(xiàng)開關(guān)注解:
固定節(jié)點(diǎn)運(yùn)行:若勾選,則表示用戶在安裝此應(yīng)用時(shí)(創(chuàng)建此應(yīng)用的服務(wù))需要選擇安裝在某個(gè)節(jié)點(diǎn)(云
主機(jī))。若取消勾選,則表示此應(yīng)用安裝在選擇的集群(單容器運(yùn)行也取消勾選),可達(dá)到負(fù)載均衡,故障
轉(zhuǎn)移的效果。
單容器運(yùn)行:若勾選,則表示安裝此應(yīng)用時(shí),每個(gè)服務(wù)只運(yùn)行一個(gè)容器。與固定節(jié)點(diǎn)運(yùn)行配合使用,即固
定節(jié)點(diǎn)運(yùn)行時(shí),則單容器運(yùn)行。
允許特權(quán)允許:若勾選,則容器內(nèi)的root擁有了真正的root權(quán)限(宿主機(jī)器的root),在容器內(nèi)部就可以做
任何事情(包括修改宿主機(jī)器的文件,啟動(dòng)宿主機(jī)器其他容器,執(zhí)行mount等操作),不建議勾選。
以root用戶允許容器:這里的root用戶是容器外部的一個(gè)普通用戶,默認(rèn)勾選。若容器內(nèi)部的程序禁止
root用戶允許,則取消(如:MySQL)。
掛載存儲(chǔ)目錄:如需要從宿主機(jī)器掛載文件到容器,則勾選。即參數(shù) -v。
掛載時(shí)區(qū)定義文件:容器的時(shí)間與宿主機(jī)器的時(shí)間保持一致。
容器只讀:禁止向容器寫數(shù)據(jù)。
全局網(wǎng)絡(luò):允許同一集群不同容器網(wǎng)絡(luò)的容器通信。
允許快照備份:勾選則允許執(zhí)行快照備份(僅掛載了本地存儲(chǔ)時(shí)有效)
開啟反向代理,則可以實(shí)現(xiàn)多容器共享端口,反之則不能。
注解:
插件:由PHP語言編輯的腳本文件組成。插件的使用會(huì)讓用戶在安裝應(yīng)用(創(chuàng)建服務(wù))時(shí)更便捷,更智
能。這里選擇phpWebSite:v0_1_0 --- Liu Xin ---php網(wǎng)站環(huán)境這個(gè)插件即可。(制作插件后續(xù)會(huì)有詳細(xì)說
明)
服務(wù)別名:創(chuàng)建服務(wù)時(shí),在左上角顯示的描述。
應(yīng)用數(shù)據(jù)別名:創(chuàng)建服務(wù)完成后,服務(wù)產(chǎn)生的數(shù)據(jù)或者用戶基于創(chuàng)建的服務(wù)需要添加新的數(shù)據(jù),對這些數(shù)
據(jù)管理取的名字,即為應(yīng)用數(shù)據(jù)別名。(如:創(chuàng)建MySQL數(shù)據(jù)庫服務(wù),用戶可以手動(dòng)添加數(shù)據(jù)庫,創(chuàng)建網(wǎng)
站服務(wù)時(shí)也可以新增數(shù)據(jù)庫。)
服務(wù)表單步驟:創(chuàng)建服務(wù)時(shí),用戶填寫表單的步驟。(數(shù)字表示必填,其他符號表示選填)
額外掛載:將宿主機(jī)器的除存儲(chǔ)目錄外的其他目錄掛載到容器。
額外啟動(dòng)參數(shù):通過docker run運(yùn)行容器時(shí)的額外參數(shù),如:--add-host a.com:192.168.0.1
注解:
安裝腳本:安裝應(yīng)用時(shí)需要執(zhí)行的腳本命令。
test -d /etc/nginx/conf.d/ || mkdir -p /etc/nginx/conf.d/
啟動(dòng)腳本:需要啟動(dòng)程序的命令。
nginx php-fpm -D
狀態(tài)腳本:每隔2秒執(zhí)行此腳本,用來檢查程序是否正常允許。當(dāng)前的腳本命令用來檢查apache是否啟動(dòng)。
status1=0 && (ps -ef|grep "php-fpm"|grep "master process"|grep -v "grep") && status1=1; status2=0 && (ps -ef|grep "nginx"|grep "master process"|grep -v "grep") && status2=1; if [ ${status1} != 0 ] && [ ${status2} != 0 ]; then statusScriptResult=1 fi
監(jiān)控腳本:每隔1秒執(zhí)行此腳本,檢查狀態(tài)腳本返回的結(jié)果判斷程序是否正常允許。若異常,則執(zhí)行退腳本。
{w:statusScript:w} [ "$statusScriptResult" != 1 ] && exit 1
退出腳本:容器關(guān)閉時(shí)之前,執(zhí)行的腳本。如同,我們關(guān)閉電腦時(shí),系統(tǒng)會(huì)關(guān)閉正在允許的程序。
添加LNP模板在這個(gè)應(yīng)用,我們需要添加模板php.ini、vhost.conf,然后在這兩個(gè)模板的參數(shù)設(shè)置一些變量,這樣用戶在安裝應(yīng)用時(shí),就可以根據(jù)自己的需要?jiǎng)討B(tài)的調(diào)整。(如:設(shè)置php的上傳大小,最大內(nèi)存等)那么如何添加模板呢?我們在應(yīng)用管理列表中找到上述創(chuàng)建的應(yīng)用,然后點(diǎn)擊右側(cè)的更多選擇管理模板。
添加一個(gè)php.ini模板,然后在模板內(nèi)容將php.ini文件內(nèi)容復(fù)制進(jìn)入,同時(shí)設(shè)置變量{w:upload_max_filesize:w}、{w:PHP_memory_limit:w}。
[PHP] engine = On short_open_tag = Off precision = 14 output_buffering = 4096 zlib.output_compression = Off implicit_flush = Off unserialize_callback_func = serialize_precision = -1 disable_functions = disable_classes = zend.enable_gc = On expose_php = On max_execution_time = 30 max_input_time = 60 memory_limit = 128M error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT display_errors = Off display_startup_errors = Off log_errors = On log_errors_max_len = 1024 ignore_repeated_errors = Off ignore_repeated_source = Off report_memleaks = On html_errors = On variables_order = "GPCS" request_order = "GP" register_argc_argv = Off auto_globals_jit = On post_max_size = {w:PHP_memory_limit:w} auto_prepend_file = auto_append_file = default_mimetype = "text/html" default_charset = "UTF-8" doc_root = user_dir = enable_dl = Off file_uploads = On upload_max_filesize = {w:upload_max_filesize:w} max_file_uploads = 20 allow_url_fopen = On allow_url_include = Off default_socket_timeout = 60 extension=gd.so extension=memcached.so extension=sockets.so extension=mysqli.so extension=pdo_mysql.so [CLI Server] cli_server.color = On [Date] [filter] [iconv] [imap] [intl] [sqlite3] [Pcre] [Pdo] [Pdo_mysql] pdo_mysql.default_socket= [Phar] [mail function] SMTP = localhost smtp_port = 25 mail.add_x_header = Off [ODBC] odbc.allow_persistent = On odbc.check_persistent = On odbc.max_persistent = -1 odbc.max_links = -1 odbc.defaultlrl = 4096 odbc.defaultbinmode = 1 [Interbase] ibase.allow_persistent = 1 ibase.max_persistent = -1 ibase.max_links = -1 ibase.timestampformat = "%Y-%m-%d %H:%M:%S" ibase.dateformat = "%Y-%m-%d" ibase.timeformat = "%H:%M:%S" [MySQLi] mysqli.max_persistent = -1 mysqli.allow_persistent = On mysqli.max_links = -1 mysqli.default_port = 3306 mysqli.default_socket = mysqli.default_host = mysqli.default_user = mysqli.default_pw = mysqli.reconnect = Off [mysqlnd] mysqlnd.collect_statistics = On mysqlnd.collect_memory_statistics = Off [OCI8] [PostgreSQL] pgsql.allow_persistent = On pgsql.auto_reset_persistent = Off pgsql.max_persistent = -1 pgsql.max_links = -1 pgsql.ignore_notice = 0 pgsql.log_notice = 0 [bcmath] bcmath.scale = 0 [browscap] [Session] session.save_handler = files session.use_strict_mode = 0 session.use_cookies = 1 session.use_only_cookies = 1 session.name = PHPSESSID session.auto_start = 0 session.cookie_lifetime = 0 session.cookie_path = / session.cookie_domain = session.cookie_httponly = session.cookie_samesite = session.serialize_handler = php session.gc_probability = 1 session.gc_divisor = 1000 session.gc_maxlifetime = 1440 session.referer_check = session.cache_limiter = nocache session.cache_expire = 180 session.use_trans_sid = 0 session.sid_length = 26 session.trans_sid_tags = "a=href,area=href,frame=src,form=" session.sid_bits_per_character = 5 [Assertion] zend.assertions = -1 [COM] [mbstring] [gd] [exif] [Tidy] tidy.clean_output = Off [soap] soap.wsdl_cache_enabled=1 soap.wsdl_cache_dir="/tmp" soap.wsdl_cache_ttl=86400 soap.wsdl_cache_limit = 5 [sysvshm] [ldap] ldap.max_links = -1 [dba] [opcache] [curl] [openssl]
添加Nginx的虛擬站點(diǎn)配置vhost.conf模板
server { server_name {w:domains:w}; {w:listenLines:w} set $websiteRoot "/data/www/{w:indexDirName:w}"; root $websiteRoot; index index.html index.htm index.php; client_max_body_size {w:upload_max_filesize:w}; client_body_buffer_size 128; location / { {w:rewriteContents:w} } location ~ .(php|phtml)$ { include fastcgi.conf; fastcgi_pass 127.0.0.1:9000; } location ~ /.ht { deny all; } }添加變量
變量分為:環(huán)境變量、數(shù)據(jù)變量和擴(kuò)展變量。在這里只需要添加擴(kuò)展變量。
環(huán)境變量:在操作系統(tǒng)中用來指定操作系統(tǒng)運(yùn)行環(huán)境的一些參數(shù),與平常使用的環(huán)境變量相同。有時(shí)容器啟動(dòng)需要設(shè)置一些參數(shù)提供給容器內(nèi)部的程序。如:MySQL容器啟動(dòng)時(shí)可以設(shè)置MYSQL_ROOT和MYSQL_ROOT_PASSWORD。
數(shù)據(jù)變量:添加存儲(chǔ)數(shù)據(jù)時(shí)設(shè)置的一些參數(shù)。如:往MySQL數(shù)據(jù)服務(wù)添加數(shù)據(jù)庫時(shí),需要填寫dbName,dbPassword,status,charset。具體可以使用可以創(chuàng)建MySQL服務(wù),然后在管理數(shù)據(jù)庫中添加數(shù)據(jù)庫。
擴(kuò)展變量:即普通變量。如:上述在模板中設(shè)置的變量{w:upload_max_filesize:w}、{w:PHP_memory_limit:w}。變量的格式:{w:變量名:w}。
添加PHP最大內(nèi)存變量:PHP_memory_limit
添加上傳大小限制:upload_max_filesize
至此,LMP應(yīng)用已經(jīng)制作完成,我們在應(yīng)用管理列表中,選擇剛才制作好的應(yīng)用,點(diǎn)擊創(chuàng)建服務(wù)
部署完成后,地址欄輸入域名訪問一下,如果訪問正常,說明我們制作的應(yīng)用沒有問題了,可以導(dǎo)出供他人安裝!
將我們制作的應(yīng)用導(dǎo)出,可將導(dǎo)出的文件發(fā)布到任何地方,供他人安裝使用,只要對方的主機(jī)安裝了URLOS,都可以完美運(yùn)行(無需考慮兼容性問題)我們制作的應(yīng)用。
導(dǎo)出的文件為txt文本。只要其他用戶使用URLOS直接導(dǎo)即可。下面是導(dǎo)入方法:
打開文本,全選復(fù)制其中內(nèi)容
登錄URLOS,在左側(cè)菜單點(diǎn)擊導(dǎo)入應(yīng)用,將內(nèi)容粘貼進(jìn)去,提交
導(dǎo)入成功?。↑c(diǎn)擊安裝即可。哈哈,太爽了吧。任何服務(wù)器環(huán)境可以使用的應(yīng)用都可以用這個(gè)方法來制作,比如微信小程序后端部分等等都可以這樣制作,方便分發(fā)和安裝。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/27771.html
摘要:云計(jì)算深入,驅(qū)動(dòng)市場過去十年,云計(jì)算服務(wù)取得了長足的發(fā)展。之于云計(jì)算的重要性,相當(dāng)于操作系統(tǒng)之于電腦。細(xì)分市場投融資活躍全球云計(jì)算服務(wù)模式中,雖然市場份額最小,但是增速卻是最快的。向進(jìn)軍已是云計(jì)算產(chǎn)業(yè)投資者和創(chuàng)業(yè)者的新戰(zhàn)略方向。1. 互聯(lián)網(wǎng)應(yīng)用風(fēng)口快速迭代,為企業(yè)提供風(fēng)口型解決方案的PaaS服務(wù)商重要性凸顯。2. PaaS領(lǐng)域資本熱度增高,Docker技術(shù)平臺和通訊云平臺是今年最熱的細(xì)分領(lǐng)域...
摘要:由于汽車對安全性可靠性實(shí)時(shí)性,和傳感器帶寬算力的高要求,及其復(fù)雜的軟件供應(yīng)鏈生態(tài),智能汽車會(huì)催生下一代計(jì)算操作系統(tǒng)。軟件生態(tài)與容器放眼智能汽車的生態(tài)圈,今天的座艙與兩個(gè)域計(jì)算機(jī)都是以整體解決方案的方式售賣給整車廠。 ?【CSDN 編者按】智能汽車正在被軟件定義,而以軟件為中心的新架構(gòu)也...
摘要:近日,愛分析在京舉辦了愛分析中國云計(jì)算高峰論壇,本次論壇以云化萬物,智動(dòng)未來為主題,探討云計(jì)算行業(yè)的發(fā)展趨勢。演講實(shí)錄黃啟功大家好首先做一下自我介紹,我是時(shí)速云黃啟功,感謝愛分析的邀請,我今天分享的主題叫云原生應(yīng)用實(shí)踐與未來趨勢。 近日,愛分析在京舉辦了 2018 愛分析·中國云計(jì)算高峰論壇,本次論壇以云化萬物,智動(dòng)未來為主題,探討云計(jì)算行業(yè)的發(fā)展趨勢。愛分析邀請了云計(jì)算領(lǐng)域標(biāo)桿公司時(shí)...
閱讀 2086·2023-04-25 19:15
閱讀 2265·2021-11-23 09:51
閱讀 1272·2021-11-17 09:33
閱讀 2177·2021-08-26 14:15
閱讀 2493·2019-08-30 15:54
閱讀 1589·2019-08-30 15:54
閱讀 2177·2019-08-30 12:50
閱讀 1143·2019-08-29 17:08